2016-08-14 81 views
1

パズルの写真からすべてのパズルピースの輪郭を自動的に抽出しようとしています。ここでは、グレースケールの入力画像です:OpenCVでジグソーパズルの1ピクセルラインの輪郭を取得する

Greyscale image

これまでのところ、私は11pxボックス内のローカルの標準偏差(標準偏差を取ることによって、照明条件でばらつきの少ない、より有用画像を取得することができました)、opencvを使用して結果に5ピクセルのボケを適用することです。私はピース間の1つの画素行に降りるために何をすべきかわからないんだけど、ここから

enter image description here

:それは私にこれを提供します。個々のピースに近似した輪郭を持つことは、画像をピースに分割して独立して動かせるようにするためには十分ではありません。

findContoursの結果は、これに十分近いものではありません。

ここで私の理想的な出力は、オリジナルをオーバーレイし、隣接するすべてのペアの間に1pxの黒い線を持つイメージです。

+0

おそらく、現在の画像の逆数(255 - > 0と0 - > 255)を取るべきであり、各部分が別々になることがあります。今度はfindContoursを使ってそれぞれの平和概要を取得します。 –

+0

@AmitayNachmaniもし私があなたのことを正しく解釈しているのかどうかは分かりませんが、断片がまだ分かれていなければ、画像を反転させることで作品を分ける方法が分かりません。 –

+0

標準偏差の後の画像をイメージファイル(軸付きの印刷画面ではありません)として投稿してください。私は何を示唆しているのか分かりますか? –

答えて

2

次の操作を行うことができます

  1. は、画像閾値化のために地元のしきい値を使用してください。

  2. 面積の小さい領域を削除します。

  3. 逆像(255 - ThreholdImage)

  4. findContoursを使用して連結成分を探します。

結果は次のとおりです。 enter image description here

それははるかに知事からですが、私はあなたがポストに与えた画像を使用しているため、これがあると思います。元の画像を投稿すると、より良い結果が得られると思います。

+0

小面積のエリアはどのように削除しましたか? –

+0

フィン輪郭を使用し、輪郭ごとに面積がある閾値よりも小さい場合は面積を計算します。 –

+0

私はあなたが望むなら私のコードを掲示することができます。 –

関連する問題