3

我有一个从磁盘加载的图像作为纹理,以及一个具有相应深度的相同大小的矩阵 d 。

如何使用surf3d 模型向我展示图像?简单地服用

surf(depthMatrix, img);

没有给出一个好的结果,因为

  1. 相机不是从 z 方向的 xy 平面看
  2. 它看起来相当黑
  3. 虽然我的深度矩阵在我展示它时实际上被平滑了,但它看起来并不那么平滑imshow(depthMatrix, []);

想象它的样子

4

1 回答 1

4

您可以使用纹理映射在表面上显示图像,如下所示:

surf(depthMatrix,img,...           %# depthMatrix is z data, img is an image
     'FaceColor','texturemap',...  %# Use texture mapping
     'EdgeColor','none');          %# Turn off edge coloring

并解决您的 3 点问题:

  1. 您可以通过按下图上的按钮来使用鼠标调整相机角度替代文字,这将打开交互式 3-D 旋转。您还可以使用ROTATE3D函数打开交互式旋转,或者您可以使用VIEW函数在不使用鼠标的情况下更改相机视图。

  2. 您的绘图看起来是黑色的,因为默认情况下边缘被绘制为黑线,并且可能有很多。

  3. 您可以调整轴缩放和限制以使您的表面看起来更平滑。例如,axis equal将使所有 3 个轴的数据单位相同,因此您的 z 轴(范围从 0 到 25)将显着变平,因为您的其他两个轴跨越数百个范围。或者,在调用SURF时,您可以指定 x 和 y 数据用于这些轴上的值,这最终可以帮助您更好地调整这些轴和 z 轴之间的相对比例。

于 2010-11-03T20:05:25.297 回答