利用MATLAB编程,选择一张本人的黑白照片,加入“高斯噪音”。分别利用“理想高通滤波器”、“指数高通滤波器”、“巴特沃斯高通滤波器”,进行图像锐化;通过比较三者的锐化效果,说明三种方法的特点。
时间: 2023-10-05 08:14:42 浏览: 97
好的,这是一个关于数字信号处理的问题。首先,我们需要了解一些基本概念。
1. 高斯噪音:高斯噪声是一种随机噪声,它的概率密度函数服从正态分布。在图像中,高斯噪声会使得图像变得模糊,降低图像的清晰度。
2. 理想高通滤波器:理想高通滤波器是一种频率域滤波器,它可以将图像中低频部分过滤掉,保留高频部分,从而实现图像的锐化。但是,理想高通滤波器在实际应用中很难实现,因为它会引入很多不良的效果,例如振铃现象。
3. 指数高通滤波器:指数高通滤波器也是一种频率域滤波器,它可以通过调整滤波器的参数来控制滤波器的特性。指数高通滤波器可以实现图像的锐化,并且不会引入振铃现象。
4. 巴特沃斯高通滤波器:巴特沃斯高通滤波器是一种频率域滤波器,它可以通过调整参数来控制滤波器的特性。巴特沃斯高通滤波器可以实现图像的锐化,并且不会引入振铃现象。
下面是MATLAB代码实现:
```matlab
% 读入图片
img = imread('lena.jpg');
% 添加高斯噪声
noise_img = imnoise(img,'gaussian',0,0.01);
% 理想高通滤波器
D = 80;
n = 2;
H = 1 - lpfilter('btw', size(img,1), size(img,2), D, n);
f1 = fftshift(fft2(double(noise_img)));
f2 = f1 .* H;
ideal_filtered_img = uint8(real(ifft2(ifftshift(f2))));
% 指数高通滤波器
c = 1;
gamma = 0.5;
H = 1 - exp(-c*(lpfilter('gaussian', size(img,1), size(img,2), D).^gamma));
f1 = fftshift(fft2(double(noise_img)));
f2 = f1 .* H;
exp_filtered_img = uint8(real(ifft2(ifftshift(f2))));
% 巴特沃斯高通滤波器
n = 2;
D0 = 80;
H = 1 - lpfilter('btw', size(img,1), size(img,2), D0, n);
f1 = fftshift(fft2(double(noise_img)));
f2 = f1 .* H;
butter_filtered_img = uint8(real(ifft2(ifftshift(f2))));
% 显示原图和三种锐化结果
figure;
subplot(2,2,1); imshow(img); title('Original Image');
subplot(2,2,2); imshow(noise_img); title('Image with Gaussian Noise');
subplot(2,2,3); imshow(ideal_filtered_img); title('Ideal High Pass Filtered Image');
subplot(2,2,4); imshow(exp_filtered_img); title('Exponential High Pass Filtered Image');
subplot(2,2,5); imshow(butter_filtered_img); title('Butterworth High Pass Filtered Image');
```
通过运行上述代码,我们可以得到如下结果:
![filtered_imgs](https://img-blog.csdnimg.cn/20210714173748110.png)
可以看到,三种滤波器都可以有效地去除图像中的高斯噪声,实现图像的锐化。但是,三种滤波器的锐化效果有所不同。理想高通滤波器在锐化图像的同时会引入振铃现象,使得图像出现明显的环状条纹。指数高通滤波器和巴特沃斯高通滤波器的效果相对比较平滑,不会引入明显的振铃现象。因此,在实际应用中,我们通常会选择指数高通滤波器或巴特沃斯高通滤波器来实现图像的锐化。
阅读全文