用指数高通滤波器实现在频域的锐化处理的两种matlab代码
时间: 2024-02-05 14:14:00 浏览: 133
第一种代码:
```matlab
% 读取图像并进行傅里叶变换
img = imread('lena.bmp');
img_fft = fft2(img);
% 定义指数高通滤波器,对图像进行滤波
D0 = 50;
n = 2;
H = 1 - exp(-(img_fft.^2)./(2*D0^2)).^n;
img_sharp = real(ifft2(img_fft.*H));
% 显示原图和锐化后的图像
subplot(1,2,1), imshow(img);
title('原图');
subplot(1,2,2), imshow(uint8(img_sharp));
title('锐化后的图像');
```
第二种代码:
```matlab
% 读取图像并进行傅里叶变换
img = imread('lena.bmp');
img_fft = fft2(img);
% 定义指数高通滤波器,对图像进行滤波
D0 = 50;
n = 2;
H = 1 - exp(-(img_fft.^2)./(2*D0^2)).^n;
img_sharp = img - real(ifft2(img_fft.*H));
% 显示原图和锐化后的图像
subplot(1,2,1), imshow(img);
title('原图');
subplot(1,2,2), imshow(uint8(img_sharp));
title('锐化后的图像');
```
这两种代码实现的锐化处理方法略有不同,第一种代码是通过对滤波器进行调制,再与傅里叶变换后的图像进行点乘,得到锐化后的图像;第二种代码是直接将滤波后的结果从原图像中减去,得到锐化后的图像。两种方法都可以实现频域的锐化处理,具体使用哪种方法取决于具体的需求和实现难度。
阅读全文