发明内容
本发明的目的在于克服现有技术的不足,提供一种能够克服最优化时对初始值敏感的缺点,同时又不过分依赖基本矩阵计算精度的立体图像对的极线校正方法。
为了达到上述发明目的,本发明立体图像对的极线校正方法,包括以下步骤:
(1)、利用立体图像对的两幅图像的匹配点计算出基本矩阵和各自的极点;
(2)、利用第一幅图像的极点计算出第一幅图像的深度旋转轴,再根据基本矩阵,计算出第二幅图像的深度旋转轴;
(3)、根据两幅图像各自的深度旋转轴计算出两幅图像各自的深度旋转变换矩阵;
(4)、根据两幅图像各自的深度旋转变换矩阵和极点计算出两幅图像经过深度旋转后的新极点,根据新极点得到两幅图像各自的极线旋转变换矩阵;
(5)、根据步骤(1)得到的基本矩阵、步骤(3)、(4)得到的两幅图像各自的深度旋转矩阵和极线旋转变换矩阵,得到两幅图像平面变成平行平面、并且极线水平后的基本矩阵,再根据该矩阵计算出变成平行平面、并且极线水平后的两幅图像的第二幅图像对于第一幅图像的变换比例和平移量;
(6)、将步骤(1)得到的两幅图像各自极点的坐标、步骤(2)得到第二幅图像深度旋转轴的坐标以及步骤(5)得到的变换比例和平移量作为初始值,采用非线性最小二乘法对初始值进行优化,得到它们的最优值;
(7)、根据得到的最优值,计算出两幅图像各自的投影变换矩阵,然后对两幅图像进行变换,得到校正后的立体图像对。
本发明由于在确定需要进行最优化的参数时引入深度旋转变换矩阵,使得在进行最优化时,用于最优化的参数的个数由传统方法的至少10个减少到了至少7个,从而节省了计算量。同时,参数的初始值是由完全基于基本矩阵的方法计算出来的,保证了初始值的精度,从而克服了最优化时对初始值敏感的缺点。由于得到参数的初始值后还要对其进行非线性最优化,因此相对完全基于基本矩阵的方法而言,本发明又不过分依赖基本矩阵的精度。
具体实施方式
为更好地理解本发明,下面结合具体实施方式对本发明进行更为详细描述。在以下的描述中,当已有的现有技术的详细描述也许会淡化本发明的主题内容时,这些描述在这儿将被忽略。
在本实施方式中,设立体图像对的两幅图像分别是I0和I1,F是其对应的基本矩阵。H0、H1分别表示I0、I1对应的投影变换矩阵。设I0和I1的极点分别是e0和e1,u0j和u1j表示一对匹配点的齐次坐标,j=1,...,N。
(1)、根据两幅图像的匹配点u
0j和u
1j(j=1,...,N,共N对)采用改进的八点算法计算出基本矩阵F、第一幅图像I
0的极点
和第二幅图像I
1的极点
其中e
0 x,e
0 y,e
1 x,e
1 y表示求得的齐次坐标值,上标x、y分别表示x轴上的坐标和y轴上的坐标,T表示转置。
(2)、根据第一幅图像I0的极点e0的坐标值,计算出其深度旋转轴的坐标为:
将算得的d0 x和d0 y代入式①
①
根据式①得到的m、n,代入式②,计算出第二幅图像I1的深度旋转轴的坐标。
②
在本实施例中,还进一步将算得的第二幅图像I1的深度旋转轴的坐标d1 x和d1 y代入式③,得到角度参数α:
③
(3)、根据步骤(1)中计算出的极点坐标和步骤(2)中计算出的两幅图像I0、I1各自的深度旋转轴的坐标d0 x、d0 y及d1 x、d1 y,依据式④
④
计算出两幅图像I0、I1各自的深度旋转角度θ0和θ1的值。
然后依据式⑤,
⑤
(4)、根据两幅图像I0、I1各自的深度旋转变换矩阵和和极点e0和e1依据式⑥计算出两幅图像I0、I1经过深度旋转后的新极点e′0和e′1。
⑥
然后,依据式⑦
⑦
得到两幅图像I0、I1的极线的旋转角度φ0、φ1,由式⑧:
⑧
得两幅图像I0、I1的极线旋转变换矩阵
(5)、根据步骤(1)得到的基本矩阵F、步骤(3)、(4)得到的两幅图像各自的深度旋转矩阵
和
和极线旋转变换矩阵
得到两幅图像平面变成平行平面、并且极线水平后的基本矩阵F′:
⑨
再根据该矩阵F′计算出变成平行平面、并且极线水平后的两幅图像的第二幅图像I1对于第一副图像I0变换比例a和平移量b。具体为:
将F′乘上一个不为0的比例因子,使它的第3行第2列的元素等于1。缩放后的矩阵的第2行第3列的元素的相反数即为变换比例a,第3行第3列的元素的相反数即为平移量b。如果a<0时,则说明两幅图像中极线的上下顺序是相反的,也就是图像颠倒了,此时旋转角度Ф1需增加π,即用Ф1+π代替原来的Ф1重新计算。
(6)、将步骤(1)得到的两幅图像各自极点的齐次坐标e0 x、e0 y、e1 x、e1 y和步骤(2)得到第二幅图像I1深度旋转轴的坐标d1 x和d1 y以及步骤(5)得到的变换比例a和平移量b作为初始值,采用非线性最小二乘法对初始值进行优化,得到它们的最优值。
在本实施例中,将角度参数α代替第二幅图像I1深度旋转轴的坐标d1 x和d1 y
这样,最终得到了7个参数的初始值,它们是α、a、b、e0 x、e0 y、e1 x和e1 y。设目标函数为:
⑩
其中:
将7个参数的初始值代入式⑩采用Levenberg-Marquardt算法对f进行最小化,得到这些参数的最优值。
(7)根据得到的7个参数α、a、b、e0 x、e0 y、e1 x和e1 y的最优值,计算出两幅图像I0、I1各自的投影变换矩阵H0和H1,然后对两幅图像I0、I1进行变换,得到校正后的立体图像对H0I0、H1I1。
得到投影变换矩阵H0和H1之后,对两幅图像I0、I1实施变换便可得到校正后的图像对H0I0、H1I1。但是这样做会使得新图像对H0I0、H1I1中的某些点不能在原始图像I0、I1中找到对应的点,从而产生“空洞(holes)”现象。
在本实施例中,步骤(7)中得到的投影变换矩阵H0和H1对两幅图像I0、I1实施变换,采用逆向映射的方法得到校正后的立体图像对,从而消除空洞现象。
图1是逆向映射方法的具体流程图,步骤如下:
(a)、两幅图像I0、I1分别与各自的投影变换矩阵H0、H1相乘,得到立体图像对H0I0、H1I1;
(b)、求解相乘后得到的各自图像H0I0、H1I1的最小边界矩形Rect0、Rect1;
(c)、对最小边界矩形Rect0、Rect1分别进行平移,使其左上角的点平移到各自坐标系的原点;然后,比较两幅图像H0I0、H1I1的最小边界矩形在垂直方向的平移量Δy0、Δy1,平移量小的最小边界矩形,在垂直方向再平移,使其平移量与平移量大的最小边界矩形的平移量相同。即若Δy0<Δy1,则Rect0在垂直方向再平移Δy1-Δy0;否则Rect1在垂直方向平移Δy0-Δy1。
(d)、以从左到右、从上到下的顺序,计算两幅图像的最小边界矩形中的每一个点u0′、u1′在各自原始图像I0、I1平面中的对应点u0、u1,检查对应点u0、u1是否落在原始图像I0、I1范围内;若在,则将原始图像I0、I1平面中的对应点u0、u1对应的像素拷贝到最小边界矩形中对应点u0′、u1′的位置;否则将最小边界矩形中对应点u0′、u1′变为黑色点,得到逆向影射校正后的立体图像对。
校正后的图像H0I0、H1I1与原始图像I0、I1相比,尺寸可能发生改变。
表1是本发明的极线校正方法与现有技术中的Francesco极线校正方法、Mallon极线校正方法相比的校正精度对比表。
校正方法 校正精度
Francesco Method 0.75000
Mallon Method 0.62692
本发明的极线校正方法 0.25424
表1
表1中采用校正后两幅图像H0I0、H1I1对应的特征点的垂直视差的平均值来衡量校正精度。从表1我们可以看出,与Francesco方法、Mallon方法相比,校正精度有较大提高。
尽管上面对本发明说明性的具体实施方式进行了描述,但应当清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。