Comment faire le De-Houghing d'une Image transformée de Hough?


9

Je travaille avec du code trouvé dans Rosetta Code pour créer une transformation Hough. Je veux maintenant trouver toutes les lignes d'une image. Pour ce faire, j'ai besoin des valeurs ρ et θ de chacun des pics de l'espace de Hough. Un exemple de sortie pour un pentagone ressemble à ceci:

Hough Space

Comment puis-je trouver une seule coordonnée [θ, ρ] pour chacun des «points chauds» visibles dans l'espace de Hough?

Réponses:


9

Vous recherchez les coordonnées des pics, puis utilisez l'axe pour les mettre à l'échelle en coordonnées [θ, ρ].

Selon le niveau de bruit des données, le nombre de fausses pics que vous attendez et le temps dont vous disposez, il existe plusieurs façons de le faire. Le plus simple est de choisir un niveau qui est un vrai pic, de couper toutes les données en dessous, puis de faire un centre de gravité sur chaque pic pour obtenir son centre.

Vous pouvez également éroder / composer l'image jusqu'à ce que chaque pic soit un seul pixel.


1
+1 pour une réponse précise. Comment définissez-vous / calculez-vous center of gravity?
Dipan Mehta

Pour plus de précision, trouvez le maximum, puis ajustez un paraboloïde à ce point et à ses points voisins, puis trouvez le pic du paraboloïde, qui sera généralement entre les pixels.
endolith

2
@endolith - généralement avec les transformations de Hough, la précision est limitée par l'identification des bords dans l'image initiale et la «discrétisation» du résultat dans l'espace de Hough. Si vous avez besoin d'un résultat plus précis, il est normal de revenir en arrière et de refaire la transformation pour une plage plus limitée de coordonnées [θ, ρ] pour obtenir un espace de Hough de résolution plus élevée autour de la solution de cours que vous avez trouvée
Martin Beckett

@DipanMehta - additionnez simplement ( valeur x de chaque pixel) et (y ..) puis divisez par la largeur X, Y de la boîte que vous recherchez - mais voir le commentaire de l'endolith
Martin Beckett


2

3×3

La deuxième étape pourrait être d'affiner la position du pic à une précision inférieure au pixel. Cela peut être fait par un raccord parabole.

f(x)xpf(x+p)

f(x+p)f(x)+pTf(x)+12pTf(x)+p

Le vecteur correcteur est alors

p=f(x)1f(x)

Les dérivées peuvent être calculées à partir de l'image de Hough par différenciation finie .

f(x)2×2f(x)p

L'équation ci-dessus peut occasionnellement produire des décalages de plus de 1 pixel. Dans ce cas, le voisinage du maximiseur n'a pas de forme parabolique et vous pouvez ne pas vouloir faire la correction ou même supprimer le maximiseur candidat.


0

Il y a une très bonne technique développée au milieu des années 80 par Gerig et Klein. Il s'agit d'une procédure de backmapping qui analyse l'espace de Hough pour identifier le point le plus probable associé à chaque point de bord, puis construit un deuxième espace de Hough où le mappage des points de bord aux paramètres est un à un plutôt qu'un à plusieurs qui est la première étape habituelle. Je n'ai pas la référence à portée de main, mais regardez dans le document de synthèse Hough d'Illingworth et Kittler (vers 1987?)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.