发明内容
本申请提供一种车载摄像头标定方法、装置、设备及存储介质,以解决采用Harris角点检测算法定位标定布的角点耗时较长,进而导致摄像头标定的效率不高的问题。
第一方面,本申请提供一种车载摄像头标定方法,包括:
通过目标摄像头获取包含棋盘格标定布的灰度图像;
获取灰度图像的方向梯度直方图特征;
将方向梯度直方图特征输入至角点分类器,获取角点候选框,其中,角点候选框用于表示灰度图像中存在角点的位置区域,角点分类器用于基于输入的方向梯度直方图特征得到方向梯度直方图特征对应的角点候选框;
对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置;
根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置;
根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参。
可选的,获取灰度图像的方向梯度直方图特征,包括:对包含棋盘格标定布的灰度图像进行归一化处理;获取归一化后的图像对应预设方向的梯度;根据梯度,获取归一化后的图像中每个细胞单元对应的梯度直方图,细胞单元包含M*M个像素,M为大于或等于1的整数;对归一化后的图像依次划分块,对每一块内的细胞单元对应的梯度直方图进行归一化处理,获得块对应的方向梯度直方图特征,块包括至少一个细胞单元;拼接所有块对应的方向梯度直方图特征,获得灰度图像的方向梯度直方图特征。
可选的,将方向梯度直方图特征输入至角点分类器,获取角点候选框,包括:以预设窗口按照预设步进在归一化后的图像中按行匀速滑动,获得多个初始候选框及每一个初始候选框在归一化后的图像中对应的坐标;获取每一个初始候选框对应的方向梯度直方图特征;依次将初始候选框对应的方向梯度直方图特征输入至角点分类器,获取角点候选框。
可选的,获取角点候选框之后,该车载摄像头标定方法还包括:根据每一个初始候选框在归一化后的图像中对应的坐标,获取角点候选框在包含棋盘格标定布的灰度图像中的位置。
可选的,对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置,包括:针对任一角点候选框,根据角点候选框的灰度图像进行二值化处理,对二值化处理后的图像进行霍夫直线检测,获得角点候选框内两条直线的交点在角点候选框中的坐标;根据交点在角点候选框中的坐标,确定角点在角点候选框中的位置。
可选的,通过目标摄像头获取包含棋盘格标定布的灰度图像,包括:通过目标摄像头获取包含棋盘格标定布的鱼眼图数据;根据预设值对鱼眼图数据进行俯视变换,获取包含棋盘格标定布的灰度图像。
可选的,角点分类器是通过以下方式获取的:获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小与块相同;获取正样本和负样本分别对应的方向梯度直方图特征;根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
第二方面,本申请提供一种角点分类器的训练方法,包括:
获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小相同;
获取正样本和负样本分别对应的方向梯度直方图特征;
根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
第三方面,本申请提供一种车载摄像头标定装置,包括:
第一获取模块,用于通过目标摄像头获取包含棋盘格标定布的灰度图像;
第二获取模块,用于获取灰度图像的方向梯度直方图特征;
第三获取模块,用于将方向梯度直方图特征输入至角点分类器,获取角点候选框,其中,角点候选框用于表示灰度图像中存在角点的位置区域,角点分类器用于基于输入的方向梯度直方图特征得到方向梯度直方图特征对应的角点候选框;
第一确定模块,用于对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置;
第二确定模块,用于根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置;
第三确定模块,用于根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参。
可选的,第二获取模块具体用于:对包含棋盘格标定布的灰度图像进行归一化处理;获取归一化后的图像对应预设方向的梯度;根据梯度,获取归一化后的图像中每个细胞单元对应的梯度直方图,细胞单元包含M*M个像素,M为大于或等于1的整数;对归一化后的图像依次划分块,对每一块内的细胞单元对应的梯度直方图进行归一化处理,获得块对应的方向梯度直方图特征,块包括至少一个细胞单元;拼接所有块对应的方向梯度直方图特征,获得灰度图像的方向梯度直方图特征。
可选的,第三获取模块具体用于:以预设窗口按照预设步进在归一化后的图像中按行匀速滑动,获得多个初始候选框及每一个初始候选框在归一化后的图像中对应的坐标;获取每一个初始候选框对应的方向梯度直方图特征;依次将初始候选框对应的方向梯度直方图特征输入至角点分类器,获取角点候选框。
可选的,第三获取模块还用于,在获取角点候选框之后,根据每一个初始候选框在归一化后的图像中对应的坐标,获取角点候选框在包含棋盘格标定布的灰度图像中的位置。
可选的,第一确定模块具体用于:针对任一角点候选框,根据角点候选框的灰度图像进行二值化处理,对二值化处理后的图像进行霍夫直线检测,获得角点候选框内两条直线的交点在角点候选框中的坐标;根据交点在角点候选框中的坐标,确定角点在角点候选框中的位置。
可选的,第一获取模块具体用于:通过目标摄像头获取包含棋盘格标定布的鱼眼图数据;根据预设值对鱼眼图数据进行俯视变换,获取包含棋盘格标定布的灰度图像。
可选的,角点分类器是通过以下方式获取的:获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小与块相同;获取正样本和负样本分别对应的方向梯度直方图特征;根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
第四方面,本申请提供一种角点分类器的训练装置,包括:
第一获取模块,用于获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小相同;
第二获取模块,用于获取获取正样本和负样本分别对应的方向梯度直方图特征;
训练模块,用于根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
第五方面,本申请提供一种电子设备,包括:存储器和处理器;
存储器用于存储程序指令;
处理器用于调用存储器中的程序指令执行如本申请第一方面所述的车载摄像头标定方法。
第六方面,本申请提供一种电子设备,包括:存储器和处理器;
存储器用于存储程序指令;
处理器用于调用存储器中的程序指令执行如本申请第二方面所述的角点分类器的训练方法。
第七方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序指令,计算机程序指令被执行时,实现如本申请第一方面所述的车载摄像头标定方法。
第八方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序指令,计算机程序指令被执行时,实现如本申请第二方面所述的角点分类器的训练方法。
第九方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本申请第一方面所述的车载摄像头标定方法。
第十方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如本申请第二方面所述的角点分类器的训练方法。
本申请提供的车载摄像头标定方法、装置、设备及存储介质,通过目标摄像头获取包含棋盘格标定布的灰度图像,获取灰度图像的方向梯度直方图特征,将方向梯度直方图特征输入至角点分类器,获取角点候选框,对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置,根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置,根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参。由于本申请通过包含棋盘格标定布的灰度图像方向梯度直方图特征以及角点分类器对灰度图像进行单通道、单尺度的粗提取,确定了角点候选框,进而对角点候选框对应的方向梯度直方图特征进行霍夫变换,以精定位角点坐标,因此,能够更加快速准确地获得角点坐标,进行摄像头内参和外参的标定,从而大大提高了摄像头标定的效率。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请涉及的部分技术术语进行解释说明:
梯度,即一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模,也可以称为梯度的幅值)。
方向梯度直方图(Histogram of Oriented Gradient,HOG)特征,即一种在计算机视觉和图像处理中用来进行物体检测的特征描述器,HOG特征通过计算和统计图像局部区域的梯度直方图来构成特征。
支持向量机(Support Vector Machine,SVM),即一类按监督学习方式对数据进行二元分类的广义线性分类器。
霍夫(Hough)变换,即一种特征检测,用于检测图像中直线、圆、抛物线、椭圆等形状能够用一定函数关系描述的曲线。
在车辆生产过程中,需要对每一辆车进行摄像头标定,标定数据可以用于360°环视、泊车检测和障碍物检测等。示例性地,在摄像头标定过程中,由车辆的前、后、左、右四个摄像头采集标定相关的数据,然后将采集到的标定相关的数据发送给车辆内的处理器(也可以称为数据处理单元)完成标定。在整个摄像头标定的环节中,核心的环节包括快速准确地定位标定布的角点,进而基于角点坐标,利用预设公式反算确定摄像头的内参和外参,完成摄像头标定的过程。
图1为本申请一实施例提供的车载摄像头标定的布局示意图,如图1所示,车辆停在一个由棋盘格标定布围成的固定的车位上,车辆的前、后、左、右各安装有一个摄像头。参考图1,目前的摄像头标定流程,通常需要将车辆摄像头获得的包含棋盘格标定布的图像进行俯视变换,然后再进行角点检测,通常采用哈里斯角点检测算法,但哈里斯角点检测算法需要进行大量的协方差矩阵运算,因此,定位标定布的角点耗时较长,进而导致摄像头标定的效率不高,且,在一些场景中,比如棋盘格标定布不平整等情况,哈里斯角点检测算法的鲁棒性不高。另外,还有基于深度学习的端到端角点检测算法,鲁棒性有一定的提高,但是网络模型相对复杂,耗时较大,导致标定相关的数据采集成本较高。
基于上述问题,本申请提供一种车载摄像头标定方法、装置、设备及存储介质,通过粗提取和精定位两个阶段的处理确定棋盘格标定布包含的角点,进而基于角点坐标,确定摄像头的内参和外参,完成摄像头标定的过程。
以下,首先对本申请提供的方案的应用场景进行示例说明。
图2为本申请一实施例提供的应用场景示意图。如图2所示,本应用场景中,车辆的摄像头210将获得的包含棋盘格标定布的图像发送给车辆的处理器220,车辆的处理器220根据包含棋盘格标定布的图像对车辆的摄像头210进行标定。车辆的处理器220根据包含棋盘格标定布的图像对车辆的摄像头210进行标定的具体实现过程可以参见下述各实施例的方案。
需要说明的是,图2仅是本申请实施例提供的一种应用场景的示意图,本申请实施例不对图2中包括的设备进行限定,也不对图2中设备之间的位置关系进行限定。
图3为本申请一实施例提供的车载摄像头标定方法的流程图。本申请实施例的方法可以应用于电子设备中,该电子设备例如为车辆的处理器。如图3所示,本申请实施例的方法包括:
S301、通过目标摄像头获取包含棋盘格标定布的灰度图像。
本申请实施例中,棋盘格标定布因其对比高,易识别的特点,被广泛用作标定参照物。示例性地,图4为本申请一实施例提供的车辆右侧摄像头获取的包含棋盘格标定布的灰度图像的示意图,图4示出了车辆的右侧摄像头的标定场景,包含棋盘格标定布的灰度图像为俯视图,该灰度图像中包含交叉排列的黑格和白格,黑格和白格相交的位置即为角点。车辆的前、后、左、右四个摄像头都需要标定,这里以右侧摄像头为例,其它摄像头标定流程类似。对于如何获取包含棋盘格标定布的灰度图像,可参考相关技术或者后续实施例,此处不再赘述。
S302、获取灰度图像的方向梯度直方图特征。
该步骤中,通常利用多通道信息,即多个颜色分量的多个梯度方向(比如9个方向),而本申请实施例中的摄像头标定场景,比如参考图4,包含棋盘格标定布的灰度图像尺度固定且特征明显,只需要单个颜色分量(因为是灰度图像)的比如4个梯度方向以及单个尺度的图像梯度即可获得HOG特征。在获得了包含棋盘格标定布的灰度图像后,可以获取灰度图像的HOG特征。对于如何获取灰度图像的HOG特征,可参考相关技术或者后续实施例,此处不再赘述。
S303、将方向梯度直方图特征输入至角点分类器,获取角点候选框。
其中,角点候选框用于表示灰度图像中存在角点的位置区域,角点分类器用于基于输入的方向梯度直方图特征得到方向梯度直方图特征对应的角点候选框。
示例性地,角点分类器比如为SVM,可以预先训练好SVM,用于基于输入的HOG特征得到HOG特征对应的角点候选框。对于如何训练SVM,可参考相关技术或者后续实施例,此处不再赘述。在图像处理领域,特征通道通常有颜色通道、梯度通道(包括梯度幅值通道和梯度方向通道)和边缘通道等,其中,颜色通道比如红绿蓝(Red、Green、Blue,RGB)颜色通道、色彩空间通道、灰度通道。参考图4所示的俯视图,其中,黑格和白格相交位置处角点的梯度特征非常明显,为了快速的提取HOG特征,本申请实施例仅使用梯度通道进行HOG特征提取。另外,由于摄像头标定过程中,车辆的摄像头和棋盘格标定布保持固定的位置关系,因此,特征尺度单一,不需要图像金字塔,直接在当前尺度下进行HOG特征提取。在获得了灰度图像的HOG特征后,将HOG特征输入至角点分类器,可以获得角点候选框。
示例性地,图5为本申请一实施例提供的包含棋盘格标定布的灰度图像中包含的角点候选框的示意图,如图5所示,包含棋盘格标定布的灰度图像中,在灰度图像中确定了多个角点候选框510。
可以理解,S301至S303步骤为确定棋盘格标定布包含的角点的粗提取阶段。
S304、对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置。
S305、根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置。
在获得了角点候选框后,可以对角点候选框对应的HOG特征进行Hough变换,确定角点在角点候选框中的位置,根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置,也可以理解为角点对应包含棋盘格标定布的灰度图像像素坐标系的坐标信息,即将角点在角点坐标系中的坐标转换为包含棋盘格标定布的灰度图像坐标系中。对于如何获取角点候选框在包含棋盘格标定布的灰度图像中的位置,可以参考相关技术或者后续实施例,此处不再赘述。示例性地,图6为本申请一实施例提供的包含棋盘格标定布的灰度图像中包含的角点的示意图,如图6所示,包含棋盘格标定布的灰度图像中,在每个黑格和白格相交的位置处确定了对应的角点610。对于如何对角点候选框对应的HOG特征进行霍夫变换,确定角点在角点候选框中的位置,可参考相关技术或者后续实施例,此处不再赘述。可以理解,S304和S305步骤为确定棋盘格标定布的角点的精定位阶段。
S306、根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参。
该步骤中,目标摄像头的内参和外参可以参考目前的相关技术,示例性地,目标摄像头的内参包括:r、u0、v0、f,其中,/>表示一个像素在相机坐标系x轴方向的单位长度;/>表示一个像素在相机坐标系y轴方向的单位长度;r表示图像像素坐标系的坐标轴倾斜参数,默认为0;u0表示图像像素坐标系中图像的中心像素坐标和图像原点像素坐标之间相差的横向像素数;v0表示图像像素坐标系中图像的中心像素坐标和图像原点像素坐标之间相差的纵向像素数;f表示摄像头的焦距。目标摄像头的外参包括:ω、δ、θ、Tx、Ty、Tz,其中,ω、δ、θ分别为世界坐标系中X轴、Y轴、Z轴对应的旋转参数,即分别对应三个旋转角度,然后把每个轴的3*3旋转矩阵进行组合(即先矩阵之间相乘),得到集合X轴、Y轴、Z轴这三个轴旋转信息的R(矩阵),R为3*3的矩阵;世界坐标系的原点在摄像头坐标系中的坐标用t表示,Tx、Ty、Tz分别为t的X轴、Y轴、Z轴对应的平移参数。R和t组合成的3*4的矩阵,绕X轴旋转θ。
在确定了角点在包含棋盘格标定布的灰度图像中的位置后,具体如何根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参,可参考相关技术。示例性地,可以通过图像物理坐标系、图像像素坐标系、摄像头坐标系、世界坐标系的转换公式确定摄像头的内参和外参,比如可以通过如下转换公式确定目标摄像头的内参和外参:
其中,Zc表示摄像头深度信息,u和v表示图像像素坐标系中像素的位置,即角点对应的包含棋盘格标定布的灰度图像像素坐标系的坐标信息;0T中的0表示矩阵,0T表示该矩阵的转置矩阵;其他参数可以参见上述实施例。
本申请实施例提供的车载摄像头标定方法,通过目标摄像头获取包含棋盘格标定布的灰度图像,获取灰度图像的方向梯度直方图特征,将方向梯度直方图特征输入至角点分类器,获取角点候选框,对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置,根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置,根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参。由于本申请实施例通过包含棋盘格标定布的灰度图像方向梯度直方图特征以及角点分类器对灰度图像进行单通道、单尺度的粗提取,确定了角点候选框,进而对角点候选框对应的方向梯度直方图特征进行霍夫变换,以精定位角点坐标,因此,能够更加快速准确地获得角点坐标,进行摄像头内参和外参的标定,从而大大提高了摄像头标定的效率。
在上述实施例的基础上,S301、通过目标摄像头获取包含棋盘格标定布的灰度图像,可以进一步包括:通过目标摄像头获取包含棋盘格标定布的鱼眼图数据;根据预设值对鱼眼图数据进行俯视变换,获取包含棋盘格标定布的灰度图像。
示例性地,预设值比如为经验值。示例性地,参考图4,可以通过车辆的右侧摄像头获取包含棋盘格标定布的鱼眼图数据,基于摄像头厂家提供的摄像头内参、车厂提供的摄像头的安装高度和安装角度(即摄像头的外参),根据经验值对鱼眼图数据进行校正处理,即进行俯视变换,获取包含棋盘格标定布的灰度图像。可选的,通过车辆的右侧摄像头获取包含棋盘格标定布的鱼眼图数据可以是彩色图像,根据预设值对鱼眼图数据进行俯视变换后,将彩色图像转化为包含棋盘格标定布的灰度图像。
可选的,角点分类器是通过以下方式获取的:获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小与块相同;获取正样本和负样本分别对应的方向梯度直方图特征;根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
示例性地,角点分类器比如为SVM,在角点候选框检测中用于区分角点候选框和角点候选框。SVM分类的过程,可以理解为线性角点分类器的求解,即最大化离超平面最近点(即支持向量)到该平面的距离。SVM的核函数能简化映射空间中的内积运算,SVM的核函数的求解等效求解多元线性方程组,主要运算由矩阵乘法和加法构成,适合进行平台的并行加速和优化。角点分类器获取的过程,即是角点分类器训练的过程,对于如何训练角点分类器,可参考相关技术或者后续实施例,此处不再赘述。
图7为本申请另一实施例提供的车载摄像头标定方法的流程图。在上述实施例的基础上,本申请实施例对如何获取灰度图像的方向梯度直方图特征进行进一步说明。如图7所示,步骤S302可以进一步包括:
S701、对包含棋盘格标定布的灰度图像进行归一化处理。
在图像的纹理强度中,局部的表层曝光贡献的比重较大,为了减少光照因素的影响,通过对图像进行归一化处理,能够有效地降低图像局部的阴影和光照变化。该步骤中,对灰度图像进行归一化处理,以平滑和去噪。具体归一化的方式,可参考目前已有的相关技术,此处不再赘述。
S702、获取归一化后的图像对应预设方向的梯度。
在对灰度图像进行归一化处理后,可以获取归一化后的图像对应横坐标方向(即图像水平方向)和纵坐标方向(即图像垂直方向)的梯度,即求导操作。求导操作不仅能够捕获棋盘格标定布中棋盘格的轮廓和一些纹理信息,还能进一步弱化光照的影响。示例性地,可以通过如下公式获取归一化后的图像对应预设坐标轴方向的梯度:
G(x,y)=dx(i,j)+dy(i,j)
其中,G(x,y)表示像素点(i,j)的梯度幅值,dx(i,j)表示像素点(i,j)在x方向的灰度差值,dx(i,j)=I(i+1,j)-I(i,j),其中,I(i+1,j)表示像素点(i+1,j)对应的灰度值,I(i,j)表示像素点(i,j)对应的灰度值,dy(i,j)表示像素点(i,j)在y方向的灰度差值,dy(i,j)=I(i,j+1)-I(i,j),其中,I(i,j+1)表示像素点(i,j+1)对应的灰度值。
S703、根据梯度,获取归一化后的图像中每个细胞单元对应的梯度直方图。
其中,细胞单元包含M*M个像素,M为大于或等于1的整数。
该步骤中,将归一化后的图像划分为细胞单元(cell)相当于为局部图像区域提供一个编码,同时能够保持对图像中棋盘格对象的轮廓和外观的弱敏感性。示例性地,M比如为6,将归一化后的图像划分为多个细胞单元,每个细胞单元包含6*6个像素。在获得了归一化后的图像对应预设坐标轴方向的梯度(包括梯度方向、梯度幅值)后,根据梯度,获取归一化后的图像中每个细胞单元对应的梯度直方图。示例性地,图8为本申请一实施例提供的单个细胞单元的梯度直方图的示意图。如图8所示,横坐标表示9个梯度方向,纵坐标表示不同梯度方向的像素个数。参考图8,采用了9个梯度方向的直方图来统计包含6*6个像素的细胞单元的梯度信息,即将细胞单元的梯度方向360°(对应图8中的2π)分成9个方向块。假设一个像素的梯度方向在60度至80度之间,则图8中的直方图810的计数就加一,依此类推,对细胞单元内每个像素用梯度方向在直方图中进行加权投影(即映射到固定的角度范围);梯度幅值用于作为直方图中投影的权值,比如一个像素的梯度方向在60度至80度之间,该像素的梯度幅值为2,则图8中的直方图810的计数加二。根据细胞单元中每个像素的梯度方向、梯度幅值,可以获得该细胞单元的梯度直方图,即该细胞单元对应的9维特征向量。
S704、对归一化后的图像依次划分块,对每一块内的细胞单元对应的梯度直方图进行归一化处理,获得块对应的方向梯度直方图特征。其中,块包括至少一个细胞单元。
示例性地,图9为本申请一实施例提供的2*2个细胞单元组成的块的示意图。如图9所示,每个细胞单元包含6*6个像素,4个细胞单元就近组合成大的、空间上连通的块(block),该块由2*2个细胞单元组成。考虑到局部光照的变化会引起梯度强度的变化范围非常大,因此,对归一化后的图像中块内的细胞单元对应的梯度直方图进行归一化处理,归一化处理能够进一步地对光照、阴影和边缘进行压缩。具体归一化的方式,可参考目前已有的相关技术,此处不再赘述。示例性地,将一个块内所有细胞单元的特征向量(包括梯度方向、梯度幅值)串联起来,即将把每个块内所有细胞单元的特征向量组合合并起来,可以获得该块对应的HOG特征。可选的,由于块与块之间有一定的步进,步进小于块的宽度,则不同的块之间会有重叠,相应地,每一个细胞单元的特征向量会以不同的结果多次出现在最终获得的特征向量中。示例性地,可以将归一化之后的块描述符(即向量)称为HOG描述符,即HOG特征。需要说明的是,块也可以称为区间,区间有两个主要的几何形状:矩形区间和环形区间。本申请实施例中使用矩形区间,矩形区间包含多个方形的格子,矩形区间可以由三个参数来表征:每个区间中细胞单元的数目、每个细胞单元中像素点的数目、每个细胞单元的直方图通道数目。比如,一个块由3×3个细胞单元组成,每个细胞单元包含6×6个像素,每个细胞单元的直方图通道数目为9个,则该块的HOG特征数为:3*3*9。
S705、拼接所有块对应的方向梯度直方图特征,获得灰度图像的方向梯度直方图特征。
在获得了块对应的方向梯度直方图特征,可以拼接所有块对应的方向梯度直方图特征,获得灰度图像的方向梯度直方图特征。
进一步地,拼接所有块对应的方向梯度直方图特征,获得灰度图像的方向梯度直方图特征,可以包括:依次将灰度图像内的块对应的方向梯度直方图特征顺序存储至内存中,获得灰度图像的方向梯度直方图特征。
示例性地,将灰度图像中N*N个细胞单元组成一个block(比如3*3个细胞单元组成一个块),一个块内所有细胞单元的特征串联起来,即在内存中顺序存放每个块的特征,获得该块的HOG特征。将灰度图像内所有块的HOG特征串联起来,获得该灰度图像的HOG特征。例如,对于64*128个像素的图像,每8*8个像素组成一个细胞单元,每2*2个细胞单元组成一个块,因为每个细胞单元有9维特征向量,则每个块内有36(即4*9)个HOG特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口,该64*128个像素的图像,共有3780(即36*7*15)个HOG特征。
本申请实施例提供的车载摄像头标定方法,能够准确地获得灰度图像的方向梯度直方图特征,且,由于对灰度图像进行单通道、单尺度的粗提取,因此,能够有效减少HOG特征的维度,形成轻量级的特征向量,即HOG特征。
在上述实施例的基础上,S303、将方向梯度直方图特征输入至角点分类器,获取角点候选框,可以进一步包括:以预设窗口按照预设步进在归一化后的图像中按行匀速滑动,获得多个初始候选框及每一个初始候选框在归一化后的图像中对应的坐标;获取每一个初始候选框对应的方向梯度直方图特征;依次将初始候选框对应的方向梯度直方图特征输入至角点分类器,获取角点候选框。
示例性地,以预设窗口按照预设步进在归一化后的图像中按行或按列滑动获得初始候选框,每滑动一次获得一个初始候选框,因此,可针对归一化后的图像获得多个初始候选框及每一个初始候选框在归一化后的图像中对应的坐标。在另一实施例中,也可以以预设窗口按照预设步进在包含棋盘格标定布的灰度图像中按行或按列滑动,每滑动一次获得一个初始候选框,因此,可针对包含棋盘格标定布的灰度图像获得多个初始候选框及每一个初始候选框在包含棋盘格标定布的灰度图像中对应的坐标。在又一实施例中,预设窗口以及初始候选框的尺寸与训练角点分类器时的样本尺寸相同,预设步进为小于等于该样本在行方向尺寸或者列方向的尺寸。获取每一个初始候选框对应的方向梯度直方图特征;依次将初始候选框对应的方向梯度直方图特征输入至角点分类器,确定初始候选框是否为角点候选框,进而获得角点候选框。
在上述实施例的基础上,可选的,获取角点候选框之后,还可以包括:根据每一个初始候选框在归一化后的图像中对应的坐标,获取角点候选框在包含棋盘格标定布的灰度图像中的位置。
示例性地,在获得了角点候选框后,根据每一个初始候选框在归一化后的图像中对应的坐标,获取角点候选框在包含棋盘格标定布的灰度图像中的位置,即在判断初始候选框为角点候选框的情况下,根据初始候选框在归一化后的图像中的坐标确定角点候选框在包含棋盘格标定布的灰度图像中的位置。可以理解,归一化后的图像为将包含棋盘格标定布的灰度图像归一化获得的图像,两个图像的坐标相对应。比如,包含棋盘格标定布的灰度图像和归一化后的图像分别对应的坐标系均为以图像左上角为原点,上边缘为X轴,左边缘为Y轴建立的坐标系。
示例性地,预设窗口比如为16*16像素组成的窗口,预设步进比如为2个像素的步进。示例性地,首先以预设窗口的尺寸对棋盘格标定布的灰度图像(或者归一化后的图像)进行均匀划分,获得多个初始候选框,每个初始候选框的尺寸和预设窗口的尺寸相同,每个初始候选框都有对应的索引序号,比如用0至Q分别表示每一个初始候选框对应的索引序号。可以理解,每一个初始候选框的索引序号对应唯一的初始候选框在棋盘格标定布的灰度图像(或者归一化后的图像)中的坐标或者在灰度图像中的坐标,即在粗提取阶段,可以根据初始候选框的索引序号以及初始候选框的尺寸快速还原每一个初始候选框在棋盘格标定布的灰度图像(或者归一化后的图像)中的位置。
根据S705步骤获取每一个初始候选框对应的方向梯度直方图特征;依次将每一个初始候选框对应的方向梯度直方图特征输入至角点分类器,确定该初始候选框是否为角点候选框。若是该初始候选框为角点候选框,则根据每一个初始候选框在棋盘格标定布的灰度图像(或者归一化后的图像)中对应的坐标。
在上述实施例的基础上,S304、对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置,可以进一步包括:针对任一角点候选框,根据角点候选框的灰度图像进行二值化处理,对二值化处理后的图像进行霍夫直线检测,获得角点候选框内两条直线的交点在角点候选框中的坐标;根据交点在角点候选框中的坐标,确定角点在角点候选框中的位置。
示例性地,针对任一角点候选框,根据角点候选框的灰度图像进行二值化处理,对二值化处理后的图像进行霍夫直线检测,获得角点候选框内两条直线的交点为角点,同时,根据交点在角点候选框中的坐标,可以获得角点在角点候选框坐标系中的坐标,即角点在角点候选框中的位置。其中,角点候选框坐标系为以角点候选框左上角为原点,上边缘为X轴,左边缘为Y轴建立的坐标系。
示例性地,参考图5,将HOG特征输入至角点分类器,获取了角点候选框,即确定了角点候选框在灰度图像中的位置(也可以称为坐标)。示例性地,图10为本申请一实施例提供的一个角点候选框的示意图。如图10所示,示出了角点候选框中的一个角点1001以及中心点1002。通常情况下,可以采用基于像素级的网格搜索和排序算法定位棋盘格标定布中角点的坐标,但是,经过俯视变换后的图像,往往呈现出中间清晰,边缘发散模糊呈锯齿状的特点,采用像素级的网格搜索和排序算法耗时较长,且,鲁棒性不足。示例性地,图11为本申请一实施例提供的进行霍夫直线检测的示意图,图12为本申请一实施例提供的通过霍夫直线检测确定角点的示意图。如图11和图12所示,经过粗提取阶段获得的角点候选框的尺寸较小,本申请实施例将角点候选框对应的HOG特征中的梯度幅值,进行二值化处理,然后将二值化处理的结果作为Hough变换的输入信息,在角点候选框中进行霍夫直线检测,检测出角点候选框内的两条直线,根据预设的两个直线方程(可参考相关技术,此处不再赘述),利用两条直线相交的方式,获取两条直线的交点以及交点在角点候选框中的坐标。图12示出了获得的角点候选框中的角点1201。根据角点候选框在灰度图像中的坐标以及交点(真实棋盘格标定布中的角点)在角点候选框中的坐标,经过坐标加减运算,可以快速准确的计算出角点在包含棋盘格标定布的灰度图像中的真实坐标。
图13为本申请一实施例提供的角点分类器的训练方法的流程图。如图13所示,本申请实施例的方法包括:
S1301、获取正样本和负样本。
其中,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小相同。
一个性能优良的角点分类器,需要大量的训练样本,且,训练样本应尽量覆盖实际摄像头标定过程中可能发生的各种情况。示例性地,角点分类器为SVM,具体地,可以为线性SVM。该步骤中,训练样本包括正样本和负样本,正样本为正常的包含角点的图片,负样本为不含角点的图片。可选的,收集到大量的训练样本之后,可以对训练样本进行裁剪以保证正样本为包含1个角点的图像,负样本为不包含角点的图片。对训练样本进行裁剪后,可以将所有的正样本放在一个文件夹中,将所有的负样本放在另一个文件夹中,并将所有的训练样本缩放到同样的尺寸大小。
S1302、获取正样本和负样本分别对应的方向梯度直方图特征。
该步骤中,获取正样本和负样本分别对应的方向梯度直方图特征的方式可以参见图3所示实施例中S302的相关描述,此处不再赘述。
S1303、根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
示例性地,初始角点分类器为SVM。该步骤中,分别对正样本和负样本赋予样本标签,例如,将所有正样本标记为1,将所有负样本标记为0。将正样本和负样本分别对应的HOG特征以及标签,输入至SVM中进行迭代训练,直至计算得到的损失函数值满足预设评估条件(比如分类错误率低于阈值)或者迭代次数达到预设迭代次数(比如至少1000次),得到角点分类器。可选的,SVM训练好之后,可以将训练结果(比如权重信息)保存为文本文件。在实际测试中,为了提高角点分类器的准确性,可以适当加入新的负样本进行排除。图14为本申请一实施例提供的角点分类器区分角点区域和非角点区域的示意图。如图14所示,方框代表正常的角点区域,圆圈代表非角点区域。通过SVM训练和分类后,可以快速完成粗提取角点候选框。
本申请实施例提供的角点分类器的训练方法,通过获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小相同,获取正样本和负样本分别对应的方向梯度直方图特征,根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至计算得到的损失函数值满足预设评估条件或者迭代次数达到预设迭代次数,得到角点分类器,标签用于区分正样本和负样本。根据本申请实施例获得的角点分类器,能够更加准确地获得角点候选框。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图15为本申请一实施例提供的车载摄像头标定装置的结构示意图,如图15所示,本申请实施例的车载摄像头标定装置1500包括:第一获取模块1501、第二获取模块1502、第三获取模块1503、第一确定模块1504、第二确定模块1505和第三确定模块1506。其中:
第一获取模块1501,用于通过目标摄像头获取包含棋盘格标定布的灰度图像。
第二获取模块1502,用于获取灰度图像的方向梯度直方图特征。
第三获取模块1503,用于将方向梯度直方图特征输入至角点分类器,获取角点候选框,其中,角点候选框用于表示灰度图像中存在角点的位置区域,角点分类器用于基于输入的方向梯度直方图特征得到方向梯度直方图特征对应的角点候选框。
第一确定模块1504,用于对角点候选框的灰度图像进行霍夫变换,确定角点在角点候选框中的位置。
第二确定模块1505,用于根据角点候选框在包含棋盘格标定布的灰度图像中的位置以及角点在角点候选框中的位置,确定角点在包含棋盘格标定布的灰度图像中的位置。
第三确定模块1506,用于根据角点在包含棋盘格标定布的灰度图像中的位置,确定目标摄像头的内参和外参。
在一些实施例中,第二获取模块1502可以具体用于:对包含棋盘格标定布的灰度图像进行归一化处理;获取归一化后的图像对应预设方向的梯度;根据梯度,获取归一化后的图像中每个细胞单元对应的梯度直方图,细胞单元包含M*M个像素,M为大于或等于1的整数;对归一化后的图像依次划分块,对每一块内的细胞单元对应的梯度直方图进行归一化处理,获得块对应的方向梯度直方图特征,块包括至少一个细胞单元;拼接所有块对应的方向梯度直方图特征,获得灰度图像的方向梯度直方图特征。
可选的,第三获取模块1503可以具体用于:以预设窗口按照预设步进在归一化后的图像中按行匀速滑动,获得多个初始候选框及每一个初始候选框在归一化后的图像中对应的坐标;获取每一个初始候选框对应的方向梯度直方图特征;依次将初始候选框对应的方向梯度直方图特征输入至角点分类器,获取角点候选框。
可选的,第三获取模块1503还可以用于,在获取角点候选框之后,根据每一个初始候选框在归一化后的图像中对应的坐标,获取角点候选框在包含棋盘格标定布的灰度图像中的位置。
在一些实施例中,第一确定模块1504可以具体用于:针对任一角点候选框,根据角点候选框的灰度图像进行二值化处理,对二值化处理后的图像进行霍夫直线检测,获得角点候选框内两条直线的交点在角点候选框中的坐标;根据交点在角点候选框中的坐标,确定角点在角点候选框中的位置。
可选的,第一获取模块1501可以具体用于:通过目标摄像头获取包含棋盘格标定布的鱼眼图数据;根据预设值对鱼眼图数据进行俯视变换,获取包含棋盘格标定布的灰度图像。
在一些实施例中,角点分类器是通过以下方式获取的:获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小与块相同;获取正样本和负样本分别对应的方向梯度直方图特征;根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
本申请实施例的装置,可以用于执行上述任一方法实施例中车载摄像头标定方法的方案,其实现原理和技术效果类似,此处不再赘述。
图16为本申请一实施例提供的角点分类器的训练装置的结构示意图,如图16所示,本申请实施例的角点分类器的训练装置1600包括:第一获取模块1601、第二获取模块1602和训练模块1603。其中:
第一获取模块1601,用于获取正样本和负样本,正样本为包含预设数量角点的图像,负样本为不包含角点的图像,正样本和负样本的尺寸大小相同。
第二获取模块1602,用于获取正样本和负样本分别对应的方向梯度直方图特征。
训练模块1603,用于根据正样本和负样本分别对应的方向梯度直方图特征以及标签,迭代训练初始角点分类器,直至初始角点分类器收敛,得到角点分类器,标签用于区分正样本和负样本。
本申请实施例的装置,可以用于执行上述任一方法实施例中角点分类器的训练方法的方案,其实现原理和技术效果类似,此处不再赘述。
图17为本申请一实施例提供的电子设备的结构示意图。示例性地,电子设备例如为车辆的处理器。参照图17,电子设备1700包括处理组件1701,其进一步包括一个或多个处理器,以及由存储器1702所代表的存储器资源,用于存储可由处理组件1701的执行的指令,例如应用程序。存储器1702中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1701被配置为执行指令,以执行上述任一方法实施例。
电子设备1700还可以包括一个电源组件1703被配置为执行电子设备1700的电源管理,一个有线或无线网络接口1704被配置为将电子设备1700连接到网络,和一个输入输出(I/O)接口1705。电子设备1700可以操作基于存储在存储器1702的操作***,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上车载摄像头标定方法的方案以及角点分类器的训练方法的方案。
本申请还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上的车载摄像头标定方法的方案以及角点分类器的训练方法的方案。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于车载摄像头标定装置或角点分类器的训练装置中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。