画像処理の勉強をしているのですが周波数について質問があります。
「周波数は平均すると0になってしまうため他の値を表すことができないけど、周波数0は何を意味しているのか」という質問を先輩から頂いたのですがどうしてもわかりませんでした。
周波数は明るさを表していると解釈しているのですが、周波数0が画像の明るさにどう関係しているかがわかりません。
「周波数」とは、電磁波の周波数
https://www.vinita.co.jp/institute/radiofrequency/020030.html
のことですか?
それとも、空間周波数
https://www.visco-tech.com/newspaper/column/detail20/
のことですか?
あるいは、上記のどちらでもなければ、「周波数」の意味を教えてください
詳しく記載しておらず申し訳ありませんでした。
空間周波数です。
画像をFFTした後の空間周波数が0の値は、画像の明るさ(各画素の画素値)の総和です
よく、FFT後にデータ数(画像の場合は総画素数)で割りますけど、そうした場合は画像の明るさの平均値になります
> 周波数は平均すると0になってしまうため他の値を表すことができない
は、どういう意味でしょうか?
空間周波数自体を平均するのですか?
それとも、いろんな空間周波数の振幅とか位相とかを平均するのですか?
どちらにしても、「他の値を表すことができない」というのが、どういうことを意味してるのかが分からない
【追記】
FFTでの正規化のやり方はライブラリによってまちまちなので、このコメントの最初に書いた「画像をFFTした後の空間周波数が0の値は...」は、質問者さんがお使いのライブラリによっては違うかもしれません
Pythonのnumpyと、MATLABと、Gnu Octaveは、このコメントに書いた通りです
ただし、違う場合でも係数が掛け算されるだけなので、画像の明るさの平均値に比例はします
【追記2】
FFTの前に窓関数を適用してる場合は、上記の「画像の明るさ」は、窓関数適用後の値になります
「直流成分」という言葉で調べると良いのでは.
少し前の話なので記憶が曖昧なのですが
周波数を一次元の波で考えると、どんな周波数でも基本的に平均値が0になるので、0以外の値を表せないそうです。この時に周波数の値が0の波が関係してくるそうです。
先輩は画像処理に詳しい方なので、間違っているとすれば自分の解釈が間違っています。
直流成分では検索をかけていなかったので調べてみます
> 周波数を一次元の波で考えると、どんな周波数でも基本的に平均値が0になる
意味が分かりました
周波数が整数(データの両端が滑らかにつながる)の成分で、直流を除くものは、全部足したら0になるので、画像の明るさの「平均値」を0以外にすることに寄与することはできません
なので、「周波数が整数の成分だけ」考えたら、画像の明るさの「平均値」を0以外にするのは、直流成分だけです
たぶん、そのことを言ってるのでしょう
でも、周波数が整数では無い成分は、全部足しても0にはならないので、それは平均値を0以外にするのに寄与すると思いますけど
画像内に周波数が整数の成分しか無い、なんて都合良い場合なんて、滅多に無いですよ
FFTでは、周波数が整数の成分しか出てこないから、分かり難いんだけど
https://www.logical-arts.jp/archives/124
の「2)周期性が成り立たない場合」のグラフを見てください
これは、周波数が3.5の成分だけがあり、直流成分はありませんが、全部足しても0ではないので、平均値は0ではありませんよね
無限の長さで積分したら直流以外は全部0になるけど、実際に扱うデータは無限の長さではないので、画像の平均値(が0では無い場合)は直流成分の寄与のみ、とは言えないわけです
【追記】
上記Webページのグラフは、全部足したら0になりますね
例が悪かった
もっと中途半端なところで切れてるような周波数の場合の話です
一番上からちょっとだけ下がったところで終わってるとか
なるほど!
丁寧な説明ありがとうございます。とてもスッキリしました!
(それもう回答にしたら良いのでは…と思いますが,自己解決の方向にもっていってもらう 方針/想定 なのでしょうか?)