算法系列 | 360 AVM 调试方法与步骤

近几年的 ADAS 炒的相当火热,360 AVM 作为其中一大功能,甚是受到车企和大众的关注。目前,市面上量产的 360 AVM 的其实并不多,那么,360 AVM 功能开发过程中,如何对其进行调试,我们在这篇文章中将介绍基于 S32V硬件平台的 360 度环视应用调试的方法与步骤,其主要分为 Camera 鱼眼校正模块与图像渲染拼接模块。

一、前期准备工作

前期准备工作主要设计硬件与软件等两个部分的处理,详细内容如下:

1.1、硬件 —— 本项目所涉及的硬件如下:

1.1.1、Camera:型号为 sony isx019,数量为四副;

1.1.2、棋盘格:需要打印成 A3 纸,数量为四张 —— 用于 Camera 鱼眼校正;

1.1.3、主控板:型号名称为 Panda,外接四个 fakra 接口;

1.1.4、Camera 安装支架:两种不同结构,共四套 —— 分别用于环视车辆两侧、前后灯方位,需要根据环视拼接效果全新设计;

1.1.5、主要辅助配件:移动电源一套 —— 用于实施验证环节的实时性;模拟小车 —— 类型为儿童遥控小车,数量为一辆。

1.2、软件 —— 本项目所涉及的软件如下:

1.2.1、MCR_R2017a_win64_installer:Matlab 用于鱼眼校正的工具软件,其被用于估计镜头畸变、仿射变换以及图像中心等,并安装在 PC 上,下载网址如下:https://ww2.mathworks.cn/products/compiler/matlab-runtime.html,如图 1.1 所示。

1.2.2、编译好的可执行文件:包含实现鱼眼校正、渲染、拼接的可执行文件 auto_calib_1.1_20200108.elf 与实现特定车型的环视效果的可执行文件 SV3D-1.1.elf。

1.2.3、辅助配置文件:文件包含 autoCornerFinder、OCamCalib、ocam_calib.exe、COPYING-GPL-2。


图 1.1 为 MATLAB Runtime 下载示意图:

             


二、Camera 鱼眼校正模块

本模块主要包含 Camera 图像采集、Matlab 鱼眼校正等两部分,详细如下:

2.1、Camera 图像采集 —— 本部分针对每个 Camera 需要采集至少12 副不同方位的鱼眼图像(本次采集20 ~~ 23 副,如图 2.1 所示);若每个 Camera 型号、参数均一致,仅需采集一套即可。

下图 2.1 为 Camera 采集图像示意图:

             

采集后生成的图像名称以 “frame1_*.jpg”、 “frame2_*.jpg”、 “frame3_*.jpg”、 “frame4_*.jpg”等命名方式 —— 其中“*”为图像数量,命名从 0 开始,依序增加即可。另外,Matlab 辅助配置文件与上述采集的图像集需被放置于同一目录(此目录不包含中文字符)。


2.2、Matlab 鱼眼校正 —— 实施鱼眼校正详细步骤如下:

2.2.1、启动 OCamCalib GUI:点击 ocam_calib.exe,启动 GUI 界面,如图 2.2 所示。

如图 2.2 为 OcamCalib GUI 示意图:

              


2.2.2、下载图片:点击 GUI 中的 “Read names”,并输入当前目录下采集的部分图像名称与格式类型的首字母,如图 2.3 所示。

图 2.3 为 Read files 输入示意图:

             

2.2.3、棋盘格角点提取:棋盘格分为 X、Y 两个方向,各方向输入的角点数量为当前方向上角点总数减 2,同时需要测量任意角点之间的实际位移(以毫米为单位);至于 X、Y 方向的中心位置数值以默认数值填写(系统会根据填写的角点数量与角点之间的实际位移计算)。棋盘格图片如图 2.4 所示,GUI Extract corners 如图 2.5 所示。

如图 2.4 为 棋盘格 示意图:

             


下图 2.5 为 GUI Extract corners 示意图:

             


2.2.4、Camera 校正:点击 “Calibration”,输入 4 (多项式的最大阶数,此为推荐值,该多项式近似于将每个像素点投影到三维空间中的函数),如图 2.6 所示。

下图 2.6 为 Camera 校正 示意图:

             

2.2.5、寻找中心点:点击 “Find Center toll”,此步骤实现棋盘格中心位置的查找与定位。

2.2.6、校准改进:点击 “Calibration Refinement”,此步骤以非线性方式实现所有校准参数和中心位置参数等重新定义。

2.2.7、提取校准数据:点击 “Export Date”,此步骤将前述操作结果以 “calib_results_*.txt”(* 代表1、2、3、4等四个 Camera 代号),同时需要将每个 Camera 前期采集到的至少三幅未校准图像放置对应的 chessboard_* 文件夹中,如图 2.7 所示,并同步修改 setting.xml 中对应的图片数量,如图 2.8 所示。

图 2.7 为 Export Date 结果与对应的文件夹 示意图:


             

图 2.8 为 setting.xml 对应修改示意图:


             


三、图像渲染拼接模块

此系统实现自动校正,其分为环视硬件装配、软件执行、参数调整以及 Camera 固定支架调整等部分,详细内容如下:

3.1 硬件装配 —— 此处涉及的主要内容包括各种支架的设计与安装、自定义黑色方框的设计与布置以及主要配件与模拟小车的空间布置 —— 此处各支架类型的设计不再此处细讲,后期可根据具体型号的 Camera 以及安装空间等自行设计。 Camera 固定支架、控制板与显示器支架以及综合配置与安装示意图分别如图 3.1、3.2、3.3 所示。本次自定义方框尺寸及其 A3 模式分别如图 3.4、3.5 所示。



图 3.1 为 Camera 固定支架/安装模拟图:

             


图 3.2 为 控制板与显示器支架安装模拟图:

             

图 3.3 为 各支架配置与安装示意图:

             


图 3.4 为 自定义方框尺寸图:

          


图 3.5 为 自定义方框 A3 图:


             

3.2、软件执行 —— 此处分别实现四个方位图像的采集(如图 3.6 所示)、畸变去除(如图 3.7 所示)、四个黑色方框轮廓的查找(如图 3.8 所示)、映射网络的生成(如图 3.9 所示)、环视图像的输出(如图 3.10 所示)等操作 —— 执行 auto_calib_1.1_20200108.elf,每个步骤执行完毕之后请在终端输入 8,即可依序执行下一个操作,环视立体旋转效果如图 3.11 所示,此部分在当前路径下生成用于环视拼接的四个 mask*.jpg 和一部分 array 等文件,如图 3.12;环视实时渲染的应用 —— 执行 SV3D-1.1.elf,执行效果如图 3.13 所示。

图 3.6 为 图像采集示意图:

           


图 3.7 为 图像畸变去除示意图:

          


图 3.8 为 黑色方框轮廓的查找 示意图:

          


图 3.9 为 映射网络的生成示意图:

          


图 3.10 为 环视图像的输出示意图:

          


图 3.11 为 环视立体旋转效果图:

         


图 3.12 为 mask*.jpg 与 array 示意图:

          


图 3.13 为 环视实时渲染图片:

          




3.3、参数调整 —— 环视项目涉及很多参数,比如 、 、 、 、 等等,本次调试主要涉及参数分为两组,如图 3.14 所示。详细内容如下:

3.3.1、 类 :

—— 此参数涉及拼接的起始方位,影响较大,调试时请按照从小(比如 0.5 )到大(比如 4 )的顺序设置,并以 0.2 或 0.1 的间隔进行调整;

与 —— 两个参数影响 mesh 网点在竖直方向的稠密程度,影响不大;

—— 此参数影响环视拼接的立体效果(类似于碗的形状),其数值与碗底大小成正比关系,从小(比如 0.5 )到大(比如 4 )的顺序设置,并以 0.2 的间隔进行调整。

3.3.2、 类:、、 等参数影响环视中央车辆模型尺寸与左右、前后等位置,上述参数不得出现负数,否则系统会无法识别 sett.xml 中的数据而报错;请根据实际模型与拼接效果实施调整上述参数,调整后再执行上述可执行文件。

图 3.14 为 环视参数调整示意图:

         


3.4、Camera 固定支架调整 —— 此处涉及左右、前、后等部位Camera 支架的位置调整,详细如下:

3.4.1、左右两侧支架调整:Camera 支架高度尽量调大、距离车辆侧面的位移尽量调小,同时两侧尽量对称,支架底部的两个旋转支柱侧面尽量调整与车辆宽度方向平行,同时车辆应放置于左右侧黑色方框的中央位置。如图 3.15 所示。

图 3.15 为 左右支架安装位置示意图:

          


3.4.2、前、后向支架调整:前、后端 Camera 与水平地面拥有一个夹角(角度调整幅度越小越好),以 Camera 采集图像中没有呈现车头、车尾边缘,同时图像中左右侧的黑色方框尽量靠近车头(此时需要调整车辆前后位置,尽量位于前后黑色方框位置的中央位置)。如图 3.16 所示。

           

图 3.16 前、后向支架安装位置示意图:

    


四、总结

本文基于 S32V 硬件平台实现了 360 AVM demo 的环视实时拼接,其过程主要实施了 Camera、显示器及其支架的设计与安装、鱼眼校正的 Matlab 工具包使用以及 NXP 环视拼接算法的软件执行与关键参数的调试,最终实现了环视的实施拼接,其帧率范围达到 20 ~~ 30 FPS。欢迎在大大通上关注我,给我留言。


参考资料

1) SVAUG.pdf —— Surround View Application, NXP Semiconductors User’s Guide, Rev. 1, 07/2018

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论