2

与えられた画像 (以下のようなもの) をバイナリ画像 (黒と白のピクセルのみ) に変換する必要があります。これは簡単に思えますが、2 つのしきい値関数を試してみました。問題は、これらの関数のいずれかを使用して完璧なエッジを取得できないことです。どんな助けでも大歓迎です。

私が試したフィルターは、R​​GB および HSV 空間のユークリッド距離です。

サンプル画像:

ここに画像の説明を入力

これは、RGB しきい値フィルターを実行した後のものです。(この後アーティフェクトが 40% 増加)

ここに画像の説明を入力

これは、HSV しきい値フィルターを実行した後のものです。(30% ではパスはほとんど見えなくなりますが、ノイズのために明らかに使用できなくなります)

ここに画像の説明を入力

私が使用しているコードは非常に簡単です。入力画像を適切な色空間に変更し、黒色でユークリッド距離を確認します。

sqrt(R*R + G*G + B*B)

黒(0、0、0)と比較しているので

4

5 に答える 5

0

おそらく、これを 3 段階の操作として実行する必要があります。

  1. しきい値処理だけでなく、レベリングを使用する: 入力を取得し、暗い部分や明るい部分を削除せずに、単に中間トーンを鈍らせるパラメータで強度 (ガンマ補正) をスケーリングします (たとえば、RGB しきい値が強すぎます。行)。

  2. 小さなカーネル畳み込みを使用して結果の画像をエッジ検出します (バイナリ画像の場合は 5x5 で十分です)。単純な [1 2 3 2 1 ; を使用します。2 3 4 3 2 ; 3 4 5 4 3 ; 2 3 4 3 2 ; 1 2 3 2 1] カーネル (正規化)

  3. 結果の画像にしきい値を設定します。これで、より優れたバイナリ イメージが得られるはずです。

于 2013-06-13T14:42:03.087 に答える
0

黒のトップハット変換を試すことができます。これには、Image のクロージングから Image を差し引くことが含まれます。構造要素のウィンドウ サイズを 11、一定のしきい値を 0.1 (255 スケールで 25.5) に設定しました。

次のようなものを取得する必要があります。

ここに画像の説明を入力

次に、簡単にしきい値を設定できます。

ここに画像の説明を入力

幸運を祈ります。

于 2013-06-17T01:22:53.667 に答える