三维扫描仪[2]——大恒、微软、还是淘宝一下双目摄像头?
三维扫描需要怎样的硬件设备?又为什么需要这样的硬件设备?
人有两只眼睛所以扫描仪就有两个摄像头?
大一时看张广军著《机器视觉》简直要死(实话,大一时高数课上都看C语言去了,只怪当年太天真)…
让我们先从光学三角测量开始。不懂什么玩意?从大白天你目测短裙妹子的腿有多长开始……懂了吧!
既然是大白天看,光源必不可少。
一个良好的光照条件会让整个扫描变得简单。玩过相机的都知道ISO,高ISO会造成高噪点,你讨厌噪点,三维扫描讨厌噪声。不理想的照明会造成图像光照不均,图像重要细节丢失,加大图像处理的难度并降低测量的精度。反之,好的光照会极大地增强物体和背景之间的对比度,简化图像分割算法,提高物体边缘与背景之间的变化陡峭度,最终改善测量系统的测量精度。
上帝说,要有光,让我们进入上帝视角(我是无神论者 啦啦)。
图像坐标系、摄像机坐标系、世界坐标系。
一张数字图像,经过不同操作,在计算机中有多种表示方法,我们这里用M * N数组来表达。M行N列的图像中,每一个像素的坐标分别是该像素在数组中的行数与列数。
图像坐标系和我们平时接触的坐标系稍有不同,它是倒过来的。
趁现在搞清楚!要不然以后OpenCV里面跑BGR图像的时候你连怎么for循环,什么时候i++,加几次是一个像素都不知道!
然而,像素是计算机中中数字图像的单位,不是我们生活中尺子上的单位。
像素和毫米,怎么转换?
我们终于要提到相机了。
摄像机坐标系的原点O,定义在摄像机光轴与图像平面的焦点,定义在图像的正中间。
用u、v来表示以像素为单位的图像坐标系坐标;以X、Y表示以毫米为单位的图像坐标系坐标;以dX、dY来表示物理尺寸。则图像中任意一个像素在两个坐标系下的坐标有如下关系:
若O在u、v坐标系(u0, v0)处,则
化为矩阵形式:
摄像机成像几何关系如图所示。
O点:相机光心。
z轴:光轴,与图像平面垂直。
O1:光轴与图像平面的焦点,为图像坐标系的原点。
O与x、y、z组成的直角坐标系称为摄像机坐标系。
OO1为焦距。
上帝视角:世界坐标系。
摄像机是可以被比较随意的安放的,但是!你需要选择一个基准坐标系,用它来描述相机的位置。
这就是世界坐标系。
摄像机坐标系和世界坐标系之间的关系可以用旋转矩阵和平移向量来描述。
我们必须认识到一点:你手持kinect的时候,你知道你在动,你的电脑不知道你在动。你第一次捕捉的点云是一个点云,动一动,第二次捕捉的时候,你知道两个点云的位置关系变了,然而你的电脑不知道,两个点云直接叠在一起。必须让电脑知道,扫描仪在世界坐标系的位置有变化,并处理变化。
针孔成像模型
什么时代了!还针孔成像!
公元前4世纪,墨家就做过针孔成像的实验,并给予分析和解释。
但是,我们的相机,应该都是针孔相机吧……
针孔成像模型又被称为线性成像模型。
任何点P在图像中的投影位置p,为OP与平面的焦点。
由比例关系可知:
(X,Y):p点的图像坐标。
(x,y,z):空间P点在摄像机坐标系下的坐标。
f:xy平面与图像平面的距离,也就是焦距。
每一个相机都有相关的参数,这被称为相机的内部参数;摄像机相对于世界坐标系也有相关参数,称为外部参数。确定相机的内外参数,称为相机定标。
在知道了相机的内外参数后,对任意空间点P,如果已知它的坐标,就可以求出像素点p的位置。但是!反过来就不行。如果已知p就不能求出P。
畸变
是个镜头就有畸变。畸变原理其实也挺好理解,就不详细阐述了。可以查查Matlab、OpenCV是怎么去畸变的,PS也有去畸变的能力。
现在 我们进入两个摄像头的世界
人有两眼,两眼没长在一起,导致左边看左边一点,右边看右边一点。这就对了!就是用视差来进行三维信息的获取哒!
双目立体视觉是基于视差,由三角测量法进行三维信息的获取,即由两个摄像机的图像平面,和被测物体之间构成一个三角形。已知两摄像机之间的位置关系,便可以获取两摄像机公共视场内物体的三维尺寸以及空间物体特征点的三维坐标。
原理图如图所示。
左右眼同时获取了P的图像,他们的图像坐标分别为pleft=(Xleft,Yleft)、pright=(Xright,Yright)。
当图像处于一个平面,Yleft=Yright=Y时,由三角关系可得:
视差为:Disparity=Xleft-Xright,由此可得P点在摄像机坐标下的三维坐标为:
因此,左摄像机像面上的任意一点只要能在右摄像机像面上找到对应的匹配点,就可以确定该点的三维坐标。
双目立体视觉的精度分析
设:焦距f1、f2。
········光轴与x轴夹角为a1、a2。
········小于相机的视场角的投影角为w1、w2。
经过分析,可以得出以下结论:
(1)两台相机的有效焦距f1、f2越大,视觉系统的精度越高。建议使用长焦镜头。
(2)三角形底边叫做基线距。当它增大时,对扫描精度有影响。
(3)位于光轴上的点,测量精度最低。
放松一下 去喝口水
Kinect——让我们领略红外光栅的魅力
Kinect 是微软公司 2010 年推出的一款 XBOX360 体感外部设备,是目前世界上一款较为成熟的商业人体动作感知设备,目前大量的应用在体感游戏上。微软与伊朗 PrimeSense 公司合作,以廉价的成本实现了深度摄像头的功能,通过深度摄像头和RGB彩色信息以及相控阵麦克风提供的信息,使得 Xbox 可以感知和识别玩家及其运动,进而操控游戏中的人物,提高游戏的可玩性。
Kinect 传感器的主要硬件组成
(1)红外摄影机:主动投射近红外光谱,照射到粗糙物体、或是穿透毛玻璃后,光谱发生扭 曲,会形成随机的反射斑点,即散斑,进而能被红外摄像头读取。
(2)红外摄像头:分析红外光谱,创建可视 范围内的人体、物体的深度图像。
(3)彩色摄像头: 用于拍摄视角范围内的彩色视频图像。
Kinect 作为一个传感器,本质上也只是一个输入设备。它能提供深度数据流、彩色视频流。
它发射、捕捉、视觉重建的过程,它的是有红外投影机和红外摄像头组成的,投影接收互为重叠。
微软 Kinect 深度图想采用的是 Light Coding技术,就是用光源照明给需要测量的空间编码,属于结构光技术的一种,只是深度计算方式不一 样。Light Coding的光源称为“激光散斑”,是激光照射到粗糙物体或穿透毛玻璃后随即形成的衍射斑点。这些散斑具有高度的随机性,而且会随 着距离的不同而变换图案。即空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的 结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案, 就可以知道这个物体在什么位置了。在这之前要把整个空间的散斑图案都记录下来,所以要先做 一次光源标定。标定的方法是每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下 来。
即使不开灯,Kinect也能够正常工作(彩色摄像头就尴尬了),
然而,在大太阳天的室外,就不要装B了,kinect 会瞎的,亲测。
激光源投射出的一束红外激光,经过衍射光栅的衍射作用,被分成多束,在空间中形成 了一个随深度改变而变化的散斑图案。红外接收相机接收该散斑图案,并与参考图案进行相关运算生成包含深度信息的视差图。其中,参考图案是存储在Kinect传感器里面的已知距离上的散斑图案。
假定目标 o 在距传感器距离为 z0 的参考平面上,红外相机捕捉到目标 o 处的激光散斑在红外图像上成像的位置为 n。当目标的深度发 生变化时,图像上激光散斑的位置 n 就会沿 X 轴移 动到 m。测量出散斑 k 在图像上的视差 dk,那么:
式中,zk 表示目标距传感器的深度,b 指基线长度,f 指的是线外相机的焦距。D 是点 k 在物空间的位移,dk 是在红外图像上的视差。
带入D,可得
若固定参量 z0,f 和 b 已通过标定获得,则可由观测的视差推导出深度信息。
我个人的项目中使用了Kinect,导师的项目使用了大恒的工业相机。
我的意思是:该用什么,就用什么。
Kinect和双目的选择之我见
一般认为,双目结构光扫描仪和被测物体间的距离比较近时,扫描精度较高。
本点云使用makerbot digitizer扫描得来
而Kinect稍有不同,通过深度图可以看出来:
过近的距离和过远的距离,在深度图上显示的都是黑色。因为Kinect已经无法探测到那里了。
所以
- 如果你想扫一个人,Kinect完全可以做到。
- 如果你需要扫描一个飞机发动机叶片,Kinect无法担此重任。
- 如果你想通过体感和底层硬件交互,Kinect是你的不二选择。
参考内容
- 《机器视觉》张广军
- 《Kinect传感器的彩色和深度相机标定》郭连朋
- 《Kinect技术与工作原理的研究》石曼银
三维扫描仪[2]——大恒、微软、还是淘宝一下双目摄像头?相关推荐
- python大数据可视化分析淘宝商品,开专卖店不行啊
python大数据可视化分析淘宝商品,开专卖店不行啊 现如今大数据分析异常火爆,如何正确分析数据,并且抓住数据特点,获得不为人知的秘密?今天沉默带你用python爬虫,爬取淘宝网站进行淘宝商品大数据分 ...
- HTML5期末大作业:仿淘宝电商网站设计——仿淘宝电商管理系统(21页)含论文 HTML+CSS+JavaScript 学生DW网页设计作业成品 大学生网页制作期末作业
HTML5期末大作业:仿淘宝电商网站设计--仿淘宝电商管理系统(21页)含论文 HTML+CSS+JavaScript 学生DW网页设计作业成品 大学生网页制作期末作业 常见网页设计作业题材有 个人. ...
- 大数据下,淘宝达人、今日特卖等自媒体人如何适应这个时代,或许该用上工具了!
自媒体狂奔的时代,作为我们日常的小编,难免心有余而力不足,别人一日几十篇的写作能力,为何在我们手里出几篇都难.现在基本都是靠量博的,因为你不知道哪篇会爆,这就是真实草根达人小编的一个现状. 其实很多时 ...
- 基金老鼠仓调查云端稽查发力 大数据堪比淘宝
"老鼠仓"的监控防范与查处,一直都是监管难题. 一位证监会人士就曾经对21世纪经济报道记者指出,对公募基金公司与从业人员内幕交易的查处存在一定的难度与盲点,这些机构的人通常都比较懂 ...
- 天猫厨房大电市场分析(淘宝天猫数据)
如今,消费者对于厨房电器的需要不断增长,厨房电器领域的发展规模也越来越大.在国内市场中,由于中国人在烹饪时喜欢煎炒烹炸,油烟较重,因此,以油烟机和燃气灶为代表的厨房大电也成为千家万户不可少的厨用电器, ...
- HTML+CSS大作业——仿2021淘宝首页(1页) 大学生网页制作教程 表格布局网页模板 学生HTML静态水网页设计作业成品 简单网页制作代码 学生商城网页作品免费设计
HTML5期末大作业 文章目录 HTML5期末大作业 一.作品展示 二.文件目录 三.代码实现 一.作品展示 二.文件目录 三.代码实现 <!doctype html> <html ...
- 【大数据基础】淘宝双11数据分析与预测
https://dblab.xmu.edu.cn/post/8116/ 问题 问题1 mysql登录需要密码 https://cloud.tencent.com/developer/beta/arti ...
- 淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道
淘宝杨志丰:OceanBase--淘宝结构化大数据解决之道 时至今日,"Big data"(大数据)时代的来临已经毋庸置疑,尤其是在电信.金融等行业,几乎已经到了" ...
- 淘宝心选在大润发开店了,背后意味着什么?
相比其他精选电商平台,淘宝心选能够借助大润发等阿里新零售大军加快落地的脚步,而大润发等也可以因此丰富产品线,满足年轻顾客群体的需求. 6月28日,"淘宝心选·生活家"首店在上海大润 ...
最新文章
- 提示内存不足,其它服务不能运行
- Loading class `com.mysql.jdbc.Driver'. This is dep
- SHELL脚本 基础一
- 提升软文营销曝光量可从这几方面着手操作
- pyqt5入门教程(四)
- python中not加变量是_MyPython--基础篇--变量
- 调试windows服务
- C语言不挂科之我爱谭浩强——选择填空拿满分(附例题答案和知识点详解)
- 移动安全(1) - Win10 drozer环境搭建
- 联想启天M439E BIOS升级为F1KT74AUS
- android 外接键盘,安卓手机外接键盘测评
- light动名词_英语里有些动词有名词形式,那还用不用它的动名词?怎么区分?...
- 【操作系统】HRT任务和SRT任务(实时系统中的硬实时系统和软实时系统)
- Error starting userland proxy: listen tcp 0.0.0.0:xxx端口: bind: address already in use解决办法
- 浅谈Ubuntu 18.04.1 LTS x86_64安装,美化配置及常用软件安装配置的历程
- C语言训练-3426-小金追呀追不上妹子
- JavaScript 的addEventListener() 事件监听详解!
- 少儿美术课儿童画之水彩画第3集《高高的长颈鹿》
- 各种搜索引擎及其使用技巧 效率翻倍
- 商业WIFI的虚幻与现实