如何通俗理解相机标定公式推导与Python编程实践教程

今日语:学习一个算法重要的就是弄清楚这个算法要解决怎样的问题,它的已知量(输入)是什么,待求解的未知量(输出)是什么。——@司南牧

相机标定(Calibration)做了什么事?为何很多地方都需要相机标定?

相机标定主要是为了通过对某个特殊形状的物体拍照从而找到照片中的像素点坐标与现实世界中的三维坐标之间的变换关系。这个变换关系通常是一个矩阵。总结一下“相机标定是想求如何将将现实世界的三维点坐标变换到像素点坐标的那个矩阵”。学习一个算法重要的就是弄清楚这个算法要解决怎样的问题,它的已知量(输入)是什么,待求解的未知量(输出)是什么。现在我们已经知道相机标定要解决一个怎样的问题了。那么一般的相机标定算法它的已知量(输入)是什么,待求解的未知量(输出)是什么?我举个例子(注意这里涉及的坐标都是用齐次坐标来表示)。一般相机标定算法是已知某个像素对应的真实物体点在世界坐标系中的三维坐标 [ x y z 1 ] \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1(虽然这个很难得到),已知像素点在照片中的二维坐标 [ u v 1 ] \begin{bmatrix} u \\ v \\ 1\end{bmatrix} uv1(这个非常容易)。待求解的未知量为将前面提到的三维坐标变成二维坐标的矩阵 P \bold P P,这个矩阵叫做相机矩阵。即 c [ u v 1 ] = P [ x y z 1 ] c \begin{bmatrix} u \\ v \\ 1\end{bmatrix}=\bold P \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} cuv1=Pxyz1。其中 c c c是常数。因为 P [ x y z 1 ] \bold P \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} Pxyz1的结果一般是这种形式 [ a b c ] \begin{bmatrix} a \\ b \\ c\end{bmatrix} abc为了让这个齐次坐标变成我们已知的像素坐标 [ u v 1 ] \begin{bmatrix} u \\ v \\ 1\end{bmatrix} uv1这种形式即坐标中的第3位变成1,大家一般会将 c c c提取出来。

总结:
相机标定算法中,
已知:像素点坐标 [ u v 1 ] \begin{bmatrix} u \\ v \\ 1\end{bmatrix} uv1,像素点对应真实世界中的那个点在世界坐标系下的三维齐次坐标 [ x y z 1 ] \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1
待求解的未知量:将前面提到的三维齐次坐标 [ x y z 1 ] \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} xyz1变成二维坐标 [ u v 1 ] \begin{bmatrix} u \\ v \\ 1\end{bmatrix} uv1的矩阵 P \bold P P。这个矩阵叫做相机矩阵。
线性等式约束 c [ u v 1 ] = P [ x y z 1 ] c \begin{bmatrix} u \\ v \\ 1\end{bmatrix}=\bold P \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} cuv1

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值