视觉基础之相机标定

article/2025/10/22 5:38:58
 

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

基于视觉的图像处理,通常要在实验前进行相机的标定,以获取相应的参数。为方便查阅,遂将常用到的三种相机标定总结如下。

相机内参标定

Step1 : 在相机前方放置棋盘格,前后左右方向转动棋盘格,角度不宜超过45度,采集不同方向的图片,待后续处理;

2b903a4683d94c3b3d0905c201dc3a3f.jpeg

Step2 : 打开Matlab,在APP列找到Camera Calibration工具,将采集的棋盘格图片导入,保证能够正确导入的图片数量在20-30张之间,测量每个黑白格的真实大小并输入Matlab中。

8b98b9780a8076581a8ee59945c01621.jpeg

Step3 : 观察棋盘格角点都被正确检测到后,点击Calibrate按钮,观察重投影误差,若图片数量较多,可将重投影误差较大的图片删去,重新calibrate,直到达到一个较理想状态;

fd5ef3e1e3728207430b51e21a73b417.jpeg

Step4 : 选中Export Camera Parameters按钮,将计算得到的相关参数导入到Matlab中;若要进行更精确的标定,可在标定时考虑畸变误差或采用双目相机标定方法。

a8854e2a058db643a8ac669f5c514cdd.png

图示即为我们所需要的相机的内参矩阵,其中fx=1.1259e+03, fy=1.1267e+03, u=480.6138, v=359.5351。


注意事项:

1、 棋盘格在图片中的大小不能过小,要保证角点清晰可探测;

2、 Matlab所得到的内参矩阵与我们通常情况下所计算的内参矩阵互为转置;

3、 若要进行雷达相机联合标定,标定步骤需进行部分调整。

逆透视标定

Step1 : 在图片正中间纵向方向绘制一条直线,从车辆正前方沿着图片中心线拉直尺,距离根据要求调整,一般在15m左右;

    Step2 : 在摄像机的视野范围内的平坦地面选择一个矩形,要求矩形的纵轴线与图片正中心的直线重合;对所选取的矩形的四个顶角进行标记,要求标记在摄像机的图像画面中能够清晰显示,如下图四个矿泉水瓶。

2faff85e7f10949269c0c9ebcbcfc29b.jpeg

Step3 : 启动标定程序,分别输入X轴偏移距离a, Y轴偏移距离b, 矩形宽度w,矩形高度h,比例系数k,一般取经验值:1280,445,360,600,4.5,具体可根据实际情况进行调整,依次选取左上角、右上角、左下角、右下角点,使得上图中绿色的线与标定图像中的红线重合。标定完成后,得到逆透视变换矩阵H,可在实际实验中检验H的值是否合理。保证图片能看到本车道和相邻车道,且保持直线平行性不变。

注意事项:

1、 标定的逆透视图像区域与测试的逆透视图像区域尺寸应保持一致;

2、 标定时矩形的靠近摄像机的两个点应尽量靠近车辆,近乎贴合盲区时标定所得矩阵较准确;

3、 世界坐标系:智能车所在地面组成的二维平面,横轴为X轴,纵轴为Y轴,原点左边是X轴正轴,下面是Y轴正轴。图像坐标系:图像左上角为原点,横轴为X轴,纵轴为Y轴。所以矩形四个角的坐标依次为:(a/k ,b/k),((a+w)/k,b/k),(a/k,(b+h)/k),((a+w)/k, (b+h)/k),所涉及到的四个参数a、b、h、k的单位均为厘米,当a为正值时,逆透视图像向右偏移,b为正值时,逆透视图像向下偏移。(横向偏移越大,则鸟瞰图像中横向的视野就越宽;纵向偏移越大,则纵向视野就越远)。

单目测距标定

(1)纵向距离标定:

准备工具:测距所涉及到的原理和公式:

根据摄像机成像原理,以及摄像机与路面的关系建立了图像像素坐标系与世界坐标距离的几何模型,如下图所示:

10996621bad2d6a901977e1e4d36d777.png

根据几何模型可推导出图像物理坐标与世界坐标距离关系式为:

4c1cf62228ab000e079478217aefc842.png

根据图像物理坐标与像素坐标之间的转换关系得:

a30fe1c4e5fe453d1861d23d5c1dfb0a.png

其中,ay表示摄像头的有效焦距,α表示摄像头的俯仰角,可通过公式反推通过标定求得,v0表示主点纵坐标,v是像素行数。

实验操作步骤:

Step1 : 通过棋盘格标定法获取相机内参fv和v0的值,测量相机离地高度h。

Step2 : 在图片正中间纵向方向绘制一条直线,从车辆正前方沿着图片中心线拉直尺,距离大约60m左右,测量相机到直尺原点的距离;

Step3 : 从远到近依次取15个标志点,分别输入他们到相机的真实距离,建立像素点与真实点之间的一一对应关系,借助程序即上述几何关系求解出摄像头的俯仰角,从而进行前方物体纵向距离的计算。

bcfe428459781e74d07b54cedb0c80d1.gif

(2)横向距离标定:

标定原理:

单目摄像机在拍摄时,所有平行与摄像机光轴的直线均汇聚与一点(即消失点L),且在待测点与消失点连线上的任意一点到光轴的距离均相等。

在图像左上角建立基于图像像素的平面坐标系,将待测点用像素坐标表示出来,求出待测点与消失点的连线在图像上的连线与光轴之间的角度,与实际待测点距光轴的距离进行匹配,最后根据数据对标定进行数据拟合即可完成横向标定。

00c07a956bdab4bef7ce3966709d8209.jpeg

 实验操作步骤:

Step1 : 将车辆停在车道中央,保持车道线方向与车身纵轴方向平行,利用鼠标在图片中的车道线上选两点,图片中心线上取一点,计算出消失点坐标;

Step2 : 在车辆前方某一距离处(一般取15m),在车辆纵轴线一侧横向摆放10个障碍物,鼠标在图片中从左到右依次取点,计算每个障碍物与消失点连线与光轴之间的角度,并记录每个障碍物到车辆中心的真实横向距离,建立角度与真实距离之间的一一对应关系,并通过Matlab进行曲线拟合,测试时,只需获取像素点,即可通过计算角度和拟合所得到的曲线获得目标距离本车的横向距离。

来源:爱吃草莓的小泥猴

 

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 

3fdabf7d7e33fce232e9668b589d1ef6.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。交流群欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

http://chatgpt.dhexx.cn/article/tnwdnQDs.shtml

相关文章

照相机标定

一.相机标定的原理 1.1 相机如何成像: 相机成像系统中,共包含四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。 1.1.1 世界坐标系: 世界坐标系(world coordinate),也称为测量坐…

Opencv——相机标定

相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的选择和平移矩阵),内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对很小的图像。 相机标定的输入:标定图像上所有…

为什么需要对相机标定?

以下内容来自系统教程如何搞定单目/鱼眼/双目/阵列 相机标定? 点击领取相机标定资料和代码 为什么需要对相机标定? 我们所处的世界是三维的,而相机拍摄的照片却是二维的,丢失了其中距离/深度的信息。从数学上可以简单理解为&…

1. 相机标定原理(学习笔记)

相机标定(Camera Calibration)-学习笔记 文章目录 相机标定(Camera Calibration)-学习笔记一、简介二、原理1. 坐标系 *coordinates*2. 相机参数 *camera matrix*2.1 外参数矩阵2.2 内参数矩阵2.3 畸变矩阵2.3.1 径向畸变2.3.2 切向畸变 2.4 小结 三、相机标定方法1. 张正友相机…

相机标定目的及原理

相机标定的目的: 相机标定的目的有两个,一个就是矫正由于镜头畸变造成的图片的变形,例如,现实中的直线,拍摄成图像后会外凸或内凹,进行相机标定后可以对这种情况进行校正;另一个是根据获得得图像…

Python之OpenCV相机标定方法

本文结合OpenCV官方样例,对官方样例中的代码进行修改,使其能够正常运行,并对自己采集的数据进行实验和讲解。 一、准备 OpenCV使用棋盘格板进行标定,如下图所示。为了标定相机,我们需要输入一系列三维点和它们对应的…

相机标定,内参数与外参数

相机标定 简介 所谓的相机标定就是将外界世界的坐标信息转化为计算机(自带相机/摄像头)可以理解的“距离”,将世界坐标系转换到相机坐标系。我们可以理解为从一个坐标系转换到另一个坐标系所需要的转换关系就是相机标定。 简单滴说&#x…

相机标定——张氏标定法

目录 前言动机为什么要进行相机标定什么是张氏标定法 张氏标定法的原理透镜成像原理世界坐标系到相机坐标系的转换相机坐标系到图像坐标系的转换图像坐标系到像素坐标系单应性矩阵内参求解外参求解Matlab实操 前言 动机 前段时间在整机械臂的手眼标定,也就是标定3D…

相机标定系列(三)利用matlab进行相机标定

相机标定系列(三)利用matlab进行相机标定 文章目录 相机标定系列(三)利用matlab进行相机标定前言一、棋盘格图像的采集二、单目相机标定三、双目相机标定 前言 matlab的应用程序中含有对双目相机和单目相机的标定工具箱&#xff…

机器视觉——相机标定

1 机器视觉为什么要做相机标定 机器视觉是采用相机成像来实现对三维场景的测量、定位、重建等过程。是一个利用二维图像进行三维反推的过程,我们所处的世界是三维的,而图像或者照片是二维的,可以把相机认为是一个函数,输入量是一…

相机标定篇——相机标定

认为相机标定是三维重建的核心,研究生期间主要方向为结构光三维重建 必要的数学知识 线性方程求解 Gauss消元法;LU分解;Cholesky分解 最小二乘问题-线性方法 特征值分解;奇异值分解;超定线性方程;最小二乘…

【相机标定】相机内参

相机标定 相机在计算机视觉方面的一些应用一般需要相机标定。我们总是听到标定这个词,那么具体标定的是什么呢?相机的拍摄是一个三维到二维(透视投影)的过程,这个过程可以用数学模型去表述,标定便是计算这…

什么是相机标定

1. 相机标定的定义及作用 相机标定是指借助标定板来计算单个或多个相机的内参、外参和镜头畸变参数。 作用: 将畸变的图像恢复为正常的图像,为后续进行拼接、SLAM等奠定基础。 多相机标定可以将所有相机输出变换到同一个坐标系。 相机标定是三维视觉…

相机标定究竟在标定什么?

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 相机标定可以说是计算机视觉/机器视觉的基础,但是初学者不易上手,本文将给读者整理一遍相机标定的逻辑,并在文末回答评论区提出的问题…

相机标定(Camera calibration)

简介 摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵 P P P 的过程,下面相关的部分主要参考UIUC的计算机视觉的课件(网址Spring 2016 CS543 / ECE549 Computer vision)。 …

相机参数标定(camera calibration)及标定结果如何使用

重要更新:本文的第二次更新已发布。为了不破坏现有内容的结构,故重新开始新的一篇文章。同时本文的一些内容也会涵盖进去。 欢迎关注。 《第二更,相机参数标定基础:从小孔成像开始到单双目标定》 关于实践部分,可参…

相机标定详解

内参、外参、畸变参数三种参数与相机的标定方法与相机坐标系的理解 相机标定(Camera calibration)原理、步骤 相机标定详解 最近做项目要用到标定,因为是小白,很多东西都不懂,于是查了一堆的博客,但没有…

相机标定-机器视觉基础(理论推导、Halcon和OpenCV相机标定)

相机标定是获得目标工件精准坐标信息的基础。首先,必须进行相机内参标定,构建一个模型消除图像畸变;其次,需要对相机和机器人的映射关系进行手眼标定,构建一个模型将图像坐标系上的点映射到世界坐标系。主要分为背景知…

计算机视觉——相机标定

相机标定 1. 相机标定1.1相机内外参数(重点)1.2 为什么要做相机标定 2. 相机标定的意义3. 相机成像模型3.1 像素坐标系3.2 图像坐标系3.3 相机坐标系3.4 世界坐标系 4.坐标系转换4.1 世界坐标到相机坐标4.2 相机坐标到图像坐标4.3 像素坐标到世界坐标的变…

相机标定、双目相机标定(原理)、三维重建效果展示

1.相机标定的目的: (1)通过单目相机标定分别求出左右相机的内参数和外参数。 (2)矫正由于镜头畸变造成的图片的变形,例如,现实中的直线,拍摄成图像后会外凸或内凹,进行相…