MATLAB中medfilt2函数用法

发布时间:2024年01月05日

目录

语法

说明

示例

去除图像中的椒盐噪声


????????medfilt2函数的功能是二维中位数滤波。

语法

J = medfilt2(I)
J = medfilt2(I,[m n])
J = medfilt2(___,padopt)

说明

J = medfilt2(I) 对图像 I 执行二维中位数滤波。每个输出像素包含输入图像中对应像素周围 3×3 邻域的中位数值。

J = medfilt2(I,[m n]) 执行中位数滤波,其中每个输出像素包含输入图像中对应像素周围的 m×n 邻域中的中位数值。

J = medfilt2(___,padopt) 控制 medfilt2 如何填充图像边界。

示例

去除图像中的椒盐噪声

????????将图像读入工作区并显示它。

I = imread('eight.tif');
figure, imshow(I)

如图所示:

????????添加椒盐噪声。

J = imnoise(I,'salt & pepper',0.02);

????????使用中位数滤波器滤除该噪声。

K = medfilt2(J);

????????并排显示结果。

imshowpair(J,K,'montage')

如图所示:

参数说明

I — 输入图像

????????输入图像,指定为二维灰度图像或二值图像。

[m n] — 邻域大小

????????邻域大小,指定为由正整数组成的二元素向量。

padopt — 填充选项

填充选项,指定为下列值之一。

描述
'zeros'(默认值)用 0 填充图像。
'symmetric'在边界处对称延伸图像。
'indexed'

?如果?I?的类是?double,则用?1?填充图像;否则,用?0?填充。

J — 输出图像

????????输出图像,以与输入图像 I 具有相同类的数值矩阵形式返回。

提示

  • ?中位数滤波是图像处理中一种常用的非线性运算,用于减少“椒盐”噪声。当目标是同时减少噪声和保持边缘时,中位数滤波比卷积更高效。有关性能方面的信息,请参阅 ordfilt2。

  • ?如果输入图像 I 属于整数类,则所有输出值都以整数形式返回。如果邻域 (m*n) 中的像素数是偶数,则一些中位数值可能不是整数。在这些情况下,会丢弃小数部分。逻辑输入的处理方式与之类似。例如,uint8 数组中以下 2×2 邻域的真实中位数为 4.5,但 medfilt2 会丢弃小数部分并返回 4。

    1 5
    4 8
  • ?如果您将 padopt 指定为 'zeros' 或 'indexed',则填充会使图像边界附近的中位数发生偏斜。边缘的邻域 ([m n]/2) 一半宽度内的像素可能出现变形。

算法

?????????在 CPU 上,medfilt2 使用 ordfilt2 来执行滤波。

参考

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 469-476.

文章来源:https://blog.csdn.net/jk_101/article/details/134297098
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。