发明内容
本发明针对现有技术的不足,提出一种基于线特征的交通事故现场图几何校正系统。使其充分利用事故现场提取到的直线特征,通过添加平行线相对控制约束,从而有效校正了镜头畸变和透视畸变造成的事故现场图几何变形,实现了交通事故现场图的几何校正及其生成的正射影像图上的尺寸标注功能。
本发明是通过以下技术方案实现的,本发明包括五个部分:标定物信息采集模块、二维DLT(直接线性变换)系数求解模块、单应性矩阵计算模块、几何校正模块和尺寸标注模块。标定物信息采集模块负责提取控制点和控制线的相关参数信息,并将相应数据分别存入控制点数据库和控制线数据库;二维DLT系数求解模块通过与数据库的接口获取控制点和控制线的相关参数信息,经方程联立解出8个DLT系数的值;单应性矩阵计算模块根据DLT系数建立像空间到物方空间的映射关系,进而得出单应性矩阵;几何校正模块通过单应性矩阵对交通事故现场图进行几何校正,经空间坐标变换和灰度重采样生成交通事故现场正射影像图;尺寸标注模块以交通事故现场正射影像图为基础,实现直接在正射影像图上标注任意点的实际空间坐标和任意两点间的实际空间距离的功能。
本系统采用层次化和模块化结构设计,层与层之间只存在单向调用和单向依赖关系,模块之间相互协调和配合共同组成一个完整的系统。每个模块可以单独视为一层,当前层的输入数据仅依赖于上一层的输出结果,当前层的输出结果仅可作为下一层的输入数据。标定物信息采集模块为二维DLT系数求解模块提供必须的控制点和控制线的相关参数信息,二维DLT系数求解模块的输出结果可作为单应性矩阵计算模块的输入,而单应性矩阵计算模块得到的单应性矩阵则为几何校正模块提供空间坐标变换的依据,几何校正模块生成的交通事故现场正射影像图是尺寸标注模块进行标注的前提。这样层与层之间通过单向调用和单向依赖,使相邻两个模块间相互协调和配合起来,共同组成了一个完整的系统。
所述标定物信息采集模块从交通事故现场图中提取控制点和控制线的像空间坐标信息,并将相应的数据分别存入控制点数据库和控制线数据库,控制点的物方空间坐标根据交通事故现场建立的二维笛卡尔直角坐标系确定,并在存入控制点数据库时通过构建的CPoint2类(扩展点类)对象与其相应的像空间坐标相关联。CPoint2类派生自MFC(微软基础类库)的基类CPoint类(点类),它封装了控制点的物方空间坐标和像空间坐标,建立了它们之间的一一映射关系。这种数据封装方式,能够有效避免数据使用的混乱,确保了控制点物方空间坐标及其相应的像空间坐标的正确映射关系。
标定物信息采集模块提取的控制点的相关参数信息包括:每个控制点的物方空间坐标及其相应的像空间坐标;提取的控制线的相关参数信息包括:物方空间每条平行于X轴的直线段的两个端点在像空间相应的起点坐标和终点坐标;物方空间每条平行于Y轴的直线段的两个端点在像空间相应的起点坐标和终点坐标。
为保证二维DLT系数求解模块能够顺利执行,标定物信息采集模块在进行控制点和控制线的选取时应满足以下两个条件:
第一、在交通事故现场建立的二维笛卡尔直角坐标系中,存在至少两条平
行于X轴的直线段和至少两条平行于Y轴的直线段;
第二、在交通事故现场建立的二维笛卡尔直角坐标系中,存在至少两个控
制点,并已测得它们实际的物方空间坐标。
所述二维DLT系数求解模块首先通过与数据库的接口获取控制点和控制线的相关参数信息,在此基础上分别建立物方空间X轴平行线在像空间的约束方程组和物方空间Y轴平行线在像空间的约束方程组,然后通过OpenCV(开放式计算机视觉)核心模块中的API(应用程序接口)采用最小二乘法分别对这些方程组求解得出中间变量的值;再将这些中间变量的值与控制点的二维直接线性变换公式联立,建立求解方程组,最后通过OpenCV核心模块中的API采用最小二乘法解出DLT系数的值。
所述单应性矩阵计算模块由二维直接线性变换公式反解出物方空间坐标关于像空间坐标的表达式,建立像空间到物方空间的映射关系,然后通过VisualC++语言计算单应性矩阵中每个元素的值。单应性矩阵计算模块的输入是二维DLT系数求解模块得出的8个DLT系数的值,输出为一个3行3列的单应性矩阵。所得的单应性矩阵保存在OpenCV的基本数据结构CvMat(矩阵结构体)创建的一个3行3列64位单通道的对象中,它可作为该模块的输出参数提供给几何校正模块直接使用。
所述几何校正模块首先根据单应性矩阵对交通事故现场图进行空间坐标变换,得到事故现场图上每个像素点的物方空间坐标,然后对物方空间坐标进行灰度重采样得到交通事故现场正射影像图。当变换后的物方空间坐标对应的事故现场图上的像空间坐标恰好为整数值时,这时物方空间坐标的灰度值可直接取事故现场图上像空间坐标的灰度值;当计算得到的物方空间坐标对应的事故现场图上的像空间坐标不为整数值时,这时并无现成的灰度值能用,可采用双线性插值法把该点周围整数点位上灰度值对该点的灰度贡献积累起来,构成该点位新的灰度值。
所述尺寸标注模块以交通事故现场正射影像图为基础,实现直接在正射影像图上进行单点的坐标标注和任意两点间的距离标注功能。单点坐标标注首先经坐标转换获取正射影像图上该点的物方空间坐标,然后通过Windows GDI(Windows图形设备接口)绘图函数进行标注;任意两点间的距离标注可首先采取单点坐标标注的方式分别获取两个点的物方空间坐标,然后在此基础上计算出它们之间的实际空间距离,再将所得结果通过Windows GDI绘图函数标注在交通事故现场正射影像图上。
与现有技术相比,本发明具有以下优点:能够有效校正交通事故现场图几何变形,并提高几何校正后生成的正射影像图上事故现场尺寸的测绘精度。传统的事故现场图几何校正方法只是基于控制点的校正,当控制点个数不足或像空间坐标因镜头的径向畸变和切向畸变发生偏差时,就无法准确建立像空间到物方空间的映射关系,这样也就难以对事故现场图进行精确的几何校正,从而降低了交通事故现场尺寸的测绘精度;不同于传统的仅仅依赖于控制点的事故现场图几何校正方法,本发明充分利用交通事故现场提取到的直线特征,通过添加平行线相对控制约束,从而有效校正了镜头畸变和透视畸变造成的事故现场图几何变形,进而提高了几何校正后生成的正射影像图上事故现场尺寸的测绘精度。
另外,本发明还可以用尽可能少(最少需要两个)的控制点实现交通事故现场图的几何校正。传统的事故现场图几何校正方法至少需要确定事故现场四个控制点的物方空间坐标及其相应的像空间坐标,当控制点的个数少于四个时,就无法完成事故现场图的几何校正。本发明可以在控制点个数不足时,只需利用两个控制点和两条平行于X轴的直线段以及两条平行于Y轴的直线段,在不必知道平行线段端点的物方空间坐标的情况下,就能实现交通事故现场图的几何校正。
具体实施方式
下面结合附图对本发明的实施例作详细说明:本实施例以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,本实施例包括五个部分:标定物信息采集模块、二维DLT系数求解模块、单应性矩阵计算模块、几何校正模块和尺寸标注模块。标定物信息采集模块负责提取控制点和控制线的相关参数信息,并将相应数据分别存入控制点数据库和控制线数据库;二维DLT系数求解模块通过与数据库的接口获取控制点和控制线的相关参数信息,经方程联立解出8个DLT系数的值;单应性矩阵计算模块根据DLT系数建立像空间到物方空间的映射关系,进而得出单应性矩阵;几何校正模块通过单应性矩阵对交通事故现场图进行几何校正,经空间坐标变换和灰度重采样生成交通事故现场正射影像图;尺寸标注模块以交通事故现场正射影像图为基础,实现直接在正射影像图上标注任意点的实际空间坐标和任意两点间的实际空间距离的功能。
本实施例的五个模块之间存在一定的逻辑关系,当前模块的输入参数仅依赖于前一个模块的输出结果,当前模块的输出结果仅可作为下一个模块的输入参数,模块间按照从前到后的顺序依次执行完成系统的总功能。如图1中的箭头所示,这五个模块的先后执行顺序依次为:标定物信息采集模块、二维DLT系数求解模块、单应性矩阵计算模块、几何校正模块和尺寸标注模块。相应实现的功能依次为:标定物信息采集、二维DLT系数求解、单应性矩阵计算、事故现场图几何校正和尺寸标注。下面按照这五个模块的先后执行顺序,对本实施例的具体操作过程和实施步骤作详细说明:
1.标定物信息采集
交通事故现场标定物信息的采集通过MFC创建的GUI(图形用户接口)界面与用户进行交互。交警在事故现场拍摄的照片首先通过Windows GDI构建的一个m_dcCompatible(设备环境兼容对象)加载到计算机内存空间中,然后将其以位图的形式显示在Windows窗口应用程序的客户区。用户根据窗口客户区显示的图像内容,通过硬件操作(鼠标、键盘或触摸屏)直接在图像上提取控制点和控制线的像空间坐标信息,控制点的物方空间坐标根据交通事故现场建立的二维笛卡尔直角坐标系确定,并在用户提取该控制点的像空间坐标时通过GUI界面输入系统。如图2所示,该图中通过选择道路交通标线的端点和边缘分别作为控制点S1、S2和控制线L1、L2、L3、L4。
提取的控制点的相关参数信息包括:每个控制点的物方空间坐标及其相应的像空间坐标;提取的控制线的相关参数信息包括:物方空间每条平行于X轴的直线段的两个端点在像空间相应的起点坐标和终点坐标;物方空间每条平行于Y轴的直线段的两个端点在像空间相应的起点坐标和终点坐标。提取到的控制点和控制线的相关参数信息分别保存在由MFC的CObArray(动态数组基类)构建的两个对象m_Point2Array(点数组)和m_LineArray(直线数组)中。其中m_Point2Array用来收集CPoint2类对象,而CPoint2类对象封装了控制点的物方空间坐标及其相应的像空间坐标,建立了它们之间的正确映射关系。每个CPoint2类对象通过CObArray的成员函数SetAt(设置动态数组成员对象函数)保存在m_Point2Array对象中。
为保证二维DLT系数求解模块能够顺利执行,用户在进行控制点和控制线的选取时应满足以下两个条件:
第一、在交通事故现场建立的二维笛卡尔直角坐标系中,存在至少两条平行于X轴的直线段和至少两条平行于Y轴的直线段;
第二、在交通事故现场建立的二维笛卡尔直角坐标系中,存在至少两个控制点,并已测得它们实际的物方空间坐标。
2.二维DLT系数求解
二维DLT系数求解模块首先从数据库m_Point2Array和m_LineArray中通过CObArray的成员函数GetAt(获取动态数组成员对像函数)提取控制点S1、S2和控制线L1、L2、L3、L4的相关参数信息,在此基础上分别建立物方空间X轴平行线和Y轴平行线在像空间的约束方程组,解得中间变量的值;然后把这些中间变量的值与控制点的二维直接线性变换公式联立,最终求出8个DLT系数l1,l2,l3,l4,l5,l6,l7,l8的值。该过程可分为以下三个步骤:
第一步、根据物方空间平行于X轴的直线段在像空间的约束方程求解中间变量p1,p2的值
假定物方空间至少存在两条平行于X轴的直线段,则根据它们在像空间相应的起点坐标和终点坐标,可通过如下求解矩阵(1)采用最小二乘法解得中间变量p1,p2的值。该线性方程组的求解,可通过调用OpenCV核心模块中的API函数cvSolve(线性方程组求解函数)实现。
其中:xi1,yi1(i=1,2,…,m)分别为物方空间第i条平行于X轴的直线段的起点在像空间的横坐标和纵坐标;xi2,yi2(i=1,2,…,m)分别为物方空间第i条平行于X轴的直线段的终点在像空间的横坐标和纵坐标;
第二步、根据物方空间平行于Y轴的直线段在像空间的约束方程求解中间变量q1,q2的值
假定物方空间至少有两条平行于Y轴的直线段,则根据它们在像空间相应的起点坐标和终点坐标,可通过如下求解矩阵(2)采用最小二乘法解得中间变量q1,q2的值。该线性方程组的求解,可通过调用OpenCV核心模块中的API函数cvSolve实现。
其中:xi1,yi1(i=1,2,…,n)分别为物方空间第i条平行于Y轴的直线段的起点在像空间的横坐标和纵坐标;xi2,yi2(i=1,2,…,n)分别为物方空间第i条平行于Y轴的直线段的终点在像空间的横坐标和纵坐标;
第三步、将中间变量p1,p2,q1,q2与控制点的二维直接线性变换公式联立求解DLT系数
假定交通事故现场至少存在两个控制点,则根据它们在物方空间的坐标及其相对应的像空间的坐标,可通过如下求解矩阵(3)采用最小二乘法解得二维直接线性变换系数l1,l2,l3,l6的值。该线性方程组的求解,可通过调用OpenCV核心模块中的API函数cvSolve实现。
其中:Xi,Yi(i=1,2,…,k)分别为第i个控制点在物方空间的横坐标和纵坐标;xi,yi(i=1,2,…,k)为第i个控制点在像空间的横坐标和纵坐标。
将解得的l1,l2的值分别带入l4=p1l1,l7=p2l1,l5=q1l2,l8=q2l2即可求得系数l4,l7,l5,l8的值。至此,二维直接线性变换公式中的8个系数l1,l2,l3,l4,l5,l6,l7,l8全部求解完毕。
3.单应性矩阵计算
单应性矩阵计算模块根据二维DLT系数求解模块得出的8个DLT系数l1,l2,l3,l4,l5,l6,l7,l8的值,通过Visual C++语言计算单应性矩阵H中每一个元素hij的值,并将所得的结果保存在OpenCV的基本数据结构CvMat创建的一个3行3列64位单通道的对象中,它可作为该模块的输出参数提供给几何校正模块直接使用。
4.事故现场图几何校正
如图3所示,经空间坐标变换和灰度重采样,实现了事故现场图的几何校正,最终生成了交通事故现场正射影像图。当变换后的物方空间坐标对应的事故现场图上的像空间坐标恰好为整数值时,这时物方空间坐标的灰度值可直接取事故现场图上像空间坐标的灰度值;当计算得到的物方空间坐标对应的事故现场图上的像空间坐标不为整数值时,这时并无现成的灰度值能用,可采用双线性插值法构造一个2X2的二维卷积核W(权矩阵),把它与该点周边的四个原始像元灰度值构成的2X2灰度矩阵G作Hadamard积(哈达玛积)运算得出一个新的矩阵,然后把这些新的矩阵元素累加,即可得到重采样点的灰度值。
5.尺寸标注
如图3所示,尺寸标注模块直接在交通事故现场正射影像图上进行操作,可分为单点的坐标标注和任意两点间的距离标注。单点坐标标注首先通过MFC创建的窗口应用程序获取当前点的设备坐标,然后把该设备坐标转换为用户定义的逻辑坐标,再把逻辑坐标转换为该点的物方空间坐标,最后通过Windows GDI绘图函数标注出当前点的实际物方空间坐标信息;任意两点间的距离标注可首先采取单点坐标标注的方式分别获取两个点的物方空间坐标,然后在此基础上计算出它们之间的实际空间距离,再将所得结果通过Windows GDI绘图函数标注在交通事故现场正射影像图上。
本实施例采用MFC创建的良好的Windows GUI界面与用户进行交互,能够简单方便地从交通事故现场图中提取标定物的参数信息,完成数据的全自动化处理过程,最终生成满足用户要求的交通事故现场正射影像图。为交通事故现场图的几何校正提供技术支持,同时也为事故现场的尺寸测绘提供了良好的工具。添加的平行线相对控制约束对于校正镜头畸变和透视畸变造成的事故现场图几何变形,提高正射影像图上交通事故现场尺寸的测绘精度具有重要意义。