opencv warp(扭曲)球面投影的原理
来源:互联网 发布:集思宝软件 编辑:程序博客网 时间:2024/05/16 11:16
关于坐标系变换,可以参考:
http://blog.csdn.net/wangxiaokun671903/article/details/37966891
在opencv的全景视频拼接demo stitching_detailed中,用到了warp,主要是创建用于多幅图像融合的表面,默认是球面投影,其原理分析如下:
直观说分3步:
1.矩形->曲面
矩形铺在球面上(像素坐标系->世界坐标系),这个时候看起来这个矩形看起来已经不是矩形了,变成了一个四个边有弧度的形状;
2.曲面->矩形
拉伸这个形状使之从变成矩形(求各个弧形边的最外沿坐标,或者说曲面各个弧边的切线构成的平面矩形);
3.扭曲变换
将这个矩形通过反变换(世界坐标系->像素坐标系),使之变成一个扭曲的平面。
每一步的实现:
1.前向变换,三维重建:
SphericalProjector::mapForward1)二维转三维->将原图的mask矩形轮廓的像素坐标乘以R(旋转矩阵)和K(内参)的逆矩阵,得到空间三维坐标;
2)将三维坐标(x,y,z)转换成球面的极坐标(其值为球面坐标的仰角和张角对应的弧度),球半径为焦距;
2.获得产生的曲面的外围矩形轮廓,曲面->矩形,会有拉伸;
RotationWarperBase<P>::detectResultRoiByBorder3.反向变换:
SphericalProjector::mapBackward1)产生的新矩形挨个像素将其作为球面坐标转换回空间三维坐标(x,y,z);
2)三维转二维->空间三维坐标乘以R和K矩阵,得到像素坐标。
4.经过以上步骤得到两个分别沿x、y轴转换的映射矩阵;
5.原图与这两个矩阵做remap操作得到投影后的图像。
0 0
- opencv warp(扭曲)球面投影的原理
- 解释VR的时间扭曲(time-warp)
- 球面投影 (立体和柱面的投影效果)
- 详解各类球面投影
- 图像の球面投影算法
- 三位投影的原理
- [OpenCV]图像的投影校正
- OPENCV 反向投影的理解
- 直方图的反向投影的原理及OpenCV下的源码!
- 关于《一种基于球面透视投影约束的鱼眼镜头校正方法》的流程
- 【opencv+python】图像处理之二、几何变换(仿射与投影)的原理
- OPENCV直方图计算原理及反向投影检测原理
- OPENCV直方图计算原理及反向投影检测原理
- 球面投影全景图快速拼接
- opencv投影
- opencv计算图像的水平投影和垂直投影
- PS 滤镜——(扭曲)球面化 Spherize
- opencv中直方图的反向投影
- spring boot 实际应用(六) session共享问题
- Android下获取集合指定长度的随机集合
- UVa 1374 Power Calculus (快速幂计算)
- Linux vi中查找字符内容的方法
- transform旋转
- opencv warp(扭曲)球面投影的原理
- Qt qml中使用listView加载组件问题
- Redis PHP通用类
- 二进制文件读入
- WebRTC实时音视频技术基础:基本架构和协议栈
- pynlpir在windows环境下引入失败处理
- 用robocopy删除windows深目录的方法
- 饼状图的制作(java)
- React还是Vue:你该如何选择?