matlab把图像分别变成0.5cpd和5cpd的图片
时间: 2024-06-01 21:12:35 浏览: 55
下面是一种可能的方式来实现这个任务:
1. 读取原始图像,使用imread函数。
2. 对图像进行傅里叶变换,使用fft2函数。
3. 计算图像的傅里叶频谱,使用abs和fftshift函数。
4. 构建两个高斯滤波器,分别对应0.5和5cpd的频率范围。滤波器可以使用fspecial函数。
5. 将高斯滤波器应用于傅里叶频谱,使用.*运算符。
6. 反转频谱,使用ifftshift函数。
7. 对滤波后的频谱进行傅里叶反变换,使用ifft2函数。
8. 取实部,使用real函数。
9. 将图像范围缩放到0到255之间,使用mat2gray和im2uint8函数。
10. 显示两个滤波后的图像,使用subplot和imshow函数。
下面是示例代码:
% 读取图像
img = imread('image.jpg');
% 傅里叶变换
F = fft2(img);
% 傅里叶频谱
S = abs(fftshift(F));
% 构建滤波器
sigma_low = 1/0.5; % 0.5cpd
sigma_high = 1/5; % 5cpd
filter_low = fspecial('gaussian', size(img), sigma_low);
filter_high = fspecial('gaussian', size(img), sigma_high);
% 应用滤波器
S_low = S .* filter_low;
S_high = S .* filter_high;
% 反转频谱
S_low = ifftshift(S_low);
S_high = ifftshift(S_high);
% 傅里叶反变换
F_low = ifft2(S_low);
F_high = ifft2(S_high);
% 取实部
img_low = real(F_low);
img_high = real(F_high);
% 范围缩放
img_low = im2uint8(mat2gray(img_low));
img_high = im2uint8(mat2gray(img_high)));
% 显示图像
subplot(1,2,1);
imshow(img_low);
title('0.5cpd');
subplot(1,2,2);
imshow(img_high);
title('5cpd');
阅读全文