【问题标题】:How to visualize a 3d scene using surf如何使用 surf 可视化 3d 场景
【发布时间】:2010-11-03 19:59:48
【问题描述】:

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

如何使用surf 将图像显示为 3d 模型?随便拿

surf(depthMatrix, img);

没有给出好的结果,因为

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

【问题讨论】:

    标签: matlab 3d surf


    【解决方案1】:

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

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

      李>

    【讨论】:

    • 看起来好多了。谢谢!以及如何转动相机,让它从底部看模型,也许有一些小角度可以看到深度?
    • 如何使用转动工具转动它,使屏幕底部边缘在顶部边缘之后?
    • @Etan:打开 3-D 旋转后,在鼠标指针悬停在轴上时单击并按住鼠标左键,当您移动鼠标时,轴将旋转。只需将其旋转到您想要的位置。或者,您可以使用VIEW 函数不断尝试方位角和仰角值的不同组合,直到获得您想要的结果。
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 2019-01-12
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多