
%原图像
I = [1 2 1 4 3 ;
1 10 2 3 4 ;
5 2 6 8 8;
5 5 7 0 8;
5 6 7 8 9];
x=double(I);
x1=x;
for i=2:4
for j=2:4
c=x(i-1:i+1,j-1:j+1); %取出3x3邻域
c=[ c(1,:) c(2,:) c(3,:)]; %整理成一行
m=median(c); %mm是中值
x1(i,j)=m; %中值赋给中心元素
end
end
x1
%为了计算边缘像素,将原图像扩展为6x6填充0
I = [0 0 0 0 0 0 0;
0 1 2 1 4 3 0;
0 1 10 2 3 4 0;
0 5 2 6 8 8 0;
0 5 5 7 0 8 0;
0 5 6 7 8 9 0;
0 0 0 0 0 0 0 ];
x=double(I);
%加权均值滤波3x3模板
a = [ 1 1 1;1 2 1; 1 1 1]/10;
for i=2:5
for j=2:5
c=x(i-1:i+1,j-1:j+1)a; %与模板相乘
x2(i,j)=sum(sum(c))/9; %计算均值并赋值给像素(i,j)
end
end
x2 = x2(2:5,2:5)
方法一:filter2
clear all;
I=imread('lenabmp');
%读入预处理图像
imshow(I)
%显示预处理图像
K1=filter2(fspecial('average',3),I)/255;
%进行33均值滤波
K2=filter2(fspecial('average',5),I)/255;
%进行55均值滤波
K3=filter2(fspecial('average',7),I)/255;
%进行77均值滤波
figure,imshow(K1)
figure,imshow(K2)
figure,imshow(K3)
方法二:双循环语句,移动平均法
%均值滤波
clc,clear;
f=imread('lenabmp');
subplot(121),imshow(f),title('原图');
f1=imnoise(f,'gaussian',0002,00008);
%subplot(222),imshow(f1),title('添加高斯噪声图');
k1=floor(3/2)+1;
k2=floor(3/2)+1;
X=f1;
[M,N]=size(X);
uint8 Y=zeros(M,N);
funBox=zeros(3,3);
for i=1:M-3
for j=1:N-3
funBox=X(i:i+3,j:j+3);
s=sum(funBox(:));
h=s/9;
Y(i+k1,j+k2)=h;
end;
end;
Y=Y/255;
subplot(122),imshow(Y),title('均值滤波');
实现图:
均值滤波和中值滤波属于空域图像增强的处理方法,均值滤波去麻点,中值滤波保边缘。
要进行均值滤波首先要生成一个3x3矩阵。算法运算窗口一般采用奇数点的邻域来计算中值,最常用的窗口有3X3和5X5模型。
1、通过2个或者3个RAM的存储来实现3X3像素窗口。
2、通过2个或者3个FIFO的存储来实现3X3像素窗口。
3、通过2行或者3行Shift_RAM的存储来实现3X3像素窗口。
扩展资料:
注意事项:
1、空间域指图像本身,空域变换直接对图像中的像素进行 *** 作。
2、在进行横向滑动窗口滤波时,窗口中的像素仅仅是丢掉了左侧一列,增加了右侧一列数据,如果丢掉中间重叠的这一部分数据,到下个窗口再重新寻址和读取数据,无疑是计算的沉重负担,所以该算法的核心思想就是充分利用重叠部分,使用直方图来计算中值,不需要排序算法,快,且高效。
3、注意到两个直方图的累加是一个O(1) *** 作,和直方图的元素个数有关,而直方图元素个数是由图像位深决定的。
参考资料来源:百度百科-均值滤波
参考资料来源:百度百科-中值滤波
以上就是关于数字图像处理滤波的问题,要详细过程全部的内容,包括:数字图像处理滤波的问题,要详细过程、编写用均值滤波去噪的matlab程序,用两种方法实现.(重谢)、计算3x3窗口的均值滤波和中值滤波(向下取整保留整数值)。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)