0

CプログラミングでGOP(写真のグループ、基本的にはビデオ)に沿って1d DFTを計算しようとしています。gopを一時的なdrquencyドメインに変換するには、時間方向に沿って1d DFTを適用する必要があります。このドメインでは、空間情報と時間周波数情報が同じフレームに存在します。

したがって、サイズ (M , N , T) のビデオ f(x, y, t) の 1D DFT は、M x N が各フレームのサイズであり、T が GOP 内のフレームの総数である場合、次のように計算されます。次の式:

公式方程式

openCVなどを使用してこれを処理する方法を知っている人はいますか?

追加情報が必要な場合は、お知らせください。

4

1 に答える 1

1

あなたの質問を正しく理解できれば、時間座標に関してフーリエ変換を計算したいと思うでしょう。

そのためには、3D キューブを 2D マトリックスに再形成する必要があると思います。ここで、垂直座標はピクセル インデックス (範囲 [0, MN-1]) であり、水平座標は時間 (範囲 [0 、T-1])、つまり、各行にはシーケンス内の 1 つのピクセルの値が含まれます。cv::dft()次に、関数とフラグを使用して、各行に沿って DFT ルーチンを適用できますCV_DFT_ROWS

行列の作成

マトリックスを作成するには、次のように進めます (ビデオ フレームに M 行と N 列があると仮定します)。

  1. NM行とTcv::Mat列で aを割り当てます。ここで、T は時間ウィンドウの幅です (数フレームまたは while シーケンスの長さである可能性があります)。この行列をW (ウィンドウ)と呼びましょう。

  2. ウィンドウ内の各フレーム I(.,.,t) に対して、各ピクセル I(x,y,t) ([0,N-1] の範囲の x、[0,M-1] の範囲の y) をコピーします。 W の対応する位置、つまりW(y*M+x, t)

このプロセスの最後に、W は各行に 1 つのピクセルの時間的に変化する値を含みます。cv::dft次に、フラグを指定して W を呼び出しCV_DFT_ROWS、2D フーリエ変換を水平方向に制限します。ここでは時間です。

于 2012-05-18T20:52:54.083 に答える