什么是自动泊车系统?自动泊车路径规划和跟踪技术分析

发布时间:2023-03-06  

一 前言

随着城镇化水平的不断提高以及经济水平的快速增长,人们对汽车的需求量日益旺盛,汽车保有量持续增多。汽车的出现满足了人们的出行需求,但现阶段汽车的行驶永远离不开驾驶员对汽车的操作,到达目的地后,停车成为每个驾驶员需要面对的问题。下班驾车回到小区停车场,在密密麻麻的停泊车辆中忽然发现了一个停车位,带着惊奇与庆幸将汽车开到停车位旁,这时却忽然发现旁边两个汽车停得与空置的车位靠较近,凭借笨拙的车技,根本无法将汽车停进去,只能眼看车位空瞪眼悔科二忘天边。


在各种环境下想要完美的将车停到车位中,是一件并不容易的事情。无论是侧方位停车,还是倒车入库,都是需要每个驾驶员熟练掌握的技巧,而实际情况却远不是想象的那么美好,“停车”这一简单操作,却成为了很多驾驶员的难题。对于驾驶新手来说,开车的过程中最困难的事情是什么?百分之八十的答案都是泊车入库。许多刚出“茅庐”的驾驶新手对于侧方位停车十分的头痛,是一种痛苦的经历,有时侧方车位前后距离太小、有时后方车位前面距离太窄,都让许多新手们为难不已。多倒几次车事小,有时还会出现刮蹭,让人十分恼火。

57a1e3aa-b254-11ed-bfe3-dac502259ad0.png

把又长又大又笨重的前驱车停好,也是一件有点困难的事。前轮驱动的车辆发动机一般是横置安装的,车宽的很大一部分都由发动机占据,所以就算把方向盘打到底,轮胎的转动幅度也不会很大,在低速情况下想要改变方向很难,车体越大,这一点感受得越明显,无论驾驶技术多好都没法避免。由于车辆和人均受自身条件影响而存在“视觉盲区”,泊车往往耗费大量的时间和精力,一直是新老司机的驾驶痛点。


随着城镇化发展的不断加快,交通拥堵现象愈发凸显,城市停车位资源紧张,停车位空间小等问题,停车难题不断发酵。由于城市停车位数有限而车辆数量众多,对于“老司机们”来说,想要找到合适的停车位已经越来越困难,在较大停车场停车容易产生找车位难、找车难等问题,驾车出行变得愈发受到挑战;与此同时大城市停车空间有限,特别是市中心拥挤的停车空间,狭小的停车空间时刻考验着他们的停车技术,将汽车倒入狭小的停车位成为一项必备技能,给驾驶员带来困扰。对于“新司机们”而言,很多情况下都需要颇费周折才能停好车,在这种环境下泊车容易引起局部交通堵塞、神经疲惫和保险杠被撞弯等剐蹭事故的发生。


在这样的背景下,为便捷人们出行、缓解交通压力,解决停车难题便成为了城市管理的重要任务。近年来世界各国从科技的角度不断探索,尝试找到破解城市停车难题的办法。在不同的国家,落实不同场景的自动驾驶的意愿也不相同,唯一确定的是,大家都不爱停车,确切的说是不爱找车位和停车,国外车企也意识到停车难的问题。随着高级辅助驾驶系统的出现,汽车的驾驶体验越发丰富,驾驶员在驾驶汽车的过程中也越来越轻松,驾驶安全性也由于高级辅助驾驶的搭载获得了巨大的提升,作为在驾驶汽车过程中不可避免的动作——停/泊车,也被汽车设计师和汽车制造商考虑到,技术的发展为之提供了解决之道,设计并研发了相关的高级辅助驾驶系统,它就是——自动泊车系统。 经过不懈努力,在自动驾驶技术的前哨应用之中,人们也是看到了问题解决的希望和曙光,那便是借助“自动泊车技术”,率先推出了自动泊车系统。虽然有些车型已经配备了自动泊车技术,但是依然需要驾驶员人为控制档位、油门,并不算真正的自动泊车。随着技术的发展自动化程度的提高,较先进的自动泊车辅助只需要轻轻启动按   钮、坐定、放松,就可以自动完成停车入位,这种功能进一步得到老司机们的喜爱,毕竟可以减少日常通勤停车的重复劳动。目前很多车企推出的新车都有自动泊车功能。 自动泊车技术的应用,对于解决人口密集城区的停车问题和交通问题也确有奇效。因为自动泊车技术可以将汽车停放在较小的空间内,这些空间比大多数驾驶员能自己停车的空间小得多,这使得车主能更容易地找到停车位。与此同时由于相同数量的汽车占用的空间也更小,也使得停车场的利用率也大幅提升。 现在越来越多的厂商都开始研发无需人工干预真正的自动泊车功能,而这就属于无人驾驶的范畴了。这样自动泊车无需驾驶员就可以实现泊车入库,不仅非常方便,同时非常炫酷。因此致力于运用新技术让泊车变得更智能、更安全、更便捷,自动泊车技术的出现和发展为解决泊车问题提供新思路,将有效解决驾驶员找位难、停车难等痛点。 二 概述

57f9e23a-b254-11ed-bfe3-dac502259ad0.png

 

三 定义

1.自动泊车系统 自动泊车又称为自动泊车入位,顾名思义就是汽车不用人工干预,系统能够自动帮用户将车辆停入车位。当找到了一个理想的停车地点,只需轻轻启动按钮、坐定、放松,其它一切即可自动完成,彻底消除在停车中遇到的麻烦。自动车辆控制的一个重要目标是提高安全性和驾驶员的舒适性,APAS通过泊车操作来实现这个目标。

58389142-b254-11ed-bfe3-dac502259ad0.png

自动泊车是一个常见的低速操作场景,是解决自动驾驶最后一公里的核心技术,也是自动驾驶技术,相当于低速的自动驾驶,技术难度与自动驾驶相比较为容易,只不过是自动驾驶的一种低配版,就是自动驾驶降低要求后的一种衍生,也是实现自动驾驶的必经之路。 目前真正的自动驾驶虽然距离商业落地和规模普及还有一段距离,但如果降低自动驾驶应用的环境条件和实际限制,其同样具备重大使用价值。 自动泊车已经成了无人驾驶最先落地的应用场景,低速,封闭或者半封闭空间,场景相对固定,最容易落地。

5854012a-b254-11ed-bfe3-dac502259ad0.png

自动泊车系统(Automated Parking System,APS)/自动泊车辅助系统(Auto Parkig Assist, APA)主要是利用遍布车辆自身和周边环境里的车载传感器,测量车辆自身与周边物体之间的相对距离、速度和角度:通过泊车雷达来实现自动识别可用车位,利用360°全景摄像头的图像信息,并结合超声波雷达传感器,实现对车位、 周边环境的感知和识别,然后通过车载处理器/车载计算平台或云计算平台计算出操作流程,控制器根据识别的信息计算泊车合适的路径以及控制执行机构实施车辆的转向和加减速,并自动正确地完成停车入车位动作的系统,以实现自动泊入、泊出及部分行驶功能,实现车辆安全、平顺的泊车。 搭载有自动泊车功能的汽车可以不需要人工干预,通过车载传感器、处理器和控制系统的帮助收集车辆的环境信息(包括障碍物的位置),就可以实现自动识别车位和找到一个停车位,并自动安全地完成泊车入位操作的过程。

2.自主泊车系统

随着自动驾驶技术的发展,自动泊车逐渐往自主泊车方向演进。自主泊车又称为代客泊车或一键泊车:指驾驶员可以在指定地点处召唤停车位上的车辆,或让当前驾驶的车辆停入指定或随机的停车位。整个过程正常状态下无需人员操作和监管,对应于SAE L3级别。

自主泊车系统包含两个功能,即泊车与唤车:

泊车功能:是指用户通过车载中控大屏或手机APP选定在园区、住宅区等半封闭区域内的停车位或者选定停车场(有高精地图覆盖),然后车辆通过获取园区、住宅区等半封闭道路上的车道线、道路交通标志、周围其他车辆等交通环境、参与者信息;控制车辆的油门、转向、制动来实现安全自动驾驶,并通过自动寻找可用停车位或识别用户选定停车位;实现自动泊入、自动停车、挂P档、熄火、锁车门,同时防止潜在的碰撞危险的功能。

唤车功能:是指用户通过手机APP选定园区、住宅区等半封闭区域内的某一唤车点,然后车辆从停车位自动泊出、低速自动驾驶到达唤车点,从而实现唤车,同时防止潜在的碰撞危险的功能。  

AVP自主泊车方案中的核心功能“记忆泊车”,就是支持“无人泊车”的。“记忆泊车”顾名思义,可以让车辆“记住”车位,让车根据“记忆”自己找车位。车就可按着记忆中的路线自己找到车位泊进去了。AVP的记忆泊车和召唤功能是支持地库停车场和露天停车场的,部分目前具备记忆泊车功能的还只能用于地库,露天停车场是用不了的。

AVP自主泊车可以在100米内记住10条行进路线,在用户使用记忆泊车时,系统车辆将优先选择最佳泊车路线。这些路线是可以在用户之间共享的。也就是说,随着使用“记忆泊车”的人越来越多,自主泊车数据库也会越来越完善,其记忆泊车能适应的场景也会越来越多。

四 组成

自动泊车系统组成及功能如下表所示:

59106bd0-b254-11ed-bfe3-dac502259ad0.png

要实现自动泊车这样一个复杂的功能,需要车辆的各个子系统协同工作。下图所示的系统示意图展示了CAN数据总线中的联网关系。

593b57e6-b254-11ed-bfe3-dac502259ad0.png

596e5e7a-b254-11ed-bfe3-dac502259ad0.png

5ae3d9ec-b254-11ed-bfe3-dac502259ad0.png

5b223e44-b254-11ed-bfe3-dac502259ad0.png

自动泊车APS系统架构一般包括一个环境数据采集系统、一个中央处理器和一个车辆策略控制系统。典型的系统架构如下:

5b511296-b254-11ed-bfe3-dac502259ad0.png

泊车系统典型架构

5b68b478-b254-11ed-bfe3-dac502259ad0.png

5b87e320-b254-11ed-bfe3-dac502259ad0.png

自动泊车辅助系统主要由信息检测单元、电子控制单元和执行单元等组成,如下图

5bb71334-b254-11ed-bfe3-dac502259ad0.png

自动泊车的系统硬件架构可以分为四部分:传感器、执行器、主控制器、其它关联系统

自主泊车系统AVP

自主泊车系统方案如下图所示,主要采用智能化车端+智能化场端的方式。车端智能化主要依赖于融合式全自动泊车的传感器配置,外加前视摄像头、V2X设备等实现特定区域内的点到点自动驾驶、自动车位扫描、自动泊入泊出等功能。车辆自身具备车辆、行人等动态障碍物检测和识别功能,可实现自动紧急制动、避障等决策规划。场端智能化主要依托摄像头检测技术,实现停车场车位占用情况检测,并上传至停车场服务器,并实现为自主泊车车辆提前分配车位信息。

5be880ea-b254-11ed-bfe3-dac502259ad0.png

5c23dc9e-b254-11ed-bfe3-dac502259ad0.png

1.传感器     环境数据采集系统包括图像采集系统和车载距离探测系统(超声波雷达或者毫米波雷达系统),可采集图像数据及周围物体距车身的距离数据,并通过数据线传输给中央处理器;通过传感器系统感知环境信息,包括视频传感器(摄像头),毫米波雷达, 超声波雷达等。当这些传感器(它们共同组成了车辆的环境数据采集系统)采集到外部的数据信息之后,会将这些信息传输到车辆搭载的中央处理器中,并且在这里得到 车辆的位置、车 位的位置以及周围的环境参 数。

5df59058-b254-11ed-bfe3-dac502259ad0.png

主要任务是探测环境信息,如寻找可用车位,在泊车过程中实时探测车辆的位置信息和车身状态信息。在车位探测阶段,采集车位的长度和宽度;在泊车阶段,监测汽车相对于目标停车位的位置坐标,进而用于计算车身的角度和转角等信息,确保泊车过 程的安全可靠。   不同的自动泊车系统采用不同的方法来检测汽车周围的物体。有些在汽车前后保险杠四周装上了感应器,它们既可以充当发送器,也可以充当接收器,这些感应器会发送信号,当信号碰到车身周边的障碍物时会反射回来,然后车上的计算机会利用其接收信号所需的时间来确定障碍物的位置;其它一些系统则使用安装在保险杠上的摄像头或雷达来检测障碍物。但最终结果都是一样的:汽车会检测到已停好的车辆、停车位 的大小以及与路边的距离,然后将车子驶入停车位。

5e377504-b254-11ed-bfe3-dac502259ad0.png

5e6c24d4-b254-11ed-bfe3-dac502259ad0.png

其中传感器包括4颗远距离传感器(测距5米)和8颗近距离传感器(测距1.5米)), 分别实现车位扫描和距离侦测的功能。

传感器为超声波传感器及摄像头,方案如下图所示,包括12个超声波传感器,4个环视摄像头和1个前视摄像头。

5e979024-b254-11ed-bfe3-dac502259ad0.png

车辆上标配共有8个摄像头,后面有一个倒车摄像头,还有一个毫米波雷达以及一个探测范围8米的超声波传感器。车身上搭载的8个摄像头,视角都会有相当区域的重

合,这就保证了传感器不会有视野盲区,这对实现自动泊车是最重要的一件事了。

5f43c236-b254-11ed-bfe3-dac502259ad0.png

▲ 各种传感器的位置和视角示意

其 它 传感器还包括轮速传感器、环境温度传感器、转向灯开关、自动泊车辅助功能按

钮和拖车钩传感器。

5f7314e6-b254-11ed-bfe3-dac502259ad0.png

(1)超声波传感器为自动泊车系统必要组成,可以无摄像头,因为超声波雷达除了检测车位,另一个更重要的作用是障碍物检测,进行避障。从成本考虑通常选用性价比比较高的超声波传感器,是APS主流的技术方案,探测距离为5~8 m。它们发射超声波信号,然后接收从障碍物反射回来的信号,并根据从发射到接收信号的时间长短来评估与障碍物的距离。车辆保险杠正前方前雷达监测距离为100cm,后方监测的距离为120cm,其中左前和右前外侧距离传感器用于探测停车位的长度和宽度。

5f9ec6ae-b254-11ed-bfe3-dac502259ad0.png

泊车雷达采用超声波测距原理,判断障碍物的位置和距离,当距离达到警报限值时,通过声音及模拟显示进行提示;声音警示通过IPK整合实现、泊车模拟显示通过AIC整合实现。

5fbd1f46-b254-11ed-bfe3-dac502259ad0.png

‍         远距超声波传感器外形如下图: ‍

60bea1f8-b254-11ed-bfe3-dac502259ad0.png

主要参数如下表所示:

60d92046-b254-11ed-bfe3-dac502259ad0.png

60ecbc82-b254-11ed-bfe3-dac502259ad0.png

612af22c-b254-11ed-bfe3-dac502259ad0.png

61742ae6-b254-11ed-bfe3-dac502259ad0.png

61db69e0-b254-11ed-bfe3-dac502259ad0.png

6223cf5a-b254-11ed-bfe3-dac502259ad0.png

(2)车载毫米波雷达

6248846c-b254-11ed-bfe3-dac502259ad0.png

63430428-b254-11ed-bfe3-dac502259ad0.png

(3)摄像头为非必要组成部分,缺少摄像头仍可实现自动泊车,但是泊车应用场景会减少。

63809b9e-b254-11ed-bfe3-dac502259ad0.png

AVM(Around View Monitor):全景环视系统/全景影像。在自动驾驶领域,AVM属于自动泊车系统的一部分,是一种实用性极高、可大幅提升用户体验和驾驶安全性的功能。360度环绕视频系统的使用, 对自动泊车系统的车位线的识别,驾驶员实时监测系统有了质的提高。

将装在车身前后左右四个方向的摄像头图像信息进行处理,形成一幅车辆周边360度的车身俯视图,并在屏幕上显示,帮助驾驶员轻松停泊车辆。系统自带畸变校正功能、无缝拼接、内部亮度平衡与颜色平衡算法,使输出的画面更加接近车身周围环境。根据车身信号自动切换视角,使得不同场景下给用户呈现出恰当的视角,有用的图像,使驾驶员能够及时观察到车身周围的障碍物,防止车辆发生碰撞。

63aadd78-b254-11ed-bfe3-dac502259ad0.png

比较先进的全自动泊车系统,会结合选用毫米波雷达系统,距离检测和抗干扰能力更强。比如为了支持功能强大的自动泊车技术,有的提供了多达12枚泊车雷达,同时360°摄像头也能让驾驶者在车内知晓车辆周围的情况,必要时也可以亲自介入停车动作。现在结合无人驾驶的传感器技术, 包括毫米波雷达和激光雷达的使用, 探测距离和探测精度可以得到很大提升。

自动驾驶——自动泊车之AVM环视系统算法框架

AVM已是一种较为成熟的技术,中高端车型均有部署,但详细讲述AVM系统算法的技术博文并不多。搭建了一套AVM算法框架,有一些效果还不错的demo,主要是想将AVM算法框架中每个算子讲述清楚,文的风格为理论与实践结合,含有部分代码,适合有一些计算机视觉基础的读者。

AVM系统概述

AVM汽车环视影像系统如图所示,由安装在前保险杠、后备箱、后视镜上的四个外置鱼眼相机构成。该系统包含的算子按照先后顺序:去畸变、四路鱼眼相机联合标定、投影变换、鸟瞰图微调、拼接融合、3D模型纹理映射等。四路鱼眼捕捉到的图像信息通过上述算子,生成一个2D、3D的全景图。AVM算法又分为离线阶段和在线阶段两部分,在线阶段是对离线阶段的简化,更加适合于工程实现。

63dc6686-b254-11ed-bfe3-dac502259ad0.jpg

avm系统示意图

离线阶段算法pipeline

先来粗略浏览下AVM算法Pipeline包含那些算子:

2D AVM

63f4332e-b254-11ed-bfe3-dac502259ad0.jpg

2D AVM Pipeline

3D AVM

64035c32-b254-11ed-bfe3-dac502259ad0.jpg

3D AVM Pipeline

基于畸变表的鱼眼相机去畸变

1.1鱼眼相机畸变模型 普通相机和广角相机的投影方式一般为透视投影,即通过三角形相似原理,将相机坐标系下三维世界中的物体投影到平面上,这是基于理想的透视投影模型(无畸变)。但实际情况是得到的最终图像与理想的透视投影模型有一些区别,即径向畸变(桶形、枕型)、切向畸变。因此相机标定中都会对畸变做矫正。 鱼眼相机的投影方式有很多种假设,例如等距投影、等立体角投影、正交投影、体视投影、线性投影。但是真实的鱼眼相机镜头并不完全遵循上述的这些模型假设。因此Kannala-Brandt提出了一种一般形式的估计,适用于不同类型的鱼眼相机: 6435d64e-b254-11ed-bfe3-dac502259ad0.png ,这个也是纳入opencv中的鱼眼相机畸变模型。对照下图:644c27a0-b254-11ed-bfe3-dac502259ad0.png 为光线入射角, 645f0f8c-b254-11ed-bfe3-dac502259ad0.png 为出射光线在相机归一化平面上或者在相机成像平面上与O之间的距离(在opencv中6470027e-b254-11ed-bfe3-dac502259ad0.png表示光线在相机归一化平面上的成像位置)。

6485dbee-b254-11ed-bfe3-dac502259ad0.jpg

鱼眼相机模型 相机去畸变通常使用棋盘格标定方法,首先通过矩阵推导得到一个比较好的初始解,然后通过非线性优化得到最优解,包括相机的内参、外参、畸变系数,然后对鱼眼图像做去畸变处理。内参即:649589cc-b254-11ed-bfe3-dac502259ad0.png相机内参矩阵 然而,此标定法并不适用于这场景。 1.2基于厂家畸变表的鱼眼图像去畸变 由于棋盘格标定法是在图像的全局进行拟合得到一个全局的最优解,因此需要保证多次拍摄到的标定板的棋盘格可以覆盖整个图像区域。而假设的场景为要求汽车整车上流水线进行标定,即相机已经安装在车上。很显然由于车身遮挡的原因,很难保证上述条件。另外棋盘格标定法并不适用于批量生产。因此选择了基于厂家提供的畸变表对鱼眼相机图像进行去畸变。相机厂家都有专业的光学工程师,大厂提供的畸变表通常情况下比较准确。 当然也有一些在畸变表的基础上进行优化的方法,例如[采用最小重投影的方法计算出最优的相机主点位置,然后使用畸变表进行去畸变处理。在其它场景中,还有些先标定出相机的内参,然后将内参与畸变表联合使用。下面来讲述基于畸变表的去畸变方法:

64a6ca16-b254-11ed-bfe3-dac502259ad0.jpg

厂家提供的畸变表 上面的表格展示了相机畸变表的一部分,厂家给出了入射角64bb715a-b254-11ed-bfe3-dac502259ad0.png从 64d02a5a-b254-11ed-bfe3-dac502259ad0.png 到 64eb06cc-b254-11ed-bfe3-dac502259ad0.png 的光线在焦距为f的相机真实成像平面上成像点距离成像平面中心的真实距离64fc7650-b254-11ed-bfe3-dac502259ad0.png,单位为mm。如果想用opencv提供的API做去畸变处理,需要使用厂家提供的焦距f,将650ee4fc-b254-11ed-bfe3-dac502259ad0.png换算到相机的归一化平面上去(即除以f)。然后通过多项式拟合的方法,计算出 652a73c0-b254-11ed-bfe3-dac502259ad0.png 这几个畸变参数,例如可以使用python的curve_fit库进行多项式拟合。调用Opencv API,m_distortion_coeffs即为多项式拟合的畸变参数。

 

fisheye::initUndistortRectifyMap(m_intrinsic_matrix, m_distortion_coeffs, R, NewCoeff, image_size*2, CV_32FC1, mapx, mapy);cv::remap(disImg, undisImg, mapx, mapy, INTER_LINEAR);

通俗讲:鱼眼相机去畸变的过程实际上就是遍历想要的无畸变图上的坐标点,通过mapx,mapy两个查找表,找到该坐标点在畸变图上的像素位置。通常这个像素的位置为浮点型,需要做双线性插值。否则在纹理边缘上会有锯齿状的问题,这个结论是实现了opencv remap函数验证过的,有兴趣的可以实现一下mapping的过程(查找+插值)。来看图:

653a0eac-b254-11ed-bfe3-dac502259ad0.jpg

鱼眼图 去畸变 右图为基于畸变表去畸变的结果,可以看出去畸变的效果大体上满足要求,例如柱子边、标定布边、车道线为直线。但是仍有部分区域的去畸变效果不好,直线不够直。这个问题会在鸟瞰图中看起来更加突出,也是导致覆盖区域拼接不齐的重要原因。 原因可能有几种:(1)相机光轴与成像平面的交点(主点)与图像平面的中心不重合,即内参矩阵中的 655580ba-b254-11ed-bfe3-dac502259ad0.png。(2)厂家给的焦距f不准(3)厂家给的畸变表有误差。 理论上相机的标定是一个计算全局最优解的过程,可以理解为:内参可以不那么准,拿到的畸变表也可以不那么准,但是只要优化目标重投影误差很小,或者畸变去的比较干净,那么这个全局最优解就是可以接受的。因此使用了最小化重投影误差的方法得到内参中的 655580ba-b254-11ed-bfe3-dac502259ad0.png ,然后再使用畸变表;在有的场景中,还有人用棋盘格标定出相机的内参,然后配合畸变表进行使用。这些内容后面都会陆续做优化。

657e5f80-b254-11ed-bfe3-dac502259ad0.png

四路鱼眼联合标定 鱼眼相机联合标定的目的是要得到四个鱼眼相机之间的位姿关系,然后将拍摄到的图像搞到同一个坐标系下得到一幅全景环视图。

659379d8-b254-11ed-bfe3-dac502259ad0.jpg

相机联合标定示意图 如图所示,全景鸟瞰图的视野范围是人为给定的参数,可根据用户喜好进行调节。标定布上的棋盘格大小、黑格子尺寸、汽车与标定布之间的间距这些都是已知的先验信息。上述先验信息在现实世界中与在全景图上的尺度关系为1:1,即1个像素代表1cm(当然这个尺度也可以调节,你想让一个像素代表n厘米也没问题)。这样做联合标定的意义在于:可以知道前、后、左、右四个鱼眼相机去畸变后图像中棋盘格上角点,与前、后、左、右四个鸟瞰图中棋盘格角点之间对应的坐标关系。这样就可以根据投影变换,将整张图像投影到对应的鸟瞰图上去。又由于在联合标定中,四个鸟瞰图是刚好拼接到一块的,因此利用上述方法将四张图全部投影到鸟瞰图上,在不考虑误差的理想情况下,应该是刚好拼接在一起的。以上,就是联合标定的思路。

65a68500-b254-11ed-bfe3-dac502259ad0.png

 

 

投影变换

3.1投影变换原理 投影变换的通俗理解就是:假设同一个相机分别在A、B两个不同位置,以不同的位姿拍摄同一个平面(重点是拍摄平面,例如桌面、墙面、地平面),生成了两张图象,这两张图象之间的关系就叫做投影变换。张正友老师的相机标定法使用的就是从标定板平面到图像平面之间的投影模型。

65c338e4-b254-11ed-bfe3-dac502259ad0.jpg

投影变换模型 图中相机从两个不同的角度拍摄同一个X平面,两个相机拍摄到的图像之间的投影变换矩阵H(单应矩阵)为:

65d4aac0-b254-11ed-bfe3-dac502259ad0.jpg

其中K为相机内参矩阵,R、T为两个相机之间的外参。这个公式怎么推导的网上有很多,只需要知道,这个单应矩阵H内部实际是包含了两个相机之间的位姿关系即可。这也就解释了:为什么有的AVM pipeline的方法是需要标定相机的外参,然后通过厂家提供的相机安装参数将四路鱼眼全部统一到车身坐标系下,而不需要这个过程,只需要用标定布来做联合标定。其实两种方法内部都是相通的,都绕不开计算相机外参这件事情。 3.2 投影变换生成鸟瞰图 生成鸟瞰图的过程可以理解为:将鱼眼相机拍摄到的图像,投影到某个在汽车上方平行地面拍摄的相机的平面上去。这个单应矩阵H具体是多少,由去畸变图中检测到的棋盘格角点坐标和联合标定全景图中棋盘格角点坐标来决定。如图所示,以后置相机为例,联合标定已知图(2)中框出棋盘格的坐标,图(1)中的棋盘格坐标可通过opencv的函数进行检测,从而建立单应矩阵H的求解模型。

65e99174-b254-11ed-bfe3-dac502259ad0.jpg

(1)去畸变图中棋盘格位置 (2)联合标定全景图中棋盘格位置 (3)瞰图 3.3一些经验之谈 3.3.1尽量选择更多的角点计算单应矩阵 单应矩阵的求解是一个拟合的过程,如果选用过少的点,容易陷入局部最优解。造成的结果是就是鸟瞰图上只有你选择的那些点可以正确的投影,其他像素的投影可能不正确。这一点有点类似于深度学习中训练样本太少,导致过拟合的问题。

66112cde-b254-11ed-bfe3-dac502259ad0.jpg

单应矩阵三种形式(1)(2)(3) 上面公式可以看出,一对匹配点可以提供两组方程,理论上4对匹配点就可以求解出单应矩阵。Opencv求解单应矩阵提供了两个函数,findHomography和getPerspectiveTransform。 getPerspectiveTransform的输入是4对点,对(2)中矩阵求逆。理想情况下这种方法是可行的,但由于存在噪声,我们在图像上检测到的角点的误差、标定布棋盘格的误差,这种方法极其不准确。 findHomography求单应矩阵的方法输入点对很多,解一个超定方程(3)。经过一顿推导,单应矩阵为(3)中矩阵的奇异值分解中最小奇异值对应的特征向量。这种方法用于做拟合的样本更多,最终的效果更好。而且Opencv还有很多优化算法,例如基于ransac思想的单应矩阵求解方法。当然为了提高效果,可以对标定布进行DIY,某宝上很多这种DIY标定布,想搞多少格子就搞多少。 如1.2所述,由于畸变去除的不彻底,导致有些直线仍然是弯曲的。这一现象在投影到鸟瞰图上之后尤为明显,通过大量的棋盘格点进行投影变换,可以从一定程度上强制矫正这个问题。至少可以让车身附近的全景图效果更佳,而avm系统最在意的恰好就是车身周围这部分,距离车身远的部分也不会呈现出来。如图所示为某厂DIY的标定布示意图。

66365716-b254-11ed-bfe3-dac502259ad0.jpg

DIY标定布 3.3.2尽量让棋盘格处于相机拍摄图像的中心 鱼眼相机在中心部分畸变小,边缘位置畸变大。去畸变的结果通常也是中间的效果好,边缘残留的畸变多。因此为了使单应矩阵计算的更佳准确,要保证标定布摆放的时候棋盘格位于鱼眼相机中央。这也是为什么某宝上标定布使用的示意图通常是图(2)这种,而不是图(1)。很显然,图(2)中棋盘格位于左侧后视镜附近(左鱼眼相机就在左后视镜上),即相机图像的中间位置,而图1中棋盘格则在相机图像边缘上。

666927a4-b254-11ed-bfe3-dac502259ad0.jpg

左侧鱼眼相机鸟瞰图(1)(2)  

拼接融合

经过3中的投影变换,得到4张包含重叠区域的鸟瞰图如图所示,需要将这些鸟瞰图进行拼接融合。

669740da-b254-11ed-bfe3-dac502259ad0.jpg

鸟瞰图 以左、前鱼眼相机俯视图为例,观察下它们的重叠区域重叠区域:

66a62fb4-b254-11ed-bfe3-dac502259ad0.jpg

白色为重叠区域、AB为前鸟瞰图边界、CD为右鸟瞰图边界 通常的做法是分别以AB、CD为边界,计算白色区域像素点与AB、CD之间的距离,然后计算一个权重,距离CD越近的位置,前俯视图权重越大;距离AB越近的位置,左俯视图权重越大。但会出现边界效应如图所示:

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>