matlab-----均值滤波函数的实现
均值滤波的原理是对图像以一个区域(方形,圆形)等为模板,对该区域内的数据求平均后赋值给区域的中心
这种滤波方式原理简单,但是在滤波的同时会造成图像模糊。
本文将尝试对matlab中的filter2()均值函数用自定义函数averfilter()实现。
%x是需要滤波的图像,n是模板大小(即n×n)
function d=averfilter(x,n)
a(1:n,1:n)=1; %a即n×n模板,元素全是1
[height, width]=size(x); %输入图像是hightxwidth的,且hight>n,width>n
x1=double(x);
x2=x1;
for i=1:height-n+1
for j=1:width-n+1
c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum(c)); %求c矩阵中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);
原始彩色图apple.bmp如下:
转换后的灰度图如下:
加入高斯噪声的灰度图如下:
接下来将比较matlab自带filter2()均值函数和自定义的均值函数averfilter()的滤波效果:
matlab自带的filter2()测试代码如下:
A=fspecial('average'); %生成系统预定义的3X3滤波器
Y=filter2(A,g)/255; %用生成的滤波器进行滤波,并归一化
figure,imshow(Y),title('用系统函数进行均值滤波后的结果'); %显示滤波后的图象
结果图:
使用自己定义的均值滤波函数averfilter()进行测试:
Y2=averfilter(g,n); %调用自编函数进行均值滤波,n为模板大小
figure,imshow(Y2),title('用自己的编写的函数进行均值滤波之后的结果'); %显示滤波后的图象
其中自定义均值滤波函数averfilter()的matlab实现代码为:
%x是需要滤波的图像,n是模板大小(即n×n)
function d=averfilter(x,n)
a(1:n,1:n)=1; %a即n×n模板,元素全是1
[height, width]=size(x); %输入图像是hightxwidth的,且hight>n,width>n
x1=double(x);
x2=x1;
for i=1:height-n+1
for j=1:width-n+1
c=x1(i:i+(n-1),j:j+(n-1)).*a; %取出x1中从(i,j)开始的n行n列元素与模板相乘
s=sum(sum(c)); %求c矩阵中各元素之和
x2(i+(n-1)/2,j+(n-1)/2)=s/(n*n); %将与模板运算后的各元素的均值赋给模板中心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);
结果图如下:
显然比较filter2()和自定义的averfilter()函数其滤波结果是基本一致的,这说明我们对于均值滤波的
matlab实现是成功的。文中的图片效果不是太好,如果需要原图的读者请给我发邮件vpoet_sir@163.com
matlab-----均值滤波函数的实现的更多相关文章
- matlab中滤波函数
matlab自带滤波器函数小结(图像处理) 1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) ...
- OpenCV计算机视觉学习(4)——图像平滑处理(均值滤波,高斯滤波,中值滤波,双边滤波)
如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice &q ...
- Win8Metro(C#)数字图像处理--2.9图像均值滤波
原文:Win8Metro(C#)数字图像处理--2.9图像均值滤波 [函数名称] 图像均值滤波函数MeanFilterProcess(WriteableBitmap src) [函数代码] ...
- 基于MATLAB的均值滤波算法实现
在图像采集和生成中会不可避免的引入噪声,图像噪声是指存在于图像数据中的不必要的或多余的干扰信息,这对我们对图像信息的提取造成干扰,所以要进行去噪声处理,常见的去除噪声的方法有均值滤波.中值滤波.高斯滤 ...
- matlab中fspecial Create predefined 2-D filter以及中值滤波均值滤波以及高斯滤波
来源: 1.https://ww2.mathworks.cn/help/images/ref/fspecial.html?searchHighlight=fspecial&s_tid=doc_ ...
- 基于MATLAB的中值滤波均值滤波以及高斯滤波的实现
基于MATLAB的中值滤波均值滤波以及高斯滤波的实现 作者:lee神 1. 背景知识 中值滤波法是一种非线性平滑技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤 ...
- opencv3.2.0图像处理之均值滤波blur API函数
##.均值滤波:blur函数 ##函数原型 : ,-),int borderType=BORDER_DEFAULT) (参数详解同boxFilter函数) /**********新建Qt控制台程序** ...
- 均值滤波去除图像噪声的matlab程序
所谓均值滤波实际上就是用均值替代原图像中的各个像素值. 均值滤波的方法是:对待处理的当前像素,选择一个模板,该模板为其近邻的若干像素组成,用模板中的像素的均值来替代原像素. 优点:算法简单,计算速度快 ...
- Matlab中imfilter()函数的用法
Matlab中imfilter()函数的用法 功能:对任意类型数组或多维图像进行滤波.用法:B = imfilter(A,H) B = imfilter(A,H,option1,option2,... ...
随机推荐
- Letter Combinations of a Phone Number 解答
Question Given a digit string, return all possible letter combinations that the number could represe ...
- 关于#ifndef,#define,#end的说明
#ifndef,#define,#end 是宏定义的一种---条件编译 这样我直接举个例子好了:我定义两个相同的类A分别在single.h和singlenew.h single.h: #include ...
- LeeCode-Contains Duplicate
Given an array of integers, find if the array contains any duplicates. Your function should return t ...
- 【CF 676B Pyramid of Glasses】模拟,递归
题目链接:http://codeforces.com/problemset/problem/676/B 题意:一个n层的平面酒杯金字塔,如图,每个杯子的容量相同.现在往最顶部的一个杯子倒 t 杯酒,求 ...
- [工作问题总结]MyEclipse 注册
------------------------------ASP.Net+Android+IO开发 .Net培训 期待与您交流!------------------------------ 1.本人 ...
- SPOJ GCDEX (数论)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意:求sigma (gcd (i , j)) ...
- centos网速特别慢的最佳解决的方法 - 关闭ipv6
我使用了centOS,可是发现网速实在是卡得差点儿不能上网,连百度都打不开,可是win却飞快. 后来想到偶然记得有一次看过一段话,说到关闭ipv6,測试来一下,果然有效,关闭来ipv6打开网速飞快. ...
- ios像素点颜色取样
一.像素点颜色取样 + (UIColor*) getPixelColorAtLocation:(CGPoint)point inImage:(UIImage *)image { UIColor* co ...
- 7. Shell 脚本编写
一.Shell 脚本编写 1.提示用户输入一个字符串,如果是 hello,打出 yes,并每秒输出 "hello,world",否则就输出 no,实现如下: #!/bin/bash ...
- TS相关知识点
数字电视的TS包和TS流的组成和功能 综合考虑几下几个因素: (1)包的长度不能过短,否则包头开销所占比例过大, 导致传输效率下降 (2)包的长度不能过长,否则在丢失同步的情况下恢复同步的 周期过长, ...