diy作品——3D扫描+打印
2016-04-24 11:14
751 查看
临毕业了,将大学7年的diy整理下,纪念这段时光。这是本人去年6-7月的作品,基于xilinx公司zynq芯片的3d扫描和打印。物体处于一个步进电机控制的旋转平台上,采用线激光扫到物体表面,然后用加了滤光片的摄像头采集图像。当物体旋转一周后,得到物体的3d点云图,并生成表面信息,然后生成打印用的stl文件。
本作品参考了如下帖子进行摄像头和激光器的标定操作http://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_1.html。此贴还包含第二部分,对理论讲解也比较详细。
对图像处理步骤如下
1. 对每一帧图像二值化,对线激光的区域细化,根据细线位置,来计算物体的距离,存到一个数组里。旋转一周后,生成一个深度图。
2. 对深度图滤波,然后根据旋转的角度,将深度图的坐标进行转换,生成点云,用到了简单的三角函数
3.最后,将点云进行表面处理,因为stl文件需要表面的信息。就是将上下左右相邻的每三个点连成一个面,生成包含很多小面的一个集合。
4.将生成的stl文件存储到sd卡,发送到电脑就可以看物体的三维图,并进行打印了。
首先是实物图
下图是待扫描的物体,放置于步进电机旋转平台:
下图是扫描后的结果,用meshlab软件查看:
这是最后打印的白色模型,以及原物对照:
系统架构介绍:
本作品参考了如下帖子进行摄像头和激光器的标定操作http://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_1.html。此贴还包含第二部分,对理论讲解也比较详细。
对图像处理步骤如下
1. 对每一帧图像二值化,对线激光的区域细化,根据细线位置,来计算物体的距离,存到一个数组里。旋转一周后,生成一个深度图。
2. 对深度图滤波,然后根据旋转的角度,将深度图的坐标进行转换,生成点云,用到了简单的三角函数
3.最后,将点云进行表面处理,因为stl文件需要表面的信息。就是将上下左右相邻的每三个点连成一个面,生成包含很多小面的一个集合。
4.将生成的stl文件存储到sd卡,发送到电脑就可以看物体的三维图,并进行打印了。
首先是实物图
下图是待扫描的物体,放置于步进电机旋转平台:
下图是扫描后的结果,用meshlab软件查看:
这是最后打印的白色模型,以及原物对照:
系统架构介绍:
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析