【双目视觉标定】——3面结构光相机标定实践(获取相机内参)~未完待续

相机标定基本原理及双目相机内参解析

相机标定是计算机视觉中的一个重要步骤,旨在确定相机的内部和外部参数,以便在图像处理中进行准确的三维重建、物体识别等任务。本文将重点讲解双目相机的内参和外参原理,并结合实际参数进行分析。

一、相机标定的基本原理

相机标定主要通过捕捉已知尺寸的标定物体(如棋盘格)进行。通过比较图像中标定物体的特征点与实际坐标之间的关系,可以计算出相机的内参和外参。相机的内参描述相机成像特性,包括焦距、主点位置和畸变系数,而外参描述相机在世界坐标系中的位置和姿态。

1. 内部参数

相机内部参数通常表示为一个 3 × 3 的内参矩阵 K,其形式如下:

K = ( f x 0 c x 0 f y c y 0 0 1 ) K = \begin{pmatrix} fx & 0 & cx \\ 0 & fy & cy \\ 0 & 0 & 1 \end{pmatrix} K= fx000fy0cxcy1

  • 焦距 (fxfy):相机的焦距是影响成像缩放的关键参数。fxfy 分别代表在水平方向和垂直方向的焦距,通常情况下二者相近,但在某些情况下(如相机具有不同的光学特性)可能会有所不同。

  • 主点 (cxcy):主点是图像的几何中心,通常位于传感器的中心位置,表示了图像坐标系的原点。在许多相机中,由于制造误差或安装不当,主点可能并不完全位于图像的几何中心。

2. 外部参数

外部参数描述相机在三维世界坐标系中的位置和方向,通常通过一个 4 × 4 的变换矩阵表示,包含旋转矩阵和平移向量:

T = ( R t 0 1 ) T = \begin{pmatrix} R & t \\ 0 & 1 \end{pmatrix} T=(R0t1)

  • 旋转矩阵 R:描述相机的旋转状态,可以表示为一个 3 × 3 的矩阵。
  • 平移向量 t:描述相机在世界坐标系中的位置,通常表示为一个 3 × 1 的向量。

通过这些外部参数,我们可以将三维世界坐标点转换为相机坐标系,从而实现三维重建。

3. 畸变参数

相机镜头的畸变会影响图像的真实度,通常分为径向畸变和切向畸变。畸变参数通常表示为一个向量 D

D = ( K 1 K 2 K 3 P 1 P 2 ) D = \begin{pmatrix} K1 \\ K2 \\ K3 \\ P1 \\ P2 \end{pmatrix} D= K1K2K3P1P2

  • 径向畸变:由镜头的形状引起,通常用 K1K2K3 表示。这种畸变会导致图像中心附近的点更为准确,而离中心越远的点畸变程度越大。

    • K1K2 通常用于描述轻微的桶形畸变(K1K2 的符号)或枕形畸变(K1 为正,K2 为负)。
  • 切向畸变:由相机安装不正引起,通常用 P1P2 表示。这种畸变会导致图像中的点偏离其应有的位置,尤其在图像边缘更加明显。

二、双目相机的内参

双目相机系统由两台相机组成,通过获取两幅图像来实现三维信息的获取。在标定双目相机时,我们需要分别获取左右相机的内参。下面我们将通过实例分析相机内参和畸变参数。

1. 左右相机内部参数

对于一组双目相机的内部参数,左相机和右相机的内参矩阵 K_LK_R 分别为:

左相机内参矩阵 K_L
K L = ( 1319.17 0 661.12 0 1318.48 527.71 0 0 1 ) K_L = \begin{pmatrix} 1319.17 & 0 & 661.12 \\ 0 & 1318.48 & 527.71 \\ 0 & 0 & 1 \end{pmatrix} KL= 1319.170001318.480661.12527.711

右相机内参矩阵 K_R
K R = ( 1323.32 0 667.98 0 1322.63 460.53 0 0 1 ) K_R = \begin{pmatrix} 1323.32 & 0 & 667.98 \\ 0 & 1322.63 & 460.53 \\ 0 & 0 & 1 \end{pmatrix} KR= 1323.320001322.630667.98460.531

2. 畸变系数分析

左相机的畸变系数和右相机的畸变系数分别为:

左相机畸变系数 D_L
D L = ( − 0.069003 0.111153 − 0.052112 0.000348 − 0.000480 ) D_L = \begin{pmatrix} -0.069003 \\ 0.111153 \\ -0.052112 \\ 0.000348 \\ -0.000480 \end{pmatrix} DL= 0.0690030.1111530.0521120.0003480.000480

右相机畸变系数 D_R
D R = ( − 0.068844 0.091295 0.013761 0.000065 − 0.000798 ) D_R = \begin{pmatrix} -0.068844 \\ 0.091295 \\ 0.013761 \\ 0.000065 \\ -0.000798 \end{pmatrix} DR= 0.0688440.0912950.0137610.0000650.000798

从畸变系数可以看出,左相机和右相机都表现出轻微的桶形畸变(K1K2为负值),这在实际应用中需要进行畸变校正,以提高图像的准确性。

三、标定过程及应用

1. 标定过程

在进行相机标定时,一般会执行以下步骤:

  1. 准备标定板:准备一个已知尺寸的标定板(如棋盘格)。
  2. 采集图像:将标定板放置在多个不同位置和角度,使用相机采集多幅图像。
  3. 特征提取:从每幅图像中提取出标定点的位置。
  4. 参数计算:使用提取到的特征点与已知的真实位置计算相机的内参和外参。

2. 应用实例

通过准确的相机标定,双目相机可以实现更高精度的深度图像生成。典型应用包括:

  • 3D重建:将双目相机捕获的图像结合,生成高质量的三维模型。
  • 物体识别:在三维空间中更准确地定位和识别物体。
  • 机器人视觉:为机器人提供环境的深度信息,从而帮助其进行导航和路径规划。

四、总结

相机标定是获取准确三维信息的基础,尤其在双目相机系统中,精确的内参和畸变参数对于立体视觉应用至关重要。通过对相机内参和畸变参数的分析,我们可以更好地理解相机成像的特性,并为后续的图像处理和三维重建提供准确的基础。

希望这篇博客能够帮助你深入理解相机标定的基本原理及双目相机的内部参数。欢迎提出问题或分享你的看法!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

气膜冰雪项目:推动冰雪运动发展的新纪元—轻空间

随着2024年北京冬奥会的余温仍在延续,气膜冰雪项目在我国的冰雪运动发展中扮演着愈发重要的角色。气膜结构以其独特的优势,正吸引着越来越多的参与者,推动着冰雪运动的普及与发展。 突出的优势 气膜冰雪馆的设计理念充分体现了现代建筑的灵活…

市场分化!汽车零部件「变天」

全球汽车市场的动荡不安,还在持续。 本周,全球TOP20汽车零部件公司—安波福(Aptiv)发布2024年第三季度财报显示,三季度公司经调整后确认收入同比下降6%;按照区域市场来看,也几乎是清一色的下滑景…

ES6中数组新增了哪些扩展?

ES6中数组新增了哪些扩展? 1、扩展运算符的应⽤ ES6通过扩展元素符 … ,好⽐ rest 参数的逆运算,将⼀个数组转为⽤逗号分隔的参数序列 console.log(...[1, 2, 3]) // 1 2 3 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...documen…

基于物联网的户外环境检测装置教学文章

引言 随着物联网(IoT)技术的发展,越来越多的应用被广泛研究和应用于我们的日常生活中。户外环境检测装置是一种利用传感器、网络连接和数据分析技术,监测和分析环境数据(如温度、湿度、空气质量等)的设备。…

ubuntu20安装opencv3.2记录

系统环境 ubuntu20安装了ros-noetic,所以系统默认装了opencv4.2.0,但是跑fastlivo推荐的是opencv3.2.0,而且海康相机别人写的ros驱动(海康相机ros驱动)也是需要opencv3.2.0,最终还是选择安装多版本的openc…

全!新!LLM推理加速调研

本文主要内容 介绍一篇大模型推理加速综述论文,简单说明了LLM推理加速的基本内容。 介绍了推理阶段的prefilling(主要方向:计算优化)和decoding(主要方向:内存优化)差异。 prefilling优化方面…

大数据-206 数据挖掘 机器学习理论 - 多元线性回归 回归算法实现 算法评估指标

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Python+Appium+Pytest+Allure自动化测试框架-安装篇

文章目录 安装安装ADT安装NodeJs安装python安装appium安装Appium Server(可选)安装Appium-Inspector(可选)安装allure安装pytest PythonAppiumPytestAllure框架的安装 Appium是一个开源工具,是跨平台的,用于…

Nature Methods | 新型三维光场显微成像技术

欢迎关注GZH《光场视觉》 近日,中科院脑科学与智能技术卓越创新中心王凯研究组在《自然方法》(Nature Methods)上,在线发表了题为Volumetric Voltage Imaging of Neuronal Populations in Mouse Brain by Confocal Light Field M…

深度学习基础—循环神经网络的梯度消失与解决

引言 深度学习基础—循环神经网络(RNN)https://blog.csdn.net/sniper_fandc/article/details/143417972?fromshareblogdetail&sharetypeblogdetail&sharerId143417972&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link深…

基于向量检索的RAG大模型

一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如,二维空间中的向量可以表示为 (𝑥,𝑦) ,表示从原点 (0,0)到点 (𝑥,𝑦)的有向线段。 1.1、文本向量 1…

Bartender 5 for Mac 菜单栏管理软件 安装教程【保姆级教程,操作简单小白轻松上手使用】

Mac分享吧 文章目录 Bartender 5 for Mac 菜单栏管理软件 安装完成,软件打开效果一、Bartender 5 菜单栏管理软件 Mac电脑版——v5.2.3⚠️注意事项:1️⃣:下载软件2️⃣:安装软件3️⃣:打开软件,根据自己…

国产操作系统重新安装软件商店

国产操作系统类似于手机的“应用商店”,都会有一个“软件商店”,方便用户安装管理电脑的软件。这个软件商店不仅有各种软件,还有各类外设驱动和移动应用环境模拟功能。软件商店可以下载安装软件,还可以更新、卸载软件。 软件商店 …

FastAPI中如果async def和def 路由的区别

在python的整体生态中,虽然已经有很多库支持了异步调用,如可以使用httpx或者aiohttp代替requests库发起http请求,使用asyncio.sleep 代替time.sleep, 但是依然还有很多优秀的第三方库是不支持异步调用也没有可代替的库&#xff0c…

Pinctrl子系统中Pincontroller和client驱动程序的编写

往期内容 本专栏往期内容: Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析inctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体Pinctrl子系统中c…

【C++动态规划】2435. 矩阵中和能被 K 整除的路径|1951

本文涉及知识点 C动态规划 LeetCode2435. 矩阵中和能被 K 整除的路径 给你一个下标从 0 开始的 m x n 整数矩阵 grid 和一个整数 k 。你从起点 (0, 0) 出发,每一步只能往 下 或者往 右 ,你想要到达终点 (m - 1, n - 1) 。 请你返回路径和能被 k 整除的…

【QT】Qt对话框

个人主页~ Qt窗口属性~ Qt窗口 五、对话框2、Qt内置对话框(1)Message Box(2)QColorDialog(3)QFileDialog(4)QFontDialog(5)QInputDialog 五、对话框 2、Qt内…

视频推荐的算法(字节青训)

题目: 西瓜视频 正在开发一个新功能,旨在将访问量达到80百分位数以上的视频展示在首页的推荐列表中。实现一个程序,计算给定数据中的80百分位数。 例如:假设有一个包含从1到100的整数数组,80百分位数的值为80&#…

线程基础知识、jmm(Java内存模型)

目录 线程基础知识 并发与并行 进程和线程 线程优先级 创建线程的方式主要有三种 休眠 作出让步 join() 方法 线程协作注意什么 理解线程状态 选择合适的协作工具 共享资源的访问控制 避免竞争条件 创建线程几种方式 线程状态,状态之间切换 新建&…

2.数组越界访问如何调试HardFault错误

数组越界 在项目开发过程中,配置串口外设是一个常见的任务,但在实际操作中,我们可能会遇到一些预料之外的问题。例如,在调试过程中,我们发现单片机只接受了一次数据后便不再接收,这无疑是一个棘手的问题。…