窓関数

離散フーリエ変換を行うときはデータに窓をかける前処理を行うことがあります。

詳細は”窓関数”で検索してもらえればたくさん情報が手に入りますが、ここではWikipediaから引用します。
窓関数- Wikipedia

窓関数(まどかんすう、英: window function)とは、ある有限区間以外で0となる関数である。 ある関数や信号(データ)に窓関数が掛け合わせられると、区間外は0になり、有限区間内だけが残るので、数値解析が容易になる。 窓関数は、スペクトル分析、フィルタ・デザインや、音声圧縮に応用される。 窓関数を単に窓 (window) ともいい、データに窓関数を掛け合わせることを窓を掛ける (windowing) という。

Wikipediaをみるとわかりますが、窓の種類はたくさんあります。
ここでは一般によく利用されているハミング窓をかける例をActionScriptで。

・窓関数

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;
	}
}

画像データに窓をかける場合はこれを二次元にすればいいだけです。(円形窓になる)

今回は画像処理ではなく信号処理ですが、フーリエ変換に関連した内容ということで一応紹介だけしました。

 

Tags:

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name