在MATLAB中显示渐变图像的箭头图

时间:2012-07-05 07:17:33

标签: matlab plot

我有一张图片。我想在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));

这就是我尝试过的,而我得到的只是一个完全蓝色的显示。

1 个答案:

答案 0 :(得分: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)));