Bonjour,
je suis en train de comprendre le fonctionnement de la détection de contours dans la vision par ordinateur. Je suis donc tombé sur le filtre de Sobel qui permet de détecter les contours, mais je rencontre quelques problemes de compréhension.
voila si je cherche à récupérer les points des contours de l'image ci-joint. je vais utiliser les matrices Gx et Gy de l'algo de Sobel :
et
Je prend le cas ou je cherche à calculer le gradient du point(3, 2). J'obtient Gx = -255 et Gy = -255. Je fais le module et obtient 360 ce qui est supérieur à la valeur maximal d'un octet. Donc je rapporte la valeur à 255 ou ca n'a pas d'importance ? Ensuite je fais atan(Gy/Gx) et obtient 45°, et cette valeur me pose probleme, car il y a variation d'intensité lumineuse à -45° or le calcul me donne 45° ce qui est problématique, ou est mon erreur ?
Une fois que j'ai calculé correctement tous les gradients de chaque pixel de l'image (à part la bordure de l'image), j'ai donc un vecteur dans chaque case de l'image, et la pointe des fleches ainsi que leurs longueurs m'indiquent les variations d'intensités de l'image et donc les contours. Mais je n'ai pas d'explication sur la suite de la procédure. Comment je fais dans mon algo pour repérer chaque objet. En faite j'aimerais placer dans un std::vector<std::vector<Point> >objet, les points (coordonées) de chaque objet.
Si on prend mon image, comment je peux faire pour placer le contours de mon objet dans un tableau? est ce que l'algo de Sobel fait ca ?
J'avoue que mon explication est un peu lourde mais je sais pas trop comment amener ca...
En tout cas merci d'avance pour votre aide.
-----