離散フーリエ変換を行うときはデータに窓をかける前処理を行うことがあります。
詳細は”窓関数”で検索してもらえればたくさん情報が手に入りますが、ここではWikipediaから引用します。
窓関数– Wikipedia
窓関数(まどかんすう、英: window function)とは、ある有限区間以外で0となる関数である。 ある関数や信号(データ)に窓関数が掛け合わせられると、区間外は0になり、有限区間内だけが残るので、数値解析が容易になる。 窓関数は、スペクトル分析、フィルタ・デザインや、音声圧縮に応用される。 窓関数を単に窓 (window) ともいい、データに窓関数を掛け合わせることを窓を掛ける (windowing) という。
Wikipediaをみるとわかりますが、窓の種類はたくさんあります。
ここでは一般によく利用されているハミング窓をかける例をActionScriptで。
・窓関数
1 2 3 4 5 6 7 8 9 10 |
public function windowing(data:Vector.<Number>, inv:int):void { var d:Number = 0.0; var len:int = data.length; // hamming window for(var i:int=0; i<len; i++) { d = 0.54 - 0.46*Math.cos(2*Math.PI*i/(len - 1)); if(inv == 1) data[i] *= d; else data[i] /= d; } } |
画像データに窓をかける場合はこれを二次元にすればいいだけです。(円形窓になる)
今回は画像処理ではなく信号処理ですが、フーリエ変換に関連した内容ということで一応紹介だけしました。