图像拼接算法(zz)

图像拼接算法(zz)

算法源码admin2020-11-21 14:07:0159A+A-

  图像拼接是计算机视觉中一个有趣的领域它把来自多个不同视角相机的图像变换到同一视角下无缝拼接成一张宽视野图像比如360度全景图甚至360度*180度的球面全景。上图所示即为两张图像的拼接结果基本是完美的。

  需要注意的是由于相机各自的指向角度不一样因此两图片中来自同样场景的部分并不能够通过平移图像而完全重合。比如上图中那栋带有岭南风格拱顶的房子它的屋檐在左图中要比右图中更水平些如果试图通过平移对齐像素来拼接两幅图结果必然不自然比如在屋檐处出现拐角。两图要做到完美叠合不是一个平移变换能做到的。当然肯定存在这样一个变换那它是什么呢

  事实上这里边的数学原理射影几何很古老什么情况下不同位置、视角的相机可以变换到同一视角下拼接起来也是久为人知的只不过能够利用计算机来进行大规模自动拼接还是近些年才成熟起来的事。

  那到底什么情况下图像可以拼接如何拼接呢不妨先摆出结论吧在两种情况下图像可拼接一是各相机几何中心重合二是各相机位置任意但场景是一个平面。一种特殊情况场景为远景时可以近似的等价于一个平面场景从而也是可拼的。拼接的方法很简单在满足上述两种情况之一时存在一个单应性变换Homography能够将一个相机的图像变换到另一个相机的视角下从而可以进行拼接。

  下面我们用一套直观的语言来讲解这个变换以及更复杂些的拼接方法。

  如图计算机视觉中我们用一个投影中心点和一张图像平面来刻画一个理想的相机。点与平面的距离为焦距任意场景点所成像点用这样一种简单的方式来决定将它与投影中心连线c;连线与图像平面的交点即像点位置。图中给出了两个共中心的相机它们有不同的指向因而也有不同的图像平面和同一场景点在两个平面上的像点由紫线与两平面的交点、给出。到这里我们就直观的得到了这样一个变换上像点到上对应像点的一个映射。这个映射可以把两张不同视角下拍摄的照片变换到同一视角下从而能够完美拼接两张图像。这个映射正是我们要说的单应性变换。

  到这里我们可以回头来解释另一个问题为什么要求相机共中心不妨反过来考虑如果两相机不共中心会出现什么样的情况如图所示

  我们让两相机的投影中心、相离。这时可以看到、两点原本在相机上投影到同一像点这时在相机上却投影到了不同像点。这意味着相机看到了在视角下被遮挡而看不到的内容此时我们无法把看到的图像变换到的视角下。考虑一个极端情形可以进一步解释这个问题如果两个相机分别拍摄同一物体的正面和背面那它们所看到的内容无论如何也不能变换到同一视角之下或者说我们根本找不到这样一个新的相机在它的视角之下可以看到、二者所看到内容的总和。这就解答了我们之前的问题非共中心放置时各相机看到的内容太丰富以至于不能变换到同一视角下。读者可以检查在相机共中心时一个相机中被投影到同一像点的场景点总会在另一相机中也被投影为同一像点。

  事实上在相机摆位任意时我们看到的信息是如此丰富以至于可以尝试重建出场景点的三维坐标。现代的三维重建算法可以利用不同位置、视角下拍摄的图像重建出物体的三维模型这是后话。

  当然读者仍然可能想起除掉共中心情形我们还说过相机摆位任意但场景为一个平面时也是存在单应变换的。我们在这里不再给出这种情况的直观解释读者可以自己思考。

  首先算法要求各相机间的相对位置、角度在实时拼接过程中保持固定且相邻相机的视野有一定重合区域。

  理论上能够变换到同一视角下进行无缝拼接的场景有两种一种是多摄像机共中心放置中心开花状一种是摄像机位置任意但场景是一个平面。当场景为远景且场景-摄像机距离远大于摄像机之间的距离时也可以近似看做第二种情形。上述情形之外的情况均不可拼这是一个原则性的限制。

  通常简单的图像拼接技术就是如上节所示的基本原理找出一张大概处于中间位置的图像然后利用单应性变换把其他图像变换到该中心图像的视角下再做一些后续的曝光补偿、图像融合等处理即可。但是这一技术有相当大的局限性最简单的例子不能直接用它拼出的全景图。

  为什么呢让我们来考虑图6中所示情形。可见三条光线与相交的三点原本是近乎等间距均匀分布的而当它们映射到平面上后间距却产生了巨大的差异。表现在图像上上的图像变换到上后会产生相当大的拉伸畸变。当图中两相机的投影平面越来越趋于垂直时这个畸变越来越大以至于上普通的一点可能会被映射到平面的无穷远点。这时这种简单的单应性拼接方案就彻底崩溃了。

  怎样得到更宽视场角下的拼接图解决方法很简单。以上所出现的这种畸变源自于我们将点投影到一个平面上设想将掰弯或者直接弯曲成一个圆柱面成为图7所示的样子那原本被投影到平面无穷远处的点就被拉回来了。我们在圆柱面上选取一个足够均匀的坐标系把坐标对应到像素坐标就可以得到一个全景图了。

  当然针对不同的应用我们还可以选取不同的投影曲面比如选取球面用于的球面全景图甚至也可以选择一个立方体作为投影曲面。

  至此全景拼接的几何原理就大致说完了虽然我们还没有给出数学表达。为了先居高临下的了解整个拼接流程我们不妨把后续处理的梗概也在此一说。

  实际应用中为了创建出完美的全景图有很多的问题需要考虑。最典型的问题有两个一个是如何解决不同照片中曝光不一致的问题一个是如何在拼接缝处完美平滑的融合两张图像的问题。

  第一个由曝光补偿算法来解决大体思路是估计两张图间的曝光差异然后进行补偿。此处不多说。

  第二个问题也有众多解决方案最为著名的大概就属Multi-Band融合算法。该算法虽然八十年代就已提出但其效果至今仍让人赞叹。在通常图像间失配程度不大的情况下Multi-Band可以达到肉眼几乎不可分辨的融合效果。其原理也不复杂下面略微一提。

  融合两张图像最直接的方案是在两张图像的重合区域用一个平滑渐变的权重对二者加权叠加。该方法的效果并不理想关键原因是我们无法兼顾拼缝附近的局域细节和大尺度上两张图片的宏观特征如光照。当我们希望局域细节能够完好拼接时需要用较小的平滑渐变区而当我们希望要宏观上平滑过渡时又想要较大的渐变区域。这二者似乎不可调和。

  但事实上并非如此。Multi-Band的成功之处就是在于它同时兼顾两种需求当融合宏观特征时采用一个大的平滑渐变区融合局域细节时则采用小的平滑渐变区。那如何才能把这两种情况分开处理呢很简单把图像分解为不同频带的分量之加和图像的宏观特征在它的低频分量图里而局域特征在高频分量图里。

  所以Multi-Band算法的过程大致就是把图像按照频率高低展开成一个金字塔然后高低频分量各自按照不同的方式平滑加权并叠加最后把各频带分量重新加和得到最终的融合结果。

  该算法融合效果虽好但对于计算量要求较大它需要创建多座金字塔并对金字塔进行各种运算图像像素较高时在CPU上要达到实时基本无望。当然GPU上情况就不一样了我们自己就实现了实时的Multi-Band融合算法效果很好。

  具有良好的精度和鲁棒性,同时又使其具有较好的实时性,本实验采用SURF

  又称快速鲁棒特征,借鉴了SIFT 中简化近似的思想,将DoH 中的高斯二阶微分模板进行了近似简化,使得模板对

  (image mosaic)是一个日益流行的研究领域,他已经成为照相绘图学、计算机视觉、

  融合技术 测试环境为Vs2015+OpenCV2.4.9 一、OpenCV自带的

  stitch 这部分在opencv自带的例程中也有相应的sample,可以参照。 #include iostream #include opencv2/core/core.hpp #include ope...

  全景视频是一种利用360 度全景图象建立虚拟环境的新方法。全景图象是通过将普通照相机拍照到的边界部分重叠的图象进行

  而创建的。可以利用图象重叠部分对应像素的相似性, 通过采用一种行之有效的

  , 使得到的图象无缝平滑。 附图是2000年8月21日慕尼黑市区的骑行路线图,(

  实时处理领域 相关下载链接:download/engine_man/4742549?utm_source=bbsse

  处理/深度学习收录于编辑推荐 442 人赞同了该回答周末加班偷偷懒,先来回答一下,瞎说轻拍orz。答案是当然有,

  的第二春13年开始的,这里再简单总结和展望一下。一个(全局)单应性对齐+柱面或球面投影+光束平差+多频带融合为核心的老一代

  以BROWN大神03ICCV和07IJCV的AutoStitch AutoStitch为里程碑,已经非常成熟,各...

  转自:全景视频是一种利用360 度全景图象建立虚拟环境的新方法。全景图象是通过将普通照相机拍照到的边界部分重叠的图象进行

  而创建的。可以利用图象重叠部分对应像素的相似性, 通过采用一种行之有效的

  , 使得到的图象无缝平滑。 来自研学论坛 Walkfarer和SCQ的帖子: http:/...

  asdasd1dsadsa:我这里啥也没返回,看来是原来带证书的路径给我删了。设置路径后解决了,谢谢博主。

点击这里复制本文地址 免责声明:本站内容由程序自动采集于互联网,无人工干预,只作交流和学习使用,本站不储存任何资源内容,如有侵权请联系qq邮箱798244092@qq.com立刻删除,谢谢!

支持Ctrl+Enter提交

基带源码 © All Rights Reserved.  
联系我们| 关于我们| 留言建议| 网站管理
免责声明:本站内容由程序自动采集于互联网,无人工干预,只作交流和学习使用,本站不储存任何资源内容,如有侵权请联系qq邮箱798244092@qq.com立刻删除,谢谢!