Bonjour à tous
Comme le montre l'intitulé, je travaille sur un code Canny pour la détection des contours, les premières démarche fonctionnent bien sauf le seuilllage celle de -fusion- des deux seuil bas ainsi que le haut l'image est toute noire:
voilà les étapes suivies:
**Si la norme du gradient est supérieure au seuil haut, c'est un point de contour sûr, qu'on code par 1.
**Si la norme du gradient est inférieure au seuil bas, alors ce n'est pas un point de contour, qu'on code par 0.
**Si la norme du gradient est entre les deux, alors c'est un contour de fermeture, i.e un contour potentiel et qu'on code par 2. Ces contours sont transformés en contours sûrs s'ils sont adjacents à un contour codé 1.
voilà le code :
qu'est ce qui ne vas pas au juste?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 /////////////////////////////////Hysteresis//////////////////////////////// if(ddddd[g*step+h]>=sh)// || (ddddd[g*step+h]<sb)) { ddddd[g*step+h]=1; } if((ddddd[g*step+h]<sh) && (ddddd[g*step+h]>=sb)) { ddddd[g*step+h]=2; } if(ddddd[g*step+h]<sb) { ddddd[g*step+h]=0; } } } ////////////////////////////////Fermeture////////////////////////// for(g=0;g<H;g++) { for(h=0;h<W;h++) { if(ddddd[g*step+h]==2) { if((ddddd[(g-1)*step+(h-1)]==1) || (ddddd[(g-1)*step+h]==1) || (ddddd[(g-1)*step+(h+1)]==1) || (ddddd[g*step+(h-1)]==1) || (ddddd[g*step+(h+1)]==1) || (ddddd[(g+1)*step+(h-1)]==1) || (ddddd[(g+1)*step+h]==1) || (ddddd[(g+1)*step+(h+1)]==1)) { ddddd[g*step+h]=1; } } } }
Merci pour votre attention
Partager