利用理想低通滤波器对图像进行锐化处理的MATLAB代码的2种代码
时间: 2023-11-30 22:02:48 浏览: 90
第一种:
```matlab
% 读取图像
img = imread('lena.png');
% 转换为灰度图像
gray_img = rgb2gray(img);
% 计算傅里叶变换
fft_img = fft2(double(gray_img));
% 构建理想低通滤波器
[rows, cols] = size(gray_img);
center = [floor(rows/2)+1, floor(cols/2)+1];
r = 30; % 设置滤波器半径
[x, y] = meshgrid(1:cols, 1:rows);
dist = sqrt((x-center(2)).^2 + (y-center(1)).^2);
lpf = dist <= r;
% 将滤波器移到频率域中心
lpf = fftshift(lpf);
% 应用滤波器
filtered_fft = fft_img .* lpf;
% 计算傅里叶逆变换
filtered_img = ifft2(filtered_fft);
% 取实部并进行灰度拉伸
result_img = uint8(real(filtered_img));
result_img = imadjust(result_img);
% 显示结果
subplot(1,2,1), imshow(gray_img), title('原始图像');
subplot(1,2,2), imshow(result_img), title('锐化后的图像');
```
第二种:
```matlab
% 读取图像
img = imread('lena.png');
% 转换为灰度图像
gray_img = rgb2gray(img);
% 构建理想低通滤波器
[rows, cols] = size(gray_img);
center = [floor(rows/2)+1, floor(cols/2)+1];
r = 30; % 设置滤波器半径
[x, y] = meshgrid(1:cols, 1:rows);
dist = sqrt((x-center(2)).^2 + (y-center(1)).^2);
lpf = dist <= r;
% 应用滤波器并进行灰度拉伸
result_img = imadjust(imfilter(gray_img, lpf));
% 显示结果
subplot(1,2,1), imshow(gray_img), title('原始图像');
subplot(1,2,2), imshow(result_img), title('锐化后的图像');
```
两种代码的原理相同,都是利用理想低通滤波器对图像进行频域处理来实现锐化。第一种代码手动计算傅里叶变换和逆变换,需要一定的数学知识和编程能力;第二种代码利用MATLAB中的imfilter函数直接进行滤波处理,更为简单方便。
阅读全文
相关推荐














