相机系列——相机标定简述

news2024/11/17 11:49:24

作者:木一

对相机系列感兴趣还可看前文了解更多相关内容:

相机系列——透视投影:针孔相机模型

VR/AR/XR背后的逻辑?离不开三维引擎相机

引言

上文我们介绍了针孔相机模型,用来描述相机的透视投影成像过程,具体可以表示为:

其中P表示三维空间中的任意一点,p表示其在成像平面上的像素坐标,K表示相机内参,R、t表示相机外参。λ为尺度因子,可以取任意实数。

据此可以看出,给定相机内外参数,可以唯一确定三维空间到二维平面的投影转换过程,即确立三维空间点到二维图像点的对应关系。

PS:转换是单向的,只能由三维到二维,这是因为三维到二维的转换损失了一个维度,无法得到二维到三维的唯一映射关系。不难想象,二维图像上的任意一点对应到三维空间是一条射线,而不是一个点。

这一点从公式的尺度因子可以看出,对于一个三维点P,可以唯一确定图像点p,对于一个图像点p,当尺度因子取值不同时,对应的三维点也不同。关于尺度因子的物理含义,从前文的公式中可以看出,它其实表示的是三维点距离相机中心的深度 𝑍𝑐 。所以如果深度值 𝑍𝑐 确定,则可以实现二维到三维的转换。

什么是相机标定

针孔相机模型只是对相机成像过程的通用描述,相机的内参各不相同,外参对应拍摄时的相机位置和姿态,要准确还原一幅相片的成像过程,还需要对相机的内外参数进行准确求解,求解过程称之为相机标定。

标定什么

相机内参包括焦距f、像主点坐标(𝑢0,𝑣0)、像元尺寸( 𝑑𝑥 , 𝑑𝑦 ),相机外参包括相机位置t和相机姿态R。相机标定是对相机内参和外参的求解,通常情况下,只需要计算出相机内参矩阵K和外参矩阵[Rt]即可。

以上仅针对理想条件下的线性模型而言,而实际成像过程受物理因素、光学因素影响,成像过程是非线性的,即会导致相机畸变,因此相机标定还包括对畸变系数的求解,关于畸变系数求解本文暂不展开。

标定方法

相机标定最早应用于摄影测量学,但主要针对量测型相机。之后随着计算机视觉的发展与应用,学者们提出了更多相机标定方法。此外,随着人工智能技术的发展,近年来基于深度学习的标定技术也得到广泛研究。

总体来说,传统标定方法是基于预先设置的成像场景构建标定模型,在场景几何约束基础上选取最优算法求解相机参数。主要包括以下三类:

(1)基于标定物的方法:是在场景空间设置参照物,参照物具有便于识别的特征点,识别参照物特征点构建像素与空间坐标对应关系方程组,再利用优化算法求解参数,基于棋盘格的张正友标定法是这类方法的经典代表。

(2)主动视觉法:是通过人为精确控制相机或目标做特殊运动如纯旋转、平移等获取多幅图像,基于定量化的运动约束求解相机参数。

(3)自标定方法:不需要设置特定的控制条件,只根据多幅图像对应点之间的关系直接求解相机参数,如直接求解 Kruppa 方程、基于绝对二次曲线和绝对二次曲面方法等。

本文介绍两种应用最为广泛的标定方法:直线线性变换法(Direct Linear Transform,DLT张正友标定法。

(1)DLT

在不考虑相机畸变的情况下,相机成像过程可以抽象为线性变换过程,DLT方法是通过已知的三维点和其在图像中的对应点关系建立线性方程组,并通过求解方程组来获取相机投影矩阵。再对投影矩阵进行分解获取相机内参和外参矩阵。关于具体方法介绍已经有大佬们写的很清楚了,本文不再赘述。参照:立体视觉入门指南(4):相机标定之DLT直接线性变换 - 知乎

图源:立体视觉入门指南(4):相机标定之DLT直接线性变换 - 知乎

(2)张正友标定法

张正友标定法也就是我们经常见到的棋盘格法,是一种基于标定物的方法。标定物是已知尺寸的二维棋盘格平面,以棋盘格角点作为参照建立约束关系,求解相机内外参数。具体可参照:立体视觉入门指南(3):相机标定之Zhang式标定法 - 知乎

图源:立体视觉入门指南(3):相机标定之Zhang式标定法 - 知乎

拓展:理解相机参数

内参矩阵理解

在实际应用中,我们标定出来的内参矩阵通常像这样:

K = [[4675.63477897830, -5.165508791991464, 3025.473077235752],
    [0.000000000000000, 4666.3702576511423, 1986.696982476598],
    [0.000000000000000, 0.0000000000000000, 1.000000000000000]]
fx = 4675.63477897830
fy = 4666.37025765114
u0 = 3025.47307723575
v0 = 1986.69698247659

根据前文介绍,可以知道:

其中f表示焦距,单位是mm。( 𝑑𝑥 , 𝑑𝑦 )表示一个像素的物理尺寸,可以用相机传感器尺寸/图像像素尺寸计算,单位是mm/像素。

图源:https://1sourcevideo.com/shop/news-updates/post/introducing-the-blackmagic-design-pocket-cinema-6k-g2

因此 𝑓𝑥 、 𝑓𝑦 的单位是像素,可以理解为是以mm为单位的焦距的等效像素长度。那为什么焦距f要分为 𝑓𝑥 、 𝑓𝑦 表示呢,这是因为在相机传感器上,单个像素的形状通常不是正方形,而是矩形,因此在将图像物理坐标转换为图像像素坐标时,在x轴和y轴方向上的转换比不同,因此通常用 𝑓𝑥 和 𝑓𝑦 描述相机焦距。

( 𝑢0 , 𝑣0 )表示相机摄像中心到相片的垂点,或者用主光轴与相片交点来描述,称为像主点。通常情况下像主点位于相片中心点附近。

从上述定义可以看出,相机焦距、传感器尺寸、相片尺寸,这些参数都是固定的(假设焦距不变),那为什么还需要标定呢,生产时直接确定不行吗?这是因为在相机生产过程中,由于制造偏差或者其他因素影响,每台相机的实际内参与理论内参往往有所差异,因此需要通过实际测验来确定相机内参。

相机传感器

但是对于一些精度要求不高的应用场景,或者在一些计算过程中需要粗略的初始化参数时,可以通过查验资料来计算相机的理论参数。其中最重要的便是获取传感器尺寸

相机成像主要是光电转换的过程(参考:https://blog.csdn.net/Coppa/article/details/107274059),其中最重要的便是感光Sensor(传感器),用于将光信号转换为电信号。传感器的尺寸(靶面大小)是影响成像质量最重要的因素,可以类比为画布,画布越大,能够承载的画面内容则越丰富。这也是摄影界中常说的“底大一级压死人”。

图源:相机基础知识讲解:CMOS和CCD_什么是ccd和cmos?-CSDN博客

言归正传,我们最关心的还是传感器尺寸,各类设备厂商对于传感器尺寸的描述通常如下:

索尼相机:

大疆无人机:

华为手机:

从相机、无人机、手机厂商对传感器尺寸的描述,可以看到有全画幅、APS-C画幅、1英寸、1/1.3英寸等这类描述。实际上无论是怎样的描述,主要是想表示传感器的面积。

  • 全画幅来源于传统胶片相机时代,指的是与标准35毫米胶片尺寸相同的传感器尺寸,靶面尺寸为36mm × 24mm。
  • APS-C画幅(经常被戏谑的称为残幅)比全画幅尺寸小,靶面尺寸为23.4mm×15.6mm。
  • 1英寸指的是传感器对角线尺寸,虽然1英寸=2.54cm,但实际上1英寸的传感器对角线实际尺寸约为16mm,靶面尺寸为12.7mm×9.6mm,至于原因嘛当然是历史原因:“1英寸”不等于1英寸,关于CMOS尺寸的那点事-36氪。
  • 其他诸如1/1.3英寸、1/2英寸等描述方式都是指传感器对角线尺寸,对应的靶面尺寸可以通过计算或者查阅资料获取。

图源:https://www.ithome.com/0/674/526.htm

所以,如果我们需要获取手机、数码相机或无人机,亦或是监控相机的理论内参时,可以查阅设备资料,获取其传感器尺寸,结合拍摄时的焦距、相片分辨率(像素尺寸),计算相机的理论内参。

焦距和等效焦距

对于相机来说,焦距主要由镜头决定,一般焦距的范围在15mm~600mm,这是物理尺寸。当传感器尺寸固定时,焦距决定了相机所拍摄的视角范围。

图片来源:为什么那么短的手机镜头能有数十毫米的等效焦距? - 知乎

但是我们在手机厂商的宣传中通常可以看到等效焦距的概念,由于手机大小的限制,无法放置全画幅传感器和实际物理尺寸的镜头,因此通常将135相机的感光器件和镜头看做一个整体,在手机内部放置一个缩小版的135相机成像组件,形成和135相机相同的成像视角。此时将135相机所对应的焦距称为等效焦距。

所以,等效焦距 = 全画幅传感器尺寸 / 实际传感器尺寸 * 物理焦距

其中,转换系数 = 全画幅传感器尺寸 / 实际传感器尺寸

举个栗子:

小米9的传感器型号为索尼IMX586,传感器尺寸1/2英寸,等效焦距 = 43.3 / 8 * 5 = 27.0625。

PS:传感器尺寸参照https://en.wikipedia.org/wiki/Normal_lens

所以,计算相机内参所使用的是实际物理焦距,而非等效焦距。

参考:

立体视觉入门指南(4):相机标定之DLT直接线性变换 - 知乎

立体视觉入门指南(3):相机标定之Zhang式标定法 - 知乎

为什么那么短的手机镜头能有数十毫米的等效焦距? - 知乎

相机基础知识讲解:CMOS和CCD_什么是ccd和cmos?-CSDN博客

“1英寸”不等于1英寸,关于CMOS尺寸的那点事-36氪

https://en.wikipedia.org/wiki/Normal_lens

你真的了解图像传感器尺寸么 - IT之家

https://1sourcevideo.com/shop/news-updates/post/introducing-the-blackmagic-design-pocket-cinema-6k-g2

相机标定方法及进展研究综述 | 激光与光电子学进展 -- 中国光学期刊网


    关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1713637.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据要素的大海,如何流向千行百业?

文|白 鸽 编|王一粟 当数智化的风吹向银行业,是从底层数据的融合开始的。 在银行风控场景中,一个人想要进行风险投资或借贷,银行往往会评估这个人的信贷和风控策略。在以往的办理模式中,会需要办理人…

看看最新的B端登录界面,你是不是被潮流抛弃了?

毛玻璃风格(Frosted Glass Style)是新拟态设计风格中的一种分支,它灵感来源于现实世界中的毛玻璃材质。毛玻璃是一种通过在玻璃表面加工处理的方式,使其具有模糊、云翳和透明效果的特殊玻璃。 在设计中,毛玻璃风格通常…

OrangePi Kunpeng Pro体验——安装Hass与驱动SPI小屏幕

OrangePi Kunpeng Pro 是一款面向开发者和爱好者的高性能开发板。在本次测评中,主要将以前的一些代码在该开发板上实现,包括docker部署hass,引脚驱动SPI小屏幕。中间遇到了一些小小问题,但都成功了,一起来试试吧~ 一、…

NoSQL是什么?NoSQL数据库存在SQL注入攻击?

一、NoSQL是什么? NoSQL(Not Only SQL)是一种非关系型数据库的概念。与传统的关系型数据库不同,NoSQL数据库使用不同的数据模型来存储和检索数据。NOSQL数据库通常更适合处理大规模的非结构化和半结构化数据,且能够…

n后问题 回溯笔记

问题描述 在nn格的棋盘上放置彼此不受攻击的n个皇后。 按照国际象棋的规则,皇后可以攻击与之处在同 一行或同一列或同一斜线上的棋子。n后问题等价于在nn格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。 代码 import java.uti…

史上最全排序算法整理!(1)

1.排序的概念及其应用 1.1排序的概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之&#…

linnux上安装php zip(ZipArchive)、libzip扩展

安装顺序: 安装zip(ZipArchive),需要先安装libzip扩展 安装libzip,需要先安装cmake 按照cmake、libzip、zip的先后顺序安装 下面的命令都是Linux命令 1、安装cmake 确认是否已安装 cmake --version cmake官网 未安装…

基于k-NN + GCN的轴承故障诊断模型

目录 往期精彩内容: 创新点: 前言 1 轴承故障数据的预处理 1.1 导入数据 1.2 数据预处理,制作数据集 2 基于Pytorch的GCN轴承故障诊断 2.1 定义GCN分类网络模型 2.2 设置参数,训练模型 2.3 模型评估 代码、数据如下&…

乡村振兴与农业科技创新:加大农业科技研发投入,推动农业科技创新,促进农业现代化和美丽乡村建设

一、引言 在当代中国,乡村振兴已成为国家发展的重要战略之一。作为国民经济的基础,农业的发展直接关系到国家的稳定和人民的福祉。随着科技的不断进步,农业科技创新在推动农业现代化和美丽乡村建设中发挥着越来越重要的作用。本文旨在探讨如…

深入理解JVM:内存结构、垃圾收集与性能调优

目录 JDK、JRE、JVM关系? 启动程序如何查看加载了哪些类,以及加载顺序? class字节码文件10个主要组成部分? JVM结构 画一下JVM内存结构图 程序计数器 Java虚拟机栈 本地方法栈 Java堆 方法区 运行时常量池? 什么时候抛出StackOverflowError? 例如&…

SAP_SD模块 物料科目分配/成本简介

SAP系统各模块与财务都有个方面的集成。文本主要说明销售模块中的科目分配和成本的一个对应关系。 1、首先是在物料主数据上销售视图中的物料科目分配组,S1主营、S2材料等字段,物料销售的时候会将这个物料产生的记录到对应的科目中。 首先是物料主数据中…

FreeRTOS【7】队列使用

1.开发背景 操作系统提供了多线程并行的操作,为了方便代码的维护,各个线程都分配了专用的内存并处理对应的内容。但是线程间也是需要协助操作的,例如一个主线程接收信息,会把接收的信息并发到其他线程,即主线程不阻塞&…

数分之SQL查询电商数据案例

1,Python连接SQL数据库 以下是使用Python连接MySQL数据库并进行操作的示例代码: import random import time import pymysql# 定义名字数据 xing ["王", "李", "张", "刘", "陈", "杨", "黄&q…

2024年 云南 融资融券怎么开通,利率多少?4.2

一个小动作,每年节约几万块? 勤俭节约的传统,真的在很多年轻人当中是被嫌弃的,有人要说“吃多了对身体也不好”、“反正食堂饭菜很便宜”之类 但是有效利用资源的观念还是需要培养的。最近了解到很多朋友在券商融资利率很高6%&a…

Pyinstaller打包exe文件解决指南

打包命令 打包 Python 文件 输入如下格式的命令即可 默认命令 Pyinstaller 文件名.py Pyinstaller -option1 -option2 -... 要打包的文件 Pyinstaller 文件名.pyPyinstaller -option1 -option2 -... 要打包的文件 参数选项比较多,这里我列一个表:…

Downie 4 for Mac:视频下载的新选择

对于Mac用户来说,想要轻松下载网上的视频内容,Downie 4无疑是一个绝佳的选择。这款专为Mac打造的视频下载工具,凭借其强大的功能和简洁的操作界面,让视频下载变得轻松又高效。 Downie 4支持从众多网站下载视频,包括各…

LeetCode --- 399周赛

题目列表 3162. 优质数对的总数 I 3163. 压缩字符串 III 3164. 优质数对的总数 II 3165. 不包含相邻元素的子序列的最大和 一、优质数对的总数I 这里由于数据范围比较小,我们可以直接暴力枚举,代码如下 class Solution { public:int numberOfPairs…

STP19NF20 丝印 19NF20 场效应管19A 200V 直插 TO-220

STP19NF20 功率MOSFET的应用领域相当广泛,主要包括: 1. 电源管理:用于高效率电源管理电路,如直流-直流转换器和交流-直流电源适配器。 2. 开关模式电源(SMPS):在需要高效能和紧凑型尺寸的开关…

汽车悬架分为哪几类

汽车悬架分为哪几类 1)汽车的悬架系统可根据结构分为两种:独立悬架和非独立悬架,独立悬架根据构造又可以分为CDC运动悬架(CDC电磁悬架系统)和空气悬架; 2)当前比较火热的空气悬架,是独立悬架的一种; 3)前轮主要使用麦弗逊式独立悬架 和 双叉臂悬架,后轮主要使用多…

本特利330130-040-01-00 PLC模块深度解析 询价联系ID

本特利330130-040-01-00 PLC模块深度解析 在工业自动化领域,准确、高效的数据采集和监控是确保生产安全、提高生产效率的关键。本特利(Bently Nevada)作为全球知名的工业自动化和监控设备制造商,其生产的330130-040-01-00 PLC模块…