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

我想你看到的只是箭头,但它们靠得太近了。如果您分别绘制两个图 (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 回答