【数字图像处理+MATLAB】通过中值滤波器(Median Filter)降噪去除图像椒盐噪声污染:使用 medfilt2 函数

引言

中值滤波器是一种非线性滤波器,广泛用于数字图像处理中的噪声消除。它的工作原理是将图像中每个像素的值替换为其邻域(通常是一个正方形或圆形区域)中像素值的中位数。

中值滤波器对处理某些类型的噪声特别有效,例如"盐和胡椒"噪声,即随机出现的亮点(盐)和暗点(胡椒)。这是因为中位数对极端值不敏感,所以中值滤波器可以消除这些噪声点,而不会像平均滤波器那样模糊图像。


函数详解

medfilt2

medfilt2 是 MATLAB 的一个函数,用于对图像进行二维中值滤波。这是其基本语法和参数详解:

基本语法:

B = medfilt2(A)
B = medfilt2(A, [m n])
B = medfilt2(A, [m n], padopt)

参数详解:

  • A:这是一个二维的图像矩阵,需要进行滤波的图像。

  • [m n]:这是一个可选参数,用于指定滤波器的大小。mn 分别表示滤波器的行数和列数。如果省略此参数,那么默认的滤波器大小是 [3 3]

  • padopt:这是一个可选参数,用于指定边界处理方法。可以是 ‘zeros’(对边界进行零填充),‘symmetric’(对边界进行对称扩展),‘replicate’(对边界进行复制扩展)等。如果省略此参数,那么默认的边界处理方法是 ‘zeros’。

返回值详解:

  • B:这是一个与输入图像 A 同样大小的矩阵,表示滤波后的图像。

应用案例

% 读取图像
img1 = imread("Fig0335(a)(ckt_board_saltpep_prob_pt05).tif");

% 显示原始图像
figure;
subplot(1, 3, 1);
imshow(img1, []);
title("Original image");

% 创建一个3x3的平均滤波器并对图像进行滤波
h = fspecial("average", [3 3]);
img2 = imfilter(img1, h);

% 显示平均滤波后的图像
subplot(1, 3, 2);
imshow(img2, []);
title("Average filtered");

% 对图像进行中值滤波
img3 = medfilt2(img1);

% 显示中值滤波后的图像
subplot(1, 3, 3);
imshow(img3, []);
title("Median filtered");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值