本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢!
此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。



1.摄像头标定之内参标定

1.1 概述

  1. 标定传感器是自动驾驶感知系统中的必要环节,是后续传感器融合的必要步骤和先决条件,目的是将两个或多个传感器变换到统一的时空坐标系,使得传感器融合具有意义,是感知决策的关键前提;
  2. 车载摄像头以一定的角度和位置安装在车辆上,为了将车载摄像头采集到的环境数据与车辆行驶环境中的真实物体相对应,即找到车载摄像头所生成的图像像素坐标系中的点坐标与摄像机环境坐标系中的点坐标之间的转换关系,需要进行摄像头标定;
  3. 传感器的标定是建立传感器输出与现实中的值的对应关系;
  4. 单目视觉的标定实质是建立物体在环境坐标系中的坐标与图像坐标系中的坐标之间的关系;

1.2 摄像头内参数标定

1.2.1 摄像头模型的建立

上图说明:坐标系OxyzOxyzOxyz是环境坐标系;设现实世界中一个物体P,在环境坐标系中的位置为(xw,yw,zw)(x_w,y_w,z_w)(xw​,yw​,zw​);为了得到P在图像上的投影位置,需要建立三个辅助坐标系:摄像头坐标系、图像物理坐标系、图像像素坐标系,最终需要得到的是P点在图像像素坐标系上的投影;

  1. 摄像头坐标系与环境坐标系的转换

    1. 上图说明:摄像头坐标系以镜头中心为原点,以垂直镜头平面的直线为z轴建立空间直角坐标系,x轴与y轴在镜头平面上,x,y,z满足右手坐标系;
    2. 摄像头在空间中有一个位置,可以建立环境坐标系与摄像头坐标系之间的关系[R,T],其中T为摄像头坐标系原点相对于环境坐标系原点的平移,即摄像头的镜头中心在环境坐标系的坐标,R为摄像头坐标系相对环境坐标系的选择矩阵;
    3. 空间中的点P在摄像头坐标系中的坐标可以通过以下公式求解:[xcyczc]=R[xwywzw]+T\left[ \begin{matrix} x_c \\ y_c\\ z_c \end{matrix} \right]=R\left[\begin{matrix}x_w\\y_w\\z_w\end{matrix}\right]+T⎣⎡​xc​yc​zc​​⎦⎤​=R⎣⎡​xw​yw​zw​​⎦⎤​+T
      对上述公式进行转换,可得:
      [xcyczc1]=[RT01][xwywzw1]\left[ \begin{matrix} x_c \\ y_c\\ z_c\\ 1 \end{matrix} \right]=\left[\begin{matrix}R & T \\0 & 1\end{matrix}\right]\left[\begin{matrix}x_w\\y_w\\z_w\\1\end{matrix}\right]⎣⎢⎢⎡​xc​yc​zc​1​⎦⎥⎥⎤​=[R0​T1​]⎣⎢⎢⎡​xw​yw​zw​1​⎦⎥⎥⎤​
  2. 图像坐标系与图像像素坐标系

    1. 上图说明:计算机视觉中,图像常以点阵的方式存储,每个像素对应着点阵中的一行与一列;图像像素坐标系完全对应这种关系;图像像素坐标系以图像左上角为原点,向右的方向为u坐标轴,向下的方向为v轴,像素在该坐标系下用二元组(u,v)表示;
    2. 图像像素坐标系符合计算机图像处理逻辑,但图像像素坐标系坐标(u,v)仅仅代表像素的列数与行数,不带有任何物理单位,空间中的坐标点则必须用带有单位(如厘米、米等)的量来表示,因此引入图像物体坐标系;定义摄像头光轴与图像平面的交点为图像主点,图像物理坐标系以主点为原点,x轴与y轴分别平行于图像像素坐标系的u轴与v轴;
    3. 设像元底边长为width,高为height,主点在图像像素坐标系下的坐标为(uo,vo)(u_o,v_o)(uo​,vo​),在不考虑图像畸变的情况下,图像物理坐标系下的点(xl,yl)(x_l,y_l)(xl​,yl​)在图像像素坐标系下的坐标通过如下公式解算: [uv1]=[1width0uo01heightvo001][xlyl1]\left[ \begin{matrix} u \\ v\\ 1 \end{matrix} \right]=\left[\begin{matrix}\frac{1}{width} & 0 & u_o \\0 & \frac{1}{height} & v_o\\0 & 0 & 1\end{matrix}\right]\left[\begin{matrix}x_l\\y_l\\1\end{matrix}\right]⎣⎡​uv1​⎦⎤​=⎣⎡​width1​00​0height1​0​uo​vo​1​⎦⎤​⎣⎡​xl​yl​1​⎦⎤​
  3. 小孔成像与图像物理坐标系

    1. 摄像头成像的理论基础是小孔成像;
    2. 图像物理坐标系的原点与摄像机的光学中心重合;
    3. 当摄像头坐标系的x轴与y轴与图像物理坐标系的x轴与y轴平行时,可以构建起图像坐标系与摄像机坐标系之间的关系;
    4. 对于物体P,在摄像机坐标系下的坐标为(xc,yc,zc)(x_c,y_c,z_c)(xc​,yc​,zc​);根据几何关系,有:ΔOPA∼ΔO′P′A′\Delta{OPA}\sim\Delta{O'P'A'}ΔOPA∼ΔO′P′A′
      因此,有如下关系:xlxc=ylyc=fzc\frac{x_l}{x_c}=\frac{y_l}{y_c}=\frac{f}{z_c}xc​xl​​=yc​yl​​=zc​f​
      则有:xl=1zc⋅f⋅xc,yl=1zc⋅f⋅ycx_l=\frac{1}{z_c}·f·x_c,y_l=\frac{1}{z_c}·f·y_cxl​=zc​1​⋅f⋅xc​,yl​=zc​1​⋅f⋅yc​
      令s=zcs=z_cs=zc​,则有:s⋅[xlyl1]=[f0000f000010][xcyczc1]s·\left[ \begin{matrix} x_l \\ y_l\\ 1 \end{matrix} \right]=\left[\begin{matrix}f & 0 & 0 & 0 \\0 & f & 0 & 0\\0 & 0 & 1 & 0\end{matrix}\right]\left[\begin{matrix}x_c\\y_c\\z_c \\1\end{matrix}\right]s⋅⎣⎡​xl​yl​1​⎦⎤​=⎣⎡​f00​0f0​001​000​⎦⎤​⎣⎢⎢⎡​xc​yc​zc​1​⎦⎥⎥⎤​
  4. 环境坐标系与图像像素坐标系的转换
    得到环境坐标系-摄像机坐标系、摄像机坐标系-图像像素坐标系之间的关系后,可解算环境坐标系与图像像素坐标系之间的转换关系;对现实世界的点P,其在环境坐标系下的坐标为(xw,yw,zw)(x_w,y_w,z_w)(xw​,yw​,zw​),在图像中的位置为(u,v)(u,v)(u,v),则有如下关系:s⋅[uv1]=[1width0uo01heightvo001]⋅[f0000f000010]⋅[RT01]⋅[xwywzw1]s·\left[ \begin{matrix} u \\ v\\ 1 \end{matrix} \right]=\left[\begin{matrix}\frac{1}{width} & 0 & u_o \\0 & \frac{1}{height} & v_o \\0 & 0 & 1 &\end{matrix}\right]·\left[\begin{matrix}f & 0 & 0 & 0 \\0 & f & 0 & 0\\0 & 0 & 1 & 0\end{matrix}\right]·\left[\begin{matrix}R & T \\0 & 1\end{matrix}\right]·\left[\begin{matrix}x_w\\y_w\\z_w \\1\end{matrix}\right]s⋅⎣⎡​uv1​⎦⎤​=⎣⎡​width1​00​0height1​0​uo​vo​1​​⎦⎤​⋅⎣⎡​f00​0f0​001​000​⎦⎤​⋅[R0​T1​]⋅⎣⎢⎢⎡​xw​yw​zw​1​⎦⎥⎥⎤​
    化简:s⋅[uv1]=[αx0uo00αyvo00010][RT01][xwywzw1]=M1M2Xws·\left[ \begin{matrix} u \\ v\\ 1 \end{matrix} \right]=\left[\begin{matrix}\alpha_x & 0 & u_o & 0 \\0 & \alpha_y & v_o & 0\\0 & 0 & 1 & 0\end{matrix}\right]\left[\begin{matrix}R & T \\0 & 1\end{matrix}\right]\left[\begin{matrix}x_w\\y_w\\z_w \\1\end{matrix}\right]=M_1M_2X_ws⋅⎣⎡​uv1​⎦⎤​=⎣⎡​αx​00​0αy​0​uo​vo​1​000​⎦⎤​[R0​T1​]⎣⎢⎢⎡​xw​yw​zw​1​⎦⎥⎥⎤​=M1​M2​Xw​
    其中,αx=fwidth,αy=fheight\alpha_x=\frac{f}{width},\alpha_y=\frac{f}{height}αx​=widthf​,αy​=heightf​;
    1. 矩阵M2M_2M2​为环境坐标系到摄像头坐标系的坐标转换关系,是摄像头在世界坐标系下的位置姿态矩阵;
    2. 在计算机视觉中,确定M2M_2M2​矩阵的过程称为视觉定位;
    3. 自动驾驶汽车需要定期对摄像头位置进行重新标定,这一过程称为校准;
    4. 矩阵M1M_1M1​,其四个常量αx,αy,uo,vo\alpha_x,\alpha_y,u_o,v_oαx​,αy​,uo​,vo​与摄像机的焦距、主点、传感器等设计技术指标有关,而与外部因素(如周边环境、摄像机位置)无关,称为摄像头内参;
    5. 内参在摄像头出厂时确定,往往通过实验方式确定摄像头内参,对于单目摄像头的标定,指通过实验手段确定摄像头的内参;

1.2.2 摄像头畸变矫正

  1. 摄像头通常存在透镜畸变,即物点在实际的摄像头成像平面上生成的像与理想成像之间存在一定光学畸变误差,畸变误差主要分为径向畸变误差和切向畸变误差;
  2. 径向畸变误差:沿着透镜半径方向分布的畸变,产生的原因是光线在远离透镜中心的地方比靠近中心的地方更加弯曲;
  3. 切向畸变误差:由于透镜本身与摄像头传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致;
  4. 畸变是透镜的固有特性,无法消除,只能改善;
  5. 在自动驾驶汽车上,影响摄像头工作的畸变一般两种:桶形畸变和枕形畸变;
  6. 枕形畸变:由镜头引起的画面向中间"收缩"的现象;在使用长焦镜头或变焦镜头的长焦端时,容易看到枕形畸变;
  7. 桶形畸变:由于镜头中透镜物理性能及镜片组结构引起的成像画面呈桶形膨胀状的失真现象;在使用广角镜头或使用变焦镜头的广角端时,容易看到桶形畸变;桶形畸变与枕形畸变统称径向畸变;
  8. 对一般摄像头来讲,图像的径向畸变描述为低阶多项式模型;设观测到的图像中的某个像素(u,v)(u,v)(u,v)在没有畸变情况下的图像像素坐标为(u′,v′)(u',v')(u′,v′),则两者之间的变换通过以下公式确定:{u=u′(1+k1rc2+k2rc4)v=v′(1+k3rc2+k4rc4)\left\{ \begin{array}{c} u&=u'(1+k_1r^2_c+k_2r^4_c) \\ v&=v'(1+k_3r^2_c+k_4r^4_c) \end{array} \right. {uv​=u′(1+k1​rc2​+k2​rc4​)=v′(1+k3​rc2​+k4​rc4​)​
    其中:rc2=u′2+v′2;k1,k2,k3,k4r^2_c=u'^2+v'^2;k_1,k_2,k_3,k_4rc2​=u′2+v′2;k1​,k2​,k3​,k4​称为径向畸变系数,属于摄像头内参;
  9. 标定畸变系数方法:铅垂线方法(plumb-line method);基本思想:拍摄多条直线,特别是与图像的边缘对齐的场景图像,然后通过调整畸变参数来使得图像中所有的线条都变成直线;
  10. 标定畸变系数其他方法:使用若干重叠图像,将径向畸变参数的估计与图像配准过程相结合,典型代表:Sawhney and Kumar(2009),其将多层次运动模型与二次畸变矫正项用在一个从粗到精的过程中,使用基于亮度的最小化方法计算配准;Stein(1997)使用基于特征的方法,结合三维运动模型和二次径向畸变,进行畸变矫正与配准;

1.2.3 摄像头内参标定方法

  1. 常用标定方法:平面标定模式与自标定;
  2. 平面标定模式:指制作一块标定板,在工作区的空间内使用一种可控的移动方式来移动该目标,这种方法称为"N-平面标定法";
  3. 平面标定模式应用最广泛的是:张正友标定法;张正友标定法通过在不同位置拍摄棋盘标定板的方式,在每个图像中找到棋盘标定板的内角点,通过内角点之间的对应关系建立对矩阵B=K−TK−1B=K^{-T}K^{-1}B=K−TK−1的约束,从而恢复内参矩阵KKK;
  4. 当没有标定板时,可以通过摄像机的运动来进行标定,这种不使用已知目标进行标定的方法称为自标定;

学习笔记5--摄像头标定之内参标定相关推荐

  1. 【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用

    树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...

  2. csi python 摄像头 树莓派_【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用...

    树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...

  3. 标定学习笔记(六)-- Halcon手眼标定例程:Hand-eye-Calibration with a stationary cam

    1  问题概述 本例程演示了如何对一个 Eye-to-Hand 问题进行手眼标定,即相机与机器人基座是固定不动的,用于进行标定的标定板则固定于机械手末端的夹具上. 在本例程中,手眼标定的目的是为了解出 ...

  4. halcon学习笔记——(1)单摄像机标定

    In the reference manual,operator signatures are visualized in the following way:  operator ( iconic ...

  5. Halcon学习笔记之曲面矫正系列(棋盘格标定)-曲面码如何读取

    之前两篇文章主要讲的是正常的一维码和二维码的读取,那么有时候我们会在项目中遇到曲面的码,就好像可乐瓶的包装纸一样是圈起来一圈的曲面,那针对这种情况下的码就需要我们在读取之前将他用棋盘格矫正才能完成正常 ...

  6. 目标检测学习笔记-3D摄像头与 2D摄像头区别

    1. 2D&3D 的定义 首先2D,3D 的D 是什么意思?D 全称是Dimensional,翻译中文为维度.中文解译2D,3D 为二维,三维. 2. 2D 和3D 区别 如果从数学,物理角度 ...

  7. 智能车学习笔记(摄像头组)——基础扫线

    今年第一次搞智能车,刚刚上大一,一切都是摸索着来,趁着放假了就把自己学会的东西梳理一下.第一次写的比较乱,欢迎各位一起学习(我亲爱的队友要加倍努力哈,这几天嗓子疼,不能腾讯会议给你讲了,专门给你写的) ...

  8. 初学视觉学习笔记----用摄像头获取图片

    目标: 想要A,B两个窗口,A窗口实时显示相机的画面,当我按下照相按钮的时候,B窗口显示我捕获到的图片. 遇到的问题: 在A窗口 实时显示的时候 用到了while (true){ //视频显示} 因为 ...

  9. 相机标定(三)——手眼标定

    相机标定(一)--内参标定与程序实现 相机标定(二)--图像坐标与世界坐标转换 相机标定(三)--手眼标定 一.简述 手眼标定目的在于实现物体在世界坐标系和机器人坐标系中的变换. 在标定时,一般在工作 ...

最新文章

  1. iphone iPhone开源项目汇总(更新版)
  2. 如果和对方的意见或者事件冲突了怎么办?让步
  3. 浅谈微信小程序生命周期
  4. 【渝粤题库】陕西师范大学202011 微观经济学 作业 (专升本、高起本)
  5. 【To Read】LeetCode | Jump Game II(转载)
  6. 合并的bean定义 - MergedBeanDefinition
  7. 作为一个销售人员,要做到这些
  8. Oracle 数据库逻辑结构.md
  9. 使用ZeroBrane Studio调试OpenResty Lua脚本
  10. C语言入门:函数递归与写法
  11. 微信公众号最佳实践 ( 10.2)回复QQ表情和Emoji表情
  12. 推荐一些前端小姐姐的公众号
  13. opencv 双目摄像头拍照(分别左右镜头拍照)
  14. 草根创业,这三大坑千万别踩
  15. STM32F103开发环境的搭建
  16. Java 生成 outLook .msg 文件
  17. 【总结】伤寒杂病论Spring经验总结
  18. 20个月股票投资复盘:在被割韭菜中成长
  19. 石英加速度计工作原理介绍
  20. 【矩阵论】内积空间与等距变换(1)

热门文章

  1. LiDAR数据下载步骤
  2. 主键冲突报什么代码_程序员经典面试题,Mysql自增主键为什么不连续
  3. 伦敦时间现在几点_强推!这里将出现一处“小伦敦”!100%英伦风,连贝克汉姆也出手了!...
  4. apex图表使用饼图居中_使用Word制作财务报表分析报告
  5. 彩虹岛虚拟机多开 登陆游戏不了,初始化gpk异常
  6. wpf title link 新窗口_新型纳米球探针:开启认知微观世界的新窗口
  7. mysql 2005 下载_sql2005下载完整版 中文免费版
  8. linux将文件夹中的子文件夹(指定个数)移到新的文件夹中
  9. 20180507记事
  10. Excel引用其他工作表数据的几种方法