GL 与 CV 管线 (pipeline) 比较与相互转换
2012-09-06 09:46
232 查看
这里把二者作一个比较,并对相关的矩阵做一个联系以使能够相互转换。
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》
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》
相关文章推荐
- 人脸识别系统开发(7) -- cv::Mat与QImage相互转换
- 【OpenCV学习笔记】【类型转换】一(IplImage和cv::Mat的类型相互转换)
- 【11/16】 iOS开发成长之路,【NSString 和NSInteger的相互转换,NSString字符串比较,拆分】
- 【OpenCv】QImage 与 cv::Mat 之间的相互转换
- cv::Mat,cvMat和IplImage的相互转换方法
- open.gl 翻译之 显卡图形管线(pipeline)和着色器(shader)
- String与Date的相互转换和日期比较
- OpenCV Mat和IplImage比较以及相互转换
- QImage 与 cv::Mat 之间的相互转换
- QImage 与 cv::Mat 之间的相互转换
- cv::Mat,cvMat和IplImage的相互转换方法
- OpenCV的cvReleaseImage释放内存出错解决方法及Mat格式与IplImage格式相互转换
- QImage 与 cv::Mat 之间的相互转换
- QImage 与 cv::Mat 之间的相互转换
- QImage 与 cv::Mat 之间的相互转换
- ros代码中添加使用opencv库,cv::Mat和ros image之间的相互转换
- QImage 与 cv::Mat 之间的相互转换
- MySQL中日期与字符串相互转换,并进行日期比较查询
- cv::Mat,cvMat和IplImage的相互转换方法
- QImage 与 cv::Mat 之间的相互转换