
图像拼接
图像拼接算法与代码实现的学习笔记
czl389
我的github ID:czl389.
展开
-
图像拼接(十三):OpenCV拼接多幅图像(以中间图像为参考)
在图像拼接(十三):OpenCV单应变换模型拼接多幅图像 这篇博客中实现了用单应变换模型拼接多幅图像,图像拼接使用的OpenCV库函数warpPerspective()。因为这个函数只有在右侧图像变换到左侧图像时才能完整显示,所以拼接过程选择了以最左侧图像为参考帧。由于累加误差,最右侧的图像出现严重的变形。如下所示:在这篇博客中,我们以中间幅图像为参考图像,实现多幅拼接。图像数量为4张,从左到右分别原创 2017-03-25 16:48:59 · 35542 阅读 · 11 评论 -
图像拼接(十二):OpenCV SeamFinder+GraphCut+最佳拼接缝寻找
很多情况下,使用一个全局单应变换并不能准确对齐图像,需要一些后处理来削弱拼接的痕迹,比如寻找最佳拼接缝。使用全局单应变换的对齐结果,实现代码参考图像拼接(六):OpenCV单应变换模型拼接两幅图像:仔细观察,在拼缝的下方出现了没对齐的问题。寻找最佳拼接缝算法中,Graph Cut很经典。它将计算机视觉问题和网络流联系在一起。寻找最佳拼接缝等价于求网络流的最小割。 在网络流问题中,最小割和最大流相等原创 2017-03-24 00:01:31 · 22860 阅读 · 32 评论 -
图像拼接(十一):双摄像头实时拼接+stitching_detailed
OpenCV自带的stitching模块在追求拼接质量方面已经做得很好了,但是实时性不够,即使是拼接两幅图像。比如源程序拼接两幅640*480分辨率的图像,拼接时间为4.78″。对stitching_detailed.cpp源码进行改造,有利于提高实时性的举措有:调节初始化参数。比如使用GPU,这个需要重新编译OPenCV库。减少视频帧的分辨率。减少为320*240。将特征提取、匹配、变换矩阵原创 2017-03-07 17:01:09 · 19146 阅读 · 20 评论 -
图像拼接(十):OPenCV stitching和stitching_detailed
Stitcher类与detail类OpenCV提供了高级别的函数封装在Stitcher类中,使用很方便,不用考虑太多的细节。低级别函数封装在detail命名空间中,展示了OpenCV算法实现的很多步骤和细节,使熟悉如下拼接流水线的用户,方便自己定制。可见OpenCV图像拼接模块的实现是十分精密和复杂的,拼接的结果很完善,但同时也是费时的,完全不能够实现实时应用。我在研究detail源码时,由于水平有原创 2017-03-07 16:25:47 · 26435 阅读 · 8 评论 -
图像拼接(九):双摄像头实时视频拼接(单应变换模型)
单应变换相比平移变换,具有更广泛的场景适应性,但同时稳定性会有一定程度下降。设计到的技术细节有:特征检测与描述特征匹配与单应矩阵估计opencv采集视频渐入渐出图像融合这个解决方案的硬件条件包括:有两个USB接口的计算机,两个合理放置的USB摄像头。合理放置是指:两个摄像头分割一定夹角,相机中心相距接近,所拍摄场景有足够的重叠部分。以上保证了单应变换的可用性。代码实现:#include "原创 2017-03-07 11:23:42 · 10957 阅读 · 15 评论 -
图像拼接(八):拼接多幅图像+Matlab实现+Stanford Open Course
本博客与以下文档资料一起服用效果更佳。Stanford University CS 131 Computer Vision: Foundations and Applications【OpenCV】SIFT原理与源码分析-小魏的修行路Matlab源码地址:多幅图像拼接matlab实现-优快云下载开始正文。梳理一下本篇博客图像拼接的原理:特征检测:SIFT角点检测特征描述:SIFT描述翻译 2017-03-06 16:06:58 · 44920 阅读 · 118 评论 -
全景图(三):在Unity3D上实现360°球面投影
准备工作首先需要准备好一张360°视角的的照片。就像下面这样。步骤1、创建一个球体,命名为照片球(PhotoSphere)。Scale设为(10,10,10),重置位置。2、创建一个材质(Material),选中它,将其渲染器设为InwardShader。 注:这个渲染器是定制的,渲染定义文件参考全景图(二):在Unity3D上实现360°柱面投影3、禁用全局光照Directional Light原创 2017-02-26 15:17:38 · 16337 阅读 · 2 评论 -
全景图(二):在Unity3D上实现360°柱面投影
在全景图(一):使用Unity完成水晶球纹理贴图 建立的工程基础之上,做修改。步骤:1、把上次创建好的水晶球移走,放到一个不妨碍观察的地方。2、创建一个圆柱体,位置设为(0,1.5,0),比例设为(2,0,5,2)。 注:比例的设置和作为纹理映射的图像的宽高比有关,Unity中默认的圆柱体是2个单位高度以及1个单位宽度。3、在圆柱体的Inspector面板中禁用Capsule Collider组件原创 2017-02-25 20:45:17 · 8897 阅读 · 2 评论 -
全景图(一):使用Unity完成水晶球纹理贴图
本系列文章使用Unity来完成2D全景图的3D展示。Unity3D是虚拟现实开发中的强大工具,使用Unity生成360°图像或视频也非常方便,利用可视化工具和少量脚本代码(C#语言)就能轻松完成。下载和安装Unity可访问官网下载最新的个人版(免费)。官网提供的下载器,我使用的时候发生了异常。也可在此界面使用迅雷下载,Unity3d下载 ,版本是Unity5.5。下载下图圈有红线的条目,就够用了。安原创 2017-02-25 17:00:37 · 9352 阅读 · 0 评论 -
图像拼接(七):OpenCV单应变换模型拼接多幅图像
上篇博客图像拼接(六):OpenCV单应变换模型拼接两幅图像 实现了两幅图像的拼接,主要是使用了单应矩阵和warpPerspective()这个库函数。求取每相邻两幅图像的单应矩阵拼接多幅图像,需要计算每相邻两幅图像的单应矩阵,上篇已经封装了求取单应矩阵的类,可以拿来用。 现有4幅图像:img1img1,img2img2,img3img3,img4img4。依次从右向左排列,拼接图像以最左侧的im原创 2017-03-06 10:50:05 · 14244 阅读 · 20 评论 -
图像拼接(六):OpenCV单应变换模型拼接两幅图像
图像拼接首要步骤就是对齐。对齐就要找到两幅图像相对的位置关系。为了描述位置之间的变换关系,研究者引人了诸如平移,仿射,单应等变换模型。每个模型无所谓好坏,各有特定的适用范围。在其次坐标系下,图像位置之间的关系,或者说同名点坐标之间关系,都可以用一个3×3的矩阵来表达。从平移到单应,这个变换矩阵的自由度逐步上升,灵活度增加,适用的场合变广,但也导致求解出来的变换矩阵不太准确和稳定,意思是容易拼飞。所以原创 2017-03-04 14:25:28 · 16636 阅读 · 8 评论 -
图像拼接(五):双摄像头实时视频拼接(平移模型+多线程)
在双摄像头相对平行固定,所拍摄图像视差很小,可使用平移运动模型的情形下,我们提到了“柱面投影+模板匹配+渐入渐出拼接”的解决方案。不考虑多线程,参见图像拼接(四):双摄像头实时视频拼接(平移模型) 可以看出,图像或视频拼接其实是一项”流水线”技术,包括:源图像数据获取(两幅源图像)、柱面投影、模板匹配、图像融合、输出或者是显示拼接后的图像。这个过程中每个步骤有先后,可以说是串行的,怎么能使用多线原创 2017-01-19 12:01:31 · 17486 阅读 · 4 评论 -
图像拼接(四):双摄像头实时视频拼接(平移模型)
假设两个摄像头平行固定,所拍摄的图像视差很小,可以通过“柱面投影+模板匹配+渐入渐出融合”的解决方案实现视频拼接。 关于这种方法的静态图像拼接,参考图像拼接(一):柱面投影+模板匹配+渐入渐出融合 OpenCV双摄像头捕获视频并实时显示的代码,参见:图像拼接(三):OpenCV同时打开两个摄像头捕获视频 将代码整合,实现双摄像头实时视频拼接:#include "opencv2/core/cor原创 2017-01-18 21:27:22 · 18351 阅读 · 7 评论 -
图像拼接(三):OpenCV同时打开两个摄像头捕获视频
使用OpenCV实现同时打开两个USB摄像头,并实时显示视频。如果未检测有两个摄像头,程序会结束并发出“摄像头未安装好”的警告。这里推荐一个小巧的摄像头视频捕捉软件:amcap,使用它可以方便的检查每个摄像头是否能正常工作。 捕获视频: 代码:#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#in原创 2017-01-18 20:13:41 · 14231 阅读 · 8 评论 -
图像拼接(二):柱面投影+模板匹配+渐入渐出融合(GPU版)
本篇博客的代码修改自图像拼接(一):柱面投影+模板匹配+渐入渐出融合。新的代码充分利用了OpenCV库函数的GPU版本。在一些方法中使用了GpuMat这一数据结构,它是Mat的替代。Mat运行在CPU上,GpuMat运行在GPU上,使用这一数据结构,将一些费时的操作交由GPU处理,会提高处理速度。 文末附有完整代码清单,这里对代码做些说明: 1、使用OpenCV的GPU版本,需要重新编译Open原创 2017-01-18 16:42:11 · 8231 阅读 · 3 评论 -
图像拼接(一):柱面投影+模板匹配+渐入渐出融合
这种拼接方法的假设前提是:待拼接的两幅图像之间的变换模型是平移模型,即两幅图像同名点位置之间只相差两个未知量:Δx\Delta x 和Δy\Delta y,自由度为2,模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄像机拍摄时,这种方法才适用。 整个过程为:首先对输入的两幅图像做柱面投影;然后通过模板匹配求取Δx\Delta x 和Δy\Delta y;最后采用渐入渐出的融合方原创 2017-01-18 10:46:32 · 53417 阅读 · 23 评论