在MATLAB中显示渐变图像的颤动图

Dhr*_*wal 2 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));
Run Code Online (Sandbox Code Playgroud)

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

Gun*_*uyf 5

我认为您所看到的只是箭头,但它们太靠近了。如果分别绘制两个图(imshow(g)quiver),则它们显示为法线。imshow仅显示没有任何缩放比例的像素,如果您对此进行固定(使其缩放),则颤动箭头之间也将具有更大的间距并变得可见。您可以通过在'InitialMagnification','fit'imshow中添加选项来做到这一点:

imshow(g,'InitialMagnification','fit')
Run Code Online (Sandbox Code Playgroud)

或者,您可以显示较少的颤动箭头:

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)));
Run Code Online (Sandbox Code Playgroud)