私はバイナリ画像(白黒のピクセルのみ)からsvgのようなパスを作成する方法を探しています。画像そのものは、それに穴ができる不規則な形をしたブロブになります。ブロブのような画像の(内側と外側の)エッジからのパスを作成
穴がない場合、境界線が必要なのは、ブロブの境界線を再作成することだけです。ブロブに穴があるとき、私は追加のパスを使っても問題ありません(1つのパスだけでこれを再現することはできません)。最後に、どちらのパスが外側のパスであり、どちらがホールであるかを知る必要があります。
私はすでに、これらが見つかりました:また、私は穴の検出を必要とする
- How to add stroke/outline to transparent PNG image in JavaScript canvas
- Creating a path from the edge of an image
- How can I find hole in a 2D matrix?
を。結果がポリゴンかパスかどうかは、私にとっては重要なことではありません。私は曲線が曲がっているのに十分高い精度のポイントが必要です。
誰かがアイデアを持っていたり、それ以上の情報源があれば素晴らしいことでしょう。
PS:違いがあれば、私はキャンバスとjavascript(fabricJS)で作業しています。
こんにちは、私は現時点で構築しようとしている技術です。あなたの答えは、私が正しい道にいることを示しています。私は既にMSAとFFAを稼働させています。今私は物事をまとめようとしています。私がやったとすぐに私はフィドルを投稿します。 – Fidel90
クール - 喜んで助けてください! 1つの追加の考え:純粋な白黒ピクセルの問題は少なくなりますが、キャンバスはまだアンチエイリアスカーブになる可能性があります。したがって、フラッドフィルでパスの内部がすべてクリアされないことがあります。特に、パスの周りにアンチエイリアスのポケットがある可能性があります。パス内部の大部分をfloodfillした後に、 'globalCompositeOperation = 'destination-out''で発見されたパスを撫でることで、パス境界のアンチエイリアスを排除します。ストロークライン幅4を使用すると、アンチエイリアシングビットがクリアされます。 – markE
私はやった、私の答えを参照してください。あなたの助けをもう一度ありがとう:)最適化のためのいくつかのアイデアがある場合は、私に知らせてください。 – Fidel90