Computar campo vetorial gradiente de uma imagem

Eu quero ler em uma imagem - uma imagem de um círculo, e calcular o campo vetorial gradiente dessa imagem (ou seja, vetores apontando uniformemente e no normal para o círculo). Minha lógica está falhando um pouco, mas eu tenho:

<code>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)
</code>

se eu fosse simplesmente fazer o acima, recebo um campo vetorial, mas é simplesmente o gradiente de uma malha vazia (ou seja, apenas um campo vetorial do gradiente y = x). O que eu realmente quero é usar

<code>[dx,dy] = gradient(im);
</code>

para detectar as arestas do círculo na imagem e, em seguida, calcule o campo vetorial de gradiente devido ao círculo na imagem. obviamente, atribuir u = x e v = y só me dará o campo vetorial de uma linha reta - então, basicamente, eu quero incorporar o gradiente da imagem nos vetores u e v. Como faço isso?

questionAnswers(1)

yourAnswerToTheQuestion