Voglio leggere in un'immagine - un'immagine di un cerchio e calcolare il campo del vettore di sfumatura di quell'immagine (cioè i vettori che indicano uniformemente e normalmente al cerchio). La mia logica mi sta venendo a mancare un po ', ma ho:Campo di vettore del gradiente di calcolo di un'immagine
clear all;
im = im2double(imread('littlecircle.png'));
im = double(im);
[nr,nc]=size(im);
[dx,dy] = gradient(im);
[x y] = meshgrid(1:nc,1:nr);
u = x;
v = y;
quiver(x,y,u,v)
se dovessi semplicemente fare quanto sopra, ho un campo vettoriale, ma è semplicemente il gradiente di una maglia vuoto (cioè solo un campo vettoriale del gradiente y = x). Quello che in realtà voglio è quello di utilizzare
[dx,dy] = gradient(im);
per rilevare i bordi del cerchio nell'immagine, e quindi calcolare il campo vettoriale gradiente a causa del cerchio nell'immagine. ovviamente, l'assegnazione di u = x e v = y mi darà solo il campo vettoriale di una linea retta - quindi basicamente, voglio incorporare il gradiente dell'immagine nei vettori uev. Come faccio a fare questo?
Puoi pubblicare littlecircle.png? –