opencv warp(扭曲)球面投影的原理
关于坐标系变换,可以参考:
http://blog.csdn.net/wangxiaokun671903/article/details/37966891
在opencv的全景视频拼接demo stitching_detailed中,用到了warp,主要是创建用于多幅图像融合的表面,默认是球面投影,其原理分析如下:
直观说分3步:
1.矩形->曲面
矩形铺在球面上(像素坐标系->世界坐标系),这个时候看起来这个矩形看起来已经不是矩形了,变成了一个四个边有弧度的形状;
2.曲面->矩形
拉伸这个形状使之从变成矩形(求各个弧形边的最外沿坐标,或者说曲面各个弧边的切线构成的平面矩形);
3.扭曲变换
将这个矩形通过反变换(世界坐标系->像素坐标系),使之变成一个扭曲的平面。
每一步的实现:
1.前向变换,三维重建:
SphericalProjector::mapForward
1)二维转三维->将原图的mask矩形轮廓的像素坐标乘以R(旋转矩阵)和K(内参)的逆矩阵,得到空间三维坐标;
2)将三维坐标(x,y,z)转换成球面的极坐标(其值为球面坐标的仰角和张角对应的弧度),球半径为焦距;
2.获得产生的曲面的外围矩形轮廓,曲面->矩形,会有拉伸;
RotationWarperBase<P>::detectResultRoiByBorder
3.反向变换:
SphericalProjector::mapBackward
1)产生的新矩形挨个像素将其作为球面坐标转换回空间三维坐标(x,y,z);
2)三维转二维->空间三维坐标乘以R和K矩阵,得到像素坐标。
4.经过以上步骤得到两个分别沿x、y轴转换的映射矩阵;
5.原图与这两个矩阵做remap操作得到投影后的图像。
opencv warp(扭曲)球面投影的原理相关推荐
- python opencv单目测距 小孔成像原理
python opencv单目测距 小孔成像原理 小孔成像原理 代码 opencv>3.x 小孔成像原理 一 用相似三角形计算物体或者目标到相机的距离 我们将使用相似三角形来计算相机到一个已知的 ...
- python手机摄像头投测距_python opencv单目测距 小孔成像原理
python opencv单目测距 小孔成像原理 小孔成像原理 一 用相似三角形计算物体或者目标到相机的距离 我们将使用相似三角形来计算相机到一个已知的物体或者目标的距离. 相似三角形就是这么一回事: ...
- opencv自适应二值化原理
opencv自适应二值化原理 先对图像做模糊处理(一般是均值或者高斯模糊).(这里可以加上自己的操作,做一些其他类型的模糊以及一些形态学的操作). 用原图与模糊处理之后的图像做差得到一幅图像. 判断图 ...
- opencv opencl加速_回放 | OpenCV Webinar 3:OpenCV深度学习应用与原理分析
OpenCV DNN模块提供了深度学习的推理,支持Caffe.Tensoflow.Torch.Darknet.ONNX等格式的模型,无需用户安装对应的深度学习框架,也无需进行模型格式转换,直接调用DN ...
- pythonopencv测距_python opencv单目测距 小孔成像原理
有问题添加QQ群:686070107 小孔成像原理 一 用相似三角形计算物体或者目标到相机的距离 我们将使用相似三角形来计算相机到一个已知的物体或者目标的距离. 相似三角形就是这么一回事:假设我们有一 ...
- opencv基础---直方图均衡化(原理equalizeHist)
直方图均衡化的作用是图像增强. 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布. 第一个问题.均衡化过程中,必须要保证两个条件:①像素无论怎么映射, ...
- Opencv外参估计cvFindExtrinsicCameraParams2原理解析(四)
背景介绍 在之前的博文中,已经在外参估计函数cvFindExtrinsicCameraParams2分别进行了单应性方法.DLT方法,单应性矩阵进一步估计旋转平移量做了原理解析.本文对opencv在估 ...
- 【opencv】基于opencv实现人脸识别,原理代码部分
上一部分我们解决了环境问题,这一部分我们可以开始上代码,环境没有配好的可以参照上一篇博客:环境搭建解决: 下面先说一下原理: 一.原理部分 本文基于opencv来实现人脸识别,大致实现流程可以描述 ...
- opencv焦距估计函数cvInitIntrinsicParams2D原理解析
背景介绍 在进行相机标定时,通常会包括内参初始化估计.外参初始化估计,以及非线性优化参数.在opencv中内参数估计主要在cvInitIntrinsicParams2D函数中实现,外参数估计在cvFi ...
- 干货 | OpenCV中KLT光流跟踪原理详解与代码演示
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 稀疏光流跟踪(KLT)详解 在视频移动 ...
最新文章
- Spring MVC 实现Excel的导入导出功能(2:Excel的导入优化和Excel的导出)
- matlab stract结构_MATLAB 的基础知识
- startservice方式启动服务
- 计算机网络技术及应用 课程 英语,计算机网络应用—现代英语课堂中的第三种语言...
- vectorvn1610报价_【8.5873.5444.G323】价格_厂家 - 中国供应商
- SAP Spartacus shipping address页面请求2 - Put Address
- VC6中使用内存DC加载并显示JPG图片的注意事项
- 计算机应用技术自我分析,计算机应用*个人自我鉴定
- ASP.NET操作Excel(终极方法NPOI)
- 笔记 | 《机器学习》中计算学习理论(上)
- bootstraptable 怎么在特定行添加数据_手把手教你做一个“渣”数据师,用Python代替老情人Excel...
- “异常的”间谍软件窃取工业企业凭据
- 优化数据库语句的几个简单技巧
- 什么是LAMP?LAMP有什么优势?
- media encoder中文2022已上线
- 在WSUS 3.0的环境中,部分客户机没有向WSUS服务器更新状态,该如何解决?
- qpython3打开app_Android QPython3 扩展:调用其他App打开文件
- Pytorch基于深度学习模型Seq2Seq的聊天机器人构建与应用部署实战
- Java:判断是一年的第几天
- SQL面试题练习记录
热门文章
- 预应力钢筒混凝土管(PCCP)行业发展现状及竞争格局分析报告2022-2027年版
- 通过3dmax将max文件导出为unity3d可用的带贴图的fbx文件
- python画正态分布_用python的matplotlib画标准正态曲线
- 前端三大框架React、Vue、Angular简述
- 第一章	使用SOAPUI测试和开发Web Services Stubs
- LimeSDR官方系列教程(四):To Pothos and Beyond
- android 10 多开,多开分身安卓10版
- Android版微信跳一跳小游戏如何利用技术手段达到高分!
- 对比汇新云和猪八戒?
- Android音频系统之二音频框架