当前位置: 直线机 >> 直线机介绍 >> 造物分享5360度全景拍摄的图像采集
文/崔利国阅读时间大约3分钟。
度全景拍摄的图像采集仪是由ArduinoUNO控制器、ArduinoUNO扩展版、4个舵机、Mini超薄红外遥控器和38KHz红外接收模块Mini超薄红外遥控器和38KHz红外接收模块组和若干螺丝组成,可用一台照相机或智能手机,就可进行度全景拍摄,极大地解决了需要多台照相机才能完成的全景任务;市场上的度全景图像采集仪价格不菲,而本创新项目所研究的度全景图像采集仪则在造价方面要好很多。只需要一个遥控器,就可以完全控制其运作。
研究背景
在做一个技术实验项目时,在网上找到了一篇技术文章《AutodeskD神般强大的软件?轻松将照片变成3D模型并制作成实物(傻瓜式三维建模工具)》,该文介绍了AutodeskD相关软件的功能,其中AutodeskDCatch软件是利用云计算的强大能力,可将数码照片迅速转换为逼真的三维模型。只要使用傻瓜相机、或高级数码单反相机抓拍物体、人物或场景,人人都能利用将照片转换成生动鲜活的三维模型。而AutodeskDMake来将它们制作成实物了,它能够将数字三维模型转换为二维切割图案,用户可利用硬纸板、木料、布料、金属或塑料等低成本材料将这些图案迅速拼装成实物,从而再现原来的数字化模型。看到这个AutodeskD有这么强大的功能,让我兴奋了很长时间,这样我可以用DMake来把的学生创作的品制作成3D模型,能更好地在网页上展示作品效果。
马上用数码相机对一个作品进行不同方位的拍摄照片,在拍摄的过程中,发现对一个物体进行的手工拍摄角度不能均匀把握,导入DCatch软件后,后期处理的3D模型不够完整。于是想购买一台桌面三维扫描仪,在网上查阅了很多资料,其中找到了makerbot出品的DIGITIZER桌面三维扫描仪,这是一个很棒的3D扫描仪,不过价格不菲,标价美元,为了节约成本自己制作一台度全景图像采集仪。
实施过程
1、设计原理
度全景图像采集仪是基于arduino控制设计而成,使用程序控制三个4个舵机来实现数码相机拍摄分帧图片或全景图片,然后通过AutodeskD软件来快速创建3D模型。
2、硬件部分
硬件部分由ArduinoUNO控制器、ArduinoUNO扩展版、4个舵机、Mini超薄红外遥控器、38KHz红外接收模块、8个轴承和若干螺丝组成。
3、外观设计
外观设计使用coreldraw12设计,底座部分是一个圆形和长方形组成,X轴和Y轴部分采用巧妙的直线轴结构,固定摄像机架采用可伸缩装置,及可以安装数码相机,还可以安装手机。外壳材料使用是的3mm亚克力,全部使用自己的工作室激光切割机切割完成,采用榫卯插接结构,容易拆卸和安装。
4、源码部分
控制源码编程部分使用ArduinoIDE1.05软件编写而成,源代码如下。
#includeIRremote.h#includeServo.hServoservoa;//定义定义控制相机按键舵机Servoservop;//定义圆盘舵机Servoservox;//定义X轴舵机Servoservoy;//定义Y轴舵机Servoservoz;//定义z轴舵机intRECV_PIN=11;//定义红外接收模块IRrecvirrecv(RECV_PIN);decode_resultsresults;intposa;intposp;intposx;intposy;intposz;intSpeed;voidsetup(){Serial.begin();irrecv.enableIRIn();//初始化红外遥控servoa.attach(6);//初始化9数字引脚来控制按键舵机servop.attach(7);//初始化9数字引脚来控制圆盘舵机servox.attach(8);//初始化8数字引脚来控制X轴舵机servoy.attach(9);//初始化8数字引脚来控制Y轴舵机servoz.attach(10);//初始化8数字引脚来控制z轴舵机posa=90;posp=90;posx=90;posy=90;posz=90;Speed=20;servoa.write(posa);servop.write(posp);servox.write(posx);servoy.write(posy);servoz.write(posz);}voidloop(){if(irrecv.decode(results)){if(results.value==)//确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。{for(inti=1;i6;i++){servop.write(96);delay();servop.write(posp);delay();servoa.write();delay(0);servoa.write(posa);delay(0);}}elseif(results.value==)//确认接收到的第二排按键1的编码,此码是预先读出来的按键编码。{posx=min(,posx+Speed);servox.write(posx);}elseif(results.value==)//确认接收到的第二排按键3的编码{posx=max(0,posx-Speed);servox.write(posx);}elseif(results.value==)//确认接收到的第三排按键1的编码{posy=min(,posy+Speed);servoy.write(posy);}elseif(results.value==)//确认接收到的第三排按键3的编码{posy=max(0,posy-Speed);servoy.write(posy);}elseif(results.value==)//确认接收到的第一排按键2的编码{posz=max(0,posz-Speed);servoz.write(posz);}elseif(results.value==)//确认接收到的第三排按键2的编码{posz=min(,posz+Speed);servoz.write(posz);}elseif(results.value==)//确认接收到的第二排按键2的编码{servop.write(posp);servoa.write(posa);}irrecv.resume();//接收下一个值}}
成果的测试及应用
1、结构改进
经过近1个月的硬件方案筹备、外壳设计和源码编程,终于完成最后的组装,进入测试阶段,经过测试,发现度全景图像采集仪存在数码相机拍摄在不够稳定,分析其原因是控制数码相机按钮的舵机执行部分和固定数码相机的底座不在一个结构上,造成进行按键时,造成执行部分和数码相机脱离,于是修改其结构,使它们在一个机构上,这样在按键时稳定了。
2、成果应用
在图片拍摄时分为多种模式,一是可以通过XYZ舵机调整不同的角度对物体进行度拍摄图片,然后导入DCatch软件,很构建3D模型;二是把Y轴的拍摄装置放到圆盘中间,可以拍摄轻松拍摄全景图片。