-5

我想知道傅立叶矩阵中的哪些值对图像的大小、旋转、平移等变化负责。

我编写了一个二维 DFT 函数,该函数输出复数的 dft 矩阵。

如何删除负责图像缩放、平移和旋转的值,例如当我有 2 个图像时:

图片1

Image2 = Image1 旋转 90 度

一旦我们比较了两幅图像的 DFT 矩阵,我们就会发现它们是相等的。

这是我拥有的 DFT 函数的代码:

%----------------------------------------------------------------
function [Xk] = dft1(xn)
N=length(xn);
n = 0:1:N-1; % row vector for n
k = 0:1:N-1; % row vecor for k
WN = exp(-1j*2*pi/N); % Twiddle factor (w)
nk = n'*k; % creates a N by N matrix of nk values
WNnk = WN .^ nk; % DFT matrix
Xk = (WNnk*xn );
%----------------------------------------------------------------

%----------------------------------------------------------------
function out=dft2(x)

y=zeros(size(x));
y1=y;
C=size(x,2); %number of columns
for c=1:C
y(:,c)=dft1(x(:,c));
end
R=size(x,1); %number of rows
for r=1:R
y1(r,:)=dft1(y(r,:).');
end
out=y1;
%----------------------------------------------------------------
4

2 回答 2

5

假设您的图像是无限的(因为我们不希望边界效应使这里的理论变得模糊)。

更改图像大小/比例会导致傅里叶域中的相应比例,按因子缩放图像s将频域缩放1/s. 对于有限的图像,这意味着如果将图像缩放2,则会失去频域的上半部分——即图像中的高频和细节。

旋转图像对应于频域中的类似旋转。

转换图像相当于改变傅立叶系数的相位:按x像素进行转换会导致exp( -j pi x )频域中的一个因子(最多为一些常数缩放)。

可以在此处找到对傅立叶变换的这些属性的一个很好的总结。


现在,尽管理论提出了很好且清晰的条件,其中两个信号的 DFT 可以匹配,尽管在实践中进行缩放/旋转/平移,但并不总是那么简单。
例如,考虑平移的情况:傅立叶变换的性质表明,仅通过平移不同的两个信号,它们的 DFT 仅通过调制不同,因此理想地划分两个信号的 DFT 将仅产生调制分量,并且不仅揭示了信号在翻译方面是相同的,但在两个信号之间的翻译量也是相同的。
然而,在实践中情况并非如此。对于有限信号,转换一个信号会导致边界效应:一些像素丢失(在可见信号“外部”转换),而一些新像素被引入。由于 DFT 是全局的(即变换信号的每个值都受到原始信号的所有值的影响),这些边界效应导致变换后的变换信号的所有值不仅因所需调制而不同,而且完全不同,从而使比率两个信号之间相当随意。
缩放和旋转也是如此。

于 2014-12-17T13:49:30.687 回答
-1

取 DFT 的大小,将其转换为对数极坐标,取其 FFT,然后取大小。它会给你平移、旋转和缩放不变性,但它不会给你对其他变换的鲁棒性。

于 2014-12-22T16:13:50.763 回答