中值滤波(matlab)

中值滤波(matlab)中值滤波中值滤波 是一种非线性数字滤波器技术 用于降噪 理解 去一个模板 可为 3 3 5 5 n n 每次从图像中取出模板大小的矩阵 将所有元素排序 取中间值放入木板的中心位置 再还原到原图中 以此类推扫描整个图像 可先对图像进行填充 填充函数 B padarray A padsize padval direction 注释 功能 填充图像或填充数组 A 输入图

中值滤波

中值滤波:是一种非线性数字滤波器技术, 用于降噪。
理解:去一个模板,可为3 * 3, 5 * 5,n * n…每次从图像中取出模板大小的矩阵,将所有元素排序,取中间值放入木板的中心位置,再还原到原图中,以此类推扫描整个图像。

可先对图像进行填充,填充函数:

B = padarray(A,padsize,padval,direction) 

注释:
功能:填充图像或填充数组。
A:输入图像;
B:填充后的图像;
padsize:填充的行数和列数,通常用[r ,c]来表示。
padval:表示填充方法。它的具体值和描述如下:
包括:












  • ‘symmetric’表示图像大小通过围绕边界进行镜像反射来扩展;
  • ‘replicate’表示图像大小通过复制外边界中的值来扩展;
  • ‘circular’图像大小通过将图像看成是一个二维周期函数的一个周期来进行扩展。
    direction:表示填充的方向。
    包括:




  • ‘pre’表示在每一维的第一个元素前填充;
  • ‘post’表示在每一维的最后一个元素后填充;
  • ‘both’表示在每一维的第一个元素前和最后一个元素后填充,此项为默认值。
    若参量中不包括direction,则默认值为’both’。
    若参量中不包含padval,则默认用零来填充。
    若参量中不包括任何参数,则默认填充为零且方向为’both’。
    在计算结束时,图像会被修剪成原始大小。








matlab中自带的中值滤波函数:

b=medfilt2(x0,[n,n]); 

另一种方法程序代码

x=imread('G:\matlab\1.jpg');%需要过滤的图像 n=3; %模板大小 [height, width]=size(x); %获取图像的尺寸(n小于图片的宽高) figure; imshow(x);%显示原图 % x = padarray(x,[3,3]); %对图像边缘进行填充 x = imnoise(x,'salt & pepper'); %加入椒盐噪声 figure; imshow(x); %显示加入噪声后的图片 x1=double(x); %数据类型转换 x2=x1; %转换后的数据赋给x2 for i=1:height-n+1 for j=1:width-n+1 c=x1(i:i+(n-1),j:j+(n-1)); %在x1中从头取模板大小的块赋给c e=c(1,:); %e中存放是c矩阵的第一行 for u=2:n %将c中的其他行元素取出来接在e后使e为一个行矩阵 e=[e,c(u,:)]; end med=median(e); %取一行的中值 x2(i+(n-1)/2,j+(n-1)/2)=med; %将模板各元素的中值赋给模板中心位置的元素 end end d=uint8(x2); %未被赋值的元素取原值 figure; imshow(d); %显示过滤图片 x0=rgb2gray(x); %灰度处理,灰度处理后的图像是二维矩阵 b=medfilt2(x0,[n,n]); %matlab中自带值滤波函数 figure; imshow(b); %显示过滤后的灰度图片 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198452.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午3:11
下一篇 2026年3月26日 下午3:11


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号