全景图的种类及opencv实现
全景图概述
每当一个平面图像映射到一个弯曲的表面就会发生图象投影,反之亦然,这中现象特别常见于全景摄影。例如地球的球面可以映射到一块平坦的纸张。由于在我们周围的整个视场的可以被认为是作为球体的表面(对于所有观测角度),我们需要一种能将球形投影到2-D平面以便照片打印的方法。
小的视角相对容易进行形变并投影到平坦的纸上。但是,当试图把一个球形图像映射到一个平面上,有些变形是不可避免的。因此,每一种类型的投影仅仅尝试避免一种类型的失真,这是以牺牲其他失真为代价的。随着视场角增大,观测弧(viewing arc)变得更弯曲,从而全景投影类型之间的差异变得更加显着。什么时候使用那一种投影,在很大程度上取决于每个投影应用。 在这里,我们集中介绍在几个最常用。
全景图的种类
摩卡托投影:和圆柱以及equirectangular投影关系非常密切。是这两种类型之间的一种折衷。和柱面投影相比,其产生更小的垂直拉伸和更大的可用的垂直角度,但是直线会更加弯曲。这个投影方式最有名的应用就是在平面地图上,我们也注意到,这个方法的另一种变形:横轴摩卡托投影,可以被用于生成很高的纵向全景图。
正弦投影:目标是保持所有网格区域的面积。如果用这种投影将地球变平,可以使用反变换再次形成一个面积和形状不变的球体。面积相等的特性是非常有用的,因为其保持了一致的水平和竖直分辨率。此投影类似的鱼眼和立体图投影,但它保持了纬线的完全水平。
立体图投影:和鱼眼投影类似,但它通过随着目标远离透视中心,逐渐进行拉伸的方法,保持了更好的透视感。这种透视增长的特性有点类似与直线投影的效果。
OpenCV快速实现全景拼接
最新版的opencv2.4里面有很多新元素。 stitching module 就是一个非常有用的. 在opencv的例程文件夹里,有一个很好的脚本叫做 stitching_detailed.cpp. 这个脚本包括了创建全景图的全部过程,包括特征提取,匹配,warp,以及合成。安装好opencv以后,可以简单的通过命令行来测试这个例程:
$ ./stitching_detailed Univ*.jpg
这会使用默认参数来创建一个result.jpg的最终文件,来源的图片是以 "Univ"开头的jpg图像. 可以通过help察看一些设置
$ ./stitching_detailed --help
例如,可以改变投影的方式,默认是球面投影. 下面的例程用摩卡托投影法:
$ ./stitching_detailed Univ*.jpg --warp mercator
结果如下:原图像可以在这里找到
柱面
摩卡托
参考文献:
http://www.cambridgeincolour.com
http://wiki.panotools.org
http://mathworld.wolfram.com
http://www.janeriksolem.net
全景图的种类及opencv实现相关推荐
- 全景图的种类、360度三维实拍全景
(转载地址:http://blog.sina.com.cn/s/blog_4b27c38d01019xlv.html 谢谢作者的分享) 根据全景外在表现形式可以分为柱形全景和球形全景两大类.柱形全景是 ...
- SpringBoot整合opencv实现全景图切割
SpringBoot整合openCV实现360全景相机拍摄的全景图切割,话不多说,直接上代码 1.获取opencv-452.jar 首先,切割全景图需要使用到openCV的依赖jar,这个jar可以通 ...
- 全景视频拼接(二)--OpenCV源码解析
本文参考:http://blog.csdn.net/skeeee/article/details/19480693,做了一定修改和补充. 一.stitching_detail程序运行流程 1.命令行调 ...
- [转载]全景视频拼接(二)--OpenCV源码解析
转载自 [https://blog.csdn.net/App_12062011/article/details/52438357] 本文参考:http://blog.csdn.net/skeeee/a ...
- opencv 4计算机视觉项目实战_资源|计算机视觉实战操作(PDF下载)
这是近一两年来分享的关于计算机视觉实战相关的项目汇总.理论总是枯燥乏味的,公式又是那么晦涩难懂,而视觉的魅力就在于,完美的数学公式后,隐藏着惊艳令人惊艳的结果.但是,如果有人告诉你,你需要先学会数学, ...
- 资源|计算机视觉实战操作(PDF下载)
这是近一两年来分享的关于计算机视觉实战相关的项目汇总. 理论总是枯燥乏味的,公式又是那么晦涩难懂,而视觉的魅力就在于,完美的数学公式后,隐藏着惊艳令人惊艳的结果.但是,如果有 ...
- 计算机视觉黑魔法 | 16个案例
这是近一两年来分享的关于计算机视觉实战相关的项目汇总. 理论总是枯燥乏味的,公式又是那么晦涩难懂,而视觉的魅力就在于,完美的数学公式后,隐藏着惊艳令人惊艳的结果.但是,如果有 ...
- Python调用安民威视、海康威视等网络摄像头方法(并实现KCF目标追踪和代码)
一.利用OpenCv调用网络摄像头 核心:调取网络摄像头的核心是利用rtsp通道来获取网络摄像头的信息流. (1)首先需要将电脑网络与摄像头网络处于同一个局域网或交换机下. (2)查询摄像头的用户名( ...
- 【高空无人机视角下的路口车辆与行人检测跟踪与轨迹刻画】
[高空无人机视角下的路口车辆与行人检测跟踪与轨迹刻画] 背景需求 可参考的方法 1. opencv + python 实现目标跟踪的方法: 主要代码 ① main.py ② items.py 检测效果 ...
最新文章
- 哪些人交不到真朋友?
- 通用AI咋发展?向大脑学习是条路子
- LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
- 关于Dialog的简单体验
- SAP的SqlAnyWhere中数据库日志文件删除后如何新建
- 这些迹象表明公司即将裁员
- Linux mv命令:移动文件或改名
- Redis简单案例(三) 连续登陆活动的简单实现
- 用css实现星级评分效果
- isFinite使用说明
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月5日-8月12日)
- JS—图片压缩上传(单张) 1
- 左手用R右手Python系列之——表格数据抓取之道
- 趋势科技防毒墙-网络版(OfficeScan)客户端管理工具
- 基于cocos creator 3.4 实现虚拟摇杆
- 一文学会如何使用工厂模式
- 有向图的邻接矩阵的平方运算的含义
- 开源帮助:什么是退出代码 137,你能修复它吗?
- Java Logging之JUL系列——Log Levels
- 基于STM32F103+涂鸦三明治的宠物自动喂食器
热门文章
- 快速上手TiDB,体验全新的一栈式实时HTAP数据库
- 安装hadoop集群模拟大数据集群踩到的坑(一)
- 2013移动开发工具盘点:最火原型设计工具
- Qt开源库-顶级浮动窗口系统-Advanced-Docking-System【01】
- 【数学】二阶非齐次微分方程的解法
- java技术及ssh框架和jsp技术的介绍 外文文献及翻译_java技术及ssh框架和jsp技术的介绍 外文文献及翻译.doc...
- 第十七章 : 网络系统
- javascript读写二进制
- 大陆二代居民身份证校验代码
- Centos网络操作之IP、网关、路由、防火墙