matlab相机标定_如何进行相机的绝对位置估计?

253fd734db40c2d3caf3b8fbbfd1a89d.png 棋盘格,我们通常拿来做标定用,但如果可以有这样的效果,是不是感觉高级那么一点点? 253fd734db40c2d3caf3b8fbbfd1a89d.png

fda05ef98f94de39970919de1d8ea355.png

在这之前,我们还是先了解几个基本概念:

1几何畸变
1)几何畸变模型通常定义在归一化的的图像平面上
2)多项式畸变模型(又名Brown-Conrady模型)
  • 径向畸变(枕形、桶形):光线在远离透镜中心的地方比靠近中心的地方更加弯曲,用数学表达式表示为:k_1,k_2,…

  • 切向畸变:透镜不完全平行于图像平面,即sensor装配时与镜头间的角度不准。用数学表达式表示为:p_1,p_2,…(通常可以忽略不计)。

上述两种畸变如下图所示:

472309d9f0182e3a8f00c2fdccc4e29c.png


其中,k_1r^2+k_2r^4 为补偿系数,补偿系数服从二次函数。对于该畸变模型我的理解是以图像中心点为圆心相同半径的点补偿量相同,不同半径的补偿量有服从二次函数。如图所示相同半径的圆周上补偿量相同。

3)FOV模型
  • 径向畸变通过正切函数建模(对于严重畸变很有效,比如鱼眼镜头)

4)深度相机畸变模型
  • 深度相机畸变有两种,第一种是与RGB相机相同的畸变,如上面2中介绍的畸变一样,矫正的是二维平面的畸变,矫正方法可以使用棋盘格。第二种畸变是深度畸变,如果使用深度相机在一个平面上采集图像,理论上深度图像每一个像素值大小都相等,采集的是一个平面,深度图的像素值大小代表深度,但实际采集的深度图不平整,此外深度图边缘畸变较大。

2几何畸变校正
1)输入:原始图像
2)输出:矫正后的图像
3)已知:相机矩阵和畸变系数
4)多项式畸变模型的解决方法:
  • OpenCV cv::undistort() 和 cv::undistortPoints()(包含在imgproc模块中)

cv::projectPoints() (包含在calib3d模块中)。其中而undistort()可以直接对图形去畸变,而undistortPoints()是只针对像素点去畸变。projectPoints()用于计算原2d点和重投影2d点的距离作为重投影误差。

43ef117579f03d998e181dcaa2423808.png

  • 相机畸变校正:

3bab75aedc3e49066b179d0a7ca54432.png

3相机标定 #1

1)未知:内参和外参(5* + 6DoF)

  • 内参*数量根据用户偏好会有所不同

2)已知:3D点 X_1,X_2,…,X_n,对应的投影点x_1,x_2,…,x_n,

3)限制条件:n x 投影矩阵x_i = K[R|t]X_i

303ab9f88ae7bae35504b57315bb78a5.png

4相机标定 #2

1)未知:内参 + m x 外参(5* + m x 6DoF)

2)已知:3D点 X_1,X_2,…,X_n,及从第j个相机x_i^jp拍摄对应的投影点

3)限制条件:n x m x 投影矩阵x_i = K[R|t]X_i

4)解决方法:
  • OpenCV cv::calibrateCamera() 和 cv::initCameraMatrix2D()

  • MATLAB中相机标定工具箱

  • GML C++相机标定工具箱

9cc67040e5d7d652e51de1664429cbaf.png

具体的相机标定示例如下:

689d2d5b654fe488e622d1e9be7da53b.png

最后,我们给出相机的绝对位姿估计(Perspective-n-Point,也就是PnP)

5相机的绝对位姿估计

1)未知:相机位姿(六自由度)

2)已知:3D点 X_1,X_2,…,X_n,对应的投影点x_1,x_2,…,x_n,和相机矩阵K

3)限制条件:n x 投影矩阵 x_i = K[R|t]X_i

4)解决方法(n≥3)→ 3特征点算法

  • OpenCV cv::solvePnP() 和 cv::solvePnPRansac()

  • 高效的PnP(EPnP)

bdc244866c263fb6a1b34e2d474668fc.png

部分代码及执行效果如下图所示:

2e99c215506b340ce5e84b32a18d87ac.png

古月居网站已上线论坛(guyuehome.com/forums)功能,欢迎大家到各版块提问和交流,下一个被古月君回复的就是你啦~ e1a0e79d7a8c18bed484ac0ca73ab740.gif 公开课《如何入门Webots机器人仿真神器》上新啦!本课程将带领大家一起认识一下这款仿真神器,并与Gazebo进行了简单的对比,给你一个为什么选它的理由!最后通过两个案例,带领大家熟悉Webots的建模思路。 课程免费报名!扫码速看: 0218564387274900c2a9a1de2d81dff0.png dbe861efa0c52faa9344c856adc5198d.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值