4

OpenCV を使用して C++ でアプリケーションを作成し、画像内の個々のピクセルにガウス フィルターを適用しています。たとえば、画像内の各ピクセルをループし、それらが特定の RGB 値と一致する場合、それらのピクセルのみにガウス アルゴリズムを適用して、画像のそれらの部分の周囲でのみぼかしが発生するようにします。

しかし、私はこれを行う方法を見つけるのに苦労しています。OpenCV ライブラリが提供するGaussianBlur()機能では、画像全体をぼかすことしかできず、一度に 1 つのピクセルにアルゴリズムとカーネルを単純に適用することはできません。これを達成する方法について誰かアイデアがありますか (たとえば、私が知らない別の方法はありますか)? 1 つのピクセルだけに適用するために、アルゴリズム全体を自分で書き出す必要がないことを願っています。

4

2 に答える 2

4

私の友人が良い解決策を思いつきました:

  • 元のマトリックスを複製する
  • GaussianBlur()クローンに適用する
  • 各ピクセルを RGB 値と比較する
  • 一致する場合、オリジナルのピクセルをクローンのピクセルに置き換えます

それがどれほど簡単だったか信じられません。

于 2013-04-21T16:36:01.637 に答える
1

ガウスぼかしを数ピクセルだけに適用する必要がある場合は、自分でコーディングできます。思ったよりずっと簡単で、数行しかかかりません。これは、カーネルにガウス関数を使用する単純なステンシル オペレーターです。必要なのは、ピクセルとその近傍の座標だけです。

残りは簡単です。これはガウス行列の例で、簡単にコーディングしたり、ガウス関数を使用して生成したりできます。

ガウスぼかし行列の例

つまり、隣接する値の加重平均にすぎません。

于 2013-04-21T15:28:43.603 に答える