对一幅图像进行平移、旋转和缩放,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系matlab代码
时间: 2024-10-23 12:02:37 浏览: 97
在MATLAB中,对图像进行平移、旋转和缩放的操作通常通过`imtranslate`、`imrotate`和`imresize`函数完成。然后,我们可以使用`fft2`函数对图像进行傅里叶变换。下面是一个简单的例子,展示了如何操作并分析这些过程:
```matlab
% 加载示例图像
img = imread('example_image.jpg');
% 平移
translated_img = imtranslate(img, [dx dy]); % dx, dy 是平移距离
% 旋转
rotated_img = imrotate(img, angle); % angle 是旋转角度
% 缩放
scaled_img = imresize(img, [new_width new_height]); % 新的比例
% 傅里叶变换
f_img = fft2(img);
f_translated_img = fft2(translated_img);
f_rotated_img = fft2(rotated_img);
f_scaled_img = fft2(scaled_img);
% 显示原图及其变换后的结果
subplot(2, 2, 1), imshow(img), title('Original Image');
subplot(2, 2, 2), imshow(translated_img), title('Translated Image');
subplot(2, 2, 3), imshow(rotated_img), title('Rotated Image');
subplot(2, 2, 4), imshow(scaled_img), title('Resized Image');
% 变换后结果的幅度谱展示(忽略频率轴)
subplot(2, 2, [5 6]), imagesc(abs(f_img)), title('Original FFT'), colormap(gray)
subplot(2, 2, 5), imagesc(abs(f_translated_img)), title('Translated FFT');
subplot(2, 2, 6), imagesc(abs(f_rotated_img)), title('Rotated FFT');
subplot(2, 2, 7), imagesc(abs(f_scaled_img)), title('Scaled FFT');
% 分析对应关系
% 原始图像与平移后傅里叶谱的关系:如果只做水平或垂直平移,低频部分保持不变,高频部分可能会有移动。
% 旋转后:傅里叶谱会围绕中心点旋转,角频率不变。
% 缩放后:尺度变化影响频率轴,低频成分会变宽,高频成分更密集。
阅读全文