DFTを使用して画像をシフトする方法を理解するために必要ないくつかの重要な洞察があります。
第一に、フーリエの定理:最初に連続的な(つまり、アナログの)ケースを見る方がおそらく簡単でしょう。関数があると想像して、g(t)と呼びます。簡単にするために、g(t)はアナログ録音であると仮定します。したがって、それは連続的な1次元関数であり、瞬間的な圧力を時間の関数として表します。
現在、g(t)は、オーディオ録音を表すことができる1つの方法です。もう1つは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)が一般に複雑な関数であることを言及する良い点です。つまり、複素数を返します。これは、実数成分と虚数成分または振幅と位相を持つと考えることができます。
δ(w )δ
わかりました、それで今私達は私達のベルトの下で連続的なFTを持っている。
2番目の洞察は次のとおりです。離散フーリエ変換は、サンプリングされた信号がアナログ信号に対するものであるように、フーリエ変換に対するものです。この場合、「離散」とは、範囲ではなく、関数のドメイン(時間または周波数)の量子化を指します。(サウンドカードから取得したサンプリングされたデジタル信号は、ドメインと範囲の両方で量子化されます。)
サウンドカードから取得するデジタルバイトストリームには、マイクからの元の連続(アナログ)信号の「サンプル」が含まれています。サンプリングしたg(t)のDFTを取得しても、G(f)が得られます。G(f)は、g(t)に含まれる情報を表す単なる異なる方法であることを忘れないでください。私たちが従わ場合はナイキストのtheorumを私たちの離散G(f)は、当社の元の連続信号からすべての情報を含んでいなければならないので、サンプリングされた信号g(t)は、元の連続信号の全ての「知性」が含まれています。かっこいいですが、G(f)は依然として複雑な関数です。
これがサブピクセルシフトの魔法の出番ですが、この場合、同じことなので、オーディオ信号をサンプルよりも少しだけシフトすることについて書きます。
e私はπ2
つまり、G(t)の位相を変更するだけで、オーディオ録音を時間的に(サンプル時間の一部を含め、選択した任意の量だけ)シフトできます。実際、その声明はおそらく少しカジュアルすぎます。量子化されていない、サンプリングされた信号の場合、位相は任意に調整できます(これは、ドメインの量子化と範囲を以前に区別した理由の一部です)。ただし、量子化されたサンプル信号(たとえば、オーディオのバイトストリーム)の場合、量子化ステップサイズ(つまり、ビット数)により、位相を調整できる解像度が決まります。G(f)を逆フーリエ変換(またはこのサンプリングされた信号の場合はDIFT)すると、新しいサンプルのセットg '(t)= DIFT(G(F))はすべて、選択した量だけ時間的にシフトします。
これをピクセルに適用するということは、ここで説明した1次元FTの代わりに2次元FTを使用することを意味します。