DFTを使用したサブピクセル画像シフトは実際にどのように機能しますか?


12

サブピクセルシフト画像の生成を伴うアプリケーションのいくつかの画像補間方法の品質を評価しようとしています。これらすべての補間バリアントを使用してサブピクセルシフトの結果を完全にシフトした画像と比較できると思いましたが、おそらくそれを取得することはできません(補間の必要性はどうなりますか?)。

私は、周波数領域でDFT +シフトを使用することを考えていましたが、画像を明示的に補間する(バイリニア、バイキュービックなどを使用する)場合と比較して、実際にどのように機能するのかわかりません。完全にシフトした画像を生成することはできないと確信していますが、指を置くことはできません。DFTを使用したサブピクセルシフトは、補間の適用と同等ですか?この方法を使用して取得した画像のピクセル値のバイアスはどのくらいですか?ありがとう!

編集: 問題を考えた後、FFTは高調波(正弦関数)の観点から元の関数の近似(さらにはDFT)であるため、何らかの三角補間に相当すると考えました。離散データの「フーリエ級数補間」式は三角補間でしたが、接続されているかどうかはわかりません。


高速フーリエ変換(FFT)は、離散フーリエ変換のアルゴリズムです。DFTは、高調波に関する元の関数の近似ではなく、複雑な指数直交基底への信号の投影です。
ブライアン

わかりましたが、信号自体はいくつかの強度分布のサンプリングおよび量子化された近似であり、DFTはその理論的分布と比較して高調波成分に関して制限されています。IDFTから正確な信号を取得できますが、IDFTを戻す前に何かを行う(シフトするなど)場合は、多少のバイアスが生じます。それとも何か不足していますか?
-neuviemeporte

DFTは実際に離散化された入力を受け取りますが、量子化された入力に限定されません。信号が何であるかは関係ありません。あなたが指摘したように、正確な信号を取り戻すことができます。ただし、「シフト」とはどういう意味かわかりません。周波数領域でのシフトの特性はよく知られています(時間領域での複雑な周波数変換)。「時間」ドメインにシフトしたい場合は、そのDFTデュアルについて考える必要があります。
ブライアン

1
私は、信号のDFTで何らかの操作を実行すると(私の場合-フーリエシフト定理を使用した「ピクセル領域」の画像のサブピクセルシフト)、@ hotpaw2の説明に従って補間された結果を返す回答。信号が帯域制限されておらず、DFT自体が量子化された(0〜255)サンプルの有限セットから計算されたため、この補間は不完全です。
neuviemeporte

回答:


4

DFT / FFTに加えて、周波数領域にゼロパディングを追加し、さらにIDFT / IFFTを追加すると、補間ポイントが返されます。これらのポイントは、周期的なSincカーネルを使用して補間されます。これは、元のサンプルレートの半分以下に厳密に帯域制限された元のデータの完全な補間です。ただし、データは循環的にラップされているかのように処理されるため、一部の画像のエッジで奇妙な結果が生じる場合があります。そのため、補間前に元のソースの端を素敵なフィラーまたはフレーミングカラーでパディングすることができます。

2Xでアップサンプリングする場合(IFFTの前にFFTをゼロパッドして長さを2倍にする)、補間ポイントを使用してハーフピクセルシフトを行うことができます。3番目のピクセルシフトなどの3X。シフトの場合、元のポイントと余分な補間ポイントを捨てて、希望のサイズにすることができます。


5
@ hotpaw2:DFTの補間カーネルは無限のsinc()ではありません。実際、DFTは離散的な有限変換です。DFTによる補間はディリクレカーネルとの畳み込みと等価である、とも呼ばれる定期的なsinc()いくつかの著者:en.wikipedia.org/wiki/Dirichlet_kernel
Arrigo

@Arrigo:同意する。修正する回答を編集しました。
hotpaw2

@ hotpaw2:FFTを2倍のサイズにパディングすると、IFFTは2倍のサイズの再構成を生成します。余剰をどうするかわからない?ありがとう
neuviemeporte

不要な余剰ポイントは捨ててください。2Xアップサンプルでは、​​再構成された元のポイントと交互に1つおきにシフトされます。3Xアップサンプルでは、​​2つのシフトポイント(1/3および2/3)が元のポイントと交互に取得されます。等あなたがアップサンプリングすればするほど、あなたは捨てます。
hotpaw2

7

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を使用することを意味します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.