在执行光度立体3D功能时使用quiver3

时间:2014-09-14 14:58:02

标签: matlab vector plot direction

我有5张不同光源的5张照片。基于此,我创建了一个矩阵,其中包含每个像素的法线,这是一个N X 3矩阵。我需要使用quiver3来显示表面法线。我不知道如何填写quiver3。我可以使用法线吗?我将x,y,z与?相关联?图片?由于图像是x,y,我怎么知道z?

1 个答案:

答案 0 :(得分:0)

由于尚未恢复形状,因此您的深度值z在任何地方都为零。恢复形状后,您将获得z的非平凡值。

根据您的commentnor是一个512×512×3的数组,我假设图像的大小也相同。然后

sz = size(nor(:,:,1));
[y x] = ndgrid( 1:sz(1), 1:sz(2) );  %// values for x and y should be of size [512 512]
z = zeros( size(x) );
figure;
imshow( img ); hold on;
quiver3( x, y, z, nor(:,:,1), nor(:,:,2), nor(:,:,3) );

最有可能产生的矢量场太密集。您可能需要考虑每隔5个像素左右显示一个法线向量。