文档

medfilt2

二维中值滤波

语法

B = medfilt2(A)
B = medfilt2(A,[m n])
B = medfilt2(___padopt)
gpuarrayB = medfilt2(gpuarrayA)
gpuarrayB = medfilt2(gpuarrayA,[m n])

描述

例子

B= medfilt2 (一个对图像进行中值滤波一个在二维空间中。每个输出像素包含输入图像中相应像素周围3 × 3邻域内的中值。medfilt2在图像的边缘填充0,因此在邻域宽度的一半内的点的中值((mn) / 2)的边缘可能会出现扭曲。

B= medfilt2 (一个(mn)执行中值过滤,其中每个输出像素包含中的中值——- - - - - -n输入图像中相应像素周围的邻域。

B= medfilt2 (___padopt控制medfilt2填充矩阵边界。

gpuarrayB= medfilt2 (gpuarrayA在GPU上执行中值过滤操作。输入图像和输出图像分别为gpuArray这个语法需要Parallel Computing Toolbox™。

gpuarrayB= medfilt2 (gpuarrayA(mn)在GPU上执行中值过滤操作,其中每个输出像素包含——- - - - - -n输入中相应像素周围的邻域gpuArray。当与gpuArray年代,medfilt2只支持边长万博1manbetx在3到15之间的奇数的正方形邻域。此语法需要并行计算工具箱。

例子

全部折叠

读取图像到工作空间并显示它。

I = imread()“eight.tif”);图中,imshow(我)

加入盐和胡椒粉。

J = imnoise(I;“盐和胡椒”, 0.02);

使用中值滤波器滤除噪声。

K = medfilt2(J);

并排显示结果。

imshowpair (J, K,“蒙太奇”

将图像读入agpuArray

I = gpuArray(imread)“eight.tif”));

为图像添加噪声,然后执行中值滤波并显示结果。

J = imnoise(I;“盐和胡椒”, 0.02);K = medfilt2(J);figure, imshow(J), figure, imshow(K)

输入参数

全部折叠

输入图像,指定为二维、实数、非稀疏、数字或逻辑矩阵。

数据类型:||int8|int16|int32|uint8|uint16|uint32|逻辑

邻域大小,指定为双元素数值向量,(mn),实数正整数。

当与gpuArrayS,邻域必须是正方形,边长在3到15之间。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

在GPU上运行时输入图像,指定为gpuArray

填充选项,指定为以下值之一:

价值 描述
“零” 用0填充。这是默认值。
“对称” 在边界处对称地延伸。
“索引” 填充1,如果是类一个;否则,用0填充。

数据类型:字符|字符串

输出参数

全部折叠

输出图像,作为与输入图像相同类的二维数组返回一个

在GPU上运行时的输出图像,作为gpuArray

提示

  • 中值滤波是一种非线性滤波,常用于图像处理中,以减少“椒盐”噪声。当目标是同时减少噪声和保持边缘时,中值滤波比卷积更有效。有关性能注意事项的信息,请参见ordfilt2

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

    1 5 4 8

算法

在CPU上,medfilt2使用ordfilt2执行过滤。

参考文献

[10]林俊杰,张建军,二维信号与图像处理,中国计算机工程,1999,11(2):469-476。

扩展功能

R2006a之前引入

这个话题有帮助吗?