为了了解DFT如何使您移动图像,需要一些关键的见解。
首先,傅立叶定理:首先看连续(即模拟)情况可能更容易。假设您有一些函数,将其称为g(t)。为简单起见,假设g(t)是模拟音频记录,因此它是一维函数,它是连续的,并表示瞬时压力随时间的变化。
现在,g(t)是我们表示音频记录的一种方法。另一个是G(f)。G(f)是g(t)的傅立叶变换。因此,G(f)== FT(g(t))。G(f)具有与g(t)相同的所有信息,但是它在频域而不是时域中表示该信息。关于傅立叶变换有一些挑剔的细节,我不会提及。
您可以将G(f)视为g(t)中包含的“频率分布”。因此,如果g(t)是正弦波(即纯音),则G(f)各处都将为零,但该音的频率除外。可能需要指出,G(f)通常是一个复数函数-也就是说,它返回复数,可以认为它具有实部和虚部或幅值和相位。
这里有一个小的离题:由于g(t)是连续的(在域和范围上),因此G(f)也是连续的。那么,除了音频频率之外,G(f)怎么在其他地方都为零?好吧,FT(sin(wt))=。其中是Dirac delta函数。δ(w)δ
好的,现在我们可以连续进行FT了。
这是第二个见解:离散傅里叶变换就是傅里叶变换,就像采样信号是模拟信号一样。在这种情况下,“离散”是指函数域(时间或频率)的量化,而不是范围的量化。(从声卡获得的采样数字信号在域和范围内都被量化。)
您从声卡获得的数字字节流包含来自麦克风的原始连续(模拟)信号的“样本”。如果我们对采样的g(t)进行DFT,我们仍然会得到G(f)。记住,G(f)是表示g(t)中包含的信息的另一种方式。如果我们遵循奈奎斯特定理,则采样信号g(t)包含原始连续信号的所有“智能”,因此离散G(f)必须包含原始连续信号的所有信息。顺便说一下,G(f)仍然是一个复数函数。
这就是亚像素移位的神奇之处,但是在这种情况下,我要写的是关于音频信号的时间移位少于一个样本,因为这是同一件事。
还记得G(f)是一个复函数吗?为了表示在t = 0处不为零的频率,它必须很复杂。记住,sin(0)= 0,所以sin(2 * 0)= 0,依此类推。但是,如果我们开始记录整个音调周期的四分之一,该怎么办?那就是G(f)的相位部分的来源。在这种情况下,相位将为90度或pi / 2弧度,具体取决于您偏好代表一个周期的四分之一。所以G(tone_frequency)= 0 + i或。eiπ2
这意味着我们只需更改G(t)的相位,就可以及时改变录音的时间(可以选择任意量,包括采样时间的一部分)。实际上,这种说法可能有点太随意了。对于未量化的采样信号,可以任意调整相位(这是我在较早时候就对域和范围进行量化的原因之一。)但是,对于量化的采样信号(例如,我们的音频字节流),量化步长(即位数)决定了我们可以调整相位的分辨率。当我们进行傅立叶逆变换G(f)(或对此采样信号进行DIFT变换)时,新的一组采样g'(t)= DIFT(G(F))将在时间上全部偏移我们选择的数量。
将其应用于像素仅意味着使用二维FT,而不是此处讨论的一维FT。