matlab - 如何使用 surf 可视化 3d 场景

标签 matlab 3d surf

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

如何使用 surf 将图像显示为 3d 模型?简单的服用

surf(depthMatrix, img);

没有给出好的结果,因为

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

image how it looks like

最佳答案

您可以像这样使用纹理映射在您的表面上显示您的图像:

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 不使用鼠标来更改相机 View .

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

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

关于matlab - 如何使用 surf 可视化 3d 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4091129/

相关文章:

php - PHP 中的 SURF/SIFT 类型图像模式匹配库

python - OpenCV Python : Occasionally get segmentation fault when using FlannBasedMatcher

matlab - 两个特征选择算法的结果不匹配

matlab - 将行向量更改为列向量

c - 如何将 Bus 对象读入 C S-Function 中的 C 结构 [Matlab]

c - MS3D 解析 : boneID == joint ID?

python - 在图片上检测到超过 1 个对象

c# - 使用 Matlab dll 时,在 Windows Store App 中的模块 mscorlib.dll 错误中找不到类型 System.ApplicationException

c++ - 如何知道线段是否与 3d 空间中的三角形相交?

android - 像 Morning Routine App 这样的 3D View 转换