目前我们团队在做一个项目,通过采集到的人脸图像测量人脸上两个瞳孔间的实际距离。注意是实际距离,不是两个瞳孔之间隔多少个像素点。找了很久资料,好像“相机标定”可以解决我的问题,看了不少资料来理解【相机标定】张正友博士的论文我看了,百度文库我也看了。

相机标定】分为【内标定】与【外标定】,【内标定】得到相机相关的内参数,【外标定】得到相机的外参数,之后还要标定多个相机之间的位置关系。

【相机标定】可以说是计算机视觉/机器视觉的基础,但是初学者不易搞清楚【相机标定】的逻辑是怎样的。下面有感兴趣的朋友可以一起来介绍一下。

为什么要相机标定?

在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。

在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为【相机标定或摄像机标定】。 摄像机标定过程,简单的可以简单的描述为通过标定板,经过一系列的矩阵变换得到。

相机标定的目的和意义

我们所处的世界是三维的,而照片是二维的,这样我们可以把相机认为是一个函数,输入量是一个场景,输出量是一幅灰度图。这个从三维到二维的过程的函数是不可逆的。

相机标定的目标是我们找一个合适的数学模型,求出这个模型的参数,这样我们能够近似这个三维到二维的过程,使这个三维到二维的过程的函数找到反函数。

这个逼近的过程就是【相机标定】,我们用简单的数学模型来表达复杂的成像过程,并且求出成像的反过程。标定之后的相机,可以进行三维场景的重建,即深度的感知,这是计算机视觉的一大分支。

相机成像过程的简化与建模

提到相机的成像,从根本上来说,就是在讨论相机的镜头。固定结构的相机镜头决定了一对固定的物像共轭关系,所谓【共轭】,意思是镜头前某个位置的物,它的像一定在镜头后的某个位置,这个关系是固定的。

举个最简单的例子,无穷远处的物必然会在镜头的焦点处成像。这里说的固定结构,指的是镜头的焦距固定,光圈固定。

上图是佳能(Canon)某款摄像机成像原理,我们可以找一个与这个镜头具有相同的物像共轭关系的凸透镜来等效这个镜头,我们把这个凸透镜称作等效透镜,用朝外的双箭头表示。

所以准确的讲把相机的成像过程简化成【针孔相机模型】,只是借用了针孔相机中简单的数学关系来表达一些本来难以表达的数学关系。

按我个人的理解,除了焦距固定之外,也应当包含光圈固定,因为改变光圈的大小,除了景深之外,是有可能改变针孔相机模型中的光心位置,但是影响并不是很大。这意味着标定好的相机如果改变光圈大小,会使得标定误差变大但应该不会大到难以接受的地步。

那么这里就引发了两个问题:

(1) 这么多像点和物点到底谁和谁是一对儿?(2) 即便我知道物点在哪里,可是我怎么样用相机坐标系来表达物点的位置 X,Y,Z ?

为了解决上述的两个问题,【标定板】应运而生。标定板的第一大作用,确定物点和像点的对应性。这里用到的原理主要是【透视不变性】,打个比方,你近看一个人和远看一个人,虽然他的鼻子大小变了,你看鼻子的视角也变了,但是拓扑结构肯定是不变的,你也不可能把鼻子看成是嘴巴。

在【标定板】中,印刷了拓扑结构,广泛应用的是【棋盘格】和【圆点格】,这两种之所以成为主流,不仅是因为它们的拓扑结构明确且均匀,更重要的是检测其拓扑结构的算法简单且有效。

棋盘格检测的是角点,只要对拍摄到的棋盘格图像横纵两个方向计算梯度就可获得;而圆点格的检测只需要对拍摄到的圆点格图样计算质心即可。假如你开发了一套非常完美的检测人脸全部特征的算法,你完全可以用你的照片当作标定板。圆点格的效果应该是好于棋盘格,因为圆点质心的【透视不变性】要比棋盘格的角点稳定的多。

如果用OpenCV或Matlab标定工具箱进行标定,需要给出棋盘格的物理尺寸,这其实就是在建立标定板坐标系,从测量的角度讲,标定板的精度是相机标定精度的基准,是误差传递链上的第一个环节。所以为了使针孔相机模型更逼近真实相机,对标定板的质量有以下要求(按重要性顺序):

  1. 标定板的平面度高,棋盘格是直角;
  2. 标定板每个格子尺寸的高一致性;
  3. 真实尺寸与标称尺寸的差异小。

综上所述,我们知道了【相机标定】的重要意义,无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。因此,做好相机标定是做好后续工作的前提,提高标定精度是科研工作的重点所在。

相机标定方法有哪些?

【相机标定】方法有:【传统相机标定法】、【主动视觉相机标定方法】、【相机自标定法】。

【传统相机标定法】需要使用尺寸已知的标定物,通过建立标定物上坐标已知的点与其图像点之间的对应,利用一定的算法获得相机模型的内外参数。

根据标定物的不同可分为三维标定物和平面型标定物。三维标定物可由单幅图像进行标定,标定精度较高,但高精密三维标定物的加工和维护较困难。平面型标定物比三维标定物制作简单,精度易保证,但标定时必须采用两幅或两幅以上的图像。传统相机标定法在标定过程中始终需要标定物,且标定物的制作精度会影响标定结果。同时有些场合不适合放置标定物也限制了传统相机标定法的应用。

【基于主动视觉的相机标定法】是指已知相机的某些运动信息对相机进行标定。该方法不需要标定物,但需要控制相机做某些特殊运动,利用这种运动的特殊性可以计算出相机内部参数。基于主动视觉的相机标定法的优点是算法简单,往往能够获得线性解,缺点是系统的成本高、实验设备昂贵、实验条件要求高,而且不适合于运动参数未知或无法控制的场合。

【相机自标定算法】主要是利用相机运动的约束。相机的运动约束条件太强,因此使得其在实际中并不实用。利用场景约束主要是利用场景中的一些平行或者正交的信息。其中空间平行线在相机图像平面上的交点被称为【消失点】,它是射影几何中一个非常重要的特征,所以很多学者研究了基于消失点的相机自标定方法。自标定方法灵活性强,可对相机进行在线定标。

【 常用术语】

【内参矩阵】: Intrinsic Matrix

【焦距】: Focal Length

【主点】: Principal Point

【径向畸变】: Radial Distortion

【切向畸变】: Tangential Distortion

【旋转矩阵】: Rotation Matrices

【平移向量】: Translation Vectors

【平均重投影误差】: Mean Reprojection Error

【重投影误差】: Reprojection Errors

【重投影点】: Reprojected Points

【标定板】: Calibration Target 

在机器视觉、图像测量、摄影测量、三维重建等应用中,为校正镜头畸变、确定物理尺寸和像素间的换算关系,通过相机拍摄带有固定间距图案阵列平板、经过标定算法的计算,可以得出相机的几何模型,从而得到高精度的测量和重建结果,而带有固定间距图案阵列的平板就是【标定板】。

【世界坐标系】:World Coordinate

也称为测量坐标系,是一个三维直角坐标系,以其为基准可以描述相机和待测物体的空间位置。世界坐标系的位置可以根据实际情况自由确定。

【相机坐标系】: Camera Coordinate

也是一个三维直角坐标系,原点位于镜头光心处,x、y轴分别与相面的两边平行,z轴为镜头光轴,与像平面垂直。

c++ opencv 通过网络连接工业相机_摄像头和机器人视觉开发中的「相机标定」,你了解多少?...相关推荐

  1. opencv 通过网络连接工业相机_单目摄像机测距(python+opencv)

    点击上方"新机器视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 我的论文方向目前是使用单目摄像头实现机器人对人的跟随,首先单目摄像 ...

  2. c++ opencv 通过网络连接工业相机_使用OpenCV进行手势控制游戏+源码分享

    前期文章链接: 霍夫变换--形状特征提取算法:车道线检测 开源自动驾驶汽车数据集 基于深度学习和神经网络的重要基础及方法概要 深度学习背后的数学思想 正文: 在本文中,您将了解使用OpenCV在Pyt ...

  3. opencv 通过网络连接工业相机_Raspberry Pi上的OpenVINO,OpenCV和Movidius NCS

    源代码链接:https://pan.baidu.com/s/1ntnd2oyp8yCPQ0KQRscyqg 提取码:8ayb 在本教程中,将学习如何将OpenVINO工具包与OpenCV一起使用,以便 ...

  4. c++ opencv 通过网络连接工业相机_OpenCV项目实战之零件缺陷检测(上)

    导 语 在流水线上,上位机软件以一定的频率通过工业摄像机拍摄图片,然后检查图片中的零件质量,然后把零件质量用特定编码以串口通信方式发送给硬件,硬件收到信号后将有缺陷的零件过滤,以实现零件质量把控的目的 ...

  5. 三星oneui主屏幕费电_都 9012 年了,三星系统还「负优化」吗?

    近日,三星正式向国内 Galaxy S9 系列.Note9 系列推送了 Android 9 正式版.此次除了系统版本的重大升级外,三星还为用户带来全新设计的用户界面:One UI. 在宣传中,三星称 ...

  6. 一个软件网络连接异常_你的电脑运转正常吗?这 10 款系统监控软件能告诉你答案...

    每当你的电脑系统突然崩溃,就意味着有些问题终于藏不住了.想要避免宕机造成的资料丢失等严重影响,就要在平时对系统进行多方位监控,保证电脑处于最佳运转状态. 下面,我们就介绍 10 款能监控电脑系统和部件 ...

  7. 一个软件网络连接异常_苹果下载不了软件怎么办?这几个功能需要一一排查

    苹果下载不了软件怎么办?目前手机能够提供给我们的功能越来越多,不仅仅只是能够打电话.在手机里能够下载很多的软件来体验不一样的新奇感,假如出现无法下载软件的情况该怎么解决? 首先,需要大家了解的是,想要 ...

  8. 一个软件网络连接异常_手机也能玩PC大作了,串流软件Steam Link登陆iOS App Store...

    去年V社发布消息宣布,将会推出一款全新的针对智能手机的Steam串流APP,而在近日这个名为Steam Link App终于正式登陆了iOS App Store.玩家可以通过手机和电脑连接,畅玩电脑上 ...

  9. 一个软件网络连接异常_拥有苹果电脑后,最应该预装的7款Mac应用软件

    很多用户选择电脑,最终选择Mac是因为Mac带有大量出色的工具,可让我们无需安装更多软件即可完成最常见的任务.但是没有什么是完美的,如果想要自己的MAC更加完善,你还应该安装以下几款应用软件! 下面m ...

最新文章

  1. ArrayAdapter的使用
  2. C# .NET MVC 基础提供程序在 Open 上失败
  3. 吴恩达深度学习5.2练习_Sequence Models_Emojify
  4. 有NFC功能的手机可以刷小区门禁吗?
  5. 在线手机号码提取工具
  6. mysql in 索引_关于MySQL种的in函数到底走不走索引、我和同事差点大打出手!
  7. android发送json格式,如何在Android上以JSON发送文件?
  8. 简单的BBcode parsing
  9. Android自学视频百度网盘链接
  10. Html查看dcm,DICOM图像浏览器(.dcm图像查看器)
  11. Windows电脑云便签敬业签左边的分类怎么展开?
  12. 互联网行业的那些缩写PM,RD,FE,UE,QA,OP,BRD,MRD,PRD,FSD
  13. chrome插件之网页翻译插件
  14. AutoJs学习-实现自动刷快手极速版
  15. 使用 Docker Compose 构建复杂的多容器 App
  16. IDEA2020安装教程
  17. JAVA删除pdf空白页_【Spire.PDF教程】添加或删除 PDF 页面,调整页面顺序-word删除空白页...
  18. 5.2SVM2--python机器学习
  19. Debug Error: abort() has been called解决办法
  20. xss-labs通关大详解

热门文章

  1. 百度NLP、视频搜索团队招聘算法实习生!
  2. 谷歌师兄的刷题笔记分享!
  3. PDFMiner:python 读取 pdf 内容
  4. 【Python自然语言处理】中文分词技术——规则分词
  5. WeStrom自定义设置修改快捷键
  6. 滤波 放电速度比充电慢 模电
  7. 去月球“你知道戴维会变身成哪种动物吗?”
  8. map key char*
  9. SpringMVC 应用配置
  10. (转载)spring配置hibernate 事务。