Calculer le champ de vecteur de gradient d'une image

Je veux lire une image - une image d'un cercle, et de calculer le champ de vecteurs de gradient de l'image (c'est à dire des vecteurs pointant de manière uniforme et dans des conditions normales pour le cercle). Ma logique est de ne pas en moi un peu, mais j'ai:

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)

si je devais simplement faire ci-dessus, j'obtiens un champ de vecteurs, mais il est tout simplement le gradient de vide de maille (c'est à dire juste un champ de vecteurs de gradient y=x). Ce que je veux, c'est l'utilisation

[dx,dy] = gradient(im);

pour détecter les bords du cercle dans l'image, et ensuite, on calcule le gradient de champ de vecteur en raison du cercle dans l'image. de toute évidence, l'attribution u=x et v=y va seulement me donner le vecteur champ d'une ligne droite - donc bascially, je veux intégrer le gradient de l'image dans les vecteurs u et v. Comment puis-je faire cela?

Calculer le champ de vecteur de gradient d'une image

Calculer le champ de vecteur de gradient d'une image

source d'informationauteur brucezepplin