【HALCON】convol_fft 関数について - 周波数領域での畳み込み
2024-08-25
2024-08-25
HALCON
のconvol_fft
関数は、画像のフーリエ変換を利用して、周波数領域で畳み込み処理を行うツールです。この関数は、入力された複素画像(ImageFFT
)とフィルタ画像(ImageFilter
)をピクセル単位で乗算し、その結果を新しい画像として出力します。この手法は、空間領域での畳み込みと同等ですが、計算の効率性が向上します。
convol_fft関数の概要
convol_fft
関数は、フーリエ変換された画像に対して周波数領域でフィルタリング処理を行います。具体的には、以下の3ステップで画像の畳み込みが実行されます。
- 入力画像をフーリエ変換して周波数領域に変換(
fft_generic
などを使用)。 - フーリエ変換された画像とフィルタをピクセル単位で乗算。
- 畳み込まれた結果を逆フーリエ変換して空間領域に戻す。
このプロセスにより、画像のエッジ検出や強調、ノイズ除去などの処理が効率的に行えます。
使用例
以下のコード例では、HALCON
のconvol_fft
関数を使用して画像に対するハイパスフィルタの適用を行っています。
HObject Image, ImageFFT, ImageConvol, ImageResult;
HTuple Width, Height;
// フィルタの生成
gen_highpass(&Highpass, 0.2, "n", "dc_edge", Width, Height);
// 画像のフーリエ変換
fft_generic(Image, &ImageFFT, "to_freq", -1, "none", "dc_edge", "complex");
// 畳み込みの実行
convol_fft(ImageFFT, Highpass, &ImageConvol);
// 逆フーリエ変換で空間領域に戻す
fft_generic(ImageConvol, &ImageResult, "from_freq", 1, "none", "dc_edge", "byte");
このコードでは、フーリエ変換された画像にハイパスフィルタを適用し、空間領域に戻してエッジを強調した画像を生成しています。
応用例
-
ノイズ除去
高周波成分を取り除くためのローパスフィルタを使用して画像のノイズを除去します。 -
エッジ検出
ハイパスフィルタを適用して画像のエッジを強調し、物体の輪郭を抽出します。 -
画像解析
特定の周波数成分を強調または除去することで、画像の特徴抽出やパターン認識に利用します。
まとめ
HALCON
のconvol_fft
関数は、周波数領域での画像処理において非常に効率的なツールです。この関数を使うことで、複雑なフィルタリング処理を高速に実行し、画像解析や改善に役立てることができます。