1

カメラフレームの輝度を一定期間測定し、フーリエ解析を使用して心拍数を計算して波の周波数を見つける Android アプリを作成しています。問題は、スペクトル分析が次のようになることです。

スペクトル解析 (y 軸はマグニチュード、x 軸はインデックス)

これは、スペクトル分析がどのように見えるべきか (正規分布のように) のほぼ逆です。これを正確に評価して最大マグニチュードのインデックスを見つけることはできますか? それとも、このスペクトルは私のデータにノイズが多すぎることを示していますか?

編集: カメラ データは次のようになります (これに対して FFT を実行しています)。 現在のフレームの輝度対時間

4

1 に答える 1

0

ここで2つの問題が発生しているようです:

1) FFT 出力は、多くの場合、負の周波数の値を正の周波数の右側に配置します。これは、ここに当てはまるようです。したがって、FFT の右半分を左に移動しfreq=0、中央に配置する必要があります。

2)コメントでは、マグニチュードをプロットしていると言っていますが、明らかにそうではありません(マグニチュードは0より大きく、対称でなければなりません)。代わりに、おそらく実際の部分をプロットしているだけです。代わりに、マグニチュードまたはRe*Re + Im*Imを使用します。ここで、ReImはそれぞれ実部と虚部です。(数値の形式によっては、 のようなものMath.sqrt(Math.pow(a.re, 2) + Math.pow(a.im, 2))です。)

于 2015-11-09T00:17:16.827 に答える