我有一个从磁盘加载的图像作为纹理,以及一个相同大小的矩阵d,它具有相应的深度。
如何使用surf
向我展示图像作为3D模型?简单地说
surf(depthMatrix, img);
自
以来没有给出好结果imshow(depthMatrix, []);
答案 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点问题:
您可以通过按下图中的按钮,使用鼠标调整摄像机角度,从而打开交互式3-D旋转。您也可以使用函数ROTATE3D打开交互式旋转,或者使用函数VIEW无需鼠标即可更改摄像机视图。
你的情节看起来是黑色的,因为默认情况下边缘被画成黑线,而且可能有很多。
您可以调整axis scaling and limits以使曲面看起来更平滑。例如,axis equal
将使所有3个轴的数据单位相同,因此您的z轴(范围从0到25)将显着平展,因为您的其他两个轴跨越数百个范围。或者,在调用SURF时,您可以指定用于这些轴上的值的x和y数据,这最终可以帮助您更好地调整这些轴和z轴之间的相对比例。