2

次の効果をプログラムで再現する方法を探しています。

入力画像を与える:
入力 http://www.shiny.co.il/shooshx/ConeCarv/q_input.png

「ストローク」エフェクトを繰り返し適用したい。
最初のステップは次のようになります:
ステップ 1 http://www.shiny.co.il/shooshx/ConeCarv/q_step1.png

次のような 2 番目のステップ:
alt テキスト http://www.shiny.co.il/shooshx/ConeCarv/q_step2.png

等々。

これには、ある種のエッジ検出と、何らかの方法でエッジをトレースすることが含まれると思います。
これを効率的かつ堅牢な方法で行う既知のアルゴリズムはありますか?

4

1 に答える 1

6

基本的に、このスレッドによると、カスタムアルゴリズムは次のようになります。

ピクセルの周囲の 3x3 近傍を取得し、アルファ チャネルのしきい値を設定してから、ピクセルの周囲の 8 ピクセルのいずれかがそれとは異なるアルファ値を持っているかどうかを確認します。その場合は、ピクセルを中心にして、指定された半径の円を描きます。内側/外側を行うには、しきい値のアルファ チャネルで変調します (反対側を行うには無効にします)。円の半径がピクセルよりも大きい場合 (おそらくそうです)、より大きな近傍をしきい値処理する必要があります。


これは、グレースケールの形態学的操作を使用して実装されます。これは、選択範囲を拡大/縮小するために使用される手法と同じです。基本的に、選択範囲 (またはアルファ チャネル) の中心をストロークするには、最初に選択範囲の 2 つの別々のコピーを作成します。最初の選択はストロークの半径だけ拡張され、2 番目の選択は縮小されます。ストロークの不透明度は、最初の選択から 2 番目の選択を減算することによって取得されます。

内側と外側のストロークを行うには、半径の 2 倍で縮小/拡大し、元の選択範囲と交差する部分を差し引きます。

最も一般的なモルフォロジー アルゴリズムでは、O(m*n) 操作が必要であることに注意してください。ここで、m は画像のピクセル数、n は「構造要素」の要素数です。ただし、特定の特殊なケースでは、これを O(m) 操作に最適化できます (たとえば、構造化要素が長方形またはダイヤモンドの場合)。

于 2008-10-31T07:01:27.493 に答える