发明内容
本发明实施例提供了一种全景泊车的标定方法,及装置,一种自动标定方法,用于实现全景泊车系统的摄像头标定,为鸟瞰图的拼接提供便利。
一种全景泊车的标定方法,包括:
获取车辆摄像头的抓取到的图片;所述图片由设置于车辆上的广角摄像头在车辆停发在标定图案上时抓取,所述标定图案包含浅色的线条以及至少四个标记块,线条在深色的载体上呈网状排列,四个标记块设置于网状排列的线条的交叉点上的前后左右四个方向上,所述标记块面积大于交叉点面积;
使用全景泊车系统的默认参数生成鸟瞰图;
在所述鸟瞰图中识别标记块,并依据所述标记块识别控制点,获得控制点的实际位置和理想位置,所述控制点为网状排列的线条的交叉点;所述理想位置为在鸟瞰图中所指定的位置;
利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与所述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数。
优选地,所述识别标记块,包括:
使用形态学图像处理的腐蚀法检测标记块的位置。
优选地,所述使用形态学图像处理的腐蚀法检测标记块的位置包括:
使用一个比标记块小的方形腐蚀核对所述鸟瞰图进行腐蚀处理,然后筛选得到腐蚀结果中最靠近中心位置的一个非零点,将所述非零点的坐标作为标记块的位置。
优选地,所述依据所述标记块识别控制点包括:
根据所述鸟瞰图的标记块的实际位置与理想位置的偏移量以及各个控制点的理想位置,推断各个控制点的估计位置;在所述估计位置的设定临域内使用二维线性滤波器算子对所述鸟瞰图进行二维滤波,得到二维滤波结果,确定滤波结果中的最大滤波响应点为控制点的实际位置。
优选地,所述在所述估计位置的设定临域内使用二维线性滤波器算子对所述鸟瞰图进行二维滤波,得到二维滤波结果包括:
在所述估计位置的设定临域内使用大小为m*n的滤波器w对大小为M*N的鸟瞰图f进行线性空间滤波,其结果为:
W为二维滤波器、f为待滤波图像、g为滤波后图像、m为二维滤波器宽度、n为二维滤波器高度,M为待滤波图像的宽度、N为待滤波图像的高度、x为待滤波图像中滤波前和滤波后某一个像素的水平座标、y为待滤波图像中滤波前和滤波后某一个像素的垂直座标、s为二维滤波器中某个像素的水平坐标、t为二维滤波器中某个像素的垂直坐标、a和b是两个临时变量,其中a=(m-1)/2,b=(n-1)/2。
优选地,所述利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与所述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数包括:
假设畸变校正之后的某一点P坐标为(Xc,Yc),经过透视变换之后的坐标为(Xb,Yb),则透视变换过程记为:
其中,算式右侧的3*3矩阵即为所述的视角变换矩阵;对所述视角变换矩阵求逆,实现从鸟瞰图向畸变校正结果的逆推运算;
在启动最优化运算前,使用默认参数将各个控制点的坐标,逆推回源畸变图像上控制点的坐标P0,然后,在最优化的每次迭代过程中,使用最优化的当前迭代值,将所述逆推运算的结果正推至鸟瞰图坐标Pt,并将所述正推结果Pt与标定图案控制点的理想坐标P进行比较,其误差的和作为最优化状态的评估值:在迭代值已趋于稳定,并且此稳定值使得所述评估函数接近于极小值时,终止最优化的迭代过程,以当前迭代结果作为最终的畸变校正参数和透视变换参数。
优选地,所述方法还包括:
根据各鸟瞰图的重叠区域中的标记块的位置进行自动拼接,获取拼接参数;根据所述畸变校正参数、透视变换参数以及拼接参数,生成全景拼接图与原始图像的像素映射表,根据像素映射表将广角摄像头拍摄的实时图像变换生成实时全景拼接图。
优选地,所述方法还包括:
保存所述镜头畸变校正参数、透视变换参数以及拼接参数;或者,所述像素映射表;并据此将广角摄像头拍摄的实时图像变换生成实时全景拼接图。
一种自动标定方法,包括:
将待标定车辆停置于标定图案的上方,且标定图案的标记块能够被广角摄像头拍摄到;
为每个广角摄像头抓拍至少一幅图片后将待标定车辆移出标定图案,并等待下一辆待标定车辆进入标定图案;
使用本发明实施例提供的任意一项的标定方法对移出标定图案的待标定车辆的广角摄像头进行标定。
一种全景泊车的标定装置,包括:
图片获取单元,用于获取车辆摄像头的抓取到的图片;所述图片由设置于车辆上的广角摄像头在车辆停发在标定图案上时抓取,所述标定图案包含浅色的线条以及至少四个标记块,线条在深色的载体上呈网状排列,四个标记块设置于网状排列的线条的交叉点上的前后左右四个方向上,所述标记块面积大于交叉点面积;
鸟瞰图生成单元,用于使用全景泊车系统的默认参数生成鸟瞰图;
识别控制单元,用于在所述鸟瞰图中识别标记块,并依据所述标记块识别控制点,获得控制点的实际位置和理想位置,所述控制点为网状排列的线条的交叉点;所述理想位置为在鸟瞰图中所指定的位置;
参数计算单元,用于利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与所述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数。
优选地,所述识别控制单元,具体用于根据所述鸟瞰图的标记块的实际位置与理想位置的偏移量以及各个控制点的理想位置,推断各个控制点的估计位置;在所述估计位置的设定临域内使用二维线性滤波器算子对所述鸟瞰图进行二维滤波,得到二维滤波结果,确定滤波结果中的最大滤波响应点为控制点的实际位置。
优选地,所述识别控制单元,用于在所述估计位置的设定临域内使用二维线性滤波器算子对所述鸟瞰图进行二维滤波,得到二维滤波结果包括:具体用于在所述估计位置的设定临域内使用大小为m*n的滤波器w对大小为M*N的鸟瞰图f进行线性空间滤波,其结果为:
W为二维滤波器、f为待滤波图像、g为滤波后图像、m为二维滤波器宽度、n为二维滤波器高度,M为待滤波图像的宽度、N为待滤波图像的高度、x为待滤波图像中滤波前和滤波后某一个像素的水平座标、y为待滤波图像中滤波前和滤波后某一个像素的垂直座标、s为二维滤波器中某个像素的水平坐标、t为二维滤波器中某个像素的垂直坐标、a和b是两个临时变量,其中a=(m-1)/2,b=(n-1)/2。
优选地,所述参数计算单元,用于利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与所述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数包括:具体用于假设畸变校正之后的某一点P坐标为(Xc,Yc),经过透视变换之后的坐标为(Xb,Yb),则透视变换过程记为: 其中,算式右侧的3*3矩阵即为所述的视角变换矩阵;对所述视角变换矩阵求逆,实现从鸟瞰图向畸变校正结果的逆推运算;
在启动最优化运算前,使用默认参数将各个控制点的坐标,逆推回源畸变图像上控制点的坐标P0,然后,在最优化的每次迭代过程中,使用最优化的当前迭代值,将所述逆推运算的结果正推至鸟瞰图坐标Pt,并将所述正推结果Pt与标定图案控制点的理想坐标P进行比较,其误差的和作为最优化状态的评估值:在迭代值已趋于稳定,并且此稳定值使得所述评估函数接近于极小值时,终止最优化的迭代过程,以当前迭代结果作为最终的畸变校正参数和透视变换参数。
优选地,所述装置还包括:
拼接控制单元,用于根据各鸟瞰图的重叠区域中的标记块的位置进行自动拼接,获取拼接参数;根据所述畸变校正参数、透视变换参数以及拼接参数,生成全景拼接图与原始图像的像素映射表,根据像素映射表将广角摄像头拍摄的实时图像变换生成实时全景拼接图。
优选地,所述装置还包括:
存储单元,用于保存所述镜头畸变校正参数、透视变换参数以及拼接参数;或者,所述像素映射表。
从以上技术方案可以看出,本发明实施例具有以下优点:使用标识块可以使由识别条组成的各个网格之间有所区别,标识块面积大于交叉点面积容易被识别到。识别条采用浅色载体为深色则减少反光造成的影响,因此可以准确定位标定图案在坐标系中的绝对坐标,因此可以提高标定成功率。确定镜头畸变校正参数和透视变换参数可以为鸟瞰图的拼接提供便利。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种全景泊车的标定方法,如图1所示,包括:
101:获取车辆摄像头的抓取到的图片;上述图片由设置于车辆上的广角摄像头在车辆停发在标定图案上时抓取,上述标定图案包含浅色的线条以及至少四个标记块,线条在深色的载体上呈网状排列,四个标记块设置于网状排列的线条的交叉点上的前后左右四个方向上,上述标记块面积大于交叉点面积;
102:使用全景泊车系统的默认参数生成鸟瞰图;
103:在上述鸟瞰图中识别标记块,并依据上述标记块识别控制点,获得控制点的实际位置和理想位置,上述控制点为网状排列的线条的交叉点;上述理想位置为在鸟瞰图中所指定的位置;
可选地,上述依据上述标记块识别控制点包括:根据上述鸟瞰图的标记块的实际位置与理想位置的偏移量以及各个控制点的理想位置,推断各个控制点的估计位置;在上述估计位置的设定临域内使用二维线性滤波器算子对上述鸟瞰图进行二维滤波,得到二维滤波结果,确定滤波结果中的最大滤波响应点为控制点的实际位置。
可选地,上述识别标记块,包括:使用形态学图像处理的腐蚀法检测标记块的位置。
上述使用形态学图像处理的腐蚀法检测标记块的位置包括:使用一个比标记块小的方形腐蚀核对上述鸟瞰图进行腐蚀处理,然后筛选得到腐蚀结果中最靠近中心位置的一个非零点,将上述非零点的坐标作为标记块的位置。
更具体地,上述在上述估计位置的设定临域内使用二维线性滤波器算子对上述鸟瞰图进行二维滤波,得到二维滤波结果包括:在上述估计位置的设定临域内使用大小为m*n的滤波器w对大小为M*N的鸟瞰图f进行线性空间滤波,其结果为: 其中,W为二维滤波器、f为待滤波图像、g为滤波后图像、m为二维滤波器宽度、n为二维滤波器高度,M为待滤波图像的宽度、N为待滤波图像的高度、x为待滤波图像中滤波前和滤波后某一个像素的水平座标、y为待滤波图像中滤波前和滤波后某一个像素的垂直座标、s为二维滤波器中某个像素的水平坐标、t为二维滤波器中某个像素的垂直坐标、a和b是两个临时变量,其中a=(m-1)/2,b=(n-1)/2。
104:利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与上述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数。
可选地,上述利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与上述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数包括:假设畸变校正之后的某一点P坐标为(Xc,Yc),经过透视变换之后的坐标为(Xb,Yb),则透视变换过程记为: 其中,算式右侧的3*3矩阵即为上述的视角变换矩阵;对上述视角变换矩阵求逆,实现从鸟瞰图向畸变校正结果的逆推运算;
在启动最优化运算前,使用默认参数将各个控制点的坐标,逆推回源畸变图像上控制点的坐标P0,然后,在最优化的每次迭代过程中,使用最优化的当前迭代值,将上述逆推运算的结果正推至鸟瞰图坐标Pt,并将上述正推结果Pt与标定图案控制点的理想坐标P进行比较,其误差的和作为最优化状态的评估值:在迭代值已趋于稳定,并且此稳定值使得上述评估函数接近于极小值时,终止最优化的迭代过程,以当前迭代结果作为最终的畸变校正参数和透视变换参数。
进一步地,本发明实施例还提供了各广角摄像头抓取的鸟瞰图的拼接方法,上述方法还包括:根据各鸟瞰图的重叠区域中的标记块的位置进行自动拼接,获取拼接参数;根据上述畸变校正参数、透视变换参数以及拼接参数,生成全景拼接图与原始图像的像素映射表,根据像素映射表将广角摄像头拍摄的实时图像变换生成实时全景拼接图。
进一步地,本发明实施例还提供了保存相关参数以供后续使用的方法,具体地:上述方法还包括:保存上述镜头畸变校正参数、透视变换参数以及拼接参数;或者,上述像素映射表;并据此将广角摄像头拍摄的实时图像变换生成实时全景拼接图。
基于前述全景泊车的标定方法的方法,本发明实施例还提供了一种自动标定方法,如图2所示,包括:
201:将待标定车辆停置于标定图案的上方,且标定图案的标记块能够被广角摄像头拍摄到;
202:为每个广角摄像头抓拍至少一幅图片后将待标定车辆移出标定图案,并等待下一辆待标定车辆进入标定图案;
203:使用本发明实施例提供的任意一种全景泊车的标定方法对移出标定图案的待标定车辆的广角摄像头进行标定。
为了更详细的介绍本发明实施例的实现方式,以下实施例,将就标定图案、操作流程以及自动标定算法分别进行说明。本发明实施例目标在于自动完成全景泊车系统在出厂前对广角摄像头的标定工作,从而实现全景泊车系统的快速批量生产。
本发明实施例使用一种带有块状标记的方形网格图案作为标定图案,如图3所示,其基本特征如下:
本发明实施例提供了一种标定图案,如图3所示,包括:
载体(图3中黑色背景部分)、线条(图3中白色矩形的线条)以及至少四个标记块(图3中白色正方形);浅色的上述线条在深色的载体上呈网状排列;标记块设置于网状排列的线条的交叉点上的前后左右四个方向上,相对的两个标记块呈轴对称排列,上述标记块面积大于交叉点面积。
将浅色的线条设置于深色的载体上并且呈网状排列;标记块设置于网状排列的线条的交叉点上的前后左右四个方向上,相对的两个标记块呈轴对称排列,上述标记块面积大于交叉点面积;使用标记块可以使由线条组成的各个网格之间有所区别,标记块面积大于交叉点面积容易被识别到。线条采用浅色载体为深色则减少反光造成的影响,因此可以准确定位标定图案在坐标系中的绝对坐标,因此可以提高标定成功率。
需要说明的是载体是承载线条以及标记块的部件,可以是布、塑胶薄膜、木板等等;本发明对此不予限定。另需要说明的是,标记块的个数是可以比四个更多的,本发明实施例对具体个数不予限定。
优选地,上述标记块为方形;上述标记块的边长大于上述线条的宽度。需要说明的是,标记块的形状并不一定是方形的,其它形状并不影响本发明的实现,方形作为一个优选实现方案不应理解为对本发明实施例的限定。
优选地,标记块内的内截矩形的长度及宽度,均大于待标定车辆的投影所在矩形的长度及宽度。
可选地,待标定车辆(如图3中白色矩形内的图案所示)的投影所在矩形内存在上述网状排列的线条,或者,不存在上述网状排列的线条。
优选地,若上述待标定车辆的全景图的显示范围为车身前后左右距离分别为:D1、D2、D3、D4的矩形区域,待标定车辆的投影所在矩形的宽度及长度分别为:W,H;则上述标定图案的的长度及宽度分别为:D1+D2+H和D3+D4+W。
优选地,上述网状排列的线条呈十字交叉,交叉点为控制点;相邻控制点在全景图中的间距大于40个像素。需要说明的是,以上40个像素是本发明给出的优选实现方案,实际上在40个像素基础上略有减少也不会影响本发明的实现,以上40个像素的优选方案不应理解为对本发明实施例的唯一限定。
优选地,网状排列的内侧及外侧预留有边界;内侧边界MI在全景图中大于10个像素;外侧边界MO在全景图中大于20个像素。上述边界的设定可以避免标定图案以外的区域干扰标定算法,进一步提升标定成功率。
优选地,若上述载体上1米的物体在全景鸟瞰图中的长度为λ个像素,则有:在垂直方向的网格总行数小于等于(D1+D2+H-MO×2-MI×2)×λ/40;在水平方向的网格总列数小于等于(D3+D4+W-MO×2-MI×2)×λ/40。
优选地,上述线条的的宽度LW在全景图中为3至5个像素。即:以米为单位的实际宽度为:线条宽度=LW/λ。
优选地,上述标记块位于上述标定车辆的广角摄像头的正下方的任意一个交叉点。例如,前方摄像头安装在车辆头部中心位置,因此前方标记块可以放在前方标定网格图案的中心位置;而右方摄像头安装在后视镜的下方,因此右方标记块可以放在右方标定网格图案靠近后视镜的任意一个十字型交叉点处。
优选地,上述标记块的面积为标定图案的一个网格面积的1/5至1/3。例如:上述网格图案每一格的宽度和长度分别为(W0,H0),则方形标记块的大小为(W0/5,H0/5)至(W0/3,H0/3)。
需要说明的是:为了增强标定图案的对比度,标定图案的线条以及标记块可以采用浅亮色材料,标定图案的载体可以采用深色的吸收光线能力较强的材料。
在上述标定图案中,网格的大小和个数可以由待标定车辆的长度和全景泊车系统的显示范围来决定。一般情况下,网格长宽各为一米左右,网格范围能够恰好覆盖全景拼接图的显示范围即可。上述网格式标定图案中,每一个横纵线条的交叉点均被用作一个控制点,只需找到上述控制点在摄像头输入图像中的二维坐标,并参照上述控制点的理想坐标,即可自动生成标定参数。后续实施例将就标定参数的具体生成过程进行详细说明。
上述的网格式标定图案中,中心的正方形的标记块(请参阅图4A~图4D,中心的正方形的标记块即图3中的标记块,图4A~图4D中斜线部分所示的A1~A4为非标记图案区域)用于定位标定图案与摄像头的相对位置,防止出现整体错位N个方格的识别结果。在自动生成标定参数时,将首先检测上述标记块的位置,并根据上述标记块的位置来推断各个控制点的位置,然后在推断位置附近来检测上述目标控制点。这样,即可将现有摄像头标定法中的全局控制点检测转换为局部控制点检测,大大提高识别成功率。
本发明实施例提出的操作流程的具体实现方式,如下:
⑴、将待标定车辆停置于标定图案正上方,确保各个广角摄像头均能拍摄到所在方向的完整标定图案;
⑵、为每一个广角摄像头抓取一幅图片,然后将当前车辆驶出标定区域,将当前生产线的下一辆车置于标定图案正上方;
由于每个广角摄像头的视角有限,而且车身会遮挡部分视野,上述摄像头不可能完整地拍摄到整个标定图案,只能拍摄到其所在方向的标定图案区域。抓图效果示意图如图4A~图4D所示,其中图4A~图4D的下方虚线所示区域(A1~A4)分别为前右后左四个方向的车身,所对应的四幅图像分别为前右后左四个方向的抓图效果示意图。
⑶、对于完成抓图操作并已驶出标定区域的车辆,启动自动标定操作,从而自动生成全景泊车系统的全部参数,然后保存生成的参数,完成自动标定过程。本步骤的具体实现过程可以参考后一实施例的具体说明。
前述操作流程为流水线式标定流程,将整个标定过程拆解为几个独立的步骤,其示意图如图5所示,车辆1~3停车、抓图、标定运算的时序关系,上述抓图步骤与上述标定运算步骤可以在不同车辆上同时进行,从而实现流水线效果。上述的流水线式标定流程可以最大化利用标定图案,减少标定图案带来的生产成本;而且可以实现生产并行化,从而大大提高生产速度。
本发明实施例所使用的标定算法如图6所示,上述算法主要包含以下几个步骤:
601:使用全景泊车系统内置的默认参数和上述的抓图结果来生成鸟瞰图;
由于默认参数中存储的信息与当前标定的车辆不一致,因此使用上述默认参数生成的“鸟瞰图”会有一定扭曲,但大体形状已与标定图案原始形状相似。图4A~4D所示为原始抓图结果示意图,其中图4A下方区域为前方车身区域。
生成默认鸟瞰图之后,后续的标记块和控制点的检测操作将在上述默认鸟瞰图上进行。本发明实施例中所提出的在鸟瞰图上进行检测的标定方法比传统相机标定法中直接在源畸变图像上做控制点检测的效果更好。在前述现有标定方案中,由于源输入图像(广角摄像头抓取图像)存在明显的光学畸变,远角处的图像收缩于很小的空间范围内,从而标定图案中的控制点也分布于很小的空间范围内,极易导致控制点漏检或错位。而在本发明实施例所提出的标定方法中,虽然鸟瞰图并非十分精确,但已消除了大部分光学畸变带来的影响,远角处的图像经过校正之后已经展开,各个控制点之间的距离已经足够大,从而极大地减小了控制点检测错误的几率。
602:在上述鸟瞰图中,识别标记块;
本发明实施例使用形态学图像处理中的腐蚀法来检测标记块的位置。
腐蚀算法通常被用来“收缩”或“细化”二值图像中的对象,从而筛选出面积较大的对象。腐蚀的收缩方式和程度由一个结构元素来控制,上述结构元素称为核。假设二值图像A被核B腐蚀,腐蚀结果为C,则:
换言之,A被B腐蚀是所有结构元素的原点位置的集合,其中平移的B与A的背景并不叠加。
本发明实施例中可以使用一个比标记块稍小的方形腐蚀核来对默认鸟瞰图进行腐蚀处理,然后筛选得到腐蚀结果中最靠近中心位置的一个非零点,那么上述非零点的坐标即为标记块的位置。
603:在上述的鸟瞰图中,识别方形网格的各个控制点;
本发明实施例提出了一种基于二维线性空间滤波的专用控制点检测算法,来确定控制点的位置,具体如下:
空间滤波是图像处理领域应用广泛的主要工具之一。线性空间滤波是指对图像的一个邻域包围的全部像素执行某种预定义的线性操作。上述线性操作用一个二维矩阵来表示,并称之为空间滤波器。
一般来说,使用大小为m*n的滤波器w对大小为M*N的图像f进行线性空间滤波,其结果可以用下式来表示:
其中,W为二维滤波器、f为待滤波图像、g为滤波后图像、m为二维滤波器宽度、n为二维滤波器高度,M为待滤波图像的宽度、N为待滤波图像的高度、x为待滤波图像中滤波前和滤波后某一个像素的水平座标、y为待滤波图像中滤波前和滤波后某一个像素的垂直座标、s为二维滤波器中某个像素的水平坐标、t为二维滤波器中某个像素的垂直坐标、a和b是两个临时变量,
a=(m-1)/2
b=(n-1)/2。举例来说,若滤波器大小为3*3,即m=n=3,则a=b=1。另需说明的是,数字图像处理算法中,二维滤波器称作“核”(kernel),使用二维矩阵来表示,也可以看做一种特殊的图像(“掩膜图像”),因此可以引入数字图像的“像素”、“坐标”概念;上式中二维滤波器的坐标原点位于滤波器中心,而不是左上角,因此滤波器的坐标(s,t)可能为负数。
鉴于本发明实施例所使用的标定图案中的控制点全部为十字形,本发明实施例可以使用一种5*5的十字形线性滤波器来对默认鸟瞰图的指定邻域进行二维线性滤波。使用二维矩阵表示上述空间滤波器的各个像素的值,如下:
根据默认鸟瞰图中各个控制点的理想位置和标记块的实际位置与理想位置的偏移量,确定各个控制点的估计位置,在估计位置的一个邻域内使用上述二维线性滤波器算子对上述默认鸟瞰图进行二维滤波,得到二维滤波结果,然后获取上述滤波结果中的最大滤波响应点,此点即为检测到的控制点。
本发明实施例所提出的基于二维滤波的控制点检测算法与基于梯度检测的通用控制点检测算法有一定相似之处,但由于标定图案的鸟瞰图中的控制点形状是已知的十字形,因此完全可以使用特定的针对于上述控制点形状的专用滤波器,从而在控制点处获得更大的滤波响应,最终提高检测结果的信噪比。因此,本发明实施例所提出的十字形控制点专用检测算法具有更高的可信度和稳定性,适合应用于全自动的摄相机标定装置。
如何估计某个控制点在鸟瞰图中可能出现的位置,是通过之前的标记块检测以及一个假设来实现的。这个假设是:使用默认全景参数生成的默认鸟瞰图虽然不符合理想鸟瞰图的标准,但其误差仅来源于整幅图像的平移。也就是说,默认鸟瞰图中虽然各个控制点均不处于其“理想位置”,但其“实际位置”与“理想位置”之间的偏移是相同的。显然,这个假设是不成立的。但在误差允许的范围内,这个“不可能成立的”假设可以起到预期的作用,并保证算法的稳定性。有了前文的假设,即可根据标记块的“实际位置”与“理想位置”之间的偏移来判断整幅图像的偏移,以及所有控制点的“实际位置”与“理想位置”之间的偏移(三个偏移是相等关系)。这样,控制点的“估计位置”即为“理想位置”加上前文上述偏移量。
604:以上述默认参数为初始参数,利用上述控制点的实际位置与理想位置的差异来进行最优化,从而得到镜头畸变校正参数和透视变换参数;
在对上述604步骤进行详细说明之前,先介绍两个参数如下:
一、畸变校正参数:
畸变校正参数又分为摄像机内参数和摄像机畸变模型参数两部分。其中畸变模型参数因模型而异,但对于使用同一畸变模型的同一型号的摄像机,其参数值基本不变。而摄像机内参数主要指焦距和中心点偏移量(中心点偏移量是指镜头光轴与CMOS中心之间的二维偏移量),即便是相同型号的摄像机也会因生产工艺的影响而存在较大的差别,尤其是中心点偏移量。
畸变校正算法原理类似,具体实现又因技术方案差异而千差万别,而标定算法只是调用畸变校正算法提供的抽象的接口,与具体的畸变校正实现无关。以下提供一种常见的畸变校正算法以供本实施例参考:
记内参数中的水平焦距、垂直焦距(“焦距”实际上是指缩放因子,因为CMOS传感器的感光颗粒并非正方形,故水平和垂直“焦距”不同)、水平偏移和垂直偏移分别为Fx、Fy、Sx、Sy,则可使用3x3矩阵来表示摄像机内参数,该矩阵称为内参数矩阵,其形式如下:
摄像机畸变模型可采用多项式模型,该模型将镜头的畸变量分为径向畸变和切向畸变两个部分,不过切向畸变在现代生产工艺下基本可以忽略。径向畸变使用高次泰勒级数的展开式来逼近,视精度要求可以使用四次多项式或六次多项式(仅保留偶次幂),其表达式如下:
Xc=X(1+k1R2+k2R4+K3R6)
Yc=Y(1+k1R2+k2R4+K3R6)
其中,R是经过内参数矩阵映射之后的某个点与中心位置间的距离,(X,Y)是未校正的点,(Xc,Yc)是校正后的点。
依次使用以上摄像机内参数以及镜头畸变模型进行映射,即可将畸变图像中的点映射(变换)至畸变校正之后的图像上的点。
二、透视变换参数:
透视变换参数与摄像机外参数概念类似,不过透视变换参数直接将三维的旋转、平移等转换为二维的单应性矩阵H,从而直接进行二维点集的映射。上述的单应性矩阵H又是一个3x3的二维矩阵,其每一个元素的值可以通过已知的4组以上的映射点对来直接求解(映射点对来自于畸变校正之后的图像与理想鸟瞰图像上的控制点)。至于其表达形式,实际上只是矩阵的通用表达式,也就是用m来表示矩阵中的某个元素(m是Matrix的缩写),用下标来表示行号和列号,有:
至于矩阵的每个元素的几何意义,可以简单地做如下理解:m11,m12,m21,m22为旋转与放缩;m13,m23为平移,m31,m32为灭点。当然,这些具体的含义也是与标定算法无任何关系的,因为正如前文所讲,单应性矩阵H是使用点集映射的方式通过求解线性方程组得到的,而不是根据几何意义推导出来的。根据前文提到的单应性矩阵H,配以通用的图像内部插值算法,即可完成从畸变校正后的图像至鸟瞰图的映射过程。
本发明实施例使用非线性最优化的方式来微调默认参数,使之与当前标定的车辆达到最佳吻合状态,从而为当前车辆的每个广角摄像头生成标准的无畸变的鸟瞰图。其中,上述的非线性最优化算法采用通用的Levenberg-Marquardt算法。
一般情况下,需要微调的参数包括:摄像头中心点、摄像头焦距、视角变换矩阵。其中,上述的摄像头中心点和焦距用于进行源输入图像的畸变校正,畸变校正的计算方法根据镜头畸变模型不同而有所不同;上述的视角变换矩阵用于进行校正后图像的透视变换,使其变为鸟瞰图,假设畸变校正之后的某一点P坐标为(Xc,Yc),上述点经过透视变换之后的坐标为(Xb,Yb),则透视变换过程可记为:
其中,算式右侧的3*3矩阵即为上述的视角变换矩阵。如果对上述视角变换矩阵求逆,则可实现从鸟瞰图向畸变校正结果的逆推运算。
在启动最优化运算前,首先要使用默认参数将各个控制点的识别结果,即鸟瞰图控制点的坐标,逆推回源畸变图像上控制点的坐标P0。然后,在最优化的每次迭代过程中,使用最优化的当前迭代值,将上述逆推结果正推至鸟瞰图坐标Pt,并将上述正推结果Pt与标定图案控制点的理想坐标P进行比较,其误差的和作为最优化状态的评估值:
也就是说,使用实际点与理想点的距离总和作为最优化的评估函数。经过数次迭代以后,标定参数的迭代值已趋于稳定,并且此稳定值使得上述评估函数接近于极小值,此时可以终止最优化的迭代过程,以当前迭代结果作为最终的畸变校正参数和透视变换参数。
以下就最优化算法进行详细说明:
最优化算法实际上是一种通用的数学方法,其应用范围非常之广,在自然科学、经济金融等领域都有重要作用。通俗地讲,最优化算法是对一个具体问题的解决方案的“优化”过程,例如利润最大化、成本最小化等。通过数学建模手段,可以将生活中的实际问题抽象为一个可被一些参数(条件)影响的函数(例如受“单价”、“销量”等参数影响的“利润”),经过多次对参数的调整,最终使得函数的输出达到最大值或最小值。每一次调整问题的输入参数之后,均需要重新评估问题(也就是重新计算函数值,如“利润”)。上述的评估问题时所使用的方法称为“评估函数”,评估问题的过程称为一次“迭代”,而得到的最优解称为“迭代结果”。可见,最优化过程实际上就是通过多次迭代来搜索评估函数的极值点的过程。
前述Levenberg-Marquardt最优化算法来对全景参数进行“微调”,后续实施例解释以下几个问题:
一、什么是Levenberg-Marquardt算法?
该算法是最优化算法的一种实现,通过提供带参问题的评估函数、Jacobi评估函数(可选)、初始解来进行迭代运算,最终可以得到最优解。该算法的收敛性和速度都属上乘,因此被各种算法库所支持,例如Matlab、LEVMAR等。
值得一提的是,Levenberg-Marquardt算法所需的初始解(近似解)恰好是全景泊车系统中预存的“默认参数”,该参数虽然并非与当前标定的车辆完全匹配,但由于摄像头安装的误差并不是非常大,因此可以达到“八九不离十”的地步,故可以作为近似解传递给最优化算法,从而获得最优迭代结果,也就是与当前标定车辆完全匹配的全景参数。
二、需要微调哪些全景参数?
最优化算法无需调整全部的全景参数,只需调整不同车辆之间存在差异的全景参数,其余参数直接从默认参数复制即可。举例来说,摄像头畸变模型仅与摄像头型号相关,相同型号的摄像头的畸变模型参数是一致的,不必每辆车重新调整。而摄像头中心点偏移反映了某个摄像头的特性,正如“没有两片完全相同的叶子”一样,中心点偏移也是因摄像头而异的,因此需要每辆车重新调整。
总体来讲,需要参加最优化的参数如下:摄像头内参数、单应性矩阵(以求解线性系统的方式嵌在最优化算法的计算过程中)。
值得注意的是,单应性矩阵并非最优化算法的“参数”,而是其“中间状态”,这个中间状态可以通过参数和点集对直接求解,并在每一轮迭代过程中“更新”。因此,一定程度上可以认为,最优化算法仅用来获取最佳的摄像头内参数。
三、如何使用最优化算法来微调全景参数?
前文提到,使用最优化算法需要指定评估函数、初始解,其中初始解使用默认全景参数即可。
那么如何评估全景参数是否已经达到“最优”状态呢?这需要角点坐标对的帮助。在启动最优化算法之前,我们已经检测到了每个角点在默认鸟瞰图中的“实际坐标”,这些坐标构成了“实际坐标”点集;而我们知道每个角点在理想鸟瞰图中的“理想坐标”,这些坐标构成了“理想坐标”点集。更重要的是,两个点集之间存在着一一对应的关系,角点的“实际坐标”与“理想坐标”距离越近,则说明实际鸟瞰图与理想鸟瞰图越像,因此我们可以使用以下计算式作为最优化状态的评估值:
具体地:使用默认参数将各个控制点的坐标,逆推回源畸变图像上控制点的坐标P0,然后,在最优化的每次迭代过程中,使用最优化的当前迭代值,将上述逆推运算的结果正推至鸟瞰图坐标Pt,并将上述正推结果Pt与标定图案控制点的理想坐标P进行比较,其误差的和作为最优化状态的评估值。
值得注意的是,由于标定算法在默认鸟瞰图上搜索角点而不是在原始的畸变图像上搜索角点,而最优化算法中的每次迭代均需要进行角点在畸变图上的“实际坐标”至鸟瞰图上的“实际坐标”的映射,然后才能将后者与“理想坐标”作为坐标对传递给评估函数,因此在启动最优化算法之前,必须将鸟瞰图上的搜索结果(坐标值)逆推回畸变图(摄像头原始输出图像)上的坐标值。有了以上评估函数,以及默认参数作为初始解,即可启动Levenberg-Marquardt最优化算法,经过多次迭代,最终获取最优解——合适的摄像头内参数。
Levenberg-Marquardt算法,主要有以下几个可能的迭代终止条件,当满足其中之一时,即说明参数已经“趋于稳定”:Stopped by small gradient J^T e;Stopped by small Dp;No further error reduction is possible;Stopped by small||e||_2。
四、如何将鸟瞰图中角点的“实际坐标”逆推至畸变图中角点的坐标?
首先需要再次回顾一下我们是如何进行“正推”的:畸变图经过畸变校正得到畸变校正之后的图像,畸变校正之后的图像经过透视变换得到鸟瞰图。因此,我们只需计算并得到透视变换算式和畸变校正算式的“逆运算”,即可实现“逆推”过程:鸟瞰图经过逆透视变换得到畸变校正后的图像,畸变校正后的图像经过逆畸变校正得到畸变图像。
使用Psrc表示原始畸变图像中的角点坐标,Pbv表示鸟瞰图中的角点坐标,则“正推”过程可以表示如下:
Pbv=H[C(Psrc)]
其中,C代表畸变校正,H代表透视变换。
而逆推过程可以表示如下:
Psrc=C-1[H-1(Pbv)]
其中C-1C-1代表逆畸变校正,H-1H-1代表逆透视变换。
那么如何根据畸变校正参数和透视变换参数来获取逆畸变校正、逆透视变换的参数呢?由于摄像头内参数、透视变换参数均为3x3的矩阵,因此仅需求这两个矩阵的逆矩阵即可;至于摄像头畸变模型的逆运算,视使用的模型而定。对于前文提到的多项式径向畸变模型实施例,实际上只需简单地求该多项式的逆运算即可,但需要注意自变量区间的选取。
605:根据各个鸟瞰图的重叠区域中的控制点位置,进行各个鸟瞰图的自动拼接,获取拼接参数;
在对上述605步骤进行详细说明之前,先介绍图像拼接参数如下:
图像拼接参数:
图像拼接参数,主要包含了每个方向的鸟瞰图在最终的全景图中的相对位置,以及镜像参数等。由于经过校正之后的图像不可能达到毫无误差的水平,因此应该根据控制点在最终鸟瞰图中的实际位置,适当调整四幅最终鸟瞰图在全景图中的位置,从而将拼接线处的“错位”现象调整至最小,这正是标定方法的最后一个步骤。
前右后左四个方向的鸟瞰图生成完毕之后,需要将其旋转后放置于全景拼接图中。因此,需要确定上述四个鸟瞰图与全景拼接图的相对位置。
首先,根据前方鸟瞰图中控制点的实际坐标,将上述前方鸟瞰图固定在全景拼接图中的上方居中位置;然后,根据右方鸟瞰图与上述前方鸟瞰图重叠区域中控制点的实际坐标,确定上述右方鸟瞰图与前方鸟瞰图的相对位移,从而确定上述右方鸟瞰图在全景拼接图中的相对位置;然后,根据左方鸟瞰图与上述前方鸟瞰图重叠区域中控制点的实际坐标,确定上述左方鸟瞰图与前方鸟瞰图的相对位移,从而确定上述左方鸟瞰图在全景拼接图中的相对位置;最后,根据后方鸟瞰图与上述右方鸟瞰图和左方鸟瞰图的两个重叠区域中全部控制点的实际坐标,确定上述后方鸟瞰图在全景拼接图中的相对位置;确定上述各个鸟瞰图在全景拼接图中的相对位置之后,即可生成最终的全景拼接图。
606:保存上述标定参数,根据上述标定参数生成输出与输入的像素映射表,进而生成实时全景拼接图。
自动标定运算所生成的新标定参数需要被保存在非掉电易失性存储器中,当全景泊车系统重新启动时,可以将上述的标定参数载入,生成像素映射表,进而生成实时全景拼接图。
通过本发明实施例所提出的自动标定方法,包括上述的网格型标定图案、流水线式操作以及一整套自动标定算法,可以实现全景泊车系统的自动化标定操作,这样既降低了对装车工人的要求,又可以大大提高全景泊车系统的批量生产速度。
以下提供一个较佳实施例,用于进一步阐述本发明实施例的技术方案,并不因此而限定具体的保护范围。下面结合具有四个摄像头的全景泊车系统实例对本专利上述的一整套自动标定方法进行详细说明。
图7所示为具有四个摄像头的全景泊车系统,四个180°广角摄像头110、120、130、140分别安装于前车标、后车厢把手以及两侧后视镜的下方,其采样区域分别为110a、120a、130a和140a。
假定车长H为4.8米,车宽W为1.8米,则标定图案可以设为所示的规格,其中线条宽度为5厘米,最靠近车身的线条距离车身10厘米,方格大小均为1米*1米。另外,在车身四个方向的正中央位置P1、P2、P3、P4处分别有标记块,上述标记块的大小为25厘米*25厘米。上述标定图案的背景材料采用黑色材料,上述线条以及标记块为黄色材料。
首先,将所示的待标定车辆驶入所示的标定图案中心位置,然后对110、120、130和140每一个摄像头的原始输入视频流抓取一张图片。由于全景泊车系统中普遍使用广角摄像头,因此抓取的图像会出现较大的几何畸变。
抓取图片完成后,可以立即将当前车辆驶出标定图案所在区域,继续完成后续步骤;并立即驶入下一车辆,抓取图片。上述下一车辆完成抓图操作后,立刻驶出标定图案区域,继续完成后续步骤,其后的车辆立即驶入标定区域,进行抓图操作。生产线上的所有车辆依此规律并行生产,可以有效提高整体标定速度。
然后,对于已经完成抓图的车辆,运行自动标定程序,生成全景泊车系统的标定参数:
使用全景泊车系统内置的默认参数生成鸟瞰图;
在上述的鸟瞰图中,识别标记块;
在上述的鸟瞰图中,识别网格的各个控制点;
利用控制点实际位置与理想位置的差异来进行最优化,从而得到镜头畸变校正参数和透视变换参数;
根据鸟瞰图的重叠区域中的控制点位置,进行自动拼接,获取拼接参数;
保存畸变校正、透视变换和拼接参数,根据上述畸变校正、透视变换和拼接参数,生成全景拼接图与原始图像的像素映射表;
根据像素映射表来进行实时图像变换,生成实时全景拼接图。
自动标定程序运行完毕后,即可将生成的全景泊车标定参数保存在系统的存储器中,从而完成了整个自动标定流程。这样,设备再次启动时,即可从存储器中加载标定之后的新参数,并根据新参数生成全景拼接图,上述全景拼接图的效果如图8所示。驾驶员只需观察车载液晶屏所显示的全景鸟瞰图,并正确地操控车辆,即可保证泊车安全。
通过本发明实施例所提出的自动标定方法,可以实现全景泊车系统的自动化标定操作,这样既降低了对装车工人的要求,又可以大大提高全景泊车系统的批量生产速度。
如图8所示,本发明实施例还提供了一种全景泊车的标定装置,包括:
图片获取单元801,用于获取车辆摄像头的抓取到的图片;上述图片由设置于车辆上的广角摄像头在车辆停发在标定图案上时抓取,上述标定图案包含浅色的线条以及至少四个标记块,线条在深色的载体上呈网状排列,四个标记块设置于网状排列的线条的交叉点上的前后左右四个方向上,上述标记块面积大于交叉点面积;
鸟瞰图生成单元802,用于使用全景泊车系统的默认参数生成鸟瞰图;
识别控制单元803,用于在上述鸟瞰图中识别标记块,并依据上述标记块识别控制点,获得控制点的实际位置和理想位置,上述控制点为网状排列的线条的交叉点;上述理想位置为在鸟瞰图中所指定的位置;
参数计算单元804,用于利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与上述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数。
可选地,上述识别控制单元803,具体用于根据上述鸟瞰图的标记块的实际位置与理想位置的偏移量以及各个控制点的理想位置,推断各个控制点的估计位置;在上述估计位置的设定临域内使用二维线性滤波器算子对上述鸟瞰图进行二维滤波,得到二维滤波结果,确定滤波结果中的最大滤波响应点为控制点的实际位置。
可选地,上述识别控制单元803,用于在上述估计位置的设定临域内使用二维线性滤波器算子对上述鸟瞰图进行二维滤波,得到二维滤波结果包括:具体用于在上述估计位置的设定临域内使用大小为m*n的滤波器w对大小为M*N的鸟瞰图f进行线性空间滤波,其结果为:
W为二维滤波器、f为待滤波图像、g为滤波后图像、m为二维滤波器宽度、n为二维滤波器高度,M为待滤波图像的宽度、N为待滤波图像的高度、x为待滤波图像中滤波前和滤波后某一个像素的水平座标、y为待滤波图像中滤波前和滤波后某一个像素的垂直座标、s为二维滤波器中某个像素的水平坐标、t为二维滤波器中某个像素的垂直坐标、a和b是两个临时变量,其中a=(m-1)/2,b=(n-1)/2。
可选地,上述参数计算单元804,用于利用各控制点在鸟瞰图中的实际位置与理想位置的差异来进行最优化,得到与上述鸟瞰图对应的广角摄像头的镜头畸变校正参数和透视变换参数包括:具体用于假设畸变校正之后的某一点P坐标为(Xc,Yc),经过透视变换之后的坐标为(Xb,Yb),则透视变换过程记为: 其中,算式右侧的3*3矩阵即为上述的视角变换矩阵;对上述视角变换矩阵求逆,实现从鸟瞰图向畸变校正结果的逆推运算;
在启动最优化运算前,使用默认参数将各个控制点的坐标,逆推回源畸变图像上控制点的坐标P0,然后,在最优化的每次迭代过程中,使用最优化的当前迭代值,将上述逆推运算的结果正推至鸟瞰图坐标Pt,并将上述正推结果Pt与标定图案控制点的理想坐标P进行比较,其误差的和作为最优化状态的评估值:
在迭代值已趋于稳定,并且此稳定值使得上述评估函数接近于极小值时,终止最优化的迭代过程,以当前迭代结果作为最终的畸变校正参数和透视变换参数。
进一步地,如图9所示,上述装置还包括:
拼接控制单元901,用于根据各鸟瞰图的重叠区域中的标记块的位置进行自动拼接,获取拼接参数;根据上述畸变校正参数、透视变换参数以及拼接参数,生成全景拼接图与原始图像的像素映射表,根据像素映射表将广角摄像头拍摄的实时图像变换生成实时全景拼接图。
进一步地,如图10所示,上述装置还包括:
存储单元1001,用于保存上述镜头畸变校正参数、透视变换参数以及拼接参数;或者,上述像素映射表。
通过本发明实施例所提出的自动标定方法,可以实现全景泊车系统的自动化标定操作,这样既降低了对装车工人的要求,又可以大大提高全景泊车系统的批量生产速度。
值得注意的是,上述装置实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。