2016-10-12 2 views
7

J'ai des images d'entrée qui ressemblent à ceci:Segmentation de l'image: Créer des polygones

enter image description here enter image description here

J'aime segmenter les images d'une manière que je reçois approximée des polygones qui ne contiennent que horizontales une des lignes verticales.

Ma première approche était une segmentation grossière, mais je ne pouvais que créer des objets rectangulaires. Cela ne fonctionne pas pour la deuxième image.

Ensuite, j'ai essayé d'utiliser un arbre de décision: Pour chaque image j'ai formé un arbre de décision avec les entrées x et y positions de tous les pixels et la classification noir/blanc. Ensuite, j'ai seulement utilisé la première couche n de cet arbre. Avec ce nouvel arbre j'ai fait une prédiction pour tous les pixels. Parfois, cela fonctionnait bien, mais parfois non. Surtout la profondeur de l'arbre varie d'une image à l'autre ...

Peut-être que quelqu'un a une idée de comment faire cela? Ou existe-t-il déjà un algorithme pour ce cas d'utilisation disponible?

Merci beaucoup

Cordialement

Kevin

Répondre

2

je reçois assez des résultats raisonnables en utilisant une morphologique « amincissement » suivie d'une « érosion » pour enlever horizontalement ou verticalement orientée fonctionnalités. Je le fais juste à la ligne de commande avec ImageMagick mais vous pouvez utiliser les liaisons Python si vous préférez.

Ainsi, les caractéristiques horizontales:

convert poly.png -threshold 50% -morphology Thinning:-1 Skeleton -morphology erode rectangle:3x1 im1h.png 

enter image description here

et caractéristiques verticales:

convert poly.png -threshold 50% -morphology Thinning:-1 Skeleton -morphology erode rectangle:1x3 im1v.png 

enter image description here

et, en utilisant l'autre image:

convert poly2.png -threshold 50% -morphology Thinning:-1 Skeleton -morphology erode rectangle:1x3 result.png 

enter image description here