如何使用冲浪可视化3d场景

时间:2010-11-03 19:59:49

标签: matlab 3d surf

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

如何使用surf向我展示图像作为3D模型?简单地说

surf(depthMatrix, img);

以来没有给出好结果
  1. 相机不是从z方向的x-y平面看
  2. 它看起来很黑。
  3. 当我使用imshow(depthMatrix, []);
  4. 显示我的深度矩阵时,它看起来并不平滑

    image how it looks like

1 个答案:

答案 0 :(得分: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. 您可以通过按下图中的alt text按钮,使用鼠标调整摄像机角度,从而打开交互式3-D旋转。您也可以使用函数ROTATE3D打开交互式旋转,或者使用函数VIEW无需鼠标即可更改摄像机视图。

  2. 你的情节看起来是黑色的,因为默认情况下边缘被画成黑线,而且可能有很多。

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