poster
2019-12-10, 20:48
我有一个从磁盘加载的图像作为纹理,以及一个具有相应深度的相同大小的矩阵d。
如何使用surf将图像显示为3D模型?只需服用
surf(depthMatrix, img); 自从以来并没有给出很好的结果
相机不在z方向上从xy平面看
看起来很黑
尽管我使用imshow(depthMatrix, []);展示深度矩阵时实际上已将其平滑,但它看起来并不那么平滑imshow(depthMatrix, []);
https://i.stack.imgur.com/frS6c.png
回答:
您可以使用纹理映射在表面上显示图像,如下所示:
surf(depthMatrix,img,... %# depthMatrix is z data, img is an image 'FaceColor','texturemap',... %# Use texture mapping 'EdgeColor','none'); %# Turn off edge coloring 并解决您的3点:
您可以通过按鼠标来调整相机角度https://i.stack.imgur.com/0jL7u.jpg图上的按钮,可打开交互式3-D旋转。您也可以使用ROTATE3D (http://www.mathworks.com/help/techdoc/ref/rotate3d.html)功能打开交互式旋转,或者使用VIEW (http://www.mathworks.com/help/techdoc/ref/view.html)功能在不使用鼠标的情况下更改相机视图。
您的图看起来是黑色的,因为默认情况下,边缘被绘制为黑线,并且其中可能有很多。
您可以调整轴的缩放比例和限制, (http://www.mathworks.com/help/techdoc/ref/axis.html)以使表面看起来更平滑。例如, axis equal将使所有3轴的数据单位相同,因此z轴(范围从0到25)将显着展平,因为其他两个轴的范围为数百个。另外,在调用SURF时, (http://www.mathworks.com/help/techdoc/ref/surf.html)您可以指定x和y数据用于这些轴上的值,这最终可以帮助您更好地调整这些轴与z轴之间的相对比例。
更多&回答... (https://stackoverflow.com/questions/4091129)
如何使用surf将图像显示为3D模型?只需服用
surf(depthMatrix, img); 自从以来并没有给出很好的结果
相机不在z方向上从xy平面看
看起来很黑
尽管我使用imshow(depthMatrix, []);展示深度矩阵时实际上已将其平滑,但它看起来并不那么平滑imshow(depthMatrix, []);
https://i.stack.imgur.com/frS6c.png
回答:
您可以使用纹理映射在表面上显示图像,如下所示:
surf(depthMatrix,img,... %# depthMatrix is z data, img is an image 'FaceColor','texturemap',... %# Use texture mapping 'EdgeColor','none'); %# Turn off edge coloring 并解决您的3点:
您可以通过按鼠标来调整相机角度https://i.stack.imgur.com/0jL7u.jpg图上的按钮,可打开交互式3-D旋转。您也可以使用ROTATE3D (http://www.mathworks.com/help/techdoc/ref/rotate3d.html)功能打开交互式旋转,或者使用VIEW (http://www.mathworks.com/help/techdoc/ref/view.html)功能在不使用鼠标的情况下更改相机视图。
您的图看起来是黑色的,因为默认情况下,边缘被绘制为黑线,并且其中可能有很多。
您可以调整轴的缩放比例和限制, (http://www.mathworks.com/help/techdoc/ref/axis.html)以使表面看起来更平滑。例如, axis equal将使所有3轴的数据单位相同,因此z轴(范围从0到25)将显着展平,因为其他两个轴的范围为数百个。另外,在调用SURF时, (http://www.mathworks.com/help/techdoc/ref/surf.html)您可以指定x和y数据用于这些轴上的值,这最终可以帮助您更好地调整这些轴与z轴之间的相对比例。
更多&回答... (https://stackoverflow.com/questions/4091129)