J'essaie de détecter des rectangles dans les images. Le fond des images est une couleur (la plupart du temps). J'ai essayé deux méthodes pour obtenir une image binaire (1 = fond, 0 = bords), pour faire une transformation Hough plus tard ...
Filtre Sobel ou Canny
Image lisse A, Créer une image de différence A - gauss, Créer une image binaire avec seuil (Créer un histogramme, le bac le plus élevé doit être le fond ...)
Le résultat est une image binaire avec des bords. Je ne sais pas vraiment maintenant quelle méthode fonctionne le mieux pour une variété d'images différentes. Des idées?
image-processing
Martin Thompson
la source
la source
Réponses:
J'ai écrit une fois une application pour la détection de rectangle. Il a utilisé la détection de bord Sobel et la transformation de Hough en ligne.
Au lieu de rechercher des pics uniques dans l'image de Hough (lignes), le programme a recherché 4 pics avec une distance de 90 degrés entre eux.
Pour chaque colonne de l'image de Hough (correspondant à un certain angle), trois autres colonnes ont été recherchées pour les maxima locaux. Lorsqu'un pic satifactif a été trouvé dans chacune des quatre colonnes, le rectangle a été détecté.
Le programme a construit le rectangle et fait des vérifications supplémentaires pour la cohérence des couleurs à l'intérieur et à l'extérieur du rectangle pour discriminer les faux positifs. Le programme visait à détecter le placement du papier dans des feuilles de papier numérisées.
la source
Vous pourriez trouver que le détecteur de bord laplacien de gaussien est un meilleur choix. Il devrait vous donner des contours fermés plus souvent que le détecteur de bord Canny. Je crois que c'est ce que vous voulez puisque votre prochaine étape consiste à appliquer la transformation de Hough.
la source
Ça pourrait être utile pour vous mais c'est trop tard car je visite ce site aujourd'hui
la source
Si votre image est relativement propre, vous avez des rectangles évidents sans beaucoup de ruptures. L'alternative à une transformation de Hough est de créer des contours et de les réduire jusqu'à ce qu'ils forment un contour à 4 côtés = votre rectangle.
Il existe des exemples d'opencv pour ce faire
la source
Tutoriel Python pour trouver des rectangles écrits à partir de zéro. Utilise Canny et Hough Lines.
la source