为了了解 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)) =δ(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)) 将在时间上移动我们选择的数量。
将其应用于您的像素仅意味着使用 2 维 FT 而不是此处讨论的 1 维 FT。