Expliquer la transformation de Hough

Je suis juste aventureux et je fais mon premier pas vers la vision par ordinateur. J’ai essayé d’implémenter la transformation de Hough tout seul mais je ne comprends pas tout. J’ai lu l’entrée de Wikipedia, et même l’original “utilisation de la transformation hough pour détecter les lignes et les courbes dans les images” par Richard Duda et Peter Hart, mais cela n’a pas aidé.

Quelqu’un peut-il aider à m’expliquer dans une langue plus amicale?

    Il est plus courant de penser à une ligne en coordonnées rectangle, c’est-à-dire y = mx + b . Comme l’indique l’article de Wikipedia, une ligne peut également être exprimée sous forme polaire. La transformation de Hough exploite ce changement de représentation (pour les lignes, de toute façon. La discussion peut également être appliquée aux cercles, aux ellipses, etc.).

    La première étape de la transformation de Hough consiste à réduire l’image à un ensemble d’arêtes. Le détecteur de bord Canny est un choix fréquent. L’image d’arête résultante sert d’entrée au processus Hough.

    En résumé, les pixels “éclairés” dans l’image de bord sont convertis en forme polaire, c’est-à-dire que leur position est représentée par une direction thêta et une distance r – au lieu de x et y . (Le centre de l’image est généralement utilisé comme sharepoint référence pour ce changement de coordonnées.)

    La transformation de Hough est essentiellement un histogramme. Les pixels d’arête mappés sur le même 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 un certain nombre de cases). Une fois que tous les pixels de bord ont été convertis en forme polaire, les bacs sont analysés pour déterminer les lignes de l’image d’origine.

    Il est courant de rechercher les N parameters les plus fréquents – ou de définir un seuil pour les parameters tels que les nombres inférieurs à certains n soient ignorés.

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

    Voici une explication visuelle très simple de la façon dont une transformation de Hough fonctionne pour détecter des lignes dans une image:

    entrer la description de l'image ici

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

    Vous donnez à 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 de parameters possibles 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. Cela pourrait aussi faire partie de m = 1, c = 99; ou m = 2, c = 98; ou m = 3, c = 97; etc. Vous pouvez résoudre l’équation de ligne y = mx + c pour trouver toutes les combinaisons possibles.

    Chaque pixel donne un vote à chacun des parameters (m et c) qui pourraient l’expliquer. Vous pouvez donc imaginer que si votre ligne contient 1000 pixels, la combinaison correcte de m et de c aura 1000 votes.

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

    Voici une autre perspective (celle utilisée dans l’épisode pilote de la série télévisée Numbers ): Imaginez qu’un arroseur de gazon ressemblant à une fontaine se trouvait quelque part sur une pelouse, jetant des gouttelettes d’eau sur lui-même. Maintenant, le gicleur est parti, mais les gouttes restnt. Imaginez tourner chaque goutte dans son propre arroseur, jetant lui-même des gouttelettes sur lui-même – dans toutes les directions car la goutte ne sait pas de quelle direction elle provient. Cela éparpillera beaucoup d’eau sur le sol, sauf qu’il y aura un endroit où de nombreuses gouttes d’eau tombent en même temps. Cet endroit est l’endroit où le sprinkler original était.

    L’application à (par exemple) la détection de ligne est similaire. Chaque sharepoint 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ù beaucoup de gouttelettes secondaires atterrissent représentent les parameters d’une ligne qui traverse de nombreux points d’image – VOILA! Ligne détectée!