python计算机视觉——相机标定之张正友标定法

本文详细介绍了相机标定的目的,包括获取相机内参矩阵和外参矩阵以进行畸变矫正。张正友标定法通过棋盘格标定板,计算相机内外参数,解决图像的径向和切向畸变。文章提供了标定步骤、关键代码及实验结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 相机标定的目的

1.1 相机的成像原理

相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。
在这里插入图片描述

这四个坐标系之间的转化关系为:
在这里插入图片描述
其中,(U,V,W)为在世界坐标系下一点的物理坐标, (u,v) 为该点对应的在像素坐标系下的像素坐标, Z 为尺度因子。我们将矩阵:
在这里插入图片描述
称为相机的内参矩阵,内参矩阵取决于相机的内部参数。其中,f 为像距,dX,dY别表示X,Y方向上的一个像素在相机感光板上的物理长度(即一个像素在感光板上是多少毫米),u0,v0分别表示相机感光板中心在像素坐标系下的坐标,θ 表示感光板的横边和纵边之间的角度(90°表示无误差)。

将矩阵在这里插入图片描述
称为相机的外参矩阵,外参矩阵取决于相机坐标系和世界坐标系的相对位置,R表示旋转矩阵T,表示平移矢量。
即无畸变的相机成像模型如下:
在这里插入图片描述

1.2 相机标定的目的

当我们拿到一张图片,进行识别之后,得到的两部分之间的距离为多少多少像素,但是这多少多少像素究竟对应实际世界中的多少米呢?这就需要利用相机标定的结果来将像素坐标转换到物理坐标来计算距离(当然这里值得说明,仅仅利用单目相机标定的结果,是无法直接从像素坐标转化到物理坐标的,因为透视投影丢失了一个维度的坐标,所以测距其实需要双目相机)。

相机标定的目的其实很简单,我们要想对一个成像系统建模,进而进行相应的计算,所必须的参数就是相机的内参矩阵和相机的外参矩阵,因此,相机标定的第一个目的就是获得相机的内参矩阵和外参矩阵。

1.3 畸变与畸变矫正

另外,相机拍摄的图片还存在一定的畸变,畸变包括桶形畸变枕形畸变

由于径向畸变,直线会变弯。距离图片中心越远,它的影响越大。如下面这张图片,棋盘格中被红线标记的边缘。你会发现棋盘格的边缘并不与直红线重合,而是变弯了。可以到维基百科查看更多细节Distortion (optics) 。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
畸变模型包括径向畸变和切向畸变。
径向畸变公式(3阶)如下:
在这里插入图片描述
切向畸变公式如下:
在这里插入图片描述

其中, ( x , y ) ( x ^ , y ^ ) (x,y)(\hat{x},\hat{y}) (x,y)(x^,y^

张正友标定法是一种用于相机参数标定的方法,它是由张正友教授在1998年提出的。这种方法使用单平面棋盘格进行标定,介于传统标定法和自标定法之间,克服了传统标定法需要高精度标定物的缺点。相对于自标定法,张正友标定法提高了标定的精度,并且更容易操作,因此在计算机视觉领域得到了广泛应用。\[1\] 如果你想了解更多关于张正友标定法的内容,可以参考相关的教程和文献,比如《python-OpenCV Tutorial》。这种标定方法的原理是通过拍摄棋盘格,估算出相机的转换矩阵和失真系数,从而实现将三维世界坐标系转换为二维图像坐标系。标定的过程需要知道一些点在三维世界坐标系和二维图像坐标系中的坐标。\[3\] 如果你想使用Python进行张正友标定法的实现,可以参考相关的Python代码和教程。在实验中,你可以按照实验步骤进行操作,并使用Matlab或Python环境进行测试。\[2\] #### 引用[.reference_title] - *1* [python计算机视觉 相机标定--张正友棋盘格标定法](https://blog.youkuaiyun.com/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.youkuaiyun.com/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.youkuaiyun.com/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、付费专栏及课程。

余额充值