web-dev-qa-db-fra.com

Expliquer la transformation difficile

Je suis juste aventureux et fais mon premier pas vers la vision par ordinateur. J'ai essayé de mettre en œuvre la transformation de Hough par moi-même, mais je n'ai tout simplement pas une vue d'ensemble. J'ai lu l'entrée wikipedia, et même l'original "utilisation de la transformation de hough pour détecter les lignes et les courbes dans les images" par richard Duda et Peter Hart, mais n'a pas aidé.

Quelqu'un peut-il m'aider à m'expliquer dans une langue plus conviviale?

47
Haoest

Il est plus courant de penser à une ligne en coordonnées rectangulaires, c'est-à-dire y = mx + b. Comme l'indique l'article de Wikipedia, une ligne peut également être exprimée sous forme polaire. La transformée de Hough exploite ce changement de représentation (pour les lignes, en tout cas. La discussion peut aussi s'appliquer aux cercles, ellipses, etc.).

La première étape de la transformation de Hough consiste à réduire l'image à un ensemble de bords. Le détecteur Canny Edge est un choix fréquent. L'image Edge résultante sert d'entrée au processus de Hough.

Pour résumer, les pixels "éclairés" dans l'image Edge sont convertis en forme polaire, c'est-à-dire que leur position est représentée à l'aide d'une direction thêta et une distance r - au lieu de x et y. (Le centre de l'image est couramment utilisé comme point de référence pour ce changement de coordonnées.)

La transformée de Hough est essentiellement un histogramme. Les pixels des bords mappés sur les mêmes thêta et r sont supposés définir une ligne dans l'image. Pour calculer la fréquence d'occurrence, thêta et r sont discrétisés (partitionnés en plusieurs bacs). Une fois que tous les pixels du bord ont été convertis en forme polaire, les cases sont analysées pour déterminer les lignes de l'image d'origine.

Il est courant de rechercher N paramètres les plus fréquents - ou seuil les paramètres de telle sorte que le nombre compte plus petit que certains n sont ignorés.

Je ne suis pas sûr que cette réponse soit meilleure que les sources que vous avez présentées à l'origine - y a-t-il un point particulier sur lequel vous êtes coincé?

39
Throwback1986

Voici une explication visuelle très basique du fonctionnement d'une transformation de Hough pour détecter des lignes dans une image:

enter image description here

118
mlai

La transformation de Hough est un moyen de trouver les valeurs les plus probables qui représentent une ligne (ou un cercle, ou bien d'autres choses).

Vous donnez à la transformation de Hough une image d'une ligne en entrée. Cette image contiendra deux types de pixels: ceux qui font partie de la ligne et ceux qui font partie de l'arrière-plan.

Pour chaque pixel faisant partie de la ligne, toutes les combinaisons possibles de paramètres sont calculées. Par exemple, si le pixel à la coordonnée (1, 100) fait partie de la ligne, cela pourrait faire partie d'une ligne où le gradient (m) = 0 et l'ordonnée à l'origine (c) = 100. Il pourrait également faire partie de m = 1, c = 99; ou m = 2, c = 98; ou m = 3, c = 97; etc. Vous pouvez résoudre l'équation linéaire y = mx + c pour trouver toutes les combinaisons possibles.

Chaque pixel donne une voix à chacun des paramètres (m et c) qui pourraient l'expliquer. Vous pouvez donc imaginer que si votre ligne contient 1 000 pixels, la bonne combinaison de m et c aura 1 000 votes.

La combinaison de m et c qui a le plus de votes est ce qui est retourné comme paramètres pour la ligne.

15
Ray Hidayat

Voici une autre perspective (celle utilisée dans l'épisode pilote de l'émission T.V Numbers): Imaginez qu'un arroseur de pelouse semblable à une fontaine était quelque part sur une pelouse plus tôt, jetant des gouttelettes d'eau autour de lui. Maintenant, l'arroseur a disparu, mais les gouttes restent. Imaginez transformer chaque goutte en son propre arroseur, projetant lui-même des gouttelettes autour d'elle-même - dans toutes les directions car la goutte ne sait pas de quelle direction elle provient. Cela dispersera beaucoup d'eau finement sur le sol, sauf qu'il y aura un endroit où beaucoup d'eau frappe de toutes les gouttes à la fois. Cet endroit est l'endroit où se trouvait l'arroseur d'origine.

L'application à (par exemple) la détection de ligne est similaire. Chaque point de l'image est l'une des gouttelettes d'origine; quand il agit comme un arroseur, il envoie ses propres gouttelettes marquant toutes les lignes qui pourraient passer par ce point. Des endroits où un grand nombre de gouttelettes secondaires atterrissent représentent les paramètres d'une ligne qui passe par un tas de points d'image - VOILA! Ligne détectée!

1
PMar