首页 >> 大全

单目标定:从理论到OpenCV实践

2023-08-10 大全 27 作者:考证青年

缺点:背离了针 孔几何模型,而且引入透镜的畸变。

2.2 透镜畸变 2.2.1 畸变产生原因

畸变产生原因:理论上讲是可能定义一种透镜而不引入任何畸变的,然后现实世界没有完美的透镜。这主要是制造上的原因,因为制作一个"球形"透镜比制作一个数学上理想的透镜更容易。而且从机械方面也很难把透镜和成像仪保持平行。

两种主要的畸变:径向畸变和切向畸变。

2.2.2 径向畸变

【重要概念】

径向畸变:来自于透镜形状;

单目摄像头标定__opencv摄像机标定原理

单目摄像头标定__opencv摄像机标定原理

opencv摄像机标定原理_单目摄像头标定_

2.2.3 切向畸变

【重要概念】

切向畸变:来自于整个摄像机的组装过程。

opencv摄像机标定原理_单目摄像头标定_

2.2.4 其他畸变

三、旋转矩阵和平移向量

【重要概念】

四、摄像机内外参数总结

摄像机参数:一般一共15个相关参数:

(1)外参数6个:旋转3个参数;平移3个参数;

(2)内参数4个:fx,fy,cx,cy;

求解上述10个参数的前提是先假设每次的畸变参数为0;

(3)5个畸变参数:k1,k2,k3,p1,p2;

其中(2)和(3)都为摄像机内参数,其中k3在普通镜头不使用,鱼眼镜头要使用。

五、摄像机标定 5.1 标定目的

矫正因使用透镜而给针 孔模型带来的主要偏差。

标定的过程既给出摄像机几何模型、也给出透镜的畸变模型,即求解上述的15个相关参数。

5.2 单应性矩阵

【重要概念】

单应性矩阵主要解决外参数和内参数矩阵,且假设畸变参数为0。

在计算机视觉中,平面的单应性被定义为从一个平面到另一个平面的投影映射。

单目摄像头标定__opencv摄像机标定原理

opencv摄像机标定原理__单目摄像头标定

单目摄像头标定__opencv摄像机标定原理

opencv摄像机标定原理_单目摄像头标定_

5.3 棋盘 5.3.1 棋盘大小

(1)标准

一个标准象棋棋盘,格子为7X7。

(2)非标准

(3)最小要求

最少需要4个点(3X3的棋盘点)

单目摄像头标定_opencv摄像机标定原理_

(4)格子多的好处

5.3.2 角点数量与棋盘图片数量要求

单目摄像头标定_opencv摄像机标定原理_

opencv摄像机标定原理__单目摄像头标定

5.4 求解标定的理论方法

5.4.1 摄像机标定的理论方法简介

(1)传统标定法

传统标定技术在定标的时候,需要在摄像机前放置一个特定的标定物,并认为地提供一组已知坐标的特征基元,摄像机通过寻找标定物上这些已知的特征基元来实现定标。它用到了很多射影几何方面的理论,是一种直接计算摄像机模型的方法。

(2)自标定法

自标定技术则更为灵活,它不需要特定的参照物来实现定标,是一种对环境具有很强适应性的定标技术,也是目前研究的热点。它利用环境的刚体性,通过对比多幅图像中的对应点来计算摄像机模型,但就目前的研究来看,其定标精度还无法与传统定标技术相比。

(3)张正友标定法

_opencv摄像机标定原理_单目摄像头标定

5.4.1 采用的理论方法

5.4.2 张正友标定相关理论资料

(1)精简版8页《 by a Plane from 》-

(2)完整版22页《A New for .rar》-

网址:~zhang//TR98-71.pdf

(3)张正友主页:

(3)张正友主页中的相机标定页:

5.4.3 Brown论文资料 六、矫正

利用棋盘标定的结果可进行畸变矫正。

七、.1主要相关函数 7.1 单目标定流程与对应主要函数

(1)查找棋盘角点:ers;

(2)亚像素角点:;

(3)显示角点结果:ers;

(4)单目标定:

[A]方式一:获取摄像机内外参数:(内部包含

);

[B]方式二:根据摄像机内参数求取外参数:

注意:上述两种方式输出的是旋转向量和平移向量,如果需要转换为矩阵使用函数,该函数可以将向量和矩阵进行互转。

(5)图像畸变矫正:

[A]单目图像畸变矫正方式一(效率低):;

[B]单目图像畸变矫正方式二(效率高):+;

[C]双目点畸变矫正:(注意:输入输出为点坐标,只能在双目标定中使用)。

(6)统计单目标定误差(计算3D点在图像上的投影坐标与棋盘点坐标的差值):

+。

注意:输入的是旋转向量和平移向量。

7.2 主要相关函数详解 7.2.1 详解

(1)函数原型

a2(const CvMat*,

const CvMat*,

const CvMat*,

,

CvMat*,//[]

CvMat*,//[]

CvMat*=NULL,//[]

CvMat*=NULL,//[]

=0

);

(2)参数注释(9个)

定标点的世界坐标,为3xN或者Nx3的矩阵,这里N是所有视图中点的总数。

定标点的图像坐标,为2xN或者Nx2的矩阵,这里N是所有视图中点的总数。

向量,指定不同视图里点的数目,1xM或者Mx1向量,M是视图数目。

图像大小,只用在初始化内参数时。

输出内参矩阵(A),如果指定

和(或),fx、fy、cx和cy部分或者全部必须被初始化。

输出大小为4x1或者1x4的向量,里面为形变参数[k1, k2, p1, p2]。

输出大小为3xM或者Mx3的矩阵,里面为旋转向量(旋转矩阵的紧凑表示方式,具体参考函数)

不同的标志,可以是0(默认),或者下面值的组合:

(3)单目定标函数采用怎样的 flags 比较合适?(来自[文献4])

由于一般镜头只需要计算k1,k2,p1,p2四个参数,所以我们首先要设置 ;其次,如果所用的摄像头不是高端的、切向畸变系数非常少的,则不要设置 ,否则单目校正误差会很大;如果事先知道摄像头内参的大概数值,并且函数的第五个参数非空,则也可设置 ,以输入的为初始估计值来加快内参的计算;其它的 flag 一般都不需要设置,对单目定标的影响不大。

7.2.2 详解

(1)函数原型

( const CvMat*,

const CvMat*,

const CvMat*,

const CvMat*,

CvMat*,//[]

CvMat*//[]

);

(2)参数注释(6个)

定标点的坐标,为3xN或者Nx3的矩阵,这里N是视图中的个数。

定标点在图像内的坐标,为2xN或者Nx2的矩阵,这里N是视图中的个数。

内参矩阵(A)。

大小为4x1或者1x4的向量,里面为形变参数[k1,k2,p1,p2]。如果是NULL,所有的形变系数都为0。

输出大小为3x1或者1x3的矩阵,里面为旋转向量(旋转矩阵的紧凑表示方式,具体参考函数)。

大小为3x1或1x3的矩阵,里面为平移向量。

7.3 单目标定示例代码

八、单目标定效果不好的原因分析

(1)问题(来自[文献3]):中用 进行相机标定的精度差,标定结果不稳定。

分析:可能原因有:

A.夹角太小会导致误差较大

可能是在标定的时候标定板所在平面与成像平面(image plane)之间的夹角太小,张正友论文里的仿真数据(有噪声的数据)说明当两者夹角太小误差会很大,从张正友的论文里给出的5幅图中(~zhang/Calib/),其中标定平面与成像平面的夹角分别为:8.8947、11.2325、24.4875、10.8535、9.5829(单位:度)。而且张正友的论文中也提到两幅标定板之间的位置平行放置的话,相关相当于一幅,因此在实际标定中平行放置的情况最好避免,可能有时你无形之中就犯了这个错误。

B.标定时拍摄的图片太少

虽然张正友的论文里只用了5幅图片,但是建议用10来幅左右还是必要的,因为我们实际中可能标定板用A4的纸打印出来贴在一块板上的,标定板上的世界坐标精度就不是特别高,多拍摄几幅图像能减少这方面带来的误差,而且多个角度拍摄也可能解决了问题一:标定板和成像平面夹角小的问题。

有个例子是用20幅图片进行标定的:

C.图像上角点提取的不准确

用ers函数找角点不是很好,假如拍到的图像不是完整的棋盘格的时候肯定会有问题的,而且也不少人反应用这个函数提取不出角点,建议可以用其他工具 比如:

and :

for (强烈推荐):

(2)建议用其他标定方法(比如Tsai)或其他标定工具进行对比

强烈推荐 用这个标定工具箱来进行标定,可以和做对比,它也是基于张正友的平面标定方法的,做得非常人性化,有误差分析、标定结果三维重建、重投影计算角点等功能 。

for :

(3)使用进行摄像机定标虽然方便,但是定标结果往往不够准确和稳定,最好是使用标定工具箱来进行定标,再将定标结果取回来用于立体匹配和视差计算。

参考文献

[书籍]学习:第十一章 摄像机模型与标定。

[书籍]基于的计算机视觉技术实现

[博文]在中用进行相机标定:

[博文]双目测距与三维重建的实现问题集锦(一)图像获取与单目定标

[书籍]学习:第十一章5。

[书籍]学习:第十一章。

[书籍]学习:第十一章2

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了