-
Détection de zones
Bonjour,
j'utilise la librairie CImg pour détecter des droites sur une image. Mon but est de détecter les ponts sur une photo donc je commence par les droites.
J'ai réalisé la trasformée de Hough. Mais, une fois dans le domaine de Hough, j'ai des maximums. Ce sont ces maximums qui correspondent aux droites.
Je veux écrire un code pour détecter ces maximums mais faire ça pixels par pixels n'est pas efficace.
Il faut, je pense, faire une détection de zone où beaucoup de pixels de grande intensité sont concentrés.
Connaissez-vous un algorithme approprié?
Si vous avez une méthode plus efficace, je suis partant aussi.
Merci de votre aide
-
C'est en fait la détection des maximas locaux que je veux faire.
Merci d'avance
-
les maximas correspondent à la valeur des pixels de l'image?
Quelle est l'utilisation de ton application?
-
Il faut prétraiter ton image dans l'espace de hough avant la détection des maximas locaux : fais d'abord un lissage qui supprimera les maxima locaux trop proches, et il ne faut pas garder tous les maxima locaux, mais seulement ceux supérieurs à un certain seuil.
Plus tu flouteras l'image, moins deux droites détectées pourront être proches. Plus le seuil sera haut, et moins tu détecteras de lignes.
Par contre, une fois les prétraitements effectués, je n'ai pas d'algo plus rapide que le parcours de tous les pixels un à un. C'est en O(n*m) et c'est déjà pas mal je trouve.
-
Un filtre passe-bas alors?
-
Oui, un filtre passe bas par exemple. Mais tu peux aussi faire directement une convolution avec une gaussienne, voir une moyenne glissante toute bête, c'est ptet plus rapide que de passer par fourrier si c'est un petit floutage. Mais je ne pense pas que ça change grand chose en fait. A voir...
-
Je suis assez d'accord sur le fait qu'une moyenne toute bête te donnera de bon résultat par rapport au temps d'exécution.