绘制法向矢量场3D

时间:2014-03-25 07:46:30

标签: matlab 3d plot

我正在为Photometric Stereo实施算法,我已经从一组具有不同光方向的图像中计算了法线。

如何在matlab中绘制法线向量场?我有一个法线矩阵(N x 3)。

4 个答案:

答案 0 :(得分:1)

我担心你没有退步。您需要从曲面法线检索深度贴图,然后才能开始绘图。要了解如何执行此操作,您可以查看以下文章的第4部分:

http://www.wisdom.weizmann.ac.il/~vision/photostereo/Photometric%20Stereo%20with%20General%20Unknown%20Lighting%20-%20BasriJacobsKemelmacher_ijcv06.pdf

网络上还有其他资源;我不知道任何Matlab库中的任何内置函数,但我没有计算机视觉工具箱,所以谁知道呢?

答案 1 :(得分:0)

我怀疑你正在寻找quiver3

答案 2 :(得分:0)

您需要提供法线字段,作为渐变字段,然后您可以使用箭头功能。并且在先前归一化的三元组{pn,qn,rn}的梯度场中,数据以这样的方式呈现,以便使其的第三分量总是等于一(至少在理论上)。我的意思是rn = 1,或者我现在应该说,现在:R = 1,你实际上只需要{P,Q}组件来呈现具有普通2D箭头函数的梯度场的内容。因此,梯度向量与法线字段完全不同且不同,因为:P = pn / sqrt(pn ^ 2 + qn ^ 2 + rn ^ 2),并且Q = qn /(pn ^ 2 + qn ^ 2 + rn ^ 2)POINTWISELY说。 但是你不打扰双循环,在X,Y方向上运行,导致POINTWISELY,从法线正确渲染梯度场的计算,如下:P = pn ./(pn。^ 2 + qn。^ 2 + rn。^ 2)。^(1/2);等等。 你也可以看到:http://www.mathworks.com/matlabcentral/fileexchange/authors/126090/

答案 3 :(得分:0)

您需要显示法线字段,作为渐变字段,然后您可以使用Matlab的箭头功能。并且在梯度场中,数据的先前归一化的三元组{pn,qn,rn}以这样的方式呈现,以便使其的第三分量总是等于一(至少在理论上)。

我的意思是rn = 1,或者我现在应该说,现在使用:一些R = 1,你实际上只需要{P,Q}组件来呈现具有普通2D箭头函数的梯度场的内容。因此,梯度向量与法线字段完全不同且不同,因为: P = pn / sqrt(pn ^ 2 + qn ^ 2 + rn ^ 2),Q = qn /(pn ^ 2 + qn ^ 2 + rn ^ 2)POINTWISELY说。

但是,您不必担心双重for循环,它会在X,Y方向上运行,导致POINTWISELY,正常渲染的法线渐变场计算,如下:

P = pn ./(pn。^ 2 + qn。^ 2 + rn。^ 2)。^(1/2); ,和:Q = qn ./(pn。^ 2 + qn。^ 2 + rn。^ 2);

你也可以看到:   http://www.mathworks.com/matlabcentral/fileexchange/authors/126090/

简单地说,渐变场总是表示X,Y方向上的斜率,而在3D表面上沿Z轴正好下降一个高度单位,例如通过光度立体算法检索。这就是为什么箭头函数可视化中的第三个分量总是等于1(即R = 1),并且实际上是不相关的。

我上个月在Mathworks网页上发布了最简单的Photometric Stereo方法的一些代码,因为有一段时间可用来推动这一切,我的意思是我自己到目前为止在Matlab中生成的代码。 。