这里把二者作一个比较,并对相关的矩阵做一个联系以使能够相互转换。

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) 比较与相互转换相关推荐

  1. OpenGL ES: (5) OpenGL的基本概念、OpenGL ES 在屏幕产生图片的过程、OpenGL管线(pipeline)...

    一. OpenGL的基本概念 OpenGL 的结构可以从逻辑上划分为下面 3 个部分: 图元(Primitives) 缓冲区(Buffers) 光栅化(Rasterize) 图元(Primitives ...

  2. OpenGL(5)深入理解Pipeline, State, Context

    OpenGL(5)深入理解Pipeline, State, Context Pipeline(管线/管道) 管线(pipeline),可以理解为渲染流水线.它的最终目的是将输入3D数据经过几个流程的处 ...

  3. 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 ...

  4. [CocosCreator]AssetManager之管线

    creator 使用管线(pipeline)来处理整个资源加载的流程,这样的好处是解耦了资源处理的流程,将每一个步骤独立成一个单独的管道,管道可以很方便地进行复用和组合,并且方便了我们自定义整个加载流 ...

  5. python第30讲数据挖掘_Python 中的实用数据挖掘

    本文是 2014 年 12 月我在布拉格经济大学做的名为' Python 数据科学'讲座的笔记.欢迎通过 @RadimRehurek 进行提问和评论. 本次讲座的目的是展示一些关于机器学习的高级概念. ...

  6. 用NVIDIA A100 GPUs提高计算机视觉

    用NVIDIA A100 GPUs提高计算机视觉 Improving Computer Vision with NVIDIA A100 GPUs 在2020年英伟达GPU技术会议的主题演讲中,英伟达创 ...

  7. pix2pixhd_一文读懂GAN, pix2pix, CycleGAN和pix2pixHD

    人员信息 主讲嘉宾 姓名:朱俊彦(Jun-Yan Zhu) 现状:麻省理工学院博士后(PostDoc at MIT),计算机科学与人工智能实验室(Computer Science and Artifi ...

  8. 解读ASP.NET 5 MVC6系列(6):Middleware详解

    在第1章项目结构分析中,我们提到Startup.cs作为整个程序的入口点,等同于传统的Global.asax文件,即:用于初始化系统级的信息(例如,MVC中的路由配置).本章我们就来一一分析,在这里如 ...

  9. What every programmer should know about memory 笔记

    What every programmer should know about memory, Part 1(笔记) 每个程序员都应该了解的内存知识[第一部分] 2.商用硬件现状 现在硬件的组成对于p ...

最新文章

  1. Sublime Text 3 全套快捷键及功能介绍
  2. 一个图片 在另一个图片定位_淋雨图片孤身一人 一个人在淋雨的图片_新闻资讯...
  3. P1262_美帝的间谍网络被我部捕获!
  4. php 调用 com,PHP调用COM函数
  5. HOJ-2662Pieces Assignment(状态压缩,动态规划)
  6. 如何通过代码设置WPF控件的字体,颜色
  7. Window下本地redis的安装、配置以及java版试用
  8. 更改JENKINS主目录
  9. 让你的网页更精彩 - Javascript 调用MSAgent (转)
  10. 【Hill Cipher】希尔密码描述 by Xiaosi_lemon
  11. 为什么在Excel文档单元格中输入长段数字就变为公式?干货来啦!如何解决在excel单元格中输入数字变为公式的问题?
  12. 蓝桥杯 A组 迷宫地图
  13. Dx11--用dx11绘制棱台,并用键盘和鼠标进行旋转缩放操作
  14. excel使用小技巧-冻结窗格
  15. 【SPUSKU】简述
  16. SQL Server 2005 连接到服务器失败解决方案
  17. 多少资金能做股指期货?要交哪些费?
  18. win8电脑打不开html文件,Win8网页打不开qq能上_Win8能上qq打不开网页怎么办?-192路由网...
  19. 天融信防火墙重置配置_天融信防火墙怎么配置路由
  20. 航空燃气涡轮发动机分类

热门文章

  1. mysql 表损坏_MYSQL数据表损坏的原因分析和修复方法小结(推荐)
  2. 字谜 java_java - 2字的字谜 - 堆栈内存溢出
  3. python循环函数怎么改变变量_python:循环定义多个变量
  4. 2013江苏计算机二级vfp试题,2013年3月全国计算机二级VFP真题
  5. cvpr2020 人脸检测与识别_投石科技温度检测人脸识别设备装置
  6. html css 魔方,css3实现立体魔方效果
  7. linux iso的引导文件,Linux_从硬盘启动Desktop ISO所需的引导文件,一、仅从硬盘启动Destdop ISO 并 - phpStudy...
  8. pycharm无法导入Pillow
  9. Spring自动装配Bean
  10. kmeans python自定义初始聚类中心_机器学习-KMeans聚类 K值以及初始类簇中心点的选取...