输入任意一个二维矩阵,计算其均值滤波和中值滤波的结果。用3×3的卷积核,矩阵边缘的数据不处理

输入任意一个二维矩阵,计算其均值滤波和中值滤波的结果。用3×3的卷积核,矩阵边缘的数据不处理,第1张

其实都可以对彩色图像处理的,只是matlab里面的实现不一致。均值滤波和中值滤波matlab函数只考虑了单通道当然就必须转换成灰度图像;小波降噪的matlab函数不知道你是用的那个,肯定也需要把三通道的彩色图像先转换成单通道,分别去噪以后再整合成彩色图像。总的来说一般图像去噪都是对单通道来处理的,因为大部分的filter都是对二维矩阵来 *** 作的,要是对三通道处理也需要分别对不同的通道处理再整合。

%原图像
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)

均值滤波:是把每个像素都用周围的8个像素来做均值 *** 作,幅值近似相等且随机分布在不同位置上,这样可以平滑图像,速度较快,算法简单。但是无法去掉噪声,只能微弱的减弱它。中值滤波:常用的非线性滤波方法 ,也是图像处理技术中最常用的预处理技术。它在平滑脉冲噪声方面非常有效,同时它可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好。其中加权中值滤波能够改进中值滤波的边缘信号,使其良好保持效果。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/13123724.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-30
下一篇2025-08-30

发表评论

登录后才能评论

评论列表(0条)

    保存