机器视觉学习——张正友标定法

相机标定

        相机标定的过程其实就是获取相机内外参的过程。相机内参一般可以从相机上的数据得知,但在实际使用过程中由于各种因素,相机的内参可能会发生改变,同时相机还存在枕形或桶形畸变,因此在使用相机进行测距时,需要先对相机进行标定获取内外参。

        目前的主流标定法是张正友标定法。张正友标定法在包含传统相机标定法方法简单、鲁棒性高的优点的情况下,它采用的平面标志物一般为规整的棋盘格或点阵图,这类平面标志物易于制作且成本低。

张正友标定法

        相机成像模型的公式可以写为:

        

        其中,s为尺度因子,A为含有5个参数的内参矩阵,可将上式变形为:

        张正友标定板假设模型的平面在世界坐标系Z=0的平面上,因此可以舍去r_{3},从而将相机成像模型的其次表达定义为:

        其中内参矩阵A定义为:

        令H=A[r_{1},r_{2},t],则公式可以表达为s\widetilde{m}=H\widetilde{M}

        因为H为单应性矩阵,单应性矩阵的意思是在采用齐次坐标系的情况下,其乘以任何一个常数k都只是影响尺度因子s的变化,对矩阵本身表示的含义没有改变,通常情况下,将h_{33}设置为1,因此单应性矩阵只有8个自由度,只需要求取8个参数即可,推导可得:

        棋盘格或点阵图上每个标记点可以提供两个式子。则只需要在一张图片中获取4个标记点,通过解线性方程组即可获得矩阵H的解,若≥4个标记点,则可以采用最小二乘法获得齐次矩阵H的解,结果更加精确。

        令H=[h_{1},h_{2},h_{3}]=\lambda A[r_{1},r_{2},t],则A^{-1}[h_{1},h_{2},h_{3}]=A[r_{1},r_{2},t]。因为旋转矩阵为正交矩阵,有r_{1}\perp r_{2}\left \| r_{1} \right \|=\left \| r_{2} \right \|。可得:

        由于矩阵B为对称矩阵,所以未知数的个数只有6个,故定义b=[B_{11},B_{12},B_{13},B_{22},B_{23},B_{33}]b为内参的未知量。

        令h_{i}=[h_{i1},h_{i2},h_{i3}]^{T},将上述约束写成这样的表达式:h_{i}^{T}Bh_{j}=v_{ij}^{T}b

        由于H已知,则可以求v_{ij}。根据上述公式,可得两个约束条件:

        在实际情况下,拍摄n张不同方位的棋盘格图像,n个公式叠加形成:

        其中V2n \times 6的矩阵,则有:

        当拍摄图像数量为n=2时,只能求得两个相机内参数。

        当拍摄图像数量为n=3时,有唯一解。

        当拍摄图像数量为n>3时,则该方程组为超定方程,需要通过SVD分解(奇异值分解),从而求解出b。精度较高,这里求得的b为带有比例因子。

        求得b,有:

        从而求得所有内参,则矩阵A已知。

        由H=[h_{1},h_{2},h_{3}]=\lambda A[r_{1},r_{2},t]。可得:

        由正交的性质得r_{3}=r_{1}\times r_{2}。由此,相机外参也求得。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
标定是一种用于相机参数标定的方,它是由张教授在1998年提出的。这种方使用单平面棋盘格进行标定,介于传统标定和自标定之间,克服了传统标定需要高精度标定物的缺点。相对于自标定,张标定提高了标定的精度,并且更容易操作,因此在计算机视觉领域得到了广泛应用。\[1\] 如果你想了解更多关于张标定的内容,可以参考相关的教程和文献,比如《python-OpenCV Tutorial》。这种标定的原理是通过拍摄棋盘格,估算出相机的转换矩阵和失真系数,从而实现将三维世界坐标系转换为二维图像坐标系。标定的过程需要知道一些点在三维世界坐标系和二维图像坐标系中的坐标。\[3\] 如果你想使用Python进行张标定的实现,可以参考相关的Python代码和教程。在实验中,你可以按照实验步骤进行操作,并使用Matlab或Python环境进行测试。\[2\] #### 引用[.reference_title] - *1* [python计算机视觉 相机标定--张棋盘格标定](https://blog.csdn.net/m0_47682721/article/details/124696148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python计算机视觉编程——张的相机平面标定](https://blog.csdn.net/Meteoraki/article/details/105357994)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [python张相机标定的实现](https://blog.csdn.net/qq_42672627/article/details/89288935)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值