郭卫卫
(四川大学计算机学院,成都 610065)
常规柱面图像拼接的方法,对待拼接图像有严格的要求,要求其视差、光照、运动物体等都尽可能的没有误差,而现实场景却是会经常遇到视差问题,运动物体运动等问题,例如常见场景的多光源投影就会出现重影问题。尤其是用单摄像头采集的图像,因为对于手持单摄像头采集的图像,要求其严格符合柱面图像拼接的要求较难,或多或少都会存在一定的视差,尤其对于普通用户来说,并不会用手持摄像头进行严格的图像采集。
本文主要介绍一种在采样过程中结合复合映射使APAP等算法可以适用于柱面图像拼接。假设有两个待拼接的图像A和B,如果A和B存在视差等问题,就需要将B进行转换,通过寻找A和B直接的配准模型进行转换B,假如A和B都是平面视图,就可以采用全局单应矩阵的方法进行转换,但是在本文讨论的进行两个不同视角图像拼接时就不适合,于是本文引用文献[1-2]的思想,改变传统的柱面拼接流程,使APAP等算法也可以适用于柱面图像拼接。
对于任何图像处理概念,图像采集都是第一步。在本文,图像采集是用网络资源,其是用手机进行的图像获取,原始图像中存在一定的视差,因此常规的柱面拼接流程在这个阶段已经不能完全适用,待拼接的图像破坏了传统柱面拼接流程中的图像采集阶段,因此采用本文提出的柱面拼接流程进行柱面拼接。
XYZ坐标系是照相机的坐标系,相机坐标系和焦距如图1,那在图像上的像素点P(x,y),则相机坐标系的坐标就是
图1 相机坐标系的焦距
图2是图1的切面,根据图我们可以得到图像宽W、相机焦距f和相机水平视角θ的关系公式。
图2 相机像素焦距和实景图宽度W的关系
相机运动都是在XYZ平面,光轴和图像平面相交点就是图像中心,如图3(a),原始图像I,映射后柱面图像为J,原点为O(投影中心),设图像高H,宽为W,柱面半径为r(等于焦距f),摄像装备水平视角θ。图像的左上角设为坐标原点,于是图像上的像素坐标就可以确定。图像I上的任意一点像素坐标为P(x,y),那P点在相机的XYZ坐标系下对应坐标就是:,柱面上对应点坐标记为Q(x',y')。根据XYZ平面的截面,如图3(b),可以求出Q坐标。
图3 柱面映射
因此,相机坐标系的原点和点P间的直线方程如下:
其中,t是参数,柱面方程为:
联立上面两式子可以得到:
将式(4)代入式(2)可以得到:
像素点P(x,y)在柱面投影到柱面的点Q的坐标就是(u,v,w),然后将Q点的坐标变换到展开面的坐标公式如下:
联立公式(5)和公式(6),就可以得到平面图像上点P(x,y)映射到柱面图像的点Q(x',y')之间的映射关系:
单一的变换模型对全局使用的是一个估计的单应矩阵,对于局部之间的差异考虑的不够,如果是平面场景并且同景深,采集图像是用相机单一旋转得到的,这种情况比较适合,但是对于有景深差异的图像,却有一定缺点。Julio Zaragoza等人改进了单应矩阵,提出了加权单应矩阵的方法,将图像划分网格,每个网格就是一个图像块,每个图像块就代表了不同的单应矩阵,在对每个图像块进行估计时,给每个特征点都加上针对于该单应矩阵的一个权值,特征点距离该图像块越近权值就越大,根据像素值临近效应的说法,这样得到的单应矩阵也可以更好地估计这个区域的变换关系,但是在特征点较少的地方,加权投影矩阵却效果不好,会退化为全局的单应矩阵。
在三维空间下,一个物体从不同的视角进行拍摄,采集到的图像之间有一定的映射关系,一般这种映射关系可以用单应映射表示,具象化就是一个3×3的非奇异矩H:
这个H就是单应矩阵。
根据单应变换矩阵,单应映射表达式可以表达如下:
如图4,将图像A直接进行柱面投影得到A',将B进行单应和柱面的复合变换,直接从B平面通过复合变换到柱面A'的基准柱面下,简化了从B通过单应变换到A平面,然后再转换到柱面的过程,期间需要注意,复合映射中柱面映射是考虑整体图像的映射,也就是需要将A'和B保证在同一个坐标系下面,以整体图像为视角,做柱面映射,因此需要整体图像已经产生,用整体图像的信息来作为柱面映射中的参数,但是重采样的时候根据逆映射关系在原始图像进行重采样。
图4 柱面拼接
B图像经过单应变换到A的视角下,然后A和B进行融合得到C,然后可以得到C图像的长宽高,并将坐标系转换为C图像的视角下,假设图像C的X轴方向最大值xmax,最小值xmin,同理Y轴最大最小值分别为ymax和ymin,于是可得图像C的左上角(xmin,ymin),于是图像A和B'转换到C下的平移关系,(x',y')=(x+|xmin|,y+|ymin|),图像高即为 H'=(xmax-xmin),高为H'=(ymax-ymin)。A视角转换到B视角是平移变换。
根据式(9)、式(7),将式(9)和上述平移变换代入式(7)可得单应映射、平移变换和柱面映射的复合映射为:
本文结合重采样的思想,改进柱面拼接[3-5]流程,传统柱面拼接流程在平面投影到柱面,然后在柱面图像上进行图像配准和图像拼接,如果图像是严格的同一个视角场景,摄像设备旋转的方式采集的,可以达到预期效果,但是如果待拼接的图像存在视差和多场景等各种问题,因为图像拼接大多都采用的单应变换的方法进行的配准,此时传统的柱面拼接方式,如果在柱面进行配准就会因为单应对于曲面的不适应而导致柱面拼接的效果较差,于是本节提出一种柱面拼接流程,让待拼接的图像在平面就完成图像配准,然后获得单应变换关系和配准后的图像的信息,然后将得到的配准后的图像信息作为柱面投影的整体进行投影,在重采样阶段,可以根据单应变换关系和柱面映射的公式,分别在基准原始图像和待拼接原始图像进行采样,以此完成柱面图像拼接,采用此流程可以使柱面拼接的过程中采用目前图像拼接效果较好的APAP算法[1]和AANAP算法[2]等基于单应变换进行图像拼接的算法,从而可以达到即使待拼接图像不能严格达到传统柱面拼接图像的标准也可以得到拼接效果良好的拼接图像。
传统柱面拼接的流程如图5[6]。
图5 柱面拼接流程
这个流程中对于待拼接图像要求规格一致,否则投影后的柱面图像就不在一个柱面参数下,如果规定好柱面映射的参数,在规格一定的情况下可以完成正常拼接,然而,在待拼接图像存在视差、景深等问题时,柱面投影后的图像就因为其是曲面不适应单应变换,做基于单应变换的拼接时就会因为这个不适应性导致柱面拼接效果较差,于是本文换用一种非传统的柱面拼接方式,以平面拼接后的图像作为柱面映射的整体,获得其图像拼接,拼接流程如图6。
图6 柱面拼接流程
上述拼接流程中,柱面拼接过程以在平面图像配准后的获得图像可以得到柱面拼接的整体为中心,考虑整个柱面拼接流程中单应变换,转换到整体视角下的平移变换,和确定的柱面映射参数,可以得到整个柱面拼接流程中的所有参数,然后获得复合映射的各个参数,以此来使基于单应变换的一些算法可以采用此流程进行柱面图像拼接。
根据以下的实验结果可以看出,本文提出的柱面拼接流程在一定程度上可以消除视差的错位问题,传统拼接流程的直接拼接结果可以明显看出严重的拼接错位问题,传统拼接流程使用APAP算法的时候,因为其黑色边界问题,插值时引起明显的灰色边界,采用本文的拼接流程可以很好的消除错位,但是有一定的变形,后期研究可以着眼于变形做出更深一步的研究。
图7 原始图像
图8 实验结果,传统流程拼接(左上),APAP传统流程拼接(右上),本文流程拼接
本文介绍了一种适合单摄像头采集获取的图像进行柱面拼接的一种流程,基于该流程可以将有一定视差的原始图像采用优秀的图像拼接方法进行柱面拼接。但是此流程只是初步提出,需要进一步的完善。因为柱面拼接过程中,无论是柱面映射还是单应变换都涉及重采样,重采样就可能会引起混叠,后续研究可以着手在柱面拼接的过程中加入抗混叠的算法进行柱面拼接。