当前位置: 首页 > news >正文

摄相机标定的基本原理

【相机标定的基本原理与经验分享】https://www.bilibili.com/video/BV1eE411c7kr?vd_source=7c2b5de7032bf3907543a7675013ce3a

相机模型:

定义:

内参:就像相机的“眼睛”。它描述了相机内部的特性,比如焦距(镜头的放大能力)、主点位置(图像中心)等。简单说,这些参数决定了相机如何把外界景物映射到图像上。

外参:可以看作相机在“房间”里的位置和朝向。它描述了相机相对于实际世界(例如房间、街道)的摆放位置和角度,告诉我们相机看世界的角度和方向。

畸变参数:就像眼镜的“矫正”作用。由于相机镜头的设计缺陷,拍出来的图像会有些弯曲或失真(比如直线看起来弯曲)。畸变参数就是用来校正这种失真,使图像更接近真实场景。

坐标系:

世界坐标系:代表物体在真实世界里的三维坐标,坐标系用X_{w},Y_{w},Z_{w}表示

拍摄物体时,需要将世界坐标系的物体通过刚体变换转移到相机坐标系下 

相机坐标系:代表以相机光学中心为原点的坐标系,相机光轴与z轴重合,坐标系用X_{c},Y_{c},Z_{c}表示

图像坐标系:代表相机拍摄图像的坐标系,原点为相机光轴与成像平面的交点,是图像的中心点,坐标系用X,Y表示

像素坐标系:由于图像的基本单位是像素,所以该坐标系是图像上点在图像存储矩阵中的像素位置,坐标原点在左上角,坐标系用u,v表示。前三个坐标系的单位是毫米,而最后一个坐标系的单位是像素

坐标系变换:

世界坐标系到相机坐标系的变换:世界坐标系是真实世界的基准坐标系,需要知道相机坐标系下的点在真实世界中的位置,利用齐次坐标变换矩阵

相机坐标系到图像坐标系的变换:该变换可以看作是简单的射影变换(将相机看作小孔成像的模型),将三维坐标变换成二维坐标。其中f为相机的焦距

图像坐标系到像素坐标系的变换:设图像x方向每毫米有f_{x}个像素,y方向每毫米有f_{y}个像素,则有:

其中,c_{x},c_{y}是图像坐标系原点在像素坐标系下的坐标

相机畸变模型:

一般只考虑径向畸变k和切向畸变p

 其中,r^{2}=x^{2}+y^{2}

畸变与和原图像点的距离点有关系,若k>0,则为枕型畸变

相机标定:

相机标定参数包括内参和外参

建立目标函数:

三维点\widehat{m}和二维展示出来的图像上的点是一一对应的,三维点经过投影(A,R_{i},t_{i},M_{j})等一系列操作得到图上的点(用红色实心点表示) 

m_{ij}为已经拍摄通过角点提取等方法计算得到的二维点

通过相机模型得到目标函数,优化参数,使二维点和三维点重合,或最优化为最小

缺点:优化量过多,若初始值不好,容易陷入局部最优

张氏标定法:

原论文:A Flexible New Technique for Camera Calibration

详解及代码:【三维重建】摄像机标定(张正友相机标定法)_张正友标定法-CSDN博客

通过上述提到的目标函数得到很好的解,用于初始值和最优化

假设平面在世界坐标系下为Z=0,标定板为Z=0

 Z=0,因此r_{3}不起作用,可以将其去除掉

A表示所有相机内参数的矩阵,将A[r_{1\, }\, \, r_{2\, }\, \, t](内参乘外参的矩阵)称为H,表示一个平面和另一个平面的映射关系,可以通过两个平面求得,为已知量

推导:

H为

[r_{1\, }\, \, r_{2\, }\, \, t]为刚体变换矩阵,是\begin{bmatrix} R &t \\0 &1 \end{bmatrix},其中R为正交矩阵,列向量模长为1,由此可以得到:

r_{1}垂直于r_{2}

r_{1}的模等于r_{2}的模

得到下面的方程:

进行计算和公式推导:

最终得到:

v已知,b为相机内参的未知量组合

一张照片可以提供一个2*6矩阵,至少需要三张照片,可以确定b的唯一,越多照片越可以确定,形成冗余方程,更具有稳定性

再使用目标函数,对最小二乘进行优化

一些改进:

Accurate camera calibration using iterative refinement of control points

1.明确张正友的方法没有限制棋盘格或者圆环

2.圆环与棋盘格的优缺点分别是什么?(圆的标定结果和精度大于方形)

圆环与棋盘格:

圆检测精度高,表现为中心拟合精度高,但是具有偏心误差

棋盘格检测精度低,但是不存在偏心误差

偏心误差:空间中两条直线的交点的投影为其投影直线的交点;而圆的中心投影不等于投影椭圆的中心(解决方法见下方论文)

Quasi-eccentricity error modeling and compensation in vision metrology

使用情况:若知道如何纠正偏心误差 ,使用圆的精度更高;若不知道,则使用棋盘格

标定实际操作:

1.操作

OpenCV有现成函数,如果想更方便需要自己编写一个GUI界面

error = cv::calibrateCamera(object_points,image_points,imageSize,cam_intr_para,distCoeffs,rvecs,tvecs);

2.拍摄机位和数量选择

最少拍三张,三张后达到稳定,常用为十几张到二十几张

相机正常拍摄,沿光轴旋转,需要顾及边界参数和畸变参数 

3.标定结果和评判标准

使Re-projection error误差最小(二维角点减三维点投影)

该标准已成为相机标定误差的标准

重投影误差:

①图像(角点)检测精度,如果2d角点检测不准,会直接造成重投影误差,需要找到一个精度高鲁棒性的算法

②相机本身存在成像噪声

③相机分辨率,5000*3000和1000*600的相机在同情况下,前者的误差更高

④相机本身的最优化算法

其他评判标准:

三维重建:

若拍摄10组照片,得到内参数矩阵A和外参数矩阵Rt(10张照片对应10个Rt);假设其中一张照片的标定照片如下图:

在标定结束后,A、R、t都是已知的;取标定板上的左上角和右下角两个角点应该一致,按照R、t、A(内参和外参)将3d标定板上的这两个角点重新投影到图像上的两个点

4.应用

单目:

pnp问题:已知n点的对应关系,如何求解它的R和t(已知内参数,求解外参数)

设有一个立体标版,希望得知立体标版与2d图像的转换关系

opencv中有现成的函数

双目测量

相关文章:

  • 15天 — 如何解决 Redis 中的热点 key 问题?Redis 集群的实现原理是什么?Redis 中的 Big Key 问题是什么?如何解决?
  • sqli-lab靶场学习(七)——Less23-25(关键字被过滤、二次注入)
  • 1.RabbitMQ简介
  • rust笔记13:trait对象
  • 电脑技巧:硬件检测工具 HWiNFO 8.16版本更新功能介绍
  • 点云滤波方法:特点、作用及使用场景
  • MyBatis-Plus 条件构造器的使用(左匹配查询)
  • 使用jacob进行word操作
  • docker:Dockerfile案例之自定义centos7镜像
  • ESP8266连接网络实时上传数据
  • 基于Qwen-VL的手机智能体开发
  • 达梦适配记录-检查服务器
  • Linux网络相关内容与端口
  • 【人工智能】异构算力重构AIGC | 蓝耘智算平台部署通义万相2.1文生图技术全解析
  • RocketMQ顺序消费机制
  • 智慧水务新时代:1.05亿项目引领的数字化浪潮
  • 从“0”开始入门PCB之(5)完结篇!--快速入门原理图DRC,PCB的符号与布局,2D与3D效果,PCB的图层和布线,PCB板框
  • 备赛蓝桥杯之第十五届职业院校组省赛第六题:简易JSX解析器
  • 深入探索WebGL:解锁网页3D图形的无限可能
  • AI控制游戏 -- 开源框架来了!
  • 营销型网站建设明细报/搜索引擎优化举例说明
  • 龙华附近网站建设公司/百度云搜索引擎 百度网盘
  • 网站web做/app拉新推广项目
  • 义乌代加工手工活官网/长沙专业seo优化推荐
  • 网站建设要点/网络营销模式下品牌推广研究
  • 物流系统网站建设 的网站描述/成都网站推广经理