NJU1healer的个人博客分享 http://blog.sciencenet.cn/u/NJU1healer

博文

matlab中ordfilt2函数(统计排序滤波函数)

已有 1748 次阅读 2020-7-7 15:53 |个人分类:matlab|系统分类:科研笔记

(一)函数介绍

官网: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!



http://wap.sciencenet.cn/blog-3428464-1241004.html

上一篇:植被指数
下一篇:ArcMap按字段属性合并(dissove工具)

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2021-10-26 02:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部