周波数領域の画像をスムージングしたい。グーグルを使って記事を見ると、必要のないいくつかのMatlabコードが表示されました。画像に対してFFTを実行することはできますが、周波数領域で平滑化手法(ILPF、BLPF、IHPF、BHPF)を実装する方法がわかりません。画像処理ライブラリを使用せずに上記の手法のいずれかのコードサンプルを提供できる場合、それは非常に役立ち、C#が推奨されます。
ありがとう、
周波数領域の画像をスムージングしたい。グーグルを使って記事を見ると、必要のないいくつかのMatlabコードが表示されました。画像に対してFFTを実行することはできますが、周波数領域で平滑化手法(ILPF、BLPF、IHPF、BHPF)を実装する方法がわかりません。画像処理ライブラリを使用せずに上記の手法のいずれかのコードサンプルを提供できる場合、それは非常に役立ち、C#が推奨されます。
ありがとう、
「周波数ドメインでの平滑化」の意味を定義できますか? FFT を使用してスペクトル画像を生成し、その画像に関数を掛けて特定の周波数を減衰させ、逆 FFT を使用してスペクトルを画像に戻すことができます。ただし、この種のフィルタリング (周波数のスケーリング関数による乗算) の場合、空間領域で二重関数を使用して畳み込むことにより、同じ結果をより迅速に得ることができます。
いずれにせよ、これを自分で実装したい場合は、FFT (高速フーリエ変換) と畳み込みを読んでください。離散フィルタリングの背後にある理論はかなり深いため、興味がある場合は、信号処理の教科書を調べることもできます。アルゴリズムは、その理論がなければあまり意味がありませんが、理解していなくても確実に適用できます。
独自の DSP アルゴリズムを実装したい場合は、この本をオンラインでチェックしてください。特に、Ch 33 では、バターワース フィルター設計の背後にある数学とアルゴリズムについて説明しています。Ch 12 では、FFT の実装方法について説明します。
Christian Graus による Code Project に関するすばらしいシリーズがあります。特に、平滑化フィルターを扱うパート 2 が役に立ちます。
C# および GDI+ を使用したダミーの画像処理 パート 1 - Per Pixel フィルター
C# および GDI+ を使用したダミーの画像処理 パート 2 - 畳み込みフィルター
C# および GDI+ を使用したダミーの画像処理 パート 3 - エッジ検出フィルター
C# および GDI+ を使用したダミーの画像処理 パート4 - C# と GDI+ を使用したダミーのバイリニア フィルターとサイズ変更
画像処理 パート 5 - C# と GDI+ を使用したダミーの渦巻き
画像処理を含む変位フィルター パート 6 - HSL 色空間
Keshan、それは簡単です。FFT が、低周波数が中央にあり、高周波数が中央から離れている別の 2 つの画像であると想像してください。ピクセルに -w/2 から w/2 および -h/2 から h/2 の番号が付けられている場合、単純に中央からの距離を a(x,y)=sqrt(x^2+y^2) として測定できます。 . 次に、f(x)=1/(1+x) のような任意の単調減少関数を取り、fft の各点に f(a(x,y)) を掛けます。次に、FFT を使用して元に戻します。
f(x) にはさまざまな選択肢があり、見た目が異なります。たとえば、ガウス関数やベッセルなどです。私は学部生のためにこれをやりましたが、とても楽しかったです。あなたが私にメールを送ってくれれば、私のプログラムを送ります:-)。
1 つの注意点は、fft の出力の順序です。それが生成する配列は、奇妙な方法で順序付けできます。「分析的」フーリエ変換で、どの配列インデックスがどの x/y 位置に対応するかを調べることが重要です。
すべての画像/信号処理には、OpenCVをお勧めします。
これには、マネージドC#ラッパーEmguがあります。