标定
标定是联系世界坐标与像素坐标的环节,目的是求出相机和投影仪的内外参数,对于3D成像来说至关重要
张正友标定法
通过各种方法的对比,为了方便,我们采用的是张正友标定。我们主要对张正友标定法的原理进行介绍,文章后面后面也会给大家介绍一个张正友标定的matlab包,它以及具体使用的视频。张正友标定是基于2D平面靶标的相机标定,实验中对平面棋盘格进行多角度拍摄后,将所得图片输入计算即可实现相机标定,具有较强的实验可行性。
张正友标定原理介绍
要想进一步了解张正友标定法,首先需学习一个最基本的思想——非线性最小二乘法思想,其次是了解张正友标定法的主体思想。接下来我将分两部分进行介绍。(由于篇幅过长,所以最小二乘法思想在另一篇文章中)
张正友标定法的主题思想
前面我们理解了非线性最小二乘法的思想,这种思想实际上就是一个求解最合适的x的过程。
张正友标定法是一种基于2D平面靶标的摄影机标定,我们通过拍摄多张标定板的图片,再通过多个实际中的点(世界坐标)和图片上的点(像素坐标)的一一对应,即可求出世界坐标和像素坐标的对应关系。
关于什么是世界坐标和像素坐标,还有其中转化时涉及到的相机坐标,图像坐标,大家可以寻找其他资料进行了解(可以搜针孔相机模型),这里我直接用结论。在世界坐标和像素坐标的转化中,将关系矩阵分成两个部分,一个是内参矩阵,另一个是外参矩阵。
内参矩阵是由相机内部的参数决定的,定义为,、是u轴和v轴的尺度因子(与摄像机的焦距有关),是u轴和v轴的不垂直因子, 为主点坐标(是光轴与成像平面的交点);
外参矩阵是由摄像机与被测物所处的相对位置决定(相机坐标经过旋转平移后于世界坐标重合,这个旋转平移的矩阵就是外参矩阵)。定义为:,是相机坐标的三个坐标轴在世界坐标轴中的方向矢量,互相垂直,是从世界坐标的原点到光心的平移矢量。
为了让大家更清楚了解张正友标定法,我先从大家熟悉的对应点的关系去给大家讲解。靶标平面上的点和图像平面上的点具有一一对应关系。记靶标平面上的点为,图像平面上的点为,相应的齐次坐标为、 ,通过坐标变换我们可以得到, s是个常数。
这里我们假设靶标平面位于世界坐标系的xy平面上,即z=0。所以有。之后仍然采用M表示靶标平面上点的坐标,但此时,,这样就能有一一对应关系, 。
接下来就是求解了。我们拍的每一种照片上有多组对应点,通过这多组对应点,应用最小二乘法我们可以求出H,H的计算是使实际图像坐标与通过M求出的之间参差最小的过程,目标函数为。
H求解出来后,我们就可以求解摄像机的参数矩阵了。
利用式,和R的正交性, ,可以得到
……①
式①是关于摄像机内参数的两个基本约束,一个转换矩阵H可以得到关于摄像机内参的两个约束,所以要求出A,需求多个转换矩阵(每张图片可以求出一个转换矩阵,所以需要拍摄多张图片)。
为了方便求解,这里设:
我们注意到B是一个对称矩阵,可以表示为六维向量
。
H中的第i列向量为,可以推出
其中
这样就可以将①式化为
如果对靶标平面拍n幅图像,将n个这样的方程叠加起来就可以得到:
……②
其中V为2n×6的矩阵。
如果n3,一般的,b可以在相差一个尺度因子λ的定义下唯一确定;如果n=2,可以加上一个附加约束条件r=0,即,即可以用作为附加方程。
通过对②的求解可解出b。而解可以通过求解矩阵的最小特征值对应的特征向量,或者对矩阵V进行奇异分解得出。
B求出后,就可以利用Cholesky矩阵分解算法求出,再通过逆得到A。一旦A确定后,每幅图像的外参就容易求出了,通过
可以推出:
;
;
;
,
其中:
。
由此就可以求出相机的内参和外参,由于通常情况下,相机镜头是由畸变的,我们也可以将这组参数作为初始值,然后进行优化搜索(最小二乘思想),进而求出所有参数的准确值。
归纳一些张正友标定法的主体思想:
- 通过每张照片上的点的对应关系求出转换矩阵H(其中用到了最小二乘法思想减小误差)。
- 通过多张图片求出的多个H,来进一步求内参矩阵A,然后就进一步可求出外参矩阵,最后再通过最小二乘法思想对畸变进行评估,进而求出更加精确的值。
张正友标定算法压缩包与视频讲解
通过了解张正友标定法的原理,在使用压缩包时也能更加容易知道问题出现在哪里(如果出现问题),但实际中其实你只要会用安装包以及标定后得出的数据就行了。由于安装包、讲解视频、数据使用都是由前辈先给出的(挺多的,这是我给出我认为比较靠谱的),这里将给出他们的链接
讲解视频:使用Matlab工具箱(procamcalib)进行投影仪标定—超详细过程_哔哩哔哩_bilibili
相机标定压缩包:(151条消息) TOOLBOX_calib-master_toolbox_calib相机外参-互联网文档类资源-CSDN文库
投影仪标定压缩包:(151条消息) matlab投影仪标定工具箱.zip_投影仪校正MATLAB-教育文档类资源-CSDN文库
按照视频的去操作就行。
关于如何使用这些数据可以参考这个文件:(152条消息) matlab相机标定参数介绍_matlab相机标定参数怎么用,matlab相机标定参数-C#文档类资源-CSDN文库h
对于如何应用这些数据,如果看完这些还不理解的话,后面我们计算最小相位图的时候会用到这些数据,大家可以作为一个例子去理解。
今天的文章张正友标定法原理和步骤_张正友标定法opencv分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/68832.html