MATLAB图像比例变换及傅里叶变换频谱分析
MATLAB图像比例变换及傅里叶变换频谱分析
本文使用MATLAB代码演示了如何构造黑白图像,在其中生成一个白色方块,并通过放大和缩小操作观察图像比例变换对傅里叶变换频谱的影响。代码还绘制了原图像和变换后图像的频谱图,并进行了比较分析,揭示了比例变换与频谱之间的关系。
代码实现
% 构造一副黑白图像
img_size = 256; % 图像大小
img = zeros(img_size, img_size); % 初始化图像为全黑
center_x = img_size/2; % 图像中心点的x坐标
center_y = img_size/2; % 图像中心点的y坐标
box_size = 50; % 方块大小
box_x1 = center_x - box_size/2; % 方块左上角的x坐标
box_x2 = center_x + box_size/2; % 方块右下角的x坐标
box_y1 = center_y - box_size/2; % 方块左上角的y坐标
box_y2 = center_y + box_size/2; % 方块右下角的y坐标
img(box_y1:box_y2, box_x1:box_x2) = 1; % 在中间区域产生一个白色方块
% 显示原图像
figure;
imshow(img);
title('原图像');
% 进行放大比例变换
scale_factor = 2; % 放大比例
resized_img = imresize(img, scale_factor); % 使用imresize函数进行放大
resized_img_size = size(resized_img);
% 显示放大后的图像
figure;
imshow(resized_img);
title('放大后的图像');
% 进行缩小比例变换
scale_factor = 0.5; % 缩小比例
resized_img = imresize(img, scale_factor); % 使用imresize函数进行缩小
resized_img_size = size(resized_img);
% 显示缩小后的图像
figure;
imshow(resized_img);
title('缩小后的图像');
% 计算原图像的傅里叶变换频谱图
fft_img = fft2(img);
fft_shift_img = fftshift(fft_img);
fft_img_spectrum = abs(fft_shift_img);
% 显示原图像的傅里叶变换频谱图
figure;
imshow(log(fft_img_spectrum+1), []);
title('原图像的傅里叶变换频谱图');
% 计算变换后图像的傅里叶变换频谱图
fft_resized_img = fft2(resized_img);
fft_shift_resized_img = fftshift(fft_resized_img);
fft_resized_img_spectrum = abs(fft_shift_resized_img);
% 显示变换后图像的傅里叶变换频谱图
figure;
imshow(log(fft_resized_img_spectrum+1), []);
title('变换后图像的傅里叶变换频谱图');
实验结果与分析
在运行代码后,会分别显示原图像、放大后的图像和缩小后的图像,以及它们对应的傅里叶变换频谱图。根据观察和比较分析这些图像的傅里叶变换频谱图,可以得到以下结论:
-
原图像的傅里叶变换频谱图中,除了中心点对应的频率外,几乎全部为低频成分,因为原图像主要由低频信号组成。
-
放大后的图像的傅里叶变换频谱图中,除了中心点对应的频率外,出现了更多的高频成分,这是因为放大过程中引入了更多的细节和高频信号。
-
缩小后的图像的傅里叶变换频谱图中,除了中心点对应的频率外,几乎全部为低频成分,这是因为缩小过程中丢失了一部分细节和高频信号。
结论
综上所述,放大操作会引入更多的高频信号,而缩小操作会丢失一部分细节和高频信号。这也说明了傅里叶变换频谱图对图像的尺度变换具有一定的敏感性。
原文地址: https://www.cveoy.top/t/topic/pjEM 著作权归作者所有。请勿转载和采集!