0

我正在读取图像并将其存储到二维矩阵中。在对其进行一些计算后,如下所示:

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 访问这些向量(箭头)?稍后我需要在叉积中使用这些向量。谢谢。

4

1 回答 1

0

一种简单的方法是将矩阵堆叠到一个大的 NxMx3 块中,然后像这样对它调用 cross:

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)

(请注意,我刚刚制作了一组新的向量来通过添加一个来获取叉积......你会使用你自己的)

于 2012-06-05T22:03:29.973 回答