2

イメージがあります。MATLAB で勾配関数を使用して取得した勾配イメージの震えプロットを、できれば勾配イメージに重ねて表示したいと考えています。

I = imread('image.png');
[gx,gy] = gradient(double(rgb2gray(I)));
g = abs(gx) + abs(gy);
figure;
imshow(g, []);
hold on;
quiver(abs(gx),abs(gy));

これは私が試したもので、完全に青いディスプレイしか得られません。

4

1 に答える 1

5

見えるのは矢印だけだと思いますが、互いに近すぎます。2 つのグラフ (imshow(g)quiver) を別々にプロットすると、正常に表示されます。imshow は、スケーリングなしでピクセルのみを表示します。それを修正すると (スケーリングする)、矢筒の矢印もそれらの間により多くのスペースがあり、表示されるようになります。'InitialMagnification','fit'imshow にオプションを追加することで、これを行うことができます。

imshow(g,'InitialMagnification','fit')

または、表示する矢印を少なくすることもできます:

figure;
imshow(g, []);  % [] to display image properly     
hold on;

[Nx, Ny] = size(g);
xidx = 1:10:Nx;
yidx = 1:10:Ny;
[X,Y] = meshgrid(xidx,yidx);
quiver(Y',X',abs(gx(xidx,yidx)),abs(gy(xidx,yidx)));
于 2012-07-05T08:04:10.063 に答える