Matlab三维网格显示一张图片(meshgrid和mesh)

在很多时候想看看深度图或灰度图的三维效果,点云的方法固然更直接,但复杂不易上手,而用Matlab的三维网格显示则方便快速了许多,下面来展示一下matlab里面用meshgridmesh来生成图片的三维网格的过程:

%首先读取一张单通道图片(目前还没考虑多通道的图片,如RGB的显示)本例使用ppm格式;

1: D=imread('depth.ppm');  %这里面是你的图片存放路径和文件名

%这会儿就会得到一个该图片尺寸的二维矩阵,其值为图片的像素值;

 %尺寸你可以获取也可以直接查看,这里我已经知道了我的图片尺寸和得到的矩阵大小为:480*640;

%接下来你需要生成一个与图片尺寸大小一致的网格,这里用到了meshgrid();

2: x=1:1:480;  %生成一个480的一维数组,其实我是按照图片的尺寸来设的

3:   y=1:1:640;  %生成一个640的一维数组

4:   [X,Y]=meshgrid(x,y);  %生成640*480的二维数组“们”

%(其实这时发现生成的X,Y都是640*480的格式,与原图尺寸不一致,当然,我是按照惯性直接设的网格,没考虑太多,走一步看一步)

%但是我要考虑尺寸一致的问题,这里使用了矩阵转置,

5:Z=D';  %如果你的图片格式与生成的网格尺寸一样,大可省略这行“美丽的错误”直接用D(其实是我的错误,按照图片的矩阵,x和y应该调换位置的,而你只要保证X,Y,Z的格式一致

%下面可以愉快的mesh出你想要的网格啦

6:   mesh(X,Y,Z);

效果:

原始图像imshow:因为我的是16位的灰度图,所以显示有些不好;

3D网格效果:很漂亮了

猜你喜欢

转载自blog.csdn.net/qq_30396367/article/details/83988811