ImageStitching技巧.doc

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SIFT图像拼接 Yuxin Wu 目录 1 简介 2 1.1 汇编 2 1.2 运行 2 1.3 示例 3 2 算法 3 2.1 特征检测 3 2.2 弯曲 8 2.3 转换 9 2.4 拉直 10 2.5 融合 11 2.6 裁剪 11 3. 更多结果 12 4. 参考文献 14 1 简介 1.1 汇编 依赖项: gcc = 4.7 2. GNU make 3. Magick++ boost MTL(矩阵模板库)安装在in /usr/include/boost/numeric/。 可以从这里下载/node/145。 1.2 运行 src/config.cfg 里面有各种参数。除非特殊需要,我们只需要修改PANO, TRANS, CROP。 如果已知输入图像是由照相机水平或旋转拍摄到的话,本程序将做一些额外的工作来美化输出结果。 PANO=1说明镜头纯旋转移动,预计会输出一张全景图。 TRANS=1说明镜头水平移动,结果将会比TRANS未设定的结果好。 CROP决定是否要将最终的图像裁剪成矩形。 使用./main file1 file2 file3 ...在命令行中运行程序,输出文件为out.png. 通常情况下,输入的图像不得超过20(纵列)×1500(像素)×1000(像素),本程序将会消耗大量内存。 命令行中给出的输入文件名必须要有序,以确保相邻的图像可以拼接到一起。 1.3 示例 1. TRANS=1 $ ./main ../data/flower/small* PANO=1 $ ./main ../data/ground/small* 结果在图14中展示 2 算法 2.1 特征检测 Lowe的SIFT算法早已经实现了,以下是对该算法简要的描述,更多详情,请参阅本文。 1. 尺度空间 创建一个S x O的灰度图像的尺度空间,将原始图像重新调整O种不同的尺寸(AKA,octaves),然后加S种不同尺度σ的高斯模糊。 图1:尺度空间和高斯差分 2. 高斯差分空间 在每一个尺度上,计算每两个相邻的模糊图像的差,得到高斯差分空间,因此,高斯差分空间就包含(S ? 1)×O 个灰度图,如图1. 3. 极值检测 在高斯差分空间中,将一个像素同它相邻的x, y, σ三个方向的26个像素进行比较检测出所有的最大值和最小值,如图2,图3. 图2:极值检测 图3:极值点示例 定位关键点 通过线性插值计算偏移量,将极值点移动到更准确的位置,舍去对比度较低的点和边缘上的点,从而得到更多可区分的特征。如图4,图5,图6. 图4:定位之后 图5:舍去对比度较低的点 图6:舍去边缘上的点 图7:分配方向之后 方向分配 首先,我们要计算尺度空间中每个点的梯度和方向,对于之前的过程检测出来的每一个关键点,它周围的点的方向将会被收集用来创建一个方向直方图,对每个点的梯度幅值进行加权,然后在关键点中心确定一个高斯核。直方图中的峰值为关键点的主方向,如图7中的箭头所示。 6. 描述符表示 D. Lowe建议选取关键点周围的16个点,并对每个点创建方向直方图,每个直方图有8种不同的可能的值。因此最终的SIFT特征是一个128维的数组。由于关键点的主方向是已知的,再利用关键点的相对方向,这个特征就是旋转不变的。 7. 特征匹配 这个128维的描述符的广义欧氏距离就是这两张图片之间进行特征匹配的标准,如果这个特征点到离它最近的相邻特征点的距离和到离它第二近的相邻特征点的距离接近,这个匹配就是不可信的,因此需要将其舍弃。结果如图8所示。 图8:匹配结果 2.2 弯曲 一个单应性的变换需要匹配关键点,但在一个平面上的纯单应变换只有相机在单纯的转变内移动或者向一个固定的中心移动时才会生效。 如果旋转的输入数据已经给出,并且大多数全景图已经建好了,那么就可以使用平面单应性实现垂直变:换。如图9所示。 图9:使用平面单应性实现垂直变换 因此,如果选项TRANS=0已经确定的话,对于每一张输入的图像将会首先通过下面的算法被映射到一个圆柱面上: 这里的z=max{width, height}}},结果如图10所示。 图10:映射之后的拼接结果 对该映射的原因更全面的讲解程序可以在这里查看: /courses/cs178-12/applets/projection.html 2.3 转

文档评论(0)

ccx55855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档