相机标定和双目相机标定标定原理推导及效果展示

这篇具有很好参考价值的文章主要介绍了相机标定和双目相机标定标定原理推导及效果展示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

  参考了一些大佬的文章,整理了一下相机标定和双目标定的原理和推导。


一、相机标定

  摄像机成像就是空间场景投影至二维图像平面的空间变换过程。摄像机标定的要解决两个问题:首先确定三维空间点与像素平面像素点间的转换关系,即求解相机内外参;然后确定相机成像过程中的畸变系数,用于图像矫正,因此摄像机标定的参数包括:相机内部参数,外部参数以及畸变参数。
  另外仅仅利用单目相机标定的结果,是无法直接从像素坐标转化到物理坐标的,因为透视投影丢失了一个维度的坐标,所以测距其实需要双目相机。

1.相机的四个坐标系

  相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。
相机标定和双目相机标定标定原理推导及效果展示
  在一些其他文章中均有说明这四个坐标系分别是什么意思,推荐大家看一下这几位博主的文章,非常有收获。
立体视觉入门指南(1):坐标系与相机参数
相机标定之张正友标定法数学原理详解(含python源码)
相机标定、双目相机标定(原理)、三维重建效果展示
相机标定和双目相机标定标定原理推导及效果展示世界坐标系:Xw、Yw、Zw。
相机坐标系: Xc、Yc、Zc。
图像坐标系:x、y。
像素坐标系:u、v。
  其中,相机坐标系的Z轴与光轴重合,且垂直于图像坐标系平面并通过图像坐标系的原点,相机坐标系与图像坐标系之间的距离为焦距f。像素坐标系平面u-v和图像坐标系平面x-y重合,但像素坐标系原点位于图中左上角。

  世界坐标系到像素坐标系转换的全过程:
相机标定和双目相机标定标定原理推导及效果展示
这里要说明一下几个问题:
1、外参R、T ,也就是世界坐标系到相机坐标系,要6个自由度,除了旋转还要进行平移。
相机标定和双目相机标定标定原理推导及效果展示
2、s为比例因子(s不为0),f为有效焦距(光心到图像平面的距离)。相机坐标系转图像坐标系就是等比例缩放的过程。
3、a= f/dX、ay= f/dY,称为u、v轴的尺度因子,M1称为相机的内部参数矩阵,M2称为相机的外部参数矩阵,M称为投影矩阵。

2.相机的畸变

  相机拍摄的图片还存在一定的畸变,畸变包括桶形畸变和枕形畸变。在我的这篇文章中有解释和畸变矫正opencv-python光学畸变校准
径向畸变公式(3阶)如下:
相机标定和双目相机标定标定原理推导及效果展示
切向畸变公式如下:
相机标定和双目相机标定标定原理推导及效果展示
  相机标定的第二个目的就是获得相机的畸变参数,如上式中的K1,K2,K3,P1,P2 等,进而对拍摄的图片进行去畸变处理。

二、张正友标定法

原文我已经帮大家下载好了,直接获取就可以了。链接:https://pan.baidu.com/s/1wp-GmVuc3CTyRXYX1V7aBQ
提取码:8owo

  张正友标定法标定相机的内外参数的思路如下:
1)求解内参矩阵与外参矩阵的积;
2)求解内参矩阵;
3)求解外参矩阵。

1.求解内参矩阵与外参矩阵的积

  张正友标定法将世界坐标系固定于棋盘格上,则棋盘格上任一点的物理坐标 W=0 ,因此,原单点无畸变的成像模型可以化为下式。其中, R1,R2为旋转矩阵R的前两列。为了简便,将内参矩阵记为 A。
相机标定和双目相机标定标定原理推导及效果展示
注:对于不同的图片,内参矩阵A为定值;对于同一张图片,内参矩阵A,外参矩阵(R1 R2 T)为定值;对于同一张图片上的单点,内参矩阵A,外参矩阵(R1 R2 T) ,尺度因子s为定值。
我们将内参矩阵A和外参矩阵(R1 R2 T)的积记为矩阵H,H即为单应矩阵,则有:
相机标定和双目相机标定标定原理推导及效果展示
相机标定和双目相机标定标定原理推导及效果展示

  尺度因子 s可以消掉,这里的H是齐次矩阵,有8个独立未知元素。每一个标定板角点可以提供两个约束方程的对应关系。因此,当一张图片上的标定板角点数量等于4时,即可求得该图片对应的矩阵 。
  以上只是理论推导,在真实的应用场景中,我们计算的点对中都会包含噪声。比如点的位置偏差几个像素,甚至出现特征点对误匹配的现象,如果只使用4个点对来计算单应矩阵,那会出现很大的误差。因此,为了使得计算更精确,一般都会使用远大于4个点对来计算单应矩阵。另外上述方程组采用直接线性解法通常很难得到最优解,所以实际使用中一般会用其他优化方法,如奇异值分解、Levenberg-Marquarat(LM)算法。

2.求解内参矩阵

  求出来的单应矩阵H是内参矩阵和外参矩阵的混合体,而我们想要最终分别获得内参和外参,所以需要先求内参或者先求外参。先求内参是因为更容易,因为每张图片的内参都是固定的,而外参是变化的。最后求得如下,具体可以参考大佬的推导相机标定之张正友标定法数学原理详解(含python源码)
相机标定和双目相机标定标定原理推导及效果展示
最后可根据对应关系求出结果。
相机标定和双目相机标定标定原理推导及效果展示

3.求解外参矩阵

  上面我们已经求导了单应矩阵H和内参矩阵A,自然就可以求得每一张图片对应的外参矩阵(R1 R2 T)。
注:这里值得指出,完整的外参矩阵为相机标定和双目相机标定标定原理推导及效果展示
但是,由于张正友标定板将世界坐标系的原点选取在棋盘格上,则棋盘格上任一点的物理坐标W=0 ,将旋转矩阵的R的第三列 R3消掉,因此,R3在坐标转化中并没有作用。但是 要使得 R3满足旋转矩阵R的性质,即列与列之间单位正交,因此可以通过向量 R1,R2的叉乘,即R1 X R2 = R3 ,计算得到R3。

4.标定相机的畸变参数

畸变后的像素坐标为u^v^
相机标定和双目相机标定标定原理推导及效果展示
相机标定和双目相机标定标定原理推导及效果展示
相机标定和双目相机标定标定原理推导及效果展示
此处也是参考了大佬的推导,建议大家都看一下,非常推荐!

5.双目标定

相机标定和双目相机标定标定原理推导及效果展示
相机标定和双目相机标定标定原理推导及效果展示

相机标定和双目相机标定标定原理推导及效果展示
通过 P = R X Pl + T可以推出:
相机标定和双目相机标定标定原理推导及效果展示
  需要说明的是,无论是Rl、Rr、Tl、Tr,这些在我们单目标定的时候都已经获得过了,opencv单目标定函数中,除了返回我们相机内参、畸变系数外,相机相对于标定物的旋转、平移矩阵也一并返回了,我们可以直接可以用。

6.极线矫正(立体校正)

  之前写的文章里面有介绍极线矫正opencv-python立体匹配(极线校正)
   立体校正的目的就是,利用立体标定所获得的参数将实际非共面行对准的两幅图像,校正成共面行对准。
相机标定和双目相机标定标定原理推导及效果展示

三、视差图与深度图

引用大佬的文章立体匹配入门指南(8):视差图、深度图、点云
相机标定和双目相机标定标定原理推导及效果展示

相机标定和双目相机标定标定原理推导及效果展示
通过三角形相似可得出:

相机标定和双目相机标定标定原理推导及效果展示

相机标定和双目相机标定标定原理推导及效果展示
其中,Z为深度,d为视差,b为基线长度,f为焦距(像素单位),xr和xl分别为左右视图主点的列坐标。
注:视差图中存的是视差d,深度图中存的是深度Z。文章来源地址https://www.toymoban.com/news/detail-406935.html

到了这里,关于相机标定和双目相机标定标定原理推导及效果展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用opencv做双目测距(相机标定+立体匹配+测距)

    最近在做双目测距,觉得有必要记录点东西,所以我的第一篇博客就这么诞生啦~ 双目测距属于立体视觉这一块,我觉得应该有很多人踩过这个坑了,但网上的资料依旧是云里雾里的,要么是理论讲一大堆,最后发现还不知道怎么做,要么就是直接代码一贴,让你懵逼。 所以

    2024年01月20日
    浏览(29)
  • 相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)

             相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知识、相机内外参模型推导、

    2023年04月21日
    浏览(39)
  • OpenCV快速入门:相机标定——单目视觉和双目视觉

    在当今科技日益发展的时代,计算机视觉作为人工智能的重要分支,已经深入到我们生活的各个领域。在这个广阔的领域中,相机标定是一个基础且关键的步骤,它直接影响到视觉系统的精度和效能。尤其是在单目视觉和双目视觉的应用中,准确的相机标定成为了实现高效和

    2024年02月05日
    浏览(38)
  • 【OpenCV】双目相机标定、极线矫正、SIFT匹配以及深度估计

    双目标定有很多示例,就不多讲,直接放代码 有个小技巧就是可以先使用matlab标定箱试一下,把误差过大的左右相机图片剔除,保证精度 匹配: 过滤: 这里过滤条件2需要注意一下 ,因为我们是进行了极线校正的,所以理论上左右视图相同的点应该在同一条水平线上,即像

    2024年02月07日
    浏览(27)
  • 双目相机标定及高精度测量方法,含c++和python代码说明

    视觉测量定位中,双面相机高精度标定是一个重要的步骤。下面是关于如何进行双面相机高精度标定的说明和C++和Python代码实现。 1. 双面相机高精度标定的原理 双面相机高精度标定的目的是确定相机内部参数和外部参数。其中,内部参数包括焦距、主点和畸变系数等,外部

    2023年04月08日
    浏览(33)
  • 使用ROS功能包camera_calibration进行单目相机和双目相机的内参和外参标定

    本文总结使用ROS标定单目和双目相机的过程,同时提供生成棋盘格文件的方法。 参考链接: [1]使用ros标定相机的内参和外参 [2]ROS下采用camera_calibration进行双目相机标定 棋盘格可以自己买一个,或者打印一个粘在板子上,棋盘格电子版生成可以参考博客《使用kalibr标定工具进

    2024年02月11日
    浏览(37)
  • 【ZED&SLAM】Ubuntu18.04系统ZED 2i双目相机SDK安装、联合标定、SLAM测试

    笔记本电脑i5-8300H、GTX 1060、32G RAM 后续一些工作转移到了PC上:i7-12700 因为后面要测试Vins-Fusion和ORB-SLAM3,所以推荐安装 Ubuntu 18.04(或者Ubuntu 20.04) + ROS 1 (不建议用比Ubuntu18更低的版本) ROS一键安装命令: ZED 2i:双目相机配有9轴IMU 此前电脑已经配置好:Ubuntu 18.04,ROS 1,

    2024年01月18日
    浏览(43)
  • 双目相机测距原理

    双目相机测距是一种常用的计算机视觉技术,它利用两个摄像头同时拍摄同一场景,通过测量两个摄像头视野中同一物体在图像上的像素差异,从而计算出物体距离的方法。 具体原理如下: 双目相机的构成 双目相机由两个摄像头组成,通常摆放在一定距离内,这个距离称为

    2024年02月05日
    浏览(42)
  • 相机标定 - (02) - 相机标定步骤与原理

    目录 2 相机标定步骤 2.1 张正有标定操作步骤 2.2 张正有标定原理 参考文章: 三步骤详解张正友标定法_谜之_摄影爱好者的博客-CSDN博客         1998年,张正友提出了基于二维平面靶标的标定方法,使用相机在不同角度下拍摄多幅平面靶标的图像,比如棋盘格的图像,然

    2024年02月11日
    浏览(63)
  • 视觉相机模型以及投影原理推导——(单目)

    参考文献:视觉SLAM十四讲、视觉惯性SLAM理论与源码分析、该博客、文中的公式直接引用上面的文章,如有侵权请联系本人删除 投影过程 三维世界中的物体(目标点)P反射光线,通过相机光心,投影到相机的感光平面(物理成像平面/像素成像平面),一个个的光线投影点汇

    2024年02月09日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包