
これが目的のスムージング結果である場合は、ガウスぼかしを実行した後、しきい値を設定することで取得できます。つまり、パラメータとしてで使用cvSmooth
しCV_GAUSSIAN
ます。が続きcvThreshold
ます。
しきい値処理よりもスムーズな遷移が必要な場合(このように)、レベルを調整することでそれを得ることができます(エッジ遷移の一部を保持するように色範囲を再マッピングします)。
updateしきい値処理でスムーズな(アンチエイリアス処理された)エッジを取得する方法を説明するために、しきい値処理の機能を検討してください。基本的に、画像内の各ピクセルを一度に1つずつ処理します。ピクセル値がしきい値よりも低い場合は黒(0)に設定され、そうでない場合は白(255)に設定されます。
したがって、しきい値演算子は非常に単純ですが、他の一般的なマッピング関数を使用できます。基本的に、これは関数f(i)
です。ここi
で、は強度ピクセル値(0〜255の範囲)でf(i)
あり、はマップされた値です。しきい値の場合、この関数は単純です
f(i) = { 0, for i < threshold
255, for i >= threshold
あなたが持っているのは平滑化された画像です(ガウスカーネルを使用したcvSmoothによって、それが理にかなっている場合、「最も滑らかな」平滑化を提供します)。したがって、0から255の範囲の値のソフト遷移がエッジにあります。実行したいのは、この遷移をはるかに小さくして、良好なエッジを取得することです。弾道を使用する場合は、0から255に直接移動します。これは、すでに実行した2値しきい値と同じです。
ここで、おそらく4つの強度値(127 +-4)の範囲を0〜255の全範囲にマッピングする関数について考えてみます。つまり
f(i) = { 0, for i < 123
255, for i >= 131
linear mapping, for 123 <= i < 131
そして、あなたは望ましい出力を得る。簡単に見て、openCVにすでに実装されているかどうかを確認します。ただし、自分でコーディングするのはそれほど難しいことではありません。
update2
輪郭バージョンは次のようになります。
f(i) = { 255, for i < 122
linear mapping (255->0), for 122 <= i < 126
0, for 126 <= i < 127
linear mapping (0->255), for 127 <= i < 131
255, for 131 <= i