matlab,中值滤波滤除添加周期噪声的图像,代码
时间: 2023-11-02 09:24:58 浏览: 85
中值滤波在图像处理中也是一种常用的滤波方法,可以有效滤除周期噪声。在MATLAB中,可以使用medfilt2函数实现二维图像的中值滤波。以下是一个示例代码:
假设有一张图像I,其中添加了周期性噪声,可以使用以下代码进行中值滤波:
```matlab
% 读入示例图像
I = imread('example.jpg');
% 添加周期噪声
sz = size(I);
f = 10; % 噪声频率
noise = 50*sin(2*pi*f*[1:sz(1)]'*(1:sz(2))/sz(2)); % 噪声矩阵
I_noisy = uint8(double(I) + noise); % 添加噪声
% 中值滤波
window_size = 5; % 窗口大小
I_filtered = medfilt2(I_noisy, [window_size window_size]); % 中值滤波
% 绘图
figure;
subplot(1, 3, 1); imshow(I); title('原始图像');
subplot(1, 3, 2); imshow(I_noisy); title('添加周期噪声后的图像');
subplot(1, 3, 3); imshow(I_filtered); title('中值滤波后的图像');
```
在示例代码中,首先读入一个示例图像I,然后添加了一个10Hz的周期噪声,并使用medfilt2函数进行中值滤波,窗口大小为5。最后绘制出了原始图像、添加噪声后的图像和中值滤波后的图像的对比图。通过比较可以看出,中值滤波后的图像已经滤除了周期性噪声。
阅读全文