2012-01-31 7 views
1

私は以下のような画像を持っています。画像処理 - 削除せずにオブジェクトの厚さを減らす

私が欲しいのは、白い部分が白く保たれ、残りが黒いモノクロームのイメージです。しかし、難しい部分は、白い部分を1ピクセルの厚さに減らしたいということです。

私が悩んでいるのは2番目の部分です。
私の最初の考えは単純なスレッシュホールドを実行することでしたが、ある種の "Game of Life"タイプの反復プロセスを使用して、白いピクセルが片側に隣接していても除去された場合(つまりエッジです)時間が経ってもラインの終わりが何もないように感じるので、空白の画像で終わるだろうと感じています。

元の画像があれば、私が望む画像を得るためにどのようなアルゴリズムを使用できますか?

(選択の私の言語は、C#ですが、何でも結構です)


オリジナル画像:

Original Image

+0

はたぶんあなたが追加することができますが制限:白いピクセルが<3の白いピクセルの隣接ピクセルを持つ場合、白いピクセルを削除しないでください。 – mbeckish

答えて

2

与えられた高さの形態学的拡張の最大値を検出した後:

enter image description here

をしてから薄くなります:

enter image description here

また、高さパラメータを操作し、または薄くなっプルーニングすることができます画像。 Mathematicaで

コード:

img = ColorConvert[Import["http://i.stack.imgur.com/zPtl6.png"], "Grayscale"]; 
max = MaxDetect[img, .55] 
Thinning[max] 

EDIT私は私自身の助言に従い、0.4の高さをより正確にローカライズされたセグメント与える:

enter image description here

+0

それは私が欲しいものをほぼ正確に見えます。私はMathematicaを持っていません(そしてこれのためだけに購入したくはありません)。どのアルゴリズムを使用していますか? –

+0

何らかの理由で前のコメントを編集できません。拡張された最大値の説明については、P. Soille、 "Morphological Image Analysis"を参照されたい。間引きについては、現在どのアルゴリズムが正確に使用されているのかわかりません。これは、各白いピクセルの周りの3x3の近傍を見て、それを黒にするかどうかを決定する反復的なプロセスです。つまり、あなたが言いました "Game of life"のバージョンです。間引きの説明は次のとおりです。http://homepages.inf.ed.ac.uk/rbf/HIPR2/thin.htm –

+0

間引きでは、2つの一般的なアルゴリズムがStentifordとZhang-Suenです。アプリWinTopoの無料版には、それぞれの実装が含まれています。ラスタからベクトルへの変換に便利なスムージングオプションが含まれています。閾値化のために、「移動平均」などの局所閾値を考慮してもよい。いくつかの糸状の特徴は、目に見えるが、全体的な閾値によって排除される。 – Rethunk

関連する問題