相机标定 - (02) - 相机标定步骤与原理

news/2025/1/15 6:49:34/

目录

2 相机标定步骤

2.1 张正有标定操作步骤

2.2 张正有标定原理


2 相机标定步骤与原理

参考文章:三步骤详解张正友标定法_谜之_摄影爱好者的博客-CSDN博客

        1998年,张正友提出了基于二维平面靶标的标定方法,使用相机在不同角度下拍摄多幅平面靶标的图像,比如棋盘格的图像,然后通过对棋盘格的角点进行计算分析来进行相机标定(求解相机的内外参数)。

2.1 张正有标定操作步骤

(1) 张正友标定方案使用平面标志物,通常是规整的棋盘格或者点阵图,通常情况下为了方便区分图片中棋盘格朝向,我们一般使用宽高不同的棋盘格。

不同标定板的优缺点:

  • 棋盘格本身存在角点检测不精确的问题。
  • 圆点检测更精确,但是会存在偏心误差

会存在偏心误差

(2)准备好棋盘格后,使用待标定相机拍摄不同角度多组标定图案

  • 拍摄15~20张不同角度照片(按照标定的理论三张图片就可以完成标定,但是为了减小标定误差,拍摄图片会稍微多一些)
  • 标定图案需要保证平整
  • 每张图片中标志物尽量占据画面1/4以上,
  • 拍摄时应尽量保证相机参数不变(拍摄过程不要采用自定对焦方式,也不要改变焦距)
  • 保证拍摄图案清晰,无明显模糊(由于圆点在模糊情况不会改变其中心点位置,精度理论上会更好一些)
  • 拍摄图案的总和需要覆盖整个画面

(3)使用标定工具进行标定计算

2.2 张正有标定原理

第一步:对每一幅图像得到一个映射矩阵(单应矩阵)H

        一个二维点用m=(u,v)^{T}表示,一个三维点可以用M=(X,Y,Z)^{T}表示,其增广矩阵(齐次坐标表示)为\widetilde{m}=(u,v,1)^{T}以及\widetilde{M}=(X,Y,Z)^{T}。三维点与其投影图像点之间的关系为:

s\widetilde{m}=A(R,t)\widetilde{M}

式中,s为任意标准矢量,A矩阵为相机内参;R(旋转矩阵),t(平移向量)为外参

式中(u_{0},v_{0})是相机在图像坐标系的主点,\alpha\beta是图像上uv坐标轴的尺度因子,\gamma表示图像坐标轴的垂直度(取决于相机制造工艺,好的为0)。

假定模板平面在世界坐标系Z=0的平面上,则有:

s\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=A\bigl(\begin{smallmatrix} r_{1} & r_{2} & r_{3}&t\end{smallmatrix}\bigr)\begin{bmatrix} X\\ Y\\ Z\\ 1 \end{bmatrix}=A\bigl(\begin{smallmatrix} r_{1} &r_{2} & t \end{smallmatrix}\bigr)\begin{bmatrix} X\\ Y\\ 1 \end{bmatrix}

在标定模板(棋盘格)平面上的齐次坐标\widetilde{M}=(X,Y,1),而\widetilde{m}=(u,v,1)是棋盘格平面上的点投影到摄像机的成像(图像平面)对应点的齐次坐标。

此时,可以得到一个3*3的矩阵:H=\bigl(\begin{smallmatrix} h_{1} &h_{2} & h_{3} \end{smallmatrix}\bigr)=\lambda A\bigl(\begin{smallmatrix} r_{1} & r_{2} & t \end{smallmatrix}\bigr)

利用单应矩阵可得内参矩阵A的约束条件为   h_{1}^{T}A^{-T}A^{-1}h_{2}=0

第二步:利用约束条件线性求解内参矩阵A

        假设存在:

B=A^{-T}A^{-1}=\begin{bmatrix} B_{11} &B_{12} & B_{13}\\ B_{21}&_{22} &B_{23} \\ B_{31}&B_{32} & B_{33} \end{bmatrix}

式中,B为对称矩阵,基于绝对二次曲面原理求出B以后,再对B矩阵求逆,并从中导出内参矩阵A,再由A和单应矩阵H计算外参R和t,公式如下:

\left\{\begin{matrix} r_{1}=\lambda A^{-1}h_{1}\\ r_{2}=\lambda A^{-1}h_{2} \\ r_{3}=r_{1}\cdot r_{2}\\ t=\lambda A^{-1}h_{3} \end{matrix}\right.

第三步:最大似然估计

        采用最大似然准则优化上述参数。假设图像有n幅,模板平面标定点有m个,则最大似然估计值就可以通过最小化以下公式得到:

\sum_{i=1}^{n}\sum_{j=1}^{m}\left \| m_{ij}-m(A,k_{1},k_{2},R_{i},t_{i},M_{j}) \right \|^{2}

式中,m_{ij}为第 j 个点在第 i 幅图像中的像点;R_{i}为第 i 幅图像的旋转矩阵;t_{i}为第 i 幅图像的平移向量;M_{j}为第 j 个点的空间坐标;初始估计值利用上面线性求解的结果,径向畸变系数k_{1}k_{2}初始值为0。


http://www.ppmy.cn/news/546350.html

相关文章

kinect相机标定参考教程

http://wiki.ros.org/openni_launch/Tutorials/IntrinsicCalibration http://wiki.ros.org/camera_calibration https://blog.csdn.net/zkl99999/article/details/49307703

四种缓存的避坑总结

背景 分布式、缓存、异步和多线程被称为互联网开发的四大法宝。今天我总结一下项目开发中常接触的四种缓存实际项目中遇到过的问题。 JVM堆内缓存 JVM堆内缓存因为可以避免memcache、redis等集中式缓存网络通信故障问题,目前还在项目中广泛使用。 堆内缓存需要注…

MFC 截图功能实现(2)

上篇文章里面所用的截图是点击按钮就截取当前打开的界面,链接: MFC 截图功能实现_春蕾夏荷_728297725的博客-CSDN博客 这里所用的截图是可以选中区域,另存为目录等的操作: 效果: 选中区域: 菜单&#xf…

玩转NVIDIA Jetson(19)--- jetson的40pin外部接口

Jetson平台的所有设备都向外提供了40pin的接口,包含了丰富的常用通信接口,SPI,I2C,UART等。 下图是Xavier的40pins的详细信息。 下图是nano的40pins详细信息。 以上两张图片均来源于国外网站https://www.jetsonhacks.com/ 下面说…

将服务器端口映射到本地端口

将服务器端口映射到本地端口 如题如何将服务器端口映射到本地: 在服务器上运行的结果有的时候会直接显示在服务器的端口上,如:http://localhost:6006/,但是服务器的端口无法直接查看,那如何在自己的电脑上查看呢。 首…

群晖nas使用的端口

请参见下表: 设置工具 类型 端口号码 协议 Synology Assistant 9999、9998、9997 UDP 备份 类型 端口号码 协议 Data Replicator、Data Replicator II、Data Replicator III 9999、9998、9997、137、138、139、445 TCP 网络备份 873(数据)、3…

端口映射问题

最近部署一个服务。一直没通。大佬认为可能涉及到端口的问题。这里作一点了解。汇总了部分网络资料。 端口是什么: 端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口&am…

常见的相机输出接口

本文就目前常见的相机输出接口CVBS、VGA、DVI、HDMI、SDI、Camera Link、HS-LINK、CoaXPress这8种类型做出一一介绍。 1.CVBS CVBS是Composite Video Broadcast Signal的缩写,中文翻译为复合视频广播信号。这是最常见的视频接口,最初在广播电视领域应用…