
Envoyé par
hbloom
Merci pour votre réponse !
J'ai d'autres questions s'il vous plait, quand par exemple on parcoure l'image et on tombe sur output[5][6] = 0 ( donc sur un point de l'objet ) on a donc output [5+4][6+3]= 0+4 ? pour le masque chamfer 3
Non. On aura
output[5-1][6-1] = 0+4 // Nord-Ouest
output[5 ][6-1] = 0+3 // Nord
output[5+1][6-1] = 0+4 // Nord-Est
output[5+1][6 ] = 0+3 // Est
output[5+1][6+1] = 0+4 // Sud-Est
output[5 ][6+1] = 0+3 // Sud
output[5-1][6+1] = 0+4 // Sud-Ouest
03 04 05 06 07
+--------------+
01 | | | | | |
|--------------|
05 | | 4| 3| 4| |
|--------------|
06 | | 3| 0| 3| |
|--------------|
07 | | 4| 3| 4| |
|--------------|
08 | | | | | |
+--------------+
et pk les conditions (dy!=0 et dx!=dy) ?
(...)
Mais il n'y a aucune méthode dans le code qui montre qu'on fait par symétrie, vu que vous définissez une partie du masque et après vous utilisez toutes les valeurs
1 2 3 4 5 6
| testAndSet(output, x+dx, y+dy, v+dt); // P1 (donné dans le masque) -> zone 0-45°
if (dy!=0) testAndSet(output, x-dx, y+dy, v+dt); // P2, symétrique vertical de P1 -> zone 135-180°
if (dx!=dy) {
testAndSet(output, x+dy, y+dx, v+dt); // P3, symétrique diagonal de P1 -> zone 45-90°
if (dy!=0) testAndSet(output, x-dy, y+dx, v+dt); // P4, symétrique vertical de P3 -> zone 90-135°
} |
Les conditions sont la pour écarter les points qui sont exactement sur l'axe de symétrie (et donc qui ne bougent pas lors de la symétrie).
Idem pour la boucle "backward", qui positionne les points dans les zones 180-360°.
Partager