本段代码为使用MATLAB编写的图像处理程序,主要功能包括图像滤波、边缘检测和特征提取等基本操作。适合初学者学习及参考。
在MATLAB环境下实现的图像处理程序如下所示:
```matlab
close all;
image = imread();
PQ = paddedsize(size(image));
D0 = 0.05 * PQ;
% 创建低通滤波器并进行傅里叶变换和显示
F = fft2(double(image), PQ);
L = lpfilter(PQ, D0);
figure;
DDD = fftshift(L);
surf(1:10:PQ, 1:10:PQ, abs(DDD));
axis([PQ/10 0 PQ/10 0 max(abs(DDD))]);
colormap(gray);
title(低通滤波器);
% 对图像应用低通滤波并展示结果
OP1 = dftfilt(F, L);
D0 = 1.5 * D0;
H_ideal = hpfilter(PQ, D0);
H_gaussian = hpfilter(PQ, D0);
H_btw = hpfilter(PQ, D0);
HH_btw = 2 * H_btw;
% 绘制高通滤波器的图形
figure;
DDD = fftshift(H_ideal);
surf(1:10:PQ, 1:10:PQ, abs(DDD));
axis([PQ/10 0 PQ/10 0 max(abs(DDD))]);
colormap(gray);
title(理想高通滤波器);
figure;
DDD = fftshift(H_gaussian);
surf(1:10:PQ, 1:10:PQ, abs(DDD));
axis([PQ/10 0 PQ/10 0 max(abs(DDD))]);
colormap(gray);
title(高斯型高通滤波器);
figure;
DDD = fftshift(H_btw);
surf(1:10:PQ, 1:10:PQ, abs(DDD));
axis([PQ/10 0 PQ/10 2 max(abs(DDD))]);
colormap(gray);
title(带通滤波器);
figure;
DDD = fftshift(HH_btw);
surf(1:10:PQ, 1:10:PQ, abs(DDD));
axis([PQ/10 0 PQ/10 2 max(abs(DDD))]);
colormap(gray);
title(双带通滤波器);
% 对低通模糊后的图像应用四种高通滤波
OP2_ideal = dftfilt(F, H_ideal);
OP2_gaussian = dftfilt(F, H_gaussian);
OP2_btw = dftfilt(F, H_btw);
OP2H_btw = dftfilt(F, HH_btw);
figure; imshow(OP1), title(低通滤波结果);
figure; imshow(OP2_ideal), title(理想高通滤波后的图像);
figure; imshow(OP2_gaussian), title(高斯型高通滤波后的图像);
figure; imshow(OP2_btw), title(带通滤波后的图像);
figure; imshow(OP2H_btw), title(双带通滤波后的图像);
```
以上代码展示了如何使用MATLAB进行基本的图像处理操作,包括傅里叶变换、低通和高通滤波等。