Sto implementando un rilevatore Canny Edge per una classe che ho basato sul codice trovato qui . Per la prima maschera derivativa che convolverò con l'immagine, sto usando la maschera Sobel, sebbene il sito Web utilizzi il Prewitt. Come puoi vedere negli esempi sul sito web, il codice è perfettamente funzionante. Tuttavia, ho notato risultati diversi quando ho cambiato "l'orientamento" della maschera gradiente di Sobel, come spiegato di seguito.
La tipica maschera per prendere la derivata nella direzione x nelle mie note di classe è mostrata come:
[-1 0 1]
[-2 0 2]
[-1 0 1]
Per la direzione y è:
[-1 -2 -1]
[0 0 0]
[1 2 1]
Per un esperimento, ho modificato l'orientamento della direzione x in:
[1 0 -1]
[2 0 -2]
[1 0 -1]
E per la direzione y:
[1 2 1]
[0 0 0]
[-1 -2 -1]
Stranamente, questo mi dà due risultati diversi, che non mi aspettavo, dal momento che non penso che la "direzione" che sto usando per prendere il gradiente dovrebbe darmi un risultato diverso.
Primo risultato:
Secondorisultato:
Perché sto ottenendo questo risultato diverso? Dove dovrei investigare successivamente?