Bonjour,
J'ai trouvé dans le code source de imageJ les lignes suivante.
J'ai chercher sobel sur le site et je suis tomber sur un cour mais je ne comprends pas les formules
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 byteprocessor case FIND_EDGES: // 3x3 Sobel filter sum1 = p1 + 2*p2 + p3 - p7 - 2*p8 - p9; sum2 = p1 + 2*p4 + p7 - p3 - 2*p6 - p9; sum = (int)Math.sqrt(sum1*sum1 + sum2*sum2); if (sum> 255) sum = 255; break; shortProcessor case FIND_EDGES: for (int x=roiX; x<xEnd; x++,p++) { if (x<width-1) { p3++; p6++; p9++; } v1 = v2; v2 = v3; v3 = pixels2[p3]&0xffff; v4 = v5; v5 = v6; v6 = pixels2[p6]&0xffff; v7 = v8; v8 = v9; v9 = pixels2[p9]&0xffff; double sum1 = v1 + 2*v2 + v3 - v7 - 2*v8 - v9; double sum2 = v1 + 2*v4 + v7 - v3 - 2*v6 - v9; double result = Math.sqrt(sum1*sum1 + sum2*sum2)+0.5; if (result>65535.0) result = 65535.0; pixels[p] = (short)result; }
J'aimerais que quelqu'un m'explique un peut clairement ce code
J'ai compris que 255 ou encore 65535.0 veule dire "pixel activer faisant partie d'un contour" mon souhait serait simplement de laisser l'image en couleur et de faire quelque chose comme
Comment faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (result == 255) result = 0xFF0000 // pixel en rouge
Ce bout de code est-il correcte ou non ?
Merci d'avance
Partager