Quelle est la méthode la plus simple * correcte * pour détecter les rectangles dans une image?

J’essaie de penser à la meilleure méthode pour détecter les rectangles dans une image.

Ma pensée initiale est d’utiliser la transformation de Hough pour les lignes et de sélectionner des combinaisons de lignes dans lesquelles deux lignes sont croisées à la fois par la partie inférieure et la partie supérieure par les mêmes deux lignes, mais cela n’est pas suffisant.

L’utilisation d’un détecteur d’angle avec la transformation de Hough fonctionnerait-elle?

Consultez /samples/c/squares.c dans votre dissortingbution OpenCV. Cet exemple fournit un détecteur carré, et cela devrait être un très bon début.

Ma réponse ici s’applique également.

Je ne pense pas qu’il existe actuellement une méthode simple et robuste pour détecter les rectangles dans une image. Vous devez faire face à de nombreux problèmes tels que les rectangles n’étant pas exactement rectangulars mais seulement approximativement, les occlusions partielles, les changements d’éclairage, etc.

Une direction possible consiste à segmenter l’image, puis à vérifier à quel point chaque segment est proche d’un rectangle. Comme vous ne pouvez pas faire confiance à votre algorithme de segmentation, vous pouvez l’exécuter plusieurs fois avec des parameters différents.

Une autre direction consiste à ajuster de manière paramésortingque un rectangle à l’image de manière à maximiser l’amplitude du gradient de l’image le long du contour.

Si vous choisissez de travailler sur une approche paramésortingque, notez que si la manière sortingviale de paramétrer un rectangle consiste à placer ses quatre coins, ce qui représente 8 parameters, quelques autres représentations nécessitent moins de parameters.

Il y a une extension de Hough qui peut être utile.
http://en.wikipedia.org/wiki/Generalised_Hough_transform