灭点计算 matlab,基于两个灭点的相机标定

基于两个灭点的相机标定

标签(空格分隔): 未分类

什么是灭点

在世界坐标系中相互平行的两条线,在图像中会相交于一点,这点在实际中表示的是无穷远处的点。

相机模型

相机模型以小孔成像为基本原理。实际情况中,相机由于制作工艺等多方面原因,造成相机不是完美的小孔成像,比如在常见的相机模型中,引入dx,dy表示光心的位置、fx,fy都表示焦距,但由于图像的像素长宽不一致所以用两个方向上的像素单位表示焦距。并且镜头会产生畸变,为了矫正畸变有引入径向和切向畸变模型。相机模型方程:

$sPi = K[R T]Pw$

其中,s为尺度因子,Pi表示点在图像中的坐标,K为相机内参数,RT组成外参矩阵3行4列,这里需要注意不是简单的将T向量放在R矩阵的最后一列,需要将T转为3*4矩阵(前三列是一个单位阵),然后和R相乘。Pw为点在世界坐标系中的点。坐标都是齐次坐标表示。

两个灭点标定方法

现在最流行和精度高的方法是张正友棋盘标定。在opencv和matlab中都能方便使用。但是在某些场景下,我没办法使用棋盘来标定,比如高速公路场景。这个时候基于灭点的标定方法就比较方便,因为道路上有许多标线。

在这种方法标定中,K中的f是唯一未知参数,主点假设在图像中心。所以我们的标定就是要计算相机的焦距f,旋转矩阵R,至于T,在不知道额外的标定信息的情况下,只通过两个灭点是不能计算T的,在实际使用中,会在图像中指定一段已知实际尺度的标志来计算T。

焦距

%25E4%25B8%25A4%25E4%25B8%25AA%25E7%2581%25AD%25E7%2582%25B9%25E8%25AE%25A1%25E7%25AE%2597%25E7%2584%25A6%25E8%25B7%259D%25E5%259B%25BE.png

焦距计算原理

图像中,蓝色的两对平行线决定了两个灭点V1和V2,这两对平行线是世界坐标中一个平行四边形的投影。现在我们要计算的是f,也就是OcOi这段先断的长度(Oc是相机坐标系的原点,Oi是图像的中心)。利用几何性质可以马上得到答案。

%25E7%2584%25A6%25E8%25B7%259D%25E5%2585%25AC%25E5%25BC%258F.png

焦距公式

(4)这个公式利用勾股定理得到。下边一个是通过这三条边所在的三角形相似得到的。

R

图中带有星标的和Oc原点重合的坐标系,代表世界坐标移动到Oc处。那么这个新的坐标系与Oc的夹角就是要求的旋转。而这三个方向上的夹角分别可以用向量OcV2、OcV1、OcV1叉乘OcV2来表示,分别是x方向y方向与z方向的旋转分量。此处注意将两个灭点的坐标转到以Oi为原点的坐标系。那么R就可以表示为:

R%25E7%259F%25A9%25E9%2598%25B5.png

R矩阵

%25E6%2597%258B%25E8%25BD%25AC%25E5%2588%2586%25E9%2587%258F.png

分量

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值