关于张正友标定法
2015-12-03 15:24
162 查看
关于算法的实现最好参照一下 《opencv2计算机视觉编程手册》 第191页,讲的非常好,事实上我们只需要有3D点和2D点的对应我们就可以计算出对应的相机矩阵了,但是一直让我迷惑的是3D点如何得到。那么张正友标定法事实上是建立了一个棋盘模型,对这个棋盘模型进行了不同角度的拍照,这样这些拍照image中的棋盘角点就可以作为我们要得到的2D点,而不同角度改变的是外参矩阵。那么如何得到3D的点呢?
关键在于世界坐标系的原点是我们设定的,我们设点世界坐标系的原点在棋盘上,同时世界坐标系的xoy平面与棋盘平面重合,那么此时在棋盘上面每一个格子上的角点就有了3D坐标,分别是它对应的(格子高度,格子宽度,0) 甚至在实际编程实现的时候都不需要将3D坐标设计为实际的格子宽度,格子高度,直接使用(0,0,0) (0,1,0)等来代替。因为格子是等间距的,所以这样的坐标来代替原来的(格子高度,格子宽度,0) 只会让外参矩阵多了一个scale变换,而不会影响内参矩阵。
对于内参矩阵的具体数学计算,可以参考一下这篇博文
http://blog.csdn.net/pinbodexiaozhu/article/details/43373247
核心在于对每张拍摄棋盘的相片,拿着对应的2D点和棋盘实际在世界坐标系中的点(x,y,0)退化后的(x,y)算homograph 内参矩阵可以通过这个homograph来推导产生
关键在于世界坐标系的原点是我们设定的,我们设点世界坐标系的原点在棋盘上,同时世界坐标系的xoy平面与棋盘平面重合,那么此时在棋盘上面每一个格子上的角点就有了3D坐标,分别是它对应的(格子高度,格子宽度,0) 甚至在实际编程实现的时候都不需要将3D坐标设计为实际的格子宽度,格子高度,直接使用(0,0,0) (0,1,0)等来代替。因为格子是等间距的,所以这样的坐标来代替原来的(格子高度,格子宽度,0) 只会让外参矩阵多了一个scale变换,而不会影响内参矩阵。
对于内参矩阵的具体数学计算,可以参考一下这篇博文
http://blog.csdn.net/pinbodexiaozhu/article/details/43373247
核心在于对每张拍摄棋盘的相片,拿着对应的2D点和棋盘实际在世界坐标系中的点(x,y,0)退化后的(x,y)算homograph 内参矩阵可以通过这个homograph来推导产生
相关文章推荐
- Spring JdbcTemplate方法详解
- html高度随分辨度改变而改变
- JSP+Servlet 无数据库模拟登录过程
- Hive_6. 数据聚合 -- Group By & Grouping_SETS & RollUp & CUBE & Having
- webView实现图文混排
- 向上弹出菜单jQuery插件
- MySQL字符串函数:字符串截取
- css3是什么
- dTree JS 基本用法
- Android SlidingDrawer使用
- Oracle SQL实现分页查询
- ie9 提示'console' 未定义问题的解决方法
- log4j 配置详解
- log4j 配置详解
- log4j 配置详解
- log4j 配置详解
- log4j 配置详解
- log4j 配置详解
- log4j 配置详解
- log4j 配置详解