我正在读取图像并将其存储到2d矩阵中。在对它进行一些计算后,如下所示:
im = rgb2gray(imread('ellipse.png'));
im = im(:,:,1);
w = size(im,1);
h = size(im,2);
[dx,dy] = gradient(double(im));
[x y] = meshgrid(1:h,1:w);
a = zeros(temp);
lambda = 1;
Ox =-1.^lambda.* -x;
Oy =-1.^lambda.* y;
hold on
quiver(x,y,Ox,Oy)
我从quiverplot中得到以下图片:
https://docs.google.com/file/d/0B0iDswLYaZ0zR2lUQ2NkZnd1QXM/edit?pli=1
我的问题是,如何从quiverplot中访问这些向量(箭头)?我需要稍后在交叉产品中使用这些向量。感谢。
答案 0 :(得分:0)
一种简单的方法是将矩阵堆叠到一个大的NxMx3块中并像这样调用它:
myVectors = cat(3, Ox, Oy, zeros(size(Ox)));
someOtherVectors = myVectors+1;
result = cross(myVectors,someOtherVectors );
另一种方法是编写自己的交叉函数,如下所示:
function result = cross2d(Ax, Ay, Bx, By)
result = Ax.*By - Ay.*Bx;
end
在你的代码中这样称呼它:
Mx = Ox + 1;
My = Oy + 1;
result2 = cross2d(Ox, Oy, Mx, My)
(请注意,我刚刚制作了一组新的向量,通过添加一个来反对交叉产品......你会使用自己的)