Calcular el campo de vector gradiente de una imagen

Quiero leer en una imagen, una imagen de un círculo, y calcular el campo de vector de gradiente de esa imagen (es decir, vectores que señalan de manera uniforme y normal al círculo). Mi lógica me está fallando un poco, pero tengo:

<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>

si tuviera que hacer simplemente lo anterior, obtendré un campo vectorial, pero es simplemente el gradiente de una malla vacía (es decir, solo un campo vectorial del gradiente y = x). Lo que realmente quiero es usar

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

para detectar los bordes del círculo en la imagen y luego calcular el campo de vector gradiente debido al círculo en la imagen. obviamente, la asignación de u = x y v = y solo me dará el campo vectorial de una línea recta; por lo tanto, quiero incrustar el degradado de la imagen en los vectores u y v. ¿Cómo hago esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta