0

画像を読み込んで、2次元行列に保存しています。ここに示すように、いくつかの計算を行った後:

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 ブロックにスタックし、次のようにクロスを呼び出すことです。

myVectors = cat(3, Ox, Oy, zeros(size(Ox)));
someOtherVectors = myVectors+1;
result = cross(myVectors,someOtherVectors );

もう 1 つは、次のような独自のクロス関数を作成することです。

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 に答える