OpenGL投影矩阵与相机模型(Set Projection Matrix for Pinhole Camera Model)
2015-09-22 21:16
736 查看
出处:http://oliver.zheng.blog.163.com/blog/static/1424115952013349234838/
(转载自"结冰的雪"百度空间)
目的:用OpenGL模拟针孔相机的视角。
针孔相机模型(Pinhole camera model):内参(intristric parameters)f(focal length)、cc(principle point)、kc(distroations)、alpha_c(skew coefficient);外参(extristric parameters)R(旋转)、t(平移)。详见http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html。相机可以用http://www.vision.caltech.edu/bouguetj/calib_doc/的方法标定(Calibrate)。
OpenGL 投影矩阵(projection matrix):推导过程详见http://www.songho.ca/opengl/gl_projectionmatrix.html,OpenGL的矩阵变换详见http://www.songho.ca/opengl/gl_transform.html。矩阵形式如下:
设置方法:
注意:fc与cc单位必须一致,或者为毫米,或者为像素。zfar与znear单位必须一致,一般为mm,即相机能看到的范围。而fc/cc与znear/zfar的单位可以不一致。
P的逆矩阵如下:
OpenGL 模型投影矩阵(modelview matrix):由于OpenGL默认视角位于原点,面向-z轴,而相机视角一般如下图所示,x轴向右,y轴向下,z轴向里,即物体在前方。所以要先将视角变化一下:gluLookAt(0, 0, 0, 0, 0, 1, 0, -1, 0)可以完成这个任务,它产生矩阵Mv。
世界坐标变换到相机坐标需要一个矩阵Mc,由旋转和平移构成:
所以最终的modelview matrix为:
至此P、M全部设置完成。
关于镜头畸变(lens distortion):这个比较复杂,如果镜头的畸变比较小简单忽略掉就可以了。如果不能忽略可以参考以下内容:
Lens Correction and Distortion:http://paulbourke.net/miscellaneous/lenscorrection/
(转载自"结冰的雪"百度空间)
目的:用OpenGL模拟针孔相机的视角。
针孔相机模型(Pinhole camera model):内参(intristric parameters)f(focal length)、cc(principle point)、kc(distroations)、alpha_c(skew coefficient);外参(extristric parameters)R(旋转)、t(平移)。详见http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/parameters.html。相机可以用http://www.vision.caltech.edu/bouguetj/calib_doc/的方法标定(Calibrate)。
OpenGL 投影矩阵(projection matrix):推导过程详见http://www.songho.ca/opengl/gl_projectionmatrix.html,OpenGL的矩阵变换详见http://www.songho.ca/opengl/gl_transform.html。矩阵形式如下:
设置方法:
注意:fc与cc单位必须一致,或者为毫米,或者为像素。zfar与znear单位必须一致,一般为mm,即相机能看到的范围。而fc/cc与znear/zfar的单位可以不一致。
P的逆矩阵如下:
OpenGL 模型投影矩阵(modelview matrix):由于OpenGL默认视角位于原点,面向-z轴,而相机视角一般如下图所示,x轴向右,y轴向下,z轴向里,即物体在前方。所以要先将视角变化一下:gluLookAt(0, 0, 0, 0, 0, 1, 0, -1, 0)可以完成这个任务,它产生矩阵Mv。
世界坐标变换到相机坐标需要一个矩阵Mc,由旋转和平移构成:
所以最终的modelview matrix为:
至此P、M全部设置完成。
关于镜头畸变(lens distortion):这个比较复杂,如果镜头的畸变比较小简单忽略掉就可以了。如果不能忽略可以参考以下内容:
Lens Correction and Distortion:http://paulbourke.net/miscellaneous/lenscorrection/
相关文章推荐
- 嵌入式linux的tftp安装配置及tftp命令用法
- 《Linux内核设计的艺术》总结: 进程1的创建
- Ubuntu下远程登录windows主机(rdesktop)
- linux下tftp使用
- Tomcat中实现IP访问限制
- apache kafka系列之log4j配置
- linux c 生成八位的随机密码
- apache kafka系列之在zookeeper中存储结构
- 使用软引用解决Handler内存泄露和显示Popupwindow、Dialog时提示"Unable to add Window-token is null"的问题
- 学院教师开课管理网站项目
- Linux Kernel CMPXCHG函数分析
- Linux Kernel CMPXCHG函数分析
- Linux C中内联汇编的语法格式及使用方法
- 【Machine Learning in Action --2】K-近邻算法改进约会网站的配对效果
- OpenGL缓冲区对象
- zabbix 安装-添加主机-监控项目-触发器-示警媒介类型-动作
- IBM linux on power 开发者技术大会记录
- CentOS Apache虚拟主机配置
- Linux
- svn命令在linux下的使用