图像匹配与拼接方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像匹配与拼接
分匹配和拼接两部分
一、匹配
当然匹配的方法,有sift,surf什么的,这里主要就介绍一下我自己的方法啦!
特征点提取是必须的,不然搜索范围太大哇!并且可能不可靠,所以特征点提取是必须的。什么点适合做特征点呢?这方面的论文很多啦,主要还是看你用什么方法匹配了,如果是用互相关作为相似性准则的话,那自相关系数随各个方向变化大的点就适合作特征点了,当然还要考虑稳定性,即特征点应该不太受光照、噪声、缩放、旋转等的影响,这样的才是好的特征点。当然,如果确定了应用坏境,不一定要满足不受上四个因素影响的,比如平行的双目匹配、全景图的匹配等,具体问题具体分析吧!角点特征是个人比较喜欢的特征。这里我自己定义了一种局部特征,效果还行,匹配采用互相关为准则的匹配,大概效果如下:
目测这几个匹配点还是正确的哇!在一些应用中,可能需要的匹配点数相当多,这就需要较密集的匹配了。密集的匹配可以根据初始的匹配结果估计搜索范围,这可以加速搜索,同时也要提取更多的特征点呀!话不多说了,下面是密集的匹配:
虽然这样的密度对于三维重构来说还不够,但对于一般的图像拼接来说足够了。匹配完了,下面就要将第二步了。
二、矫正
匹配好两幅图像了,接下来干啥呢?把它们对准呗。可惜了,两幅图像之间不但存在平移,还存在旋转缩放什么的,更复杂的,可能还存在所谓的3D变换,那就复杂啦!不管怎么样,所谓的对准,也就是矫正,总是基于一定的模型的,即基于相机拍摄两幅图像的相对姿态。对于全景图拼接(个人觉得是最简单的且较实用的拼接),需要根据相机焦距或者视场角投影到柱面上,然后两幅图像间的位置就只有一维的平移关系了。但是这对拍摄的相机也是有要求的,就是要保证拍摄两幅图像时,物防焦点是重合的,这样才能根据稀疏的几个点确定所有重叠区域内点的相对位置呀!但实际中很难做到物方焦点重合,比如数码相机或者所谓的智能手机的全景图拍摄,一般人都是拿着相机或者手机绕人旋转,而非绕物方焦点旋转拍摄的,这样拼接起来是绝对有误差的呀!特别是拼接近景,误差就更大了,远景还好。怎么克服这个缺点呢?简单的改进方法就是绕着摄像头旋转吧,虽然这也不是严格绕物方焦距旋转,但起码误差小得多啦,拼接的效果当然也就好得多了,可以试一试哦!
不扯了,第二种模型就是认为两幅图像间存在的变换关系是有2D旋转、缩放、平移的,可以通过一个旋转、缩放、平移矩阵来矫正,这个也不难,但是应用范围却相当有限,不详说了。
第三种模型就是不用模型,或者说认为两幅图像间的对应点存在的是一种线性变换关系,这样只要解一个线性方程组就可以了,似乎也挺简单的。但可惜的是,不是任给的两幅图像间都只存在线性变换呀!它可能是一个3D的线性变换,那就麻烦了,这个必须需要密匹配呀!不然就一定是有误差的,即不能通过稀疏的匹配点来矫正两幅图像的所有对应点的。
还有更多的模型,比如各方位的全景图,需要投影到球面上的哇!不过这个模型也不难。最难的当然是拍摄两幅图像时,相机不同,相机姿态也不同了,这个是很有挑战的,我也很惧怕这个。下面展示三种矫正结果:
1、2D线性模型:
2D矫正,认为匹配点之间存在线性变换,X=ax+by+c,Y=dx+ey+e这样的模型,业内称之放射变换,其中x,y是第一幅点的坐标,X,Y是对应的第二幅图像中的点坐标,使用最小二乘法计算a、b、c、d、e、f,第二幅图相对于第一幅图矫正的结果就是这样的了
2D线性变换的拼接,目测效果还行
2、2D平移、旋转、缩放模型:
2D矫正,认为第二幅图相对第一幅图只存在平移、旋转、放缩变换,当然这里的平移没体现出来,我把它的平移参数放在程序里面了,这也是利用最小二乘法解的放大系数、旋转角度和平移参数的,分别解的,矫正结果就是这样了
2D旋转矫正的拼接,目测效果也不是很好
3、柱面投影模型:
柱面投影,这两幅是匹配前的柱面投影,即把原始的两幅图像投影到柱面上,然后再匹配拼接,选择的视场角为40°。当然,实际上这两幅图并不是共物方焦点的关系,柱面投影是不
太恰当的
柱面投影模型的拼接,显然不太对啦
必须说明一下,拼接效果是跟拍摄的模型相关的,拍摄时相机间是什么模型,矫正时就用什么模型。这两幅图其实是3D变换,上面3种方法都是有误差的,只是第一种2D线性变换比较接近实际模型而已,所以拼接效果就好一点啦!
三、拼接缝消除
对于上面的两幅图像来说,矫正后直接放在一起就看不出拼接缝啦!但是一般情况下没有这么理想,两幅图像的亮度总是不一致,直接放在一起有一条很明显的拼接线,怎么办?消除。消除拼接线可不简单啊,最简单的是加权法,这种方法虽然能消除一条剧烈跃变的拼接线,但同时可能引入一条较宽的拼接条,下图就很好地说明这一点了。
矫正后直接放在一起的,拼接线很明显
用加权法融合拼接线附近,拼接线展成拼接条了
如果消除上图中的拼接条?当然方法还是很多的,我也不太清楚了,这里用了一种叫做多分辨率融合的方法,即在拼接缝附近,在不同范围内对不同的频带进行融合,然后再把个频带的融合结果加在一起,就变成下面的结果了,由图看出,这方法的效果还是比较好的。
多分辨率融合结果
总结
上面基本描述了拼接的过程了,还给出了一些示例。拼接是个难题,首先需要知道拍摄两幅图像相机的具体模型、内外参数等,匹配也是个难题,目前还没有一种方法能保证在任意情况下匹配得好啊!并且匹配一般较慢,这里用的匹配方法还好了,800*600的普通图像的匹配大概0.5s左右,当然是在没有任何先验知识、匹配过程中没有降分辨率的情况下,如果知道两幅图像的大概相对位置,那么匹配会快很多了。误匹配的消除也是个麻烦,搞不好就没消除完,或者多消除了。RANSAC算法能较好地消除误匹配,不过这里消除误匹配时没有用到RANSAC算法,这个算法还是有较多的缺陷的,个人觉得消除误匹配的方法还是根据具体模型来设计具体的方法好,这里的误匹配消除是我自己搞的,效果还行,基本能将所有误匹配消除,也基本不会消除正确的匹配,还是比较满意的,速度也快。消除拼接缝也是个问题,实际上拼接线是引入的高频噪声信号,但是拼接线附近的很多高频信号是有用的,噪声是高频,有用信号也有高频,怎么办?这就不可能通过滤波器来滤除噪声同时保留有效信号了。加权法有一个妙处,它不引入高频信号,引入中频信号,这从倒数第二个图可以看出来。这就比较好办了,在图像的拼接条附近,不同尺度采用不同截止频率的滤波器,能较好地把这些中频噪声滤掉。对低频的融合,还可以补偿两幅图像的整体光照。可惜的是,这种方法也不是完美的,因为仍然有一些有用的中频信号被滤除或者被衰减了。幸运的是,对于人来说,敏感的是那些低频和高频呀!中频显得没那么重要,因此在局部减掉一些中频影响并不大。当然,融合方法还有很多,例如基于梯度域的融合,都是些不错的方法。
补充一点,这里用的都是灰度图拼接。其实对于彩色图,有了灰度图的拼接就简单了,对亮度进行拼接即可,假设i(x,y)、I(x,y)是拼接前后的亮度,r(x,y)、g(x,y)、b(x,y),R(x,y)、G(x,y)、B(x,y)是拼接后的亮度,那么