点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

1、相机模型

(1)各个坐标系

确定空间某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型(各个坐标系),这些坐标系之间的转换参数就是相机参数,求解参数的过程叫做相机标定(摄像机标定)。建立立体视觉系统所需要的各个坐标系,包括世界坐标系、相机坐标系、以及图像坐标系(物理和像素坐标系)。

坐标系名称

坐标系描述

世界坐标系(3D)

描述目标在真实世界中的位置引入的参考坐标系(Xw,Yw,Zw)

相机坐标系(3D)

联系世界坐标系与图像坐标系的桥梁,一般取摄像机的光学轴为z轴(Xc,Yc,Zc)

图像物理坐标系(2D)

根据投影关系引入,方便进一步得到像素坐标,单位为毫米,坐标原点为摄像机光轴与图像物理坐标系的交点位置(x,y)

图像像素坐标系(2D)

真正从相机内读到的信息,图像物理坐标的离散化,以像素为单位,坐标原点在左上角(u,v)

首先明确各个坐标系之间的转换关系:

①  世界坐标系与相机坐标系

这是将一个三维的坐标系转换成另一个三维的坐标系,这两个坐标系之间的转换属于刚体转换,物体只改变在两个坐标系中的空间位置(平移)和朝向(旋转),而不改变其形状。它们之间的转换关系可以用旋转矩阵R和平移矩阵T来完成,这两个矩阵反映了世界坐标系与相机坐标系之间的转换关系,合称外参矩阵Lw。获得了外参矩阵,这样已知世界坐标系中的一点通过转换关系就可以得到此点在相机坐标系的位置,反之亦成立。 

②  相机坐标系与图像物理坐标系

这是一个将三维的坐标系转化为二维的坐标系,这两个坐标系之间的转换要通过几何投影模型关系获得,下面是两个坐标系的投影关系示意图:

③   图像物理坐标系与图像像素坐标系

首先以一个形象的例子来说明两个坐标系间的区别。物理坐标系是一个连续的概念,它是以毫米为单位,就好比某一观众在电影院里的具体坐标值(3.4,5.9);而像素坐标系是一个离散的概念,它是以像素作为单位,只能是整数值坐标,就好比某一观众在电影院里的位置是(第三排,第六列)。另外还需要注意的是,这两个坐标系的原点位置也不相同,物理坐标系将原点定为摄像机光轴与图像物理坐标系的交点位置,通常称其为主点;而像素坐标系则以像素图像的左上角为原点。

(2)相机畸变模型
一般只考虑径向畸变k和切向畸变p

其中

一般选择2或3个k值,这个是经验证过可以获得较好的结果,如果k取得再多影响不会很大可以忽略,甚至可能反而导致效果不好。
畸变模型:枕型畸变(k>0)和桶型畸变(k<0)

当k>0时,r越大(点离中心越远),畸变量越大,r越小,畸变量越小,呈枕型。

当k<0时,r越大(点离中心越远),畸变量越小,r越小,畸变量越大,呈桶型。

(3)相机标定参数

内参:

(单位长度的像素个数)

(主点坐标)

(畸变系数)

外参:R、T(旋转和平移矩阵)

2、张正友标定法

(1)标定基本原理

目标函数:

这里A为内参,R、T为旋转平移矩阵。n代表n张图片,m代表每张图片上有m个角点。

可以将三维空间中的点都投影到二维空间的对应点m^处,在二维平面上通过角点提取算法可以提取出对应角点。通过选择合适的内外参数来使得目标函数达到最小,将这一组内外参数作为实际求得的内外参数。

提出问题:为什么张正友没有使用这样一种简单直观的方式?

因为这样做要优化的量太多,如果初始值不好很容易陷入局部最优。

张正友的贡献:通过数值解法解出了一个比较准确的初始值(内外参),使得后面做最优化的方法有一个非常好的初始值,所以结果比较准。

(2)张正友标定原理

先求解单应性矩阵,根据单应性矩阵求解相机的内外参,这里不做详细过程介绍。张正友标定法通过代数求解出了一个代数意义上的内外参最优解,最后也需要将多组代数意义上的最优解代入目标函数中验证,获得物理意义上的最优解。

也可以将畸变因子考虑在内,做进一步优化,目标函数就变为如下形式:

3、一些改进

(1)明确张正友的方法没有限制棋盘格或者圆环。

只要可以检测出需要的特征点就可以,至于图案形状是没有限制的。

(2)圆环与棋盘格的优缺点分别是什么

圆环标定板的精度会好一些,原因是因为圆的特征检测(提取圆心坐标)的鲁棒性要比正方形的特征检测(检测边缘的交点作为角点)好。

(3)比较圆环与棋盘格标定板

圆检测精度高,表现为中心拟合精度高,但是具有偏心误差,这是由于空间中的圆的圆心投影不等于投影出的椭圆的圆心。

棋盘格检测精度低,可能是因为实际的棋盘格标定板的边缘存在过渡带,不是直接的由白瞬间变黑,但不存在偏心误差,这是由于空间中两条相交直线的交点,投影到二维图像上仍然是这两条投影直线的交点,故棋盘格检测不存在偏心误差。。

解决办法:可以将椭圆先投影为正圆,检测正圆的圆心,再通过透视投影的方法将其对应到原图像中,而不是检测椭圆的中心,通过这样一个变换把真实的圆心提取出来,这样就不存在偏心误差了。

以下是使用棋盘格标定板和圆环标定板的实验数据:

(4)标定板选择

如果知道怎么纠正偏心误差,用圆环标定板的精度一定会更高;如果不知道如何纠正偏心误差,则选择圆环标定板和棋盘格标定板的精度差不多或更差。

4、实际操作

(1)OpenCV中的函数cv::calibrateCamera

calibrateCamera(

object_points,//3维物点坐标

image_points,//通过角点检测出的2D像点坐标

imageSize,//图片尺寸

cam_intr_para,//相机内参

distCoffs,//相机畸变矩阵

rvecs,//旋转矩阵

tves//平移矩阵

)

(2)拍摄机位和数量的选择

至少需要拍不同视角的3张照片,大概需要拍20张不同视角照片,照片最好覆盖图像的每一个位置,不能只固定在中间位置上拍摄。

(3)标定结果的评判标准

重投影误差Re-projection error

用目标函数,将三维物点投影至二维图像中与二维图像中提取出的对应角点坐标做某种差值计算(目标函数)求和。

提出问题:重投影误差是否可以完全正确的反应出标定(内外参)结果是否正确?

不一定,这个重投影误差还受以下因素影响:

①图像角点检测精度,如果角点检测精度差,会直接影响到重投影误差;

②相机本身存在噪声,相机抖动;

③与相机分辨率有关,由于单位是像素。在其它条件一致的情况下,分辨率越大的相机,它的像素越密集,得到的重投影误差也会大;

④优化算法

其它评判标准:

选择两个三维的点,将其投影在二维图像上,计算这两个点的距离。用角点检测算法在这个图像上检测出对应点,也计算这两个像点之间的距离。判断两个距离的偏差。

(4)应用

①单目:PnP问题

根据三维标定靶与二维平面之间的对应点坐标,求解三维标定靶与二维平面之间的转换关系(旋转和平移矩阵)。

在OpenCV中可通过函数solvePnP实现。

②双目测量

用两个相机拍摄的图片中可以恢复三维信息,这是由于二维图片中的一点对应于三维空间中的一条射线,由两条射线的交点可以确定这个点在三维空间中的位置。

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,650+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

总结 | 相机标定的基本原理与改进方法相关推荐

  1. 相机标定的基本原理与经验分享

    主讲嘉宾: 上海交通大学在读博士生,主要研究自由型面的精密测量方法,「3D视觉从入门到精通」星球嘉宾. 课程大纲: 1.相机模型 2.张正友标定简介 3.改进方法 4.实际标定操作技术全面详解 获取课 ...

  2. 第二期直播《相机标定的基本原理与经验分享》精彩回录

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 学习3D视觉核心技术,扫描查看介绍,3天内无条件退款 圈里有高质量教程资料.可答疑解惑.助你高效解决问 ...

  3. 相机标定原理_第二期直播《相机标定的基本原理与经验分享》精彩回录

    作者:齐小凡 来源:第二期直播<相机标定的基本原理与经验分享>精彩回录 大家好,本公众号现已开启线上视频公开课,主讲人通过B站直播间,对3D视觉领域相关知识点进行讲解,并在微信群内完成答疑 ...

  4. 学习OpenCV3 面阵相机标定方法

    使用OpenCV实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的 ...

  5. 相机标定:PNP基于单应面解决多点透视问题

              利用二维视野内的图像,求出三维图像在场景中的位姿,这是一个三维透视投影的反向求解问题.常用方法是PNP方法,需要已知三维点集的原始模型. 本文做了大量修改,如有不适,请移步原文:  ...

  6. 立体视觉入门指南:相机标定之Zhang式标定法

    作者丨李迎松@知乎 来源丨https://zhuanlan.zhihu.com/p/378819083 编辑丨3D视觉工坊 亲爱的同学们,我们的世界是3D世界,我们的双眼能够观测三维信息,帮助我们感知 ...

  7. matlab单目相机标定步骤,matlab相机标定

    本文是一篇关于相机标定意义和原理的个人总结,包含了 OpenCV 和 Matlab 中常用的相机 标定函数的注解. 相机标定是机器视觉的基础, 标定结果的好坏直接决定了机器...... 图片数量一定程 ...

  8. 张正友相机标定Opencv实现以及标定流程标定结果评价图像矫正流程解析(附标定程序和棋盘图)

    from:https://blog.csdn.net/dcrmg/article/details/52939318 使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么 ...

  9. 相机标定(2)opencv2实现

    相机标定步骤 OpenCV使用棋盘格板进行标定,如下图所示.为了标定相机,我们需要输入一系列三维点和它们对应的二维图像点. 1.在黑白相间的棋盘格上,二维图像点很容易通过角点检测找到. 2.而对于真实 ...

最新文章

  1. 在SQL中使用CRL函数示例
  2. Cloud Toolkit 应用部署、文件上传支持上传进度实时展示...
  3. 从城市治理到城市“智”理,AI 不仅是城市管理的“眼睛”
  4. RBee ZigBee无线透明传输通信模块 兼容arduino平台 类似XBee
  5. java 动态数组的应用
  6. 企业级Java应用最重要的4个性能指标
  7. 树莓派python交互界面实例_玩转树莓派-RaspBerry,使用Python开发定制界面
  8. 你最隐秘的性格在哪?
  9. python绘图设置正交坐标等距_matplotlib画图教程,设置坐标轴标签和间距
  10. SAP漏洞:为什么补丁没有发挥作用?
  11. 建立自己的voc数据集_Mac上 制作自己的VOC数据集
  12. 求职必备素材:个人简历Word模板
  13. ajax 传参的三种方式:
  14. python中系统找不到指定文件怎么办_python 系统找不到指定的文件
  15. Factory Track 同步获取 Infor CloudSuite Industrial 数据
  16. 有钱任性的农夫山泉,被迫踏上IPO?
  17. 红外遥控风扇改手机APP远程控制杂记
  18. 运用京东云代码托管、云编译、云部署等产品进行蓝绿部署简单实践
  19. 开发一款出境旅游类APP需要包含哪些功能?
  20. 【java源码】火车订票系统

热门文章

  1. mysql数据库,删除root用户后恢复
  2. 结对开发----找一
  3. javascript-XMLHttpRequest
  4. 发布一个嘿嘿嘿的技术方案 —— 商用群发p2p网络
  5. RH系列linux上编译android2.3(gingerbread)
  6. 干掉 Postman?测试接口直接生成API文档,这个工具我爱了
  7. 你管这破玩意儿叫负载均衡?
  8. 4.5万字手把手教你实现MySQL TB级数据存储!!
  9. 1995年,比尔·盖茨解释什么是互联网
  10. 刚看完 Kafka 源码,各位随便问!