フィルターカーネルを適用する方法


8

オーディオ、ビデオ、または画像処理などのデジタル信号に使用できるフィルターは、周囲の領域に重みを付ける行列(「カーネル」)を使用して定義できます(これは、他の人からの講義ノートで読んだ説明です)。

カーネル は、侵食フィルターを定義します

111111111

このカーネルが、たとえば画像(したがって、ピクセルの2Dフィールド)にどのように適用されるか教えていただけませんか?前もって感謝します!


侵食「フィルター」という用語は、非常に非線形な操作であるため、ここでは少し誤った名称です。より厳密な意味でのフィルターは、線形の時間不変操作を指します。カーネルとの畳み込みはフィルターであり、侵食プロセスを適用することはそうではありません
Hilmar

1
IMO、答えは1行です。たたみ込みです。畳み込みと数学の方程式、および畳み込みの実装を研究し、それを実行します。(この場合、2D畳み込みを行います)。
Trevor Boyd Smith

1
本当の質問は、「FIRフィルターでどのようにフィルターをかけるのですか?」または「畳み込みはどのように機能しますか?」または「どのように畳み込みを実装しますか?」
Trevor Boyd Smith

これはカーネルではなく、構造化要素です。したがって、まったく異なる方法で適用されます。以下の@kolentebertの回答を参照してください。簡単に言えば、それは画像にオーバーレイして、極大/極小を抽出する形状です。
sansuiso 2013年

回答:


2

あなたの侵食フィルターは正しくありません。あなたが与えたリンクは、それが隣接するピクセルの最大値を見つけることになっていると言っています、そしてあなたの配列はこれをしません。代わりに、隣接するピクセルの合計を提供します。結果を正規化すると(これらすべての追加により明るさが増すため)、フィルターは隣接するピクセルを平均化するだけです。

あなたが一般的にすることはあなたのイメージを取り、あなたのフィルターでそれの3x3ブロックをコンボリューションすることです(またはどんなに大きいフィルターでも)。速度を上げるために、これらを並行して行うこともできます。


5

画像処理では、このようなフィルターを適用するには、入力画像のすべてのピクセルを反復処理し、各ステップでフィルターマスクを画像上に配置して、その中心が現在のピクセルに位置するようにします。次に、何らかの方法でマスクで覆われた近傍のピクセルを「評価」し、結果を現在のピクセルに書き戻します。

通常の畳み込みの場合、フィルターの各要素に対応するピクセルの値を乗算し、結果を合計して、現在のピクセルに合計を書き込みます。

侵食は形態学的操作であり、マスクのすべての「1」値が画像の「1」ピクセル上にあるかどうかを確認することで、それを(バイナリ画像に)実装します。その場合、現在のピクセルに「1」を書き込みます(そうでない場合は「0」)。

どちらの場合も、(画像をインプレースで変更するのではなく)変更されていないバージョンの画像から常に入力ピクセルを読み取るようにしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.