文章目录
前言
视觉仿真
<font color=#999AAA >车载视觉仿真目前主流有三种解决方案:实时注入,回放注入,视频暗箱。
实时注入 | 离线回放 | 视频暗香 | |
---|---|---|---|
实现方式 | 将仿真场景实时注入给板端,从而实现单板硬件在环。上位机软件可以根据标定参数和硬件参数设置虚拟摄像头安装位置、镜头属性等,实时吐出观测图像,并实时注入给单板,视觉单板实时识别,将感知信息传递给规控单板,规控请求吐给上位机仿真软件,形成闭环仿真回路 | 将路采视频文件直接注入视觉单板,板端通过算法实现视频的读取、拆解、识别等过程,从而开环验证算法结果。适用于开发团队算法快速迭代验证 | 将仿真场景投射在显示屏上,摄像头直接面对显示屏进行识别。 |
优点 | 实时闭环测试、对不同摄像头适配灵活 | 开发友好、工程量低 | 实时性、直观、容易实现 |
缺点 | 技术难度较大、工程准备时间长 | 强依赖于摄像头开发团队,第三方难以实现,开环验证,数据可复用性差 | 适用范围窄、逼真度不高 |
【小结】:本文不对实时性实现、验证算法等具体工程实施困难进行探讨,只讨论原理和方案实现。综上来看,作为第三方,目前相对友好、可信、可用、实时、适用性高的方案为实时注入方案。实时注入位置主要分为ISP前、ISP后,因为ISP后注入涉及优化算法,算法本身无法仿真,所以建议进行ISP前注入。
【引申】:注入有一个重要课题是图像真实性论证,图像真实性主要由镜头(图像)真实性和模型(目标)真实性支撑,本文注入仅讨论实现镜头真实性,
成像过程
下方流程图表示了从光路到感光元件的整个过程。
光源 ⟹ \implies ⟹ 透镜 ⟹ \implies ⟹ 光圈 ⟹ \implies ⟹ 成像器
1、摄像头成像原理
下方流程图表示了从光路到感光元件的整个过程。
光源 ⟹ \implies ⟹ 透镜 ⟹ \implies ⟹ 光圈 ⟹ \implies ⟹ 成像器
整个过程拆分如下:
- 光源发射/反射光
- 光在介质中传播
- 光的折射
- 光的成像(小孔成像)
- 光的感知
- 坐标系转换(3维信息到2维信息)
1.1、光源
全篇文章谈到的光均特指可见光。
1.1.1、可见光
前提:全篇文章谈到的光均特指可见光。
【可见光】:可见光是电磁波谱中人眼可以感知的部分,可见光谱没有精确的范围;一般人的眼睛可以感知的电磁波的频率在380~750THz,波长在780~400nm之间,但还有一些人能够感知到频率大约在340~790THz,波长大约在880~380nm之间的电磁波
【白光】:又称白色光、消色差光(achromatic light)、无色光。热发光体热至1500℃时发出的可见光,实际为多种有色光混合光。可以将光谱中三原色的光:蓝色、红色和绿色,按一定比例混合得到白光。光谱中所有可见光的混合也是白光。
光本质上是电磁波,只不过是特定频率范围内的电磁波,
不同颜色的光本质上是波长不同(频率不同)的电磁波。
因此光具备电磁波的性质。
1.1.2、电磁波
电磁波的基本性质,更细节的可参考车载毫米波那一篇文章:
1、电场产生正交磁场。变化的电场产生变化正交磁场。变化磁场产生变化正交电场,形成电磁场。场以光速传播,形成电磁波。
2、波长由电场震荡频率决定
3、极化方向指的是电场方向
4、振幅指的是电场强度
5、传播速度为 3 × 10 8 m / s 2 3\times 10^8 m/s^2 3×108m/s2
6、在均匀介质中沿直线传播
电磁波本质上是正交的电场和磁场,所以具备电场和磁场的性质,电场和磁场均为能量场。
从电磁波的产生原理上看,震荡的电子产生变化的电场,电场的震荡周期决定了波长/频率。
能量不会凭空产生和消失,电磁场的能量来源于运动的电子,电子的能量取决于
1.2、光的传播
1.3、光的折射
1.3.1、光疏介质 ⟹ \implies ⟹光密介质
1.3.2、光密介质 ⟹ \implies ⟹光疏介质
1.3.3、棱镜折射
1.3.4、凸透镜折射
1.4、光的成像
1.4.1、光的成像原理
1.4.2、小孔成像
1.5、成像器
1.5.1、成像器组成
1.5.2、色彩阵列
1.5.3、感光元件
1.6、坐标系转换
1.6.1、前置说明
1.6.2、【step1】:环境坐标系->摄像头坐标系,平移+旋转
1.6.3、【step2】:摄像头坐标系->图像物理坐标系,小孔相似
1.6.4、【step3】:图像物理坐标系->图像像素坐标系,平移+单位换算
1.6.5、【step4】:结论推导
2、图像的处理
2.1、图像处理-图像原始信息RAW
2.2、图像处理-图像的存储信息
2.3、图像预处理
2.4、单目摄像头图像处理
2.5、双目摄像头图像处理
3、摄像头的通讯
3.1、图像信息传递
3.2、控制信息传递
4、实时注入系统实现
4.1、基本原理
4.2、系统方案
4.3、硬件实现
4.4、软件实现
4.5、效果展示
4.6、仿真评价
4.7、故障注入
4.8、自动化实现
1.1、坐标系说明
1.1.1、图像像素坐标系
含义:代表像素的行和列
单位:无
坐标轴:u,v
示意图
1.1.2、图像物理坐标系
含义:将像素的行和列用长度表示
单位:m,也可以是其他,用m统一度量
坐标轴:xu,yu
示意图
1.1.3、摄像头坐标系
含义:以镜头中心(光圈中心)为原点,垂直镜头平面的直线为z轴,竖直向上为y轴,建立右手坐标系。
单位:m
坐标轴:x,y,z
示意图
1.1.4、环境坐标系
含义:外界环境坐标系,一般为车体坐标系或者大地坐标系
单位:m
坐标轴:x0,y0,z0
示意图
1.2、小孔成像及坐标系转换
1.2.1、前置说明
如标题1、摄像头基本原理描述可知,摄像头成像主要分为小孔成像叠加镜头畸变,本章主要描述小孔成像计算
某一点P
在环境坐标系中位置(xw, yw, zw)
在摄像头坐标系中位置(xc, yc, zc)
在图像物理坐标系中位置(xl, yl)
在图像像素坐标系中位置(u0, v0)
1.2.2、【step1】:环境坐标系->摄像头坐标系,平移+旋转
[ x c y c z c ] \begin{bmatrix} x_c\\ y_c\\z_c\end{bmatrix}
xcyczc
= R [ x w y w z w ] \begin{bmatrix} x_w\\ y_w\\z_w\end{bmatrix}
xwywzw
+ T => [ x c y c z c ] \begin{bmatrix} x_c\\ y_c\\z_c\end{bmatrix}
xcyczc
= [ R T 0 1 ] \begin{bmatrix} R&T\\ 0&1\end{bmatrix} [R0T1] [ x w y w z w ] \begin{bmatrix} x_w\\ y_w\\z_w\end{bmatrix}
xwywzw
其中平移矩阵T比较好理解。
旋转矩阵R在三维空间主要有三种方法,欧拉角、轴角、单位四元数
【欧拉角】:简单理解就是魔方,按顺序沿着三个互相正交的旋转轴依次旋转,旋转中心为3个旋转轴,计算量较大。
【轴角】:简单理解在空间中灵活选择旋转轴进行旋转,转角在±π以外会产生溢出,从而对于某一旋转结果,产生间隔为π的无数解,适合小角度旋转。旋转中心为1个旋转轴
【单位四元数】:简单理解就是通过单位四维超空间向量间接计算三维空间目标空间向量与起始空间向量的变化系数,从而实现向量旋转,实现单位球面上点的位置切换。旋转中心为单位球球心。详细推理推荐《计算机视觉–算法与应用》第二章。快速了解:推荐链接
1.2.3、【step2】:摄像头坐标系->图像物理坐标系,小孔相似
△ A P ′ O ′ \triangle AP'O' △AP′O′ ∼ \sim ∼ △ A P O \triangle APO △APO
x l x c \frac{x_l}{x_c} xcxl = y l y c \frac{y_l}{y_c} ycyl = f s \frac{f}{s} sf => { x l = 1 s ⋅ f ⋅ x c y l = 1 s ⋅ f ⋅ y c \begin{cases} x_l = \frac{1}{s} · f · x_c\\ y_l = \frac{1}{s} · f · y_c \end{cases} {
xl=s1⋅f⋅xcyl=s1⋅f⋅yc => { s ⋅ x l = f ⋅ x c s ⋅ y l = f ⋅ y c \begin{cases} s · x_l = f · x_c\\ s · y_l = f · y_c \end{cases} {
s⋅xl=f⋅xcs⋅yl=f⋅yc
其中s = zc,得:
s · [ x l y l 1 ] \begin{bmatrix} x_l\\ y_l\\1\end{bmatrix}
xlyl1
= [ f 0 0 0 0 f 0 0 0 0 1 0 ] \begin{bmatrix} f&0&0&0\\ 0&f&0&0\\0&0&1&0\end{bmatrix}
f000f0001000