GL 与 CV 管线 (pipeline) 比较与相互转换
这里把二者作一个比较,并对相关的矩阵做一个联系以使能够相互转换。
1. CV中图像形成过程 (transformation stages)
这一过程可概括为四个坐标系的转换,分别为:世界坐标系、相机坐标系、图像坐标系、像素坐标系,如下图:
对应的,来看一个顶点从世界坐标中(X_w, Y_w, Z_w,1)到图像上(u,v)处的一系列变换:
其中,f即有效焦距,(u_c, v_c)为principle point, (dx, dy)为像素点的物理大小
为简明起见,以上过程中没有考虑畸变。畸变使图像坐标(image coordinate)变得不准确。
假如理想的图像坐标为(X_i, Y_i, W_i),而畸变后的图像坐标为(X_d, Y_d, W_d),通常使用如下公式来对它们的关系建模:
我们可以将这一变化放到M_{i1}矩阵中。
在视觉中,常需要对相机进行标定,会得到内参、外参两个结果,这两个结果对应于M_{i1}M_{i2}及M_e两个矩阵.
2. GL中图像形成过程 (transformation stages)
这一部分是由OpenGL的pipeline规定的,详请参考OpenGL Specification。
大致过得是:
这里要强调的是投影矩阵(projection matrix),即图中M_p, 以及矩阵M_v。 至于模型视图矩阵M_{mv}则与CV中的一致。
2.1投影矩阵及变换
OpenGL提供了API来设置投影矩阵projection matrix,glu也提供了辅助函数gluPerspective,需要四个参数 fovy, aspect, zFar, zNear。
这个函数生成一个4*4矩阵,对Eye Coordinate中的坐标进行变换:
2.2 视口矩阵及变换
视口矩阵将坐标从NDC(标准设备坐标)变换至窗口上, 使用glViewport来设置四个参数 x_0, y_0, width, height
生成变换的变换如下:
2.3 成像过程
这样,我们可以看到GL中整个坐标变换过程为:
3. CV/CG中矩阵的对应
从CV的坐标变换过程, 我们最终可以推导得到:
,其中
从GL的坐标变换过程,推导出:
因此,
1. 假若已知GL参数,则可求出CV参数为:
2. 假若已知CV参数,则可求出GL参数为:
参考:《correspondence analysis between the image formation pipelines of graphics and vision》
转载于:https://www.cnblogs.com/justin_s/archive/2012/09/06/2672913.html
GL 与 CV 管线 (pipeline) 比较与相互转换相关推荐
- OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...
一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...
- OpenGL(5)深入理解Pipeline, State, Context
OpenGL(5)深入理解Pipeline, State, Context Pipeline(管线/管道) 管线(pipeline),可以理解为渲染流水线.它的最终目的是将输入3D数据经过几个流程的处 ...
- OpenCV算法加速(4)官方源码v4.5.5的默认并行和优化加速的编译选项是什么?请重点关注函数cv::getBuildInformation()的返回值
举例opencv v4.5.5版本源码,Windows x64,VS2019,CMake https://github.com/opencv/opencv/tree/4.5.5 https://sou ...
- [CocosCreator]AssetManager之管线
creator 使用管线(pipeline)来处理整个资源加载的流程,这样的好处是解耦了资源处理的流程,将每一个步骤独立成一个单独的管道,管道可以很方便地进行复用和组合,并且方便了我们自定义整个加载流 ...
- python第30讲数据挖掘_Python 中的实用数据挖掘
本文是 2014 年 12 月我在布拉格经济大学做的名为' Python 数据科学'讲座的笔记.欢迎通过 @RadimRehurek 进行提问和评论. 本次讲座的目的是展示一些关于机器学习的高级概念. ...
- 用NVIDIA A100 GPUs提高计算机视觉
用NVIDIA A100 GPUs提高计算机视觉 Improving Computer Vision with NVIDIA A100 GPUs 在2020年英伟达GPU技术会议的主题演讲中,英伟达创 ...
- pix2pixhd_一文读懂GAN, pix2pix, CycleGAN和pix2pixHD
人员信息 主讲嘉宾 姓名:朱俊彦(Jun-Yan Zhu) 现状:麻省理工学院博士后(PostDoc at MIT),计算机科学与人工智能实验室(Computer Science and Artifi ...
- 解读ASP.NET 5 MVC6系列(6):Middleware详解
在第1章项目结构分析中,我们提到Startup.cs作为整个程序的入口点,等同于传统的Global.asax文件,即:用于初始化系统级的信息(例如,MVC中的路由配置).本章我们就来一一分析,在这里如 ...
- What every programmer should know about memory 笔记
What every programmer should know about memory, Part 1(笔记) 每个程序员都应该了解的内存知识[第一部分] 2.商用硬件现状 现在硬件的组成对于p ...
最新文章
- Sublime Text 3 全套快捷键及功能介绍
- 一个图片 在另一个图片定位_淋雨图片孤身一人 一个人在淋雨的图片_新闻资讯...
- P1262_美帝的间谍网络被我部捕获!
- php 调用 com,PHP调用COM函数
- HOJ-2662Pieces Assignment(状态压缩,动态规划)
- 如何通过代码设置WPF控件的字体,颜色
- Window下本地redis的安装、配置以及java版试用
- 更改JENKINS主目录
- 让你的网页更精彩 - Javascript 调用MSAgent (转)
- 【Hill Cipher】希尔密码描述 by Xiaosi_lemon
- 为什么在Excel文档单元格中输入长段数字就变为公式?干货来啦!如何解决在excel单元格中输入数字变为公式的问题?
- 蓝桥杯 A组 迷宫地图
- Dx11--用dx11绘制棱台,并用键盘和鼠标进行旋转缩放操作
- excel使用小技巧-冻结窗格
- 【SPUSKU】简述
- SQL Server 2005 连接到服务器失败解决方案
- 多少资金能做股指期货?要交哪些费?
- win8电脑打不开html文件,Win8网页打不开qq能上_Win8能上qq打不开网页怎么办?-192路由网...
- 天融信防火墙重置配置_天融信防火墙怎么配置路由
- 航空燃气涡轮发动机分类
热门文章
- mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)
- 字谜 java_java - 2字的字谜 - 堆栈内存溢出
- python循环函数怎么改变变量_python:循环定义多个变量
- 2013江苏计算机二级vfp试题,2013年3月全国计算机二级VFP真题
- cvpr2020 人脸检测与识别_投石科技温度检测人脸识别设备装置
- html css 魔方,css3实现立体魔方效果
- linux iso的引导文件,Linux_从硬盘启动Desktop ISO所需的引导文件,一、仅从硬盘启动Destdop ISO 并 - phpStudy...
- pycharm无法导入Pillow
- Spring自动装配Bean
- kmeans python自定义初始聚类中心_机器学习-KMeans聚类 K值以及初始类簇中心点的选取...