我想读入一张图像——一个圆形的图片,并计算该图像的梯度向量场(即指向圆周并与圆周垂直的向量)。我的逻辑有些不对,但我有:
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)
如果我仅按上述方式操作,我会得到一个向量场,但它只是一个空网格的梯度(即只有 y=x 的梯度向量场)。实际上我想使用
[dx,dy] = gradient(im);
如何检测图像中圆的边缘,然后计算由圆在图像中引起的梯度向量场。显然,将u=x和v=y分配给我只会给出直线的向量场 - 因此,基本上我想将图像的梯度嵌入到向量u和v中。我该怎么做?