細線化のアルゴリズム
Namespace: FVIL.FilterAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public enum ThinningMode |
Visual Basic |
---|
Public Enumeration ThinningMode |
Members
Member name | Value | Description | |
---|---|---|---|
Hilditch | 0 | ヒルディッチのアルゴリズム | |
Deutsch | 1 | ドイチュのアルゴリズム |
Remarks
細線化のアルゴリズムを指定する定数です。
本ライブラリに実装するアルゴリズムは、以下の2種類です。
Hilditch のアルゴリズム : FVIL.Filter.ThinningMode.Hilditch
Hilditch (ヒルディッチ) は、逐次型のアルゴリズムです。
Deutsch のアルゴリズム : FVIL.Filter.ThinningMode.Deutsch
Deutsch (ドイチュ) は、並列型のアルゴリズムです。
細線化とは、画像のトポロジー(連結性、穴、分岐)を保持しながら幅1の線分を得る方法です。
具体的には、以下の性質を持ちます。
- 線幅が1となる
- 線は元の図形のほぼ中心を通る
- 図形の連結性が保持されている
- 細線化の過程で中心線が大幅に縮まらない
- 小さな凹凸によりヒゲが発生しない
- 図形が回転しても中心線の形が安定している
- 線の交差部で中心線の形が歪まない
細線化処理は、対象画素が以下の6つの条件に当てはまる時に削除を行い、 線幅が1になるまで繰り返します。
- 処理対象色の画素
- 境界上に存在する画素
- 端点でない
- 孤立点でない
- 削除しても連結性を保持する
- 線幅が2の線分の片側だけを削除する
逐次型と並列型について:
細線化の過程で画素値を更新する方法の違いを意味しています。
逐次型は、前回の処理で更新した結果を次の処理に用います。
並列型は、前回の処理で更新された場合においても元の画素値を用います。
逐次型は、判定条件が単純ですが、前回の処理の影響で線がずれる傾向があり、
細線化結果が線画像の中心に位置しにくい欠点があります。
並列型は、判定を行う画像と更新を行う画像をそれぞれ保持する必要があり、
判定条件が複雑になる欠点があります。
しかし、細線化結果は線画像の中心に位置しやすい利点があります。
処理イメージ:
【入力画像】
【Hilditch による結果】
【Deutsch による結果】
注釈:
ここに記載する説明は、『新編 画像解析ガイドブック』より一部引用しています。