非常に周期的なアーチファクトによって汚染された一連のムービーフレームで構成されるデータセットの事後分析を行っています。このアーティファクトをフレームから削除したいと思います。
プロットを簡単にするためにM
、ピクセル値の配列をに再形成し、[nframes, npixels]
すべてのピクセル値を平均して1Dベクトルを作成しましたm
。以下は、この信号が時間領域でどのように見えるかです。拡大されたインセットでは、振動がはっきりとわかります。
次に、を使用してピリオドグラムを作成し、周波数に対してFm = rfft(m)
プロットabs(Fm)**2
しました。約1.5 Hzに非常に鋭いピークが見られます。
時間の周期性だけでなく、このアーチファクトの空間成分も弱いようです。正確なピーク周波数値では、フレームのx軸全体で位相が滑らかに変化するように見えるため、右は左のピクセルより遅れる傾向があります:
力ずくのアプローチとして、1.5Hzを中心とするノッチフィルターを使用して、時間領域の各ピクセルをフィルターに掛けてみました。臨界周波数1.46および1.52Hzの4次バターワースフィルターを使用しました(フィルターの設計に精通していないため、より適切な選択肢があると確信しています)。
フィルタリング後の平均ピクセル信号は次のようになります。
そして対応するピリオドグラム:
ノッチフィルターは、アーティファクトを減らすのにかなり良い仕事をしますが、基本的には純粋な定常正弦波のように見えるので、周波数空間のその部分を単に減衰させるよりも上手く行けると思います。
私の最初の(非常に素朴な)アイデアは次のようなことをすることでした:
- ムービーの各ピクセルのフーリエスペクトルから振動の周波数、位相、振幅を取得します
- 時間領域で振動を再構築する
- 映画のフレームからそれを引く
干渉は通常スペクトル的に純粋ではなく、一時的に静止していないため、これは通常人々が行うことではないことを理解していますが、私の場合はそれが理にかなっているのではないでしょうか。
データ
フル16ビットTIFFスタック(非圧縮2GB以下)
空間的に間引かれた8ビットバージョン(約35MB非圧縮)
x
。次にFx = rfft(x)
、を取得し、次のように出力を取得しますabs(Fx)**2