临毕业了,将大学7年的diy整理下,纪念这段时光。这是本人去年6-7月的作品,基于xilinx公司zynq芯片
的3d扫描和打印。物体处于一个步进电机控制的旋转平台上,采用线激光扫到物体表面,然后用加了滤光片的摄像头采集图像。当物体旋转一周后,得到物体的3d点云图,并生成表面信息,然后生成打印用的stl文件。
2. 对深度图滤波,然后根据旋转的角度,将深度图的坐标进行转换,生成点云,用到了简单的三角函数
3.最后,将点云进行表面处理,因为stl文件需要表面的信息。就是将上下左右相邻的每三个点连成一个面,生成包含很多小面的一个集合。
4.将生成的stl文件存储到sd卡,发送到电脑就可以看物体的三维图,并进行打印了。
本作品参考了如下帖子进行摄像头和激光器的标定操作http://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_1.html。此贴还包含第二部分,对理论讲解也比较详细。
对图像处理步骤如下
1. 对每一帧图像二值化,对线激光的区域细化,根据细线位置,来计算物体的距离,存到一个数组里。旋转一周后,生成一个深度图。2. 对深度图滤波,然后根据旋转的角度,将深度图的坐标进行转换,生成点云,用到了简单的三角函数
3.最后,将点云进行表面处理,因为stl文件需要表面的信息。就是将上下左右相邻的每三个点连成一个面,生成包含很多小面的一个集合。
4.将生成的stl文件存储到sd卡,发送到电脑就可以看物体的三维图,并进行打印了。
首先是实物图
下图是待扫描的物体,放置于步进电机旋转平台:
下图是扫描后的结果,用meshlab软件查看:
这是最后打印的白色模型,以及原物对照:
系统架构介绍: