我是靠谱客的博主 复杂香菇,最近开发中收集的这篇文章主要介绍matlab相机标定工具(camera calibrator)内外参矩阵数据格式摘要结论内容,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

摘要

matlab把点坐标看作行向量,而《视觉SLAM十四讲》(以下简称《十四讲》)把点坐标看作列向量,因此它们把世界坐标系下的点投影到像素坐标系下时,使用的公式有所不同。这导致使用matlab标定得到相机的内外参矩阵,与高翔《视觉SLAM十四讲》所说的内外参矩阵格式不一致。要想得到正确的参数,还需要弄清楚matlab内外参矩阵的数据格式。


结论

先给出结论,简单来说以标定板左上角作为世界坐标系原点,uv方向作为世界坐标系的XY轴,有一下结论:

  • matlab标定得到的相机内参矩阵(IntrinsicMatrix, K m a t l a b K_{matlab} Kmatlab),对应的是《十四讲》中的 K T K^T KT
  • matlab标定得到的旋转矩阵(RotationMatrices , R m a t l a b R_{matlab} Rmatlab),对应的是《十四讲》中的 R w c ( 3 × 3 ) R_{wc(3times 3)} Rwc(3×3)
  • matlab标定得到的平移向量(TranslationVectors, t m a t l a b t_{matlab} tmatlab),对应的是《十四讲》中的 t c w ( 1 × 3 ) T t_{cw(1times 3)}^T tcw(1×3)T

内容

约定: 以标定板左上角作为世界坐标系原点,uv方向作为世界坐标系的XY轴。下标 c c c 表示camera(相机)坐标系, 下标 w w w 表示world(世界)坐标系,例如: T c w ( 3 × 4 ) T_{cw(3times 4)} Tcw(3×4) 表示在这个矩阵右边乘以world世界坐标系下的点,会得到camera相机坐标系下的点。

《十四讲》:《十四讲》里把点坐标看作列向量,其将世界坐标系下的点 [ X Y Z 1 ] begin{bmatrix} X \ Y \ Z \ 1 end{bmatrix} XYZ1,投影到像素坐标系下的点 [ u v 1 ] begin{bmatrix} u \ v \ 1 end{bmatrix} uv1的公式如下 :
s [ u v 1 ] = K T c w ( 3 × 4 ) [ X Y Z 1 ] = K [ R c w ( 3 × 3 ) t c w ( 3 × 1 ) ] [ X Y Z 1 ] begin{aligned} sbegin{bmatrix} u \ v \ 1 end{bmatrix} &=KT_{cw(3times 4)}begin{bmatrix} X \ Y \ Z \ 1 end{bmatrix} =Kbegin{bmatrix} R_{cw(3times 3)} & t_{cw(3times 1)} end{bmatrix}begin{bmatrix} X \ Y \ Z \ 1 end{bmatrix} end{aligned} suv1=KTcw(3×4)XYZ1=K[Rcw(3×3)tcw(3×1)]XYZ1

matlab: matlab把点坐标看作行向量,其将世界坐标系下的点 [ X Y Z 1 ] begin{bmatrix} X & Y & Z & 1 end{bmatrix} [XYZ1],投影到像素坐标系下的点 [ u v 1 ] begin{bmatrix} u & v & 1 end{bmatrix} [uv1]的公式如下 :
s [ u v 1 ] = [ X Y Z 1 ] T c w ( 4 × 3 ) T K T = [ X Y Z 1 ] [ R c w ( 3 × 3 ) T t c w ( 1 × 3 ) T ] K T = [ X Y Z 1 ] [ R w c ( 3 × 3 ) t c w ( 1 × 3 ) T ] K T begin{aligned} sbegin{bmatrix} u & v & 1 end{bmatrix} &= begin{bmatrix} X & Y & Z & 1 end{bmatrix}T_{cw(4times 3)}^T K^T \ &= begin{bmatrix} X & Y & Z & 1 end{bmatrix}begin{bmatrix} R_{cw(3times 3)}^T \ t_{cw(1times 3)}^T end{bmatrix}K^T \ &= begin{bmatrix} X & Y & Z & 1 end{bmatrix}begin{bmatrix} R_{wc(3times 3)} \ t_{cw(1times 3)}^T end{bmatrix}K^T end{aligned} s[uv1]=[XYZ1]Tcw(4×3)TKT=[XYZ1][Rcw(3×3)Ttcw(1×3)T]KT=[XYZ1][Rwc(3×3)tcw(1×3)T]KT

Note: 旋转矩阵R为正交矩阵,而对于正交矩阵有该性质: R R T = R R − 1 = E RR^T=RR^{-1}=E RRT=RR1=E,即旋转矩阵的转置就是它的逆矩阵 R T = R − 1 R^T=R^{-1} RT=R1

综上可知,以标定板左上角作为世界坐标系原点,uv方向作为世界坐标系的XY轴,有一下结论,有如下结论成立:

  • matlab标定得到的相机内参矩阵(IntrinsicMatrix, K m a t l a b K_{matlab} Kmatlab),对应的是《十四讲》中的 K T K^T KT
  • matlab标定得到的旋转矩阵(RotationMatrices , R m a t l a b R_{matlab} Rmatlab),对应的是《十四讲》中的 R w c ( 3 × 3 ) R_{wc(3times 3)} Rwc(3×3)
  • matlab标定得到的平移向量(TranslationVectors, t m a t l a b t_{matlab} tmatlab),对应的是《十四讲》中的 t c w ( 1 × 3 ) T t_{cw(1times 3)}^T tcw(1×3)T

相关/参考链接

matlab帮助:cameraParameters

最后

以上就是复杂香菇为你收集整理的matlab相机标定工具(camera calibrator)内外参矩阵数据格式摘要结论内容的全部内容,希望文章能够帮你解决matlab相机标定工具(camera calibrator)内外参矩阵数据格式摘要结论内容所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部