質問

ビットマップ内の破線または図形を見つけることができるアルゴリズムを見つけたいです。バックとホワイト(塗り絵で使用される画像)の2色だけのビットマップがあり、互いに接続する必要がある曲線と線がありますが、スキャンエラーのために、白いビットが代わりに座っている状況を考えます黒いものの。それらをどのように検出する必要がありますか? (この仕事の後、ビットマップをベクターファイルに変換します。potraceアルゴリズムを使用します。)

アイデアがある場合はお知らせください。

役に立ちましたか?

解決

小さなギャップを修復する簡単なアルゴリズムを次に示します。

最初に、8つの隣接ピクセルのいずれかが黒の場合に黒のピクセルを作成するフィルターを使用します。これにより、一般的なアウトラインが大きくなります。

次に、余分な輪郭を削除するが、塗りつぶされたギャップのみを残す間引きフィルターを使用します。

いくつかのフィルターとパラメーターについては、この記事を参照してください: C#の画像処理ラボ

他のヒント

最も簡単なアプローチは、 close という形態学的手法を使用することです。 これは、異なる行が互いにどれだけ近いかに関して、行のギャップが非常に小さい場合にのみ機能します。

クロージングを実行するための構造化要素の選択方法によっても、パフォーマンスが向上または低下する可能性があります。

Wikipediaの記事は非常に理論的(または数学的)であるため、Googleまたは画像処理に関する任意の本を参照して、それがどのように行われるかについてより良い説明を得ることができます。

たぶんハフ変換があなたを助けることができます。ボーナス:ベクターファイルの行パラメーターを取得します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top