新闻中心
行业动态

360度全景拍摄的图像采集仪

作者:重庆全景制作来源:http://www.yatangv.com/访问:502时间:2019-10-15

360度全景拍摄的图像采集仪是由Arduino UNO控制器、Arduino UNO扩展版、4个舵机、Mini超薄红外遥控器和38KHz红外接收模块Mini超薄红外遥控器和38KHz红外接收模块组和若干螺丝组成,可用一台照相机或智能手机,就可进行360度全景拍摄,极大地解决了需要多台照相机才能完成的全景任务;市场上的360度全景图像采集仪价格不菲,而本创新项目所研究的360度重庆全景公司的图像采集仪则在造价方面要好很多。只需要一个遥控器,就可以完全控制其运作。


研究背景


在做一个技术实验项目时,在网上找到了一篇技术文章《Autodesk 123D 神般强大的软件?轻松将照片变成3D模型并制作成实物 (傻瓜式三维建模工具)》,该文介绍了Autodesk 123D相关软件的功能,其中Autodesk 123D Catch软件是利用云计算的强大能力,可将数码照片迅速转换为逼真的三维模型。只要使用傻瓜相机、或高级数码单反相机抓拍物体、人物或场景,人人都能利用将照片转换成生动鲜活的三维模型。而Autodesk 123D Make 来将它们制作成实物了,它能够将数字三维模型转换为二维切割图案,用户可利用硬纸板、木料、布料、金属或塑料等低成本材料将这些图案迅速拼装成实物,从而再现原来的数字化模型。看到这个Autodesk 123D有这么强大的功能,让我兴奋了很长时间,这样我可以用123D Make来把的学生创作的品制作成3D模型,能更好地在网页上展示作品效果。


马上用数码相机对一个作品进行不同方位的拍摄照片,在拍摄的过程中,发现对一个物体进行360的手工拍摄角度不能均匀把握,导入123D Catch软件后,后期处理的3D模型不够完整。于是想购买一台桌面三维扫描仪,在网上查阅了很多资料,其中找到了makerbot出品的DIGITIZER桌面三维扫描仪,这是一个很棒的3D扫描仪,不过价格不菲,标价1515美元,为了节约成本自己制作一台360度全景图像采集仪。


实施过程


1、设计原理

360度全景图像采集仪是基于arduino控制设计而成,使用重庆vr公司程序控制三个4个舵机来实现数码相机拍摄分帧图片或全景图片,然后通过Autodesk 123D软件来快速创建3D模型。


2、硬件部分

硬件部分由Arduino UNO控制器、Arduino UNO扩展版、4个舵机、Mini超薄红外遥控器、38KHz红外接收模块、8个轴承和若干螺丝组成。


3、外观设计

外观设计使用coreldraw12设计,底座部分是一个圆形和长方形组成,X轴和Y轴部分采用巧妙的直线轴结构,固定摄像机架采用可伸缩装置,及可以安装数码相机,还可以安装手机。外壳材料使用是的3mm亚克力,全部使用自己的工作室激光切割机切割完成,采用榫卯插接结构,容易拆卸和安装。


4、源码部分

控制源码编程部分使用Arduino IDE1.05软件编写而成,源代码如下。


#include <IRremote.h>#include <Servo.h>Servo servoa; //定义定义控制相机按键舵机Servo servop; //定义圆盘舵机Servo servox; //定义X轴舵机Servo servoy; //定义Y轴舵机Servo servoz; //定义z轴舵机int RECV_PIN = 11; //定义红外接收模块IRrecv irrecv(RECV_PIN);decode_results results;int posa;int posp;int posx;int posy;int posz;int Speed; void setup(){Serial.begin(9600); 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);}void loop() { if (irrecv.decode(&results)) { if(results.value==16580863) //确认接收到的第一排按键1的编码,此码是预先读出来的按键编码。 {for ( int i=1; i<6; i++){ servop.write(96); delay(100); servop.write(posp); delay(1500); servoa.write(125); delay(1000); servoa.write(posa); delay(1000);} } else if(results.value==16589023) //确认接收到的第二排按键1的编码,此码是预先读出来的按键编码。 { posx=min(180,posx+Speed); servox.write(posx); } else if(results.value==16605343) //确认接收到的第二排按键3的编码 { posx=max(0,posx-Speed); servox.write(posx); } else if(results.value==16584943) //确认接收到的第三排按键1的编码 { posy=min(180,posy+Speed); servoy.write(posy); } else if(results.value==16601263) //确认接收到的第三排按键3的编码 { posy=max(0,posy-Speed); servoy.write(posy); } else if(results.value==16613503) //确认接收到的第一排按键2的编码 { posz=max(0,posz-Speed); servoz.write(posz); } else if(results.value==16617583) //确认接收到的第三排按键2的编码 { posz=min(180,posz+Speed); servoz.write(posz); } else if(results.value==16621663) //确认接收到的第二排按键2的编码 { servop.write(posp); servoa.write(posa); } irrecv.resume(); // 接收下一个值 }}


成果的测试及应用


1、结构改进

经过近1个月的硬件方案筹备、外壳设计和源码编程,终于完成最后重庆全景制作的组装,进入测试阶段,经过测试,发现360度全景图像采集仪存在数码相机拍摄在不够稳定,分析其原因是控制数码相机按钮的舵机执行部分和固定数码相机的底座不在一个结构上,造成进行按键时,造成执行部分和数码相机脱离,于是修改其结构,使它们在一个机构上,这样在按键时稳定了。


2、成果应用

在图片拍摄时分为多种模式,一是可以通过XYZ舵机调整不同的角度对物体进行360度拍摄图片,然后导入123D Catch软件,很构建3D模型;二是把Y轴的拍摄装置放到圆盘中间,可以拍摄轻松拍摄全景图片。

TAG:

13452883959 023-68781096

E-mail:3775303@qq.com
QQ:3775303
地址:重庆九龙坡区杨家坪四季花园2-20-15


Copyright @ 2007-2022 重庆博得VR 版权所有  网站地图  【XML】

技术支持:重庆博得VR

重庆博得VR/重庆博得多媒体专注于多媒体技术科技前沿,为企业提供完善的vr开发制作,3d动画制作设计,多媒体技术解决方案等全面服务


展开 收缩