||
(一)函数介绍
官网:https://ww2.mathworks.cn/help/images/ref/ordfilt2.html
ordfilt2 是一个二维数据过滤器,首先对根据滤窗口中的非零元素对目标矩阵中的元素进行排序,然后用其中第K(通过参数指定)大的元素代替原数据值,并以此过程遍历目标矩阵中的每一个元素。
一、ordfilt2 应用的三种形式
1、B = ordfilt2(A, order, domain);
根据 domain 过滤窗口的大小,取Input中的每个元素关于 domain 相同尺寸大小的区域中的第order的元素代替原像素的值 ,(注意:domain中0元素对应的位置不参与排序);
2、B = ordfilt2(A, order, domain, S);
S —— Additive offsets ,即附加偏移。 对于某个元素关于 domain 相同尺寸大小的区域中的每一个位置,若与之对应的 domain 位置的值不为零,则该位置加上S中对应位置的值,再进行相应的滤波计算。
3、B = ordfilt2(A, order, domain, S,padopt);
padopt —— Padding option,用来指明如何拓展边界。
二、参数介绍
1、A —— Input Marix (输入矩阵)
A 是一个2维的,非稀疏的矩阵。
2、order — Element to replace the target pixel
指明对于A中某个元素值,要用其邻域中的第几大的元素去替代这个元素的值。
3、domain — Neighborhood
说明过滤窗口的大小,domain中的零元素的位置表示该位置不在过滤窗口之内。
4、S —— Additive offsets ,附加偏移。
对于某个元素关于 domain 相同尺寸大小的区域中的每一个位置,若与之对应的 domain 位置的值不为零,则该位置加上S中对应位置的值,再进行相应的滤波计算。
5、padopt —— Padding option
用来指明如何拓展边界
默认用 0 拓展边界,‘symmetric’ 表是镜像填充。
(二)示例代码
aa=imread('timg.jpg');
aa=rgb2gray(aa);
imshow(aa);
title('原图');
g=imnoise(aa,'salt & pepper'); %加椒盐噪声
figure();
imshow(g);
title('salt noise');
Y=ordfilt2(g,5,ones(3,3));
figure();
imshow(Y);
title('中值滤波');
Y=ordfilt2(g,1,ones(3,3));
figure();
imshow(Y);
title('最小值滤波');
Y=ordfilt2(g,9,ones(3,3));
figure();
imshow(Y);
title('最大值滤波');
【参考】
https://blog.csdn.net/linux_lzj_cainiao/article/details/88293439
https://www.cnblogs.com/LGJC1314/p/11934534.html
点滴分享,福泽你我!Add oil!
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-3 10:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社