一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于测量环境地形的方法与流程

2022-09-08 05:40:56 来源:中国专利 TAG:


1.本技术涉及一种用于测量由相机成像的环境的地形的方法。更具体地,本发明涉及一种测量环境地形的方法,该环境地形是使用根据环境的运动立体图像评估的密集深度测量来成像的。


背景技术:

2.相机是一种产生场景或环境图像的装置。当两个相机从不同位置产生同一场景的图像时,可以比较不同的图像来确定场景的各部分的深度,该深度是到由两个相机位置限定的平面的相对距离的度量。在某些假设和/或某些信息下,相对深度可被校准为绝对距离测量。这就是视差成像的深度原理。深度测量可用于近似成像环境的地形。
3.通常,来自视差成像的深度需要n目镜系统,其中n》1,通常双目系统具有两个相机,产生场景的同步图像对。该对图像中的一个图像中的特征可以与另一个图像中的相应特征相匹配。特征可以包括不同的成像元素,例如相似像素的角或区域、斑点,但特征也可以包括图像的任何给定像素。然后,图像之间匹配特征的定位差异可以用于计算视差。根据特征的差异和双目系统的相机的已知间隔,可以评估特征的深度。通常,双目系统获取的图像被映射到表面上,以帮助后续的图像处理或使获取的图像更适合观看。
4.gehrig在2005年第1期omnivis中的“large field of view stereo for automotive applications”涉及放置在汽车后视镜左侧和右侧的相机,并描述了分析具有大视场的立体视觉和执行物体检测的选项。
5.yamaguchi在2011年出版的书“three dimensional measurement using fisheye stereo vision,advances in theory and applications of stereo vision”的第八章中的“three dimensional measurement using fisheye stereo vision,advances in theory and applications of stereo vision”公开了将鱼眼图像映射到平面上并匹配特征,并且得出鱼眼立体视觉允许在相对大的空间中测量3d物体。
6.zhu在ieee icar,2001中的“omnidirectional stereo vision”涉及全向立体成像的配置,并对全向表示、极线几何和深度误差特性进行了数值分析。
7.bogdan等人在icarcv 2016中的“direct fisheye stereo correspondence using enhanced unified camera model and semi-global matching algorithm”提出了一种将直线投影到圆锥曲线上的鱼眼相机模型,并描述了一种用于鱼眼立体系统的匹配算法,以计算密集的直接立体对应,而无需矫正鱼眼图像。
8.li在ieee期刊关于intelligent transportation systems 9,589,2008中的“binocular spherical stereo”涉及双目鱼眼立体图像,并描述了转换成球形图像以及使用纬度-经度表示来加速特征点匹配。
9.abraham等人在期刊photogrammetry and remote sensing 59,278,2005中的“fish-eye-stereo calibration and epipolar rectification”涉及鱼眼立体图像的校准和极线矫正,并讨论了生成极线图像。
10.schnedier等人在ieee robotics and automation,1,227,2016中的“on the accuracy of dense fisheye stereo”分析了鱼眼立体相机的极线矫正模型,并讨论了相关的精度。
11.drulea等人于2014年在iccp ieee提出的“omnidirectional stereo vision using fisheye lenses”涉及一种全向立体系统以及将鱼眼镜头图像分割成矫正图像。立体匹配算法被应用于每对矫正的图像以形成点云。
12.本发明的目的是克服此相关工作的至少一些限制。


技术实现要素:

13.本发明由独立权利要求限定。
14.本发明的实施例提供了一种从由具有宽视场镜头的相机获取的图像中恢复密集、准确的深度信息的方法。这使得来自车辆上的单目相机的图像能够形成点云的一部分,该点云对应于车辆在环境中移动时车辆周围的环境的局部地形。
15.从属权利要求提供了进一步的可选特征。
附图说明
16.现在将参考附图,通过示例的方式描述本发明的实施例,其中:
17.图1示意性地示出了安装有相机的车辆,每个相机能够根据本发明进行操作;
18.图2示出了碗表面,来自多个相机的拼接图像可以映射到该碗表面上;
19.图3显示了未矫正的立体相机设置;
20.图4示出了矫正后的立体相机设置中的视差;
21.图5a和5b示出了用于移动相机的球形极线矫正表面,图5a示出了当相机沿着运动轴观察时的情况,图5b示出了当相机垂直于运动轴观察时的情况;
22.图6a和6b示出了用于移动相机的直立圆柱形极线矫正表面,图6a示出了当相机沿着运动轴观察时的情况,图6b示出了当相机垂直于运动轴观察时的情况;
23.图7示出了当相机沿着运动轴观察并且圆柱体与运动轴同心时移动相机的圆柱形矫正表面;
24.图8a和8b分别示出了基线对准的球形和圆柱形矫正表面;
25.图9示出了用于极线矫正的球面坐标系;
26.图10示出了圆锥形矫正表面;
27.图11示出了包括多个平面的矫正表面;
28.图12a和12b分别示出了根据本发明实施例的相应多部分矫正表面;
29.图13a和13b示出了使用平面矫正表面计算深度的几何关系;以及
30.图14示出了使用球形矫正表面计算深度的几何关系。
具体实施方式
31.对于许多涉及驾驶车辆的任务,获取关于本地环境的信息对于安全地完成任务是重要的。例如,当停车时,向驾驶员显示车辆周围环境的实时图像是有利的。
32.车辆的驾驶员不需要是人类,因为车辆可以是自动驾驶的,即自主车辆。在这种情
况下,获取的信息的准确性对于识别物体和避免获取的信息误导车辆驾驶系统特别重要。驾驶员也可以是人类和一个或多个辅助驾驶的自动化系统的组合。
33.本发明中使用的相机的灵敏度不必限于任何特定的波长范围,但最常见的是,它将与对可见光敏感的相机一起使用。相机通常是相机模块的形式,包括用于透镜和传感器的外壳,透镜用于将光聚焦到传感器上。相机模块还可以具有为传感器供电并实现与其通信的电子设备,以及可能处理图像的处理电子设备。该处理可以是低级图像信号处理,例如增益控制、曝光控制、白平衡、去噪等,和/或它可以包括例如用于计算机视觉的更强大的处理。
34.当对车辆周围的环境成像时,一个相机通常没有足够的视场来获取所有需要的数据。解决这个问题的一种方法是使用多个相机。在图1中,示出了车辆100,其具有位于车辆外围的四个相机101、102、103、104。每个相机视场的一个边缘用虚线101a、102a、103a、104a标记。相机的这种配置导致视场在区域101b、102b、103b、104b中重叠。图示的配置仅仅是示例性的。所公开的教导对于其他相机配置同样有效。
35.图示的视场对着大约180度。宽视场通常由具有宽视场透镜的相机实现,例如鱼眼镜头。鱼眼镜头是优选的,因为它们通常是圆柱对称的。在本发明的其他应用中,视场可以小于或大于180度。虽然鱼眼镜头是优选的,但可以使用提供宽视场的任何其他镜头。在本文中,宽视场是具有超过100度视场的镜头,优选超过150度,更优选超过170度。通常,具有如此宽视场的相机导致所采集图像中的成像伪影和失真。
36.镜头将光线聚焦到通常为矩形的传感器上。因此,所采集的数据受到镜头的伪影和失真以及传感器的有限敏感表面效应的综合影响。因此,获取的图像是成像场景的失真表示。所获取的失真图像可以通过包括将所获取的数据映射到另一表面上的过程来至少部分地校正。在某些表面上进行映射会使后续处理技术更加精确或简单。稍后将更详细地描述多个特别有利的表面。
37.在如图1所示的具有多个相机的车辆的情况下,最好显示本地环境的单个图像,而不是来自多个相机的多个图像。因此,来自相机的图像被组合。有多种已知的方法来执行这种组合。例如,可以通过识别重叠区域中的特征来将图像拼接在一起。图像中被识别特征的位置然后可以用于将一个图像映射到另一个图像。本领域技术人员已知许多其他方法来拼接具有重叠区域的图像,例如2019年11月26日提交的题为“an image processing module”的德国专利申请第102019131971.4号(参考号:2018pf02667)和2019年10月7日提交的题为“an electronic control unit”的德国专利申请第de102019126814.1号(参考号:2019pf00721)给出了电子控制单元的示例,这些电子控制单元提供车辆的全景以帮助驾驶员,尤其是在停车时。
38.如图1所示,如果相机的配置能够从车辆周围的所有方向提供图像,则拼接图像提供了足够的信息视图,以产生其他方向的视图。
39.因为拼接图像包括拼接在一起的平面图像,所以拼接图像本身看起来是平面的。通过将拼接图像映射到不平坦的表面上,可以实现拼接图像的更好显示。例如,可以使用图2所示的碗形表面300。对于这个表面,附近的物体被映射到平坦的地板上,而远处的物体被映射到碗的侧壁上。由于车辆经常在平坦的土地上行驶,土地上有物体,例如远处的树木和建筑物,这样的映射通常比平坦映射产生更好、更精确的拼接图像显示。
40.最佳表面将是对应于由相机成像的场景的地形的表面。本发明提供了一种通过计算部分图像的深度来产生周围地形的近似的方法。这是实时实现的,而不必花费双目立体相机和/或使用非标准镜头的相机的费用。
41.运动立体模块
42.本发明涉及一种使用运动立体模块处理来自单目相机的运动立体图像的方法。运动立体模块从一个场景的一对图像中恢复密集和精确的深度测量,从而允许重建成像场景的地形。通过使用下述方法,运动立体模块可以足够快地操作,从而可以实时完成。换句话说,处理足够快,使得基于实况相机馈送的图像显示不会受到不利影响。
43.来自视差成像的深度允许从场景的一对图像中提取深度测量。通常,来自视差成像的深度使用从立体相机获取的一对图像,该立体相机包括彼此靠近放置或者集成到同一设备中的两个相机,从而可以直接获得同步的一对图像。然而,本发明基于移动的单目相机。来自单目相机的图像对是通过用单目相机捕获一个图像,然后调整单目相机姿态,即移动单目相机,并获取另一个图像来获取的。
44.所得到的深度测量结果可被形成为3d点云的一部分,或者类似的3d重建,其近似于由相机成像的环境的地形。3d重建能够更好地评估和测量静态特征。如果相机安装在汽车上,常见静态特征的示例包括路缘石、坡道、表面不规则或更大的物体,比如电线杆、树木、障碍物、墙壁和停放的车辆,从而提供有价值的信息。因此,本发明使得更容易检测这种物体。
45.优选地,具有密集数量深度测量,因为这允许更高分辨率的3d重建。已知的密集重建技术需要立体相机。相对于单目相机,立体相机需要复杂的硬件和帧同步,但由于两个相机之间的固定间隔,立体相机具有优势,因为它们提供了足够的双目视差用于深度估计和3d重建,而与相机运动无关。
46.来自运动的立体和结构
47.利用移动单目相机技术形成3d重建通常是使用经典的运动结构技术来尝试的。这种技术仅产生稀疏集深度测量值。这种稀疏集在3d重建中产生有限的点集,使其不太能代表局部地形。
48.对于本方法,图像对是利用所捕获的图像之间的相机运动的知识来生成的。在视差处理的深度开始之前,通常也需要图像对的矫正。许多表面都可以进行矫正。在球形或圆柱形表面上的极线矫正具有特别的优点,因为在以有利的方式在矫正图像内分布源图像分辨率的同时,可用的视场得到了改善。这对于使用产生高度扭曲形状的相机(比如具有鱼眼镜头的相机)尤其重要。
49.通常,利用双目视差和极线几何原理的3d重建方法将从不同相机姿态捕获的同一场景的至少两个图像作为输入。相机的精确移动(位置和定向的变化)可以用计算机视觉技术或惯性传感器动态确定。当这种相机安装在车辆上时,运动可以至少部分地根据车载里程计信息来评估。这种信息通常可在现代车辆的车辆can或flexray总线上获得。
50.因此,为了获得深度测量,首先用相机获取场景的图像;移动相机,获取场景的另一幅图像。通过映射到由特定极线几何定义的公共平面或合适的表面上来矫正所得图像。处理矫正后的图像以从视差评估深度。例如,已知的匹配算法计算矫正图像之间所有像素的视差。视差信息随后被转换成深度或直接转换成3d点云。在一些实施例中,不是匹配每个
像素,而是匹配像素块。像素块可以重叠,使得一个像素被包括在多个像素块中。这些块不必是矩形的,可以是允许匹配的任何尺寸。
51.当单目相机联接到车辆上时,可以从车载里程计传感器以两个自由度(两个参数)在低加速度下以合理的精度计算相机运动。这种里程计传感器提供车辆的纵向速度和偏航角速度或转向角。如果车辆运动是真正平面的,这些信息就足够了。然而,实际上,由于悬架对路面不平整、加速、减速和转弯的动态响应,车辆运动更加复杂。这种复杂性导致俯仰、滚转和高度的瞬间变化。此外,机械测量及其在系统总线上的传输会受到延迟的影响,并且默认情况下不会与相机帧同步。2019年5月29日提交的题为“image acquisition system”的德国专利申请第102019114404.3号(参考号:2018pf02113(sie0883))公开了处理车辆相对于路面的姿态的这些变化的技术。
52.然而,车辆和相机的动态运动可以用最少三个位置参数(x,y,z)和三个旋转参数(偏航、俯仰和滚动)的六个自由度(6-dof)来完全表征。当两幅图像之间的相对相机运动可以6-dof估计时,运动立体模块产生最可靠和准确的结果。6-dof还提供缩放信息,即用于正确缩放3d重建(例如点云)的平移向量的长度。矫正后的图像和视差图对于估计的缩放是不变的。使用已知的技术解决了已知的相关相对姿态估计问题。
53.极线矫正
54.通过观察图3,并将相机c1和c2视为针孔相机,并考虑相机c1和c2的光学中心前面的虚像平面,可以定义以下有用的术语。极点是在光学中心之间延伸的基线和图像平面的交点。极点可被认为是一个相机中另一个相机的光学中心的图像。极线平面是由3d点z1和光学中心定义的平面。极线是极线平面与图像平面相交的直线。它是一束光线通过光学中心在一个相机中的图像,在另一个相机中是图像点。所有的极线都在极点处相交。
55.对于运动立体,可以使用已知的立体匹配模块(例如renesas stv硬件加速器)来执行深度分析,该模块将经矫正的图像作为输入,这意味着两幅图像,其中极线已被映射到水平扫描线上,并且在两幅图像中具有相同的竖直偏移。原则上,任何场景的几何形状都可以通过了解这些图像之间的特征点对应关系,从不同相机姿态捕获的两个或更多个图像中重建。
56.给定这种对应,例如以密集光流场的形式,可以通过称为三角测量的数学过程来计算3d点云或3d重建,其中光线从相机视点通过它们各自的图像点被反向投影,并且通过最小化误差度量在3d空间中相交。然而,与光流不同,对于极线(即立体)矫正,对应问题被简化为沿着共轭极线的1d搜索,并且三角测量被简化为求解相似三角形之间的比率的简单公式。1d搜索由立体匹配算法有效地执行,该算法通常应用技术来聚集来自多个搜索的信息,并以视差图的形式产生鲁棒的1d对应。这样,三角测量的大部分计算负担被转移到极线矫正中。这种效果的一个示例可以在图4中看到,其中左侧图像的矫正产生了水平极线,与图3形成对比,图3中的极线是图像平面的对角线。
57.在一幅图像提供参考姿态的情况下,对于每幅捕获图像的固有校准参数和相机的相对姿态的知识允许图像的校准。参考姿态可以相对于外部参考系给出,或者可被任意设置为零,即相机原点在(0,0,0)并且轴由标准基向量(单位旋转矩阵(identity rotation matrix))定义。固有参数可以总是被假定为已知的和恒定的。然而,这可能并不总是安全假设,例如由于包括相机的材料的热膨胀和收缩所引起的变化。一种替代方法是通过表征和
考虑这种变化来补偿任何变化,或者通过使用在线内在校准方法来周期性地更新存储在系统中的内在校准信息。
58.在运动立体中,相对姿态根据车辆的运动而变化,并且可以针对每个立体图像对进行动态估计。相对姿态完全由最少6个参数(3个位置参数和3个旋转参数)确定,即以6个自由度,或者可以由最少5个参数(3个旋转参数和2个位置参数)“按比例”确定,即以缺少第6个自由度(比例)的5个自由度。在后者中,两个位置参数表示平移向量的方向,例如在单位长度的投影坐标或球坐标中。缺少“比例”或所谓的“比例模糊”是单目计算机视觉中的典型障碍,它产生于这样的简单事实,即场景几何形状和相机平移向量可以一起缩放,而不影响特征点的位置和它们在捕获图像中的对应关系,因此在相反的意义上,比例通常不能仅从这样的对应中恢复。请注意,估计比例或绝对比例对于极线矫正不是必需的。换句话说,由于5个自由度(3个旋转参数和2个位置参数)提供了足够的信息,所以极线矫正图像对于估计的比例是不变的。然而,缩放允许获得正确的深度测量,使得能够形成更真实的3d重建(即正确的3d点云坐标)。
59.可以通过将图像直接映射到合适的平面或表面并以满足两个简单的几何约束的方式对它们进行重采样来执行极线矫正——在两个矫正的图像中,共轭极线或曲线沿着水平扫描线并以相同的竖直偏移进行映射。极线矫正的最简单形式使用平行于基线(相机平移向量)定向的两个共面表面(图像平面)和笛卡尔采样网格。对于使用鱼眼镜头的相机,由于透视投影的数学限制,这种方法严重限制了所获得的视场,并且由于广角透视效果(比如像素“拉伸”)导致矫正图像的质量损失。
60.即使使用多个平面来增加重建的视场,这些仍不能到达靠近扩展焦点的区域,因为这将需要接近无限大小的图像平面。这对于车辆上的前向和后向相机来说是一个特别的问题,当车辆在直路径上移动时,扩展焦点大致位于鱼眼图像的中心附近。
61.侧视或后视镜相机中的扩展焦点通常位于不太感兴趣的图像区域。然而,即使对于这些相机,平面表面也对重建的视场施加了限制。
62.广义极线矫正
63.为了减轻上述问题并增强水平方向(hfov)、竖直方向(vfov)或两个方向上的重建视场,诸如球体、圆柱体或多项式表面的非平面映射表面可以有效地用于极线矫正。
64.作为示例,考虑图5a,其中代表相机视点的两个点c1和c2定义了平移向量,即“基线”。基线与每个映射表面的交点是极点e1和e2,场景中的任意目标点p以及c1和c2这两个点定义了极线平面。有无限数量的极线平面,围绕基线相互旋转。这一族平面被称为极线束(epipolar pencil)。在这种情况下,这些平面中的任何一个与映射表面的相交定义了“极线”或曲线,对于球形映射表面来说是圆形,对于直立圆柱形映射表面来说是椭圆形。任意物点p被映射到点q1和q2,这两个点属于相同的极线平面和共轭极曲线,它们被映射到水平扫描线上,并且在两个矫正图像中处于相同的竖直偏移。
65.沿着极线或曲线的鱼眼图像像素到矫正图像中的水平扫描线的像素的映射可以通过沿着每个极线或曲线穿过它们各自的视点“采样”光线,然后使用内在校准和相对姿态信息将每个光线追踪回鱼眼图像来实现。这样,矫正图像中的每个像素都可以追溯到鱼眼图像中的图像点。最近的源像素的强度值可以直接获得,或者通过使用考虑相邻像素值的重建和/或抗混叠滤波器、比如双线性滤波器(即可以使用双线性插值)获得。
66.通过为矫正图像中的像素子集(例如在水平和垂直方向上每隔16个像素)构建稀疏查找表,可以非常高的计算效率执行该过程,该稀疏查找表以小数精度存储该像素的对应鱼眼图像坐标,例如具有12个整数位和4个分数位,即每坐标16位或每像素32位,以节省存储器带宽并提高运行时性能。然后可以使用软件或硬件加速的“渲染器”,通过内插丢失像素的坐标,使用这些查找表非常快速地“渲染”矫正图像。这减少了每个矫正图像需要计算的光线数量,例如当在两个方向上使用1:16子采样时,减少了256倍。
67.为了节省存储器带宽,还可以通过存储增量而不是绝对图像坐标来压缩该查找表(例如具有4个分数位的4位整数增量,即每个坐标8位或每个像素16位)。在这种情况下,初始绝对坐标存储为整个表或每行的种子,以便在渲染期间可以从存储的增量中增量恢复绝对坐标。除此之外,查找表可被细分成更小的区域,其中每个区域被分配一个偏移值,该偏移值将在渲染期间应用于该区域内的所有增量。
68.对于球形表面,可以沿着每条极曲线以角度间隔对光线进行采样,对于球形表面,极曲线是圆。可以围绕基线旋转的角度间隔定义极线平面,使得每个平面被映射到矫正图像中的离散水平扫描线上。将矫正图像的水平像素坐标x映射到极角θ并将竖直像素坐标y(扫描线数量)映射到方位角的数学函数可以概括为:θ=f(x)和或者在最简单的情况下可以是线性的:θ=s
x x和其中,s
x
和sy是常数比例因子。极角和方位角定义了用于采样鱼眼图像像素的光线方向。更复杂的函数可以用于以有利的方式在矫正图像上分布源图像分辨率。
69.请注意,映射表面的概念,比如球体(图5a和5b)或圆柱体(图6a和6b)仅用作建模辅助,因为该过程可以通过数学和程序来抽象。极线平面与映射表面的交点简单地定义了一条路径,沿着这条路径对光线进行采样,以实现矫正图像中的极线或曲线的期望对准。沿着该路径的光线也可以“弧长”的间隔而不是角度间隔进行采样。通过修改3d表面的形状(例如修改为扁圆或长椭球)或映射函数或两者,可以使两种表示等效。
70.如图6a和6b所示,对于直立的圆柱形表面,可以沿着每条极曲线以角度间隔对光线进行采样,在这种情况下,极曲线是椭圆,但由于竖直维度是线性的,所以极线平面被定义在类似于平面表面的笛卡尔坐标间隔中。类似地,对于水平圆柱表面,由于水平维度是线性的,并且极线平面是在围绕基线旋转的角度间隔中定义的,所以可以沿着每条极线在笛卡尔坐标间隔中对光线进行采样。
71.转向图5a、5b、6a、6b和7;由矩形表示的平面演示了具有有限视场的平面表面如何能够代替球形或圆柱形表面用于极线矫正。对于面向前方和后方的车载相机,这些平面可以垂直于基线定向,基线也是相机运动的方向。在这种情况下,极线从极点e1和e2径向发出,并且可以使用极坐标采样网格来沿着矫正图像中的水平扫描线映射它们。这种配置允许图像的中心部分以类似于球面建模的方式被矫正。当图像平面接近无限大时,视场被限制在理论上的最大180度。
72.在一般情况下,极点也可以在图像中(特别是对于从向前或向后方向获取图像时的向前运动)或在图像附近。在这种情况下,不能使用线性变换。这里可以使用径向变换。然而,如果当从向左或向右方向获取图像时,极线在图像之外,如在向前运动的情况下,则变换类似于线性变换。
73.鱼眼校正
74.计算网格以校正鱼眼失真。对于未失真图像中的每个网格点x,y,失真空间中的网格点x

,y

可以根据以下定义:
75.a=(x-c
x
)
76.b=(y-cy)
[0077][0078][0079]r′
=k4θ4 k3θ3 k2θ2 k1θ
[0080][0081][0082]
焦距f的值应该如下决定。在畸变中心c
x
,cy附近畸变最小。输出图像中的像素不应被压缩(或放大)。在畸变中心附近,k1参数占主导地位。如果f=k1,那么对于围绕失真中心的小角度θ,未失真图像中的像素将使用相同的比例,因为r=f
·
tan(θ)≈fθ和r

≈k1θ。
[0083]
然而,相机可能不允许访问其失真参数,在这种情况下是k1…
k4。在这种情况下,可以通过使用失真最小的小角度人工光线来确定焦距。得到的像素位置可用于估计焦距。当在所选虚像平面的方向上计算每个网格点(x,y)的网格时,创建以下光线v=(x,-y,-f
·
s),其中s是比例因子。
[0084]
该光线通过图像平面相对于相机原始图像平面的旋转矩阵进行旋转。得到的向量可用于返回原始相机图像中的像素坐标。
[0085]
通用单步图像映射
[0086]
平面或径向平面映射可以在未失真(鱼眼校正)的图像上操作。校正失真和矫正的步骤也可以合并到单个图像映射过程中。这可以更有效并节省内存。
[0087]
如上所述,不仅平面,而且其他形状、比如球形或圆柱形也可用于矫正。就图像失真和深度估计的可行性之间的权衡而言,这些其他形状可能是有益的。在一般情况下,极线是极曲线。图8a和8b示出了基线对准的球形、平面和圆柱形映射。极点是由相机的移动决定的。
[0088]
基于球面或平面映射,其他映射可以通过坐标扭曲来实现。
[0089]
确定3d极点
[0090]
在具有安装在车辆上的相机的实施例中,来自车辆系统总线的里程计可以提供车辆的旋转和运动。为了计算当前相机的极点位置,在当前车辆坐标系中计算前一个相机的位置。为了计算先前相机的极点,计算当前相机在先前车辆相机系统中的位置。从当前相机到前一个相机的向量(反之亦然)指向极点,这个向量称为基线。以下公式基于测量的机械里程计:
[0091][0092]
[0093]
其中,是当前车辆到世界旋转,而是先前世界到车辆旋转。这两个矩阵可以组合成增量旋转矩阵。cv是相机在车辆坐标中的位置(相机的外部校准)。δ是世界坐标中的增量平移。视觉里程计可以提供车辆坐标中的增量平移,在这种情况下,方程被进一步简化。
[0094]
基线对准
[0095]
为了更容易计算映射,结果图像可以是基线对准的。从几何学上讲,这意味着虚拟相机以这样一种方式转动,即补偿相机的运动,使得虚拟相机垂直于基线或与基线共线。因此,车辆坐标系旋转到基线。这种旋转可以通过围绕轴线和角度的旋转来确定。极线向量和车辆坐标轴之间的角度确定如下:
[0096]
c(θ)=-ec·
(1,0,0)或cox(θ)=-ec·
(-1,0,0)
[0097]
旋转轴是两个向量的叉积:
[0098]
u=ec×
(1,0,0)或u=ec×
(-1,0,0)
[0099]
然后可以确定旋转矩阵,例如使用标准轴角公式:
[0100][0101]
利用这种旋转(称之为),极坐标系中的任何光线都可以变换到车辆坐标系,反之亦然。
[0102]
极坐标系
[0103]
为了定义用于矫正的映射,定义了球面坐标系,该坐标系以极点作为极,并使用纬度和经度角度,如图9所示。在没有任何旋转(汽车的纯向前或向后运动)的情况下,极点指向车辆坐标系的x轴方向。在这种情况下,
±
90
°
纬度指向x轴,0
°
经度指向汽车上方的一个点(0,0,1)。围绕定义平行于x轴的平面的球体的圆显示了球体上的极线圆。任何映射都应该将这些圆映射到矫正图像中的水平线。
[0104]
球面映射
[0105]
当考虑图9所示的几何图形时,在球面映射中,极线坐标直接映射到输出图像中的x和y坐标。纬度映射到y坐标,经度映射到x坐标。输出图像的像素密度定义了角度的密度。对于每个视图,可以定义经度和纬度的范围。例如,在图1所示的车辆环境中:
[0106]
·
后置相机:经度[0
°
,360
°
],纬度[-10
°
,-90
°
]
[0107]
·
前置相机:经度[0
°
,360
°
],纬度[10
°
,90
°
]
[0108]
·
镜左相机:经度[70
°
,180
°
],纬度[-80
°
,80
°
]
[0109]
·
镜右相机:经度[-70
°
,-180
°
],纬度[-80
°
,80
°
]
[0110]
现在,这些按以下顺序映射到相机图像坐标:
[0111]
·
将极线坐标转换为(x,y,z)坐标的光线向量。
[0112]
·
将光线从极线坐标旋转到车辆坐标。
[0113]
·
将光线从车辆旋转到相机坐标系。
[0114]
·
使用相机投影确定原始源图像坐标。
[0115]
以下公式将极线坐标转换为具有(x,y,z)坐标的光线向量:
[0116][0117]
其中,为经度和γ为纬度。光线通过以下方式转换为相机光线:
[0118][0119]rvc
是从车辆到相机坐标系的相机旋转矩阵。然后应用内置函数来检索源图像中的像素坐标,以获得极线坐标
[0120]
基线对准平面映射
[0121]
对于平面映射,使用与球面映射相同的机制。首先将平面坐标(x,y)转换为极线坐标,但计算步骤是相同的。转换如下:
[0122][0123]
对于车辆上的后置和前置相机,由于纬度值收敛于需要径向映射的奇点,因此转换如下:
[0124][0125]
视口可以像球面映射一样定义为张角。这些可被转换成平面坐标的范围,其在给定的像素密度下可被转换成像素范围。
[0126]
柱面映射
[0127]
柱面映射是球面和平面的混合。它们对于车辆上的镜像相机尤其有用。竖直或水平圆柱体的映射分别为:
[0128]

[0129]
锥面映射
[0130]
锥面映射和球面映射具有比柱面映射更接近扩展焦点的特性,因为由于映射表面的形状,需要较少的拉伸。缺点是,当物体从一个相机图像移动到下一个相机图像时,这些映射不能保持物体的形状。然而,锥面视图上的范围要好得多,并且检测质量,尤其是附近的检测质量比柱面映射中的好。
[0131]
在某些车辆上,锥形视口可能会降低地面和路缘检测的质量,但在计算上比球形视口便宜。图10显示了锥形映射表面的示例。当考虑具有安装在车辆上的相机的实施例时,锥形视图仅可能用于正面和背面相机,而不是侧面相机。
[0132]
通用映射
[0133]
除了球体、平面或圆柱体,其他映射也是可能的。它们可以由以下三个函数定义:f(x),g(y)和h(x)。假设图1中的相机配置,可以给出以下转换:
[0134]
对于镜(左右视图):
[0135]
对于后视图和前视图:
[0136]
对于平面情况:f(x)=h(x)=atan(x),g(y)=atan(y)
[0137]
对于球形情况:f(x)=h(x)=x,g(y)=y
[0138]
定制设计的函数可能有利于深度图中的视场和空间分辨率之间的正确平衡或立体匹配器的失真。理想情况下,函数f(x),g(y)和h(x)应达到以下目标:
[0139]
·
atan(x)≤f(x)≤x和atan(y)≤g(y)≤y以达到空间分辨率、视场和失真之间的
良好平衡;
[0140]
·
x≤h(x)≤c
·
x,要求函数在极点附近延伸,以在那里具有更大的视差分辨率,但对于更大的x回到线性行为;以及
[0141]
·
公式简单,计算量小。
[0142]
例如:
[0143]
映射到网格
[0144]
为每个目标像素计算从极线坐标到源像素坐标的映射是耗时的。这可以通过仅对目的地坐标网格计算这些映射来加速。该映射可以使用目标坐标中的规则网格来使用自动目标坐标生成。对于网格上的每个节点,计算到原始源像素坐标的映射。使用双线性插值,目标图像中的像素根据提供的网格进行映射。网格单元大小可以这样的方式定义,即网格创建的运行时间是可行的,但另一方面,由于网格引起的失真足够小。
[0145]
表面组合
[0146]
也可以将表面组合起来进行极线映射,包括使用多个平面进行极线矫正。这在上面引用的drulea等人的“omnidirectional stereo vision using fisheye lenses”中进行了讨论。例如,图11中示出了包括两个平面的映射表面。如果在车载相机的情况下考虑这一点,第一水平面h将例如用于重建地面;垂直于第一平面的第二平面v将用于其他物体。
[0147]
可以使用多个其他表面。由于圆柱形(和平面)视口在检测地面、路缘石和物体时在汽车附近表现良好,因此继续受益于它们的特性是有利的。为了在扩展焦点附近也进行检测,可以添加另一个表面来覆盖该区域。理想情况下,映射表面应该平衡图像的拉伸。既然扩展焦点是图像的一小部分,那么视口也要小;并且它应该覆盖从圆柱视图的检测末端开始的范围,并且接近扩展焦点。
[0148]
图12a示出了圆柱形视口120和截头圆锥形视口122(基于截头圆锥)的组合。这种修改的表面对于车辆前后相机是有利的,其中相机移入/移出场景。后视镜相机通常仅使用圆柱形表面,因为它们横向移动到场景。
[0149]
图12b示出了另一修改的表面,其中半球形表面124被添加到圆柱形表面120上。注意,对于两个修改的表面,映射紧邻扩展焦点的区域是没有用的,因为在该区域中不能提取有效的视差和深度。因此,所考虑的表面可能有一部分表面126在扩展焦点处缺失,如图12a和12b所示。
[0150]
深度计算和点云生成
[0151]
在运行立体匹配器之后,得到的视差图是包含从先前图像到当前图像的水平移动的图像。这些移动可被转换成深度信息或者直接转换成3d点的点云。根据所用的极线矫正方法,可以使用不同的公式计算该转换。
[0152]
平面深度计算
[0153]
基线对准的平面极线矫正是一种特殊情况,其允许通过简单的计算程序来确定深度。转向图13a并考虑安装在车辆侧面的相机。可以使用类似的三角形来计算深度d。相对于具有深度d的焦距f,视差q类似于基线b=|δ|:
[0154][0155]
其中,f和q可以用像素给出。
[0156]
相关地,转向图13b并考虑安装在车辆前部或后部的相机,可以导出以下关系:
[0157][0158][0159]
这可以简化为:
[0160][0161]
可以看出,不仅存在对视差q
2-q1的依赖性,还存在对q1的依赖性。这意味着视差图中的深度计算取决于您在图中的位置。同样,这意味着在相同的距离上,具有小q1的物体比具有大q1的物体具有更小的视差。这在这些情况下降低了空间分辨率,因为特征匹配器在像素级上操作。自然地,当接近极点时,空间分辨率接近零。然而,不同的映射函数可以通过在某种程度上均衡深度与视差的关系来减少这种影响。
[0162]
球面深度计算
[0163]
在图14所示的球形情况下,深度计算更加困难,但通过考虑球面映射中的单个极线圆,可以导出以下三角形关系:
[0164][0165][0166]
角度α和β(纬度)对应于球面矫正图像中匹配像素的水平像素位置,并且易于检索。此外,可以考虑经度。上面计算的深度d是距基线的距离,因此:
[0167][0168]
是来自虚拟相机平面的深度。虽然球面映射提供了很大的视场,但视差与距离的关系并不十分有利。对于小角度α,β,上述方程的近似变体为:
[0169][0170][0171]
视差与深度的关系不是恒定的,在深度的情况下,甚至与入射角成平方关系。这意味着对于镜面相机(mirror view camera),在矫正图像的边缘处,空间分辨率非常低。因此,平衡视场和空间分辨率的不同映射可能是有利的。
[0172]
圆柱深度计算
[0173]
圆柱形情况又是平面和球形的混合物。根据它是水平的还是竖直的圆柱体,使用上述的平面或球形方法计算深度。在平面深度的情况下,经度调整的执行等同于球面经度调整。
[0174]
通用深度计算
[0175]
对于球面映射,使用以下方程:
[0176][0177][0178]
根据上述定义(参见“通用映射”部分),可以使用以下:
[0179]
α=f(x1),β=f(x2)或α=h(x1),β=h(x2)
[0180]
将经度考虑在内,得出:
[0181]d′
=sin(g(y))d
[0182]
来自深度的点云
[0183]
如果上述方法用于计算各个视差图像素相对于虚拟相机平面的距离,则所得坐标可被转换成车辆坐标以形成点云。假设极线参考系中的欧几里得坐标相对于选定的相机(当前)矩阵可用于旋转到车辆坐标系,并添加相机的外部位置以获得车辆坐标。在计算上,这种方法对于基线对准的平面映射非常有效,因为对于每个像素,只涉及非常少和非常简单的操作。
[0184]
三角测量点云
[0185]
作为从深度形成点云的替代方法,可以使用三角测量从视差图生成点云。这将以下作为输入:在所考虑的坐标系中车辆的两条光线和运动向量。通过一些基本的和已知的操作(乘法、加法、减法和除法),可以获得三角化光线的3d位置的输出。
[0186]
为了从视差图中确定光线,可以选择两种方法:使用上面提到的深度计算,或者使用预先计算的光线网格。
[0187]
前一种方法不如直接从深度值生成点云有效。后一种方法是有效的。当生成用于上面提到的极线映射的网格时,也计算所需的光线。中间结果:
[0188][0189]
可用于网格中的每个节点,并且可以存储起来供以后使用。r是从极线坐标系旋转到车辆坐标系后的光线。现在,对于视差图中的每个像素,相应的光线可以从存储在像素周围的节点中的光线进行双线性插值(或者使用更高级的方法,例如样条插值)。当选择极线映射的网格单元大小时,可以考虑本节中描述的方法,以便生成的点云足够精确。
[0190]
三角测量方法
[0191]
由于三角测量的方法是已知的,为了简洁起见,只给出最终的方程。给定两条车辆光线rc,r
p
和车辆的增量运动δ,可以定义以下六个量:
[0192]
a=rc·
rc=|rc|2[0193]
b=r
p
·
rc[0194]
c=r
p
·rp
=|r
p
|
[0195]
d=rc·
(-δ)
[0196]
e=r
p
·
(-δ)
[0197]
p=ac-b2[0198]
如果两条光线都是单位向量,则a和c的值将为1,并且可以进一步简化以下公式:
[0199][0200][0201]
以提供光线的两个交叉点。通常情况下,三维空间中的两条光线不一定相交。两个3d点的平均值将是两条光线的最近点。然而,在我们的示例中,两条光线与极曲线相交,因此会有交点。这意味着上述等式中只有一个就足够了。然而,通过计算两个3d点并使用平均结果作为最终的3d点输出,可以至少部分地解决诸如由插值引起的光线计算中的不准确性。
[0202]
应用
[0203]
通过使用上述技术,来自车辆上具有宽视场镜头的移动单目相机的图像可用于形成点云的一部分,该点云在车辆移动通过环境时近似于车辆周围环境的局部地形的一部分。通过将来自移动的单目相机的图像拼接在一起而形成的图像然后可被映射到由点云定义的表面上。所得到的虚拟场景的图像可以从任何虚拟相机姿态进行评估。由于虚拟图像具有与成像场景相似的形貌,而不管虚拟相机姿态如何,因此所提供的图像将是逼真的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献