写一个基于时域与频域操作的图像锐化的matlab算法
时间: 2024-02-17 09:04:16 浏览: 163
MATLAB实现图像锐化
5星 · 资源好评率100%
以下是一个基于时域与频域操作的图像锐化的MATLAB算法:
```matlab
% 读入图像
img = imread('lena.png');
img = rgb2gray(img);
% 定义Laplacian算子
laplacian = [0 -1 0; -1 4 -1; 0 -1 0];
% 基于时域的图像锐化
img_lap = imfilter(img, laplacian, 'replicate');
img_sharp_time = img - img_lap;
% 基于频域的图像锐化
fft_img = fft2(img);
fft_lap = fft2(laplacian, size(img,1), size(img,2));
img_sharp_freq = real(ifft2(fft_img .* fft_lap));
% 显示结果
subplot(1,3,1), imshow(img), title('原图');
subplot(1,3,2), imshow(img_sharp_time), title('时域锐化');
subplot(1,3,3), imshow(uint8(img_sharp_freq)), title('频域锐化');
```
该算法首先读入一张灰度图像,然后定义了一个Laplacian算子。接着利用MATLAB内置函数`imfilter`对图像进行了基于时域的锐化操作,并将锐化后的图像与原图像相减得到时域锐化结果。然后将图像和Laplacian算子进行傅里叶变换,再用频域上的乘法得到频域锐化后的图像,并将其进行反傅里叶变换得到频域锐化的结果。最后用`subplot`函数将原图、时域锐化结果和频域锐化结果分别显示出来。
阅读全文