0

我有这个简单的代码行,它读取图像并使用fft2函数对图像进行傅立叶变换,matlab然后将较低频率带到图形的中心fftshift
问题是在频域图像中:

1) 哪个黑/白点代表高频?
2)每个黑/白点的密度是否显示每个频率系数的强度?

clc;
clear all;
format short;
format compact;
im=imread('cameraman.tif');
figure,imshow(im);
F=fftshift(fft2(im));
figure,imshow(uint8(abs(F)));
4

1 回答 1

2

一方面,您没有正确地可视化频谱的幅度。您天真地将结果转换为uint8. 因此,任何大于 255 的值都会被截断为 255。人们通常做的一件事是取频谱的对数并在取对数之前加 1,以确保没有未定义的错误。

因此,请执行以下操作:

figure; imshow(log(1 + abs(F)), []);

你会得到这张照片:

这是频谱的更好表示。DC 系数的强度最高,位于图像的中间。高频系数向频谱的外边缘移动。您会看到不同方向的线条。这些实际上为您提供了图像中最突出边缘的方向,从垂直线开始,这告诉您摄影师图像中有很多垂直线,这是有道理的。

此外,您是正确的,因为系数的强度对应于图像中点的强度。该图像中的每个点都告诉您在这一点上经历的水平和垂直空间频率的强度。

于 2015-06-20T17:46:00.703 回答