なぜFFTのDC成分は大きくなるのか?

このQ&Aのポイント
  • FFTをすると、DC成分(X=0)の値がとても大きくなります。1次元でも2次元でも同様です。エクセルで32行の1次元FFTをすると、DC成分だけ数万という大きな値が現れ、AC成分は数十程度の値になります。この現象の理由について知りたいです。
  • 画像の2次元FFTをすると、X軸とY軸がとても白くなります。これは、DC成分が大きい影響です。しかし、この現象が問題となるのは、別の信号と相関を取る場合です。DC成分が大きすぎると、AC成分との相関係数が100%になってしまい、微妙に違うはずの信号でも相関が高くなってしまいます。
  • この問題を解決するには、DC成分の大きさによって相関係数を調整する工夫が必要です。しかし、なぜFFTをするとDC成分が大きくなるのか、数学的な理由は分かっていません。DC成分の大きさを抑える方法や、他の信号との相関計算における問題解決方法について知りたいです。
回答を見る
  • ベストアンサー

FFTのDC成分って、なんで大きくなるんですか?

2次元に限らず、1次元でも、 FFTをするとDC成分(X=0)の値がとっても大きくなります。 エクセルで32行の1次元FFTをすると DC成分だけ数万で、AC成分が実数も虚数も数十程度の値が出るんですよ~ なぜ? ちょっとした画像の2次元FFTしたものを添付します。 X軸とY軸がとっても白いのは、 DC成分がでかい影響なんです。 どうしてこれが問題かと言うと、別の信号と相関を取るとき、 DC成分だけバカでかいと、それに引っ張られてしまい、 AC成分は微妙に違うのに相関係数=100%!!とか 出力しちゃってどうしよう!ってなる訳です。 工夫のしどころ、とも考えられますが、理由が知りたいのです。 数学的に分かっていることでしょうか~?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

画像というのはそういうものです。たとえ正負両値のある(つまりsignedの)画像であっても、たいてい低周波に集中し、そしてDCが極大。 理由とか言ったって、画像というか被写体自身の周波数成分がそうなっているものですからしかたありません。むろんDCの無い画像を作ることも出来ますが。 DCに興味が無い場合は、 「いまのところ 除去して対応してるんです」 ということですが、 それでも依然としてDCが巨大ならば、除去できていないと言うことです。 とにかく総和(あるいは平均)がぴったりゼロになるようにバイアス加算してください。 よくやることです。DCの他に一次関数で差し引いたりいろいろやります。専門用語で「トレンド補正」とか「トレンド除去」とか言います。関心があったら検索するなどで調べてみてください。

NEW2010
質問者

お礼

「トレンド除去」に目から鱗・・ ありがとうございました!

その他の回答 (4)

  • tadys
  • ベストアンサー率40% (856/2135)
回答No.4

画像データには負の値は無いんです。 真っ黒より暗い色はありませんから。 ですから、全データの平均値は必ずゼロ以上の値になります。 全データの平均値=DC成分です。 明るい画像であればDC成分は大きくなります。 電気信号の場合はDC成分を含まない信号が多くあります。 この場合には、FFTの結果にDC成分は現れません。

NEW2010
質問者

お礼

例として、エクセルで1次元FFTの結果を下に示します。 信号   FFT後 1     10 2      -2+2i 3      -2 4      -2-2i 上記より、信号【1~4】をFFTするとDC成分=10になります。 (別に、信号【1~32】をFFTするとDC成分=528になります。) DC成分が平均値とすると、信号【1~4】は正弦波の下端に位置し、 当該正弦波の上端は【~20】くらいまであるんですよー、 とFFTは教えてくれているのでしょうか? 重ねて質問で誠に申し訳ありません。

回答No.3

No.2です。 信号データ(FFTする前のデータ)の変化に対して、バックグラウンドのオフセットの大きさが大きければ、FFTしたあとのデータでDCが大きくなりすぎるのは当たり前かと思われます。(そのせいで計算精度まで落ちる可能性があります) ですので、FFT前の元データからあらかじめオフセットを引き抜いて計算する必要があります。

NEW2010
質問者

お礼

早速のご返信ありがとうございます。 当方の画像を調査しましたが、 バックグラウンドはそんなに大きくないようです。 1000×1000の画像(float)に対し、 バックグラウンドの輝度値 100程度 信号の輝度値 600程度 です。これでFFTすると DC成分 60000程度 AC成分 300程度 になります。うぐぐ

回答No.2

元のデータにオフセットが乗っているとか?

NEW2010
質問者

お礼

データにオフセットが乗るって どういうことでしょうか? 重ねて質問でまことに申し訳ありません。

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

DC成分を除去すればいいじゃん

NEW2010
質問者

お礼

そうなんです~ いまのところ 除去して対応してるんです~

関連するQ&A

  • 連立二次関数の解

    判別式√b-4ac が負の値になるときは実数解は存在しないんですよね。 でも虚数解になるので、虚数空間で解を表せますか。 今高校9年生で虚数を表すときには、値を座標を使い、表すと習いました。 ということは、二次関数を表すには、xy座標を使う、つまり2次元で表しますが 虚数を表すためにx、y、それぞれに虚数軸を加えると、2次元+1次元+1次元=4次元で視覚的には表せないということでしょうか。 解りにくい説明だとは思いますが、回答をお待ちしております。

  • フーリエ変換・逆変換の虚数成分って?

    フーリエ変換を用いた論文を読んでいるときに、ある3次元関数f(x,y,z)に対してフーリエ変換・逆変換を行ったとき、逆変換で求められる値は実数成分と虚数成分があり、虚数成分を無視できるという記述を見つけました。 これは対象の関数が実数成分しかもともと持ち合わせていなかったで逆変換しても虚数はゼロである、という解釈でいいのでしょうか? 正直、フーリエ変換・逆変換に関してはほとんど初心者なのですが、気になってしまっています。誰かこの疑問に答えていただけないでしょうか?

  • matlabでのFFT

    matlabで信号処理を学んでいます。現在はFFTを使って信号処理をしているのですが、パワースペクトルを見るとDC成分だけピークがたってしまう状態です。原因としては何が考えるのでしょう。 どなたかご教授願います。

  • FFT処理後のデータの変換について

    時間-加速度波形を、例えば、EXCELでのFFT処理でもって、 実数+虚数とし、これをIMABSという関数で実数化して (周波数-)パワースペクトル?に変換することができますが、 これを、(周波数-)加速度にさらに変換するにはどうすればよいのでしょうか。 FFTアナライザなどFFTをリアルタイムでかけられる機器はありますが、 FFT処理後、どのような過程(計算)を得て、Y軸はdBそして加速度等に標記されているのでしょうか。 教えていただけないでしょうか。

  • 画像を1次元(X軸)FFTした時の位相特性

    画像をFFTで周波数空間に変換するのですが、 2次元ではなく、X軸方向に1次元のみを変換します。 Y軸上のどこか任意の場所を1つです。 出力した1次元の信号、ReとImを得ます。 位相=Im/Reとすると、貼付画像のように 直線位相特性になります。 これって、1次元の画像の場合は位相変化がないと 考えてよろしいでしょうか? というのも、電波などの電気信号処理においては、1次元FFTをすると、 位相変化するので、必ずしもキレイな直線位相特性には ならないのです。 電気信号よりも画像のほうは、素直な信号ということでしょうか~

  • 定義とFFTで導出した自己相関が違います

    ある離散信号x(t)の自己相関を求める際に 「定義通りにf(τ)=Σx(t)x(t-τ)で求めた結果」と 「xをFFTしてパワースペクトルを求めて,その逆FFTで求めた結果」 が異なるのですが,当たり前のことでしょうか? 自己相関の畳み込みはFFTの掛け算と同じだと理解していたのですが... 御教授のほどお願いします.

  • FFT後の振幅値

    振幅値が1で5Hzのsin波をFFTにかけたところ、実数部と虚数部それぞれ出力されました。 横軸を周波数軸、縦軸を実数部としてグラフ化したところ、5Hzのところに鋭いピークがみられるのですが、スペクトルの値が元のsin波の振幅値1にならず、とても大きな値になります。 これは計算が間違っているのでしょうか?

  • 主成分分析について

    主成分分析について 現在、主成分分析の計算方法を勉強をしているのですが、主成分得点の求め方がわかりません。 例をあげて説明させていただくと、 x1 x2 x3 8 9 4 2 5 7 8  5  6 3  5  4 7  4  9 4  3  4 3  6  8 6  8  2 5  4  5 6  7  6 このようなデータを分析するとして、各変数の相関係数(X1X2 X2X3 X1X3)の値はわかりますし、計算方法もわかります。 またここから固有値もわかります。 しかしここからどうやって、主成分得点を求めればよいかわかりません。 どのように計算するのですか?よろしければご回答下さい。

  • 三次元と複素数

    一般に、複素平面ではx軸に実数、y軸に虚数を取ります。 また、x軸とy軸に実数を取りz軸に虚数を取ることもあると思います。 では、x軸、y軸、z軸に実数を取った場合、虚数はどこに取ればよいのでしょうか?

  • FFTデータ数が少ないと直流成分が大きく変動する?

    FFTの振幅スペクトルから実効値算出のために単一正弦波をFFTしてみると、(1)のように計算データ点数が少ない場合、窓関数の位置によって「0Hz直流成分」のFFT結果値が大きく変動してしまいます。((2)(3)は窓関数がどの位置でも問題ありません。) この(1)(1サイクル64点=FFTデータ数64個)のような計算の場合、どのように実効値算出すればよいでしょうか?  また、正常な場合でもこれらのサンプル間隔(0、30Hz、60Hz等)の"すき間の部分”は考慮しなくても、全て計算結果に出力されているということでよいでしょうか? 単一正弦波(60Hz)   ((最大値5388.9v=実効値3810.5v)、サンプリング3.84KHz=1サイクル64点)   (実効値換算式=前半の√(実数^2+虚数^2)の合計/(FFTデータ数/2)/√2) (1)FFTデータ数 64個⇒0Hz(0.00~1905.2)???、60Hz(1905.2),120Hz(952.6)、180Hz(0.0)、          ⇒合計( ??? ) (2)FFTデータ数128個⇒0Hz(0.0), 30Hz(952.6),60Hz(1905.2),90Hz(952.6), 120Hz(0.0)、          ⇒合計(3810.4) ≒実効値 (3)FFTデータ数256個⇒0Hz(0.0),15Hz(0.0),30Hz(0.0)、                45Hz(952.6),60Hz(1905.2),75Hz(952.6), 90Hz(0.0),           ⇒合計(3810.4) ≒実効値