计算机视觉基础(9)——相机标定与对极几何

news2025/2/2 12:29:36

前言

本节我们将学习相机标定对极几何两部分的内容。

在相机标定部分,我们将学习直接线性变换(Direct Linear Transform, DL,张正友标定法(Zhang’s Method)和 Perspective-n-Point (PnP) 这三种方法。

在对极几何部分,我们将了解极平面、基线、极点和极线等概念,以及相机相对位姿估计和对极约束。

一、相机标定

1.1  相机内外参

内参:描述相机本身的属性,同一相机,内参固定

外参:描述相机的姿态、位置,随时间变化

让我们来回顾一下相机的成像过程

1.2  相机标定概述

通过实验的方法计算和估计相机内外参数的过程称为相机标定(Camera Calibration)

相机标定的应用有:

• 矫正透镜畸变(内参标定)

• 建立相机成像几何模型,实现三维重构

相机标定的意义:

相机标定是非常关键的环节,标定结果的精度直接影响相机工作产生结果的准确性

做好相机标定是做好后续工作的前提

下面讲解三种相机标定的常见方法:

直接线性变换 (Direct Linear Transform, DLT)——同时估计内外参

张正友标定法 (Zhang’s Method)——估计内参

Perspective-n-Point (PnP)——估计外参

1.3  直接线性变换(DLT)

1.3.1  基本设定

已知:部分参考点在图像坐标系和世界坐标系下的坐标

• 求解:相机的内参矩阵𝑲、外参𝑹与𝒕

1.3.2  世界坐标系到图像坐标系的映射

1.3.3  关于矩阵M自由度的解释

1.3.4  DLT算法的基本思路和流程

1.3.5  小结

DLT方法通过计算未标定数据 (Uncalibrated Camera)的映射参数矩阵𝑀,来计算相机内外参

需要已知至少6个观测点的世界坐标和图像坐标

当已知观测点近似落在同一平面时,DLT求解不稳定

1.4  张正友标定法

【参考文献】

Zhang, A flexible new technique for camera calibration, IEEE TPAMI, 2000

1.4.1  标定工具:标定板

相机标定往往需要观测点在世界坐标系中的坐标,但是世界坐标不易测量

因此,引入二维标定板

由规则的黑白棋盘格构成,尺寸已知

网格点可以被角点检测算法自动、准确检测出

在标定板上建立世界坐标系,标定板位于Z=0平面,网格点作为观测点

二维标定板的优势如下:

  1. 观测点世界坐标易得
  2. Z=0降低了求解复杂度

1.4.2  从世界坐标系到图像坐标系的映射

• 用于描述两个平面之间的映射关系

• 共有3 × 3 = 9个元素,但由于齐次性,自由度为8

1.4.3  求解内参矩阵

1.4.4  张氏标定法基本思路和流程 

  1. 在标定板上建立世界坐标系,并以不同的位姿对其拍摄3张以上图像(可以晃动标定板或改变相机姿态)
  2. 利用角点检测算法对每张图中标定板上的网格点进行检测,每张图选取4个以上网格点作为标定点,并读取标定点的图像坐标和世界坐标
  3. 利用3张图像的观测点列出3个方程组,通过SVD分解计算3个单映矩阵 𝑯
  4. 利用三个单映矩阵 𝑯 列出6个关于矩阵 𝑩 的方程,并利用SVD分解求出 𝑩 
  5. 由于 𝑩 = 𝑲−⊺𝑲−𝟏 ,对求出的 𝑩 进行cholesky 矩阵分解:𝑩 = 𝑨𝑨⊺→𝑲 = 𝑨 −⊺

1.5  PnP

1.5.1  基本设定

已知:至少3个参考点在图像坐标系和世界坐标系下的坐标,相机的内参矩阵𝑲

求解:外参𝑹𝒕,即估计相机在世界坐标系下的位置

1.5.2  基本思路

二、对极几何

2.1  对极几何(Epipolar Geometry)简介

以上三种相机标定方法均需图像中观测点的世界坐标

相比于世界坐标,观测点的图像坐标更容易获取

给定同一场景的两张图像,能否仅根据对应点的图像坐标估计相机的相对姿态?

利用对极几何约束

2.2  对极几何的基本设定

𝑰𝟏, 𝑰𝟐是同一场景拍摄的两张图像,𝑶𝟏, 𝑶𝟐是拍摄时的相机中心

相机的相对运动/姿态为 𝑹, 𝒕

换言之,以相机𝑶𝟏的相机坐标系为世界坐标系,相机𝑶𝟐的外参是𝑹, 𝒕

空间中的点𝑷在两图中投影为𝒑𝟏, 𝒑𝟐

平面 𝑶𝟏𝑶𝟐𝑷 称为极平面 (Epipolar Plane),  𝑶𝟏𝑶𝟐 称为基线(Baseline),基线与 𝑰𝟏,𝑰𝟐 的交点 𝒆𝟏, 𝒆𝟐 称为极点 (Epipole),极平面与两张图像的交线 (𝒑𝟏𝒆𝟏, 𝒑𝟐𝒆𝟐称为极线 (Epipolar Line)

2.3  极线的物理意义

  1. 在仅已知投影点𝒑𝟏坐标的情况下,无法获得3D𝑷的具体未知,只能推断出点𝑷在投影射线𝑶𝟏𝒑𝟏
  2. 直线𝑶𝟏𝒑𝟏在图像𝑰𝟐上的投影就是极线𝒑𝟐𝒆𝟐
  3. 所以空间中投影在图像𝑰𝟏𝒑𝟏位置上的点在图像𝑰𝟐上对应点位于直线𝒑𝟐𝒆𝟐
  4. 换言之,图像𝑰𝟏上的一个点𝒑𝟏与图像𝑰𝟐上的一条直线𝒑𝟐𝒆𝟐对应

2.4  极线的解析式

【对极约束】

2.5  相机相对位姿估计与对极约束

  • 给定两张图8个以上对应点,可以通过8点法求解线性齐次系统求出基础矩阵,然后如果相机已经进行标定(即𝑲 已知)可以求出本质矩阵,并进一步求出两个相机的相对位姿𝑹𝒕
  • 由于本质矩阵的齐次性,无法只通过对应点估计出相对位姿𝑅𝑡的绝对尺度
  • 如果已知两个相机的相对位姿𝑹𝒕,可以求出基础矩阵𝑭,进而获得极线𝒑𝟐𝒆𝟐的位置。𝒑𝟏点在图像𝑰𝟐上的对应点搜索空间可以从整幅图像缩小到极线上

总结

本节我们学习了相机标定和对极几何的基本概念。重点需要掌握直接线性变换和张正友标定法的基本流程,知道这两种方法需要几个观测点和几张图像能完成标定。还需要知道对极几何中极平面、基线、极点和极线的基本概念并在图中对应。最后需要掌握极线解析式的推导过程,知道两个约束关系以及其代表的物理含义,知道相机的相对位姿估计。

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

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

相关文章

openbabel包的安装

今天在安装openbabel的时候,使用pip / 通过源码的方式进行安装openbabel,但是都并没有什么用,直接使用: conda install openbabel 就openbabel3.1.1成功了

最新完美版积分商城系统-奇偶商城系统源码+独立代理后台+附搭建教程

源码简介: 最新完美版积分商城系统,网购商城系统源码,是更新的奇偶商城系统源码,它拥有独立代理后台,而且内附搭建教程。 1.演示环境:Linux Centos7以上版本 宝塔 2.Nginx 1.18.0 PHP7.0 Mysql5.6 3…

Talk | UCSB博士生赵宣栋:生成式AI时代的水印技术

本期为TechBeat人工智能社区第546期线上Talk! 北京时间11月15日(周三)20:00,UC Santa Barbara博士生—赵宣栋的Talk已准时在TechBeat人工智能社区开播! 他与大家分享的主题是: “生成式AI时代的水印技术”,系统地介绍了他的团队在…

栈和队列的实现及相关面试题

栈和队列 栈概念与结构栈的功能栈的实现头文件Stack.h栈的结构体 Stack 源文件Stack.c初始化 void StackInit(Stack* ps)压栈 void StackPush(Stack* ps, STDataType data)出栈 void StackPop(Stack* ps)返回栈顶的值 STDataType StackTop(Stack* ps)返回栈中元素的个数 int St…

一个 不用充钱 也能让你变强的 VSCode 插件

今天给大家推荐一款不用充钱也能让你变强的 vscode 插件 通义灵码(TONGYI Lingma),可以称之为 copilot 的替代甜品 💪 什么是 通义灵码(TONGYI Lingma) 通义灵码(TONGYI Lingma)&am…

《向量数据库指南》——TruLens 用于语言模型应用跟踪和评估

TruLens 用于语言模型应用跟踪和评估 TruLens 是一个用于评估语言模型应用(如 RAG)的性能的开源库。通过 TruLens,我们还可以利用语言模型本身来评估输出、检索质量等。 构建语言模型应用时,多数人最关心的问题是 AI 幻觉(hallucination)。RAG 通过为语言模型提供检索上下文…

校招面试技巧:如何回答好一个问题

今天分享的主题是“如何回答好一个问题”。通过与同学们进行交流,发现一个比较普遍的现象,大家在回答问题时,时常会让面试官觉得自己在背八股,从而影响面试官的印象。那么我们应该怎么避免这种情况呢? 1.基础知识点 …

Redis - 订阅发布替换 Etcd 解决方案

为了减轻项目的中间件臃肿,由于我们项目本身就应用了 Redis,正好 Redis 的也具备订阅发布监听的特性,正好应对 Etcd 的功能,所以本次给大家讲解如何使用 Redis 消息订阅发布来替代 Etcd 的解决方案。接下来,我们先看 R…

解决Python Requests库中处理重定向时的多重Cookie问题

问题背景 在更新至f73bda06e9版本后,用户发现某些请求会引发CookieConflictError。具体来说,任何设置饼干且重定向到设置相同饼干的页面的请求都会引发CookieConflictError。 重现步骤 1、更新Requests至上述版本。 2、从中国以外的任何地方向baidu…

Java 设计模式——中介者模式

目录 1.概述2.结构3.案例实现3.1.抽象中介类3.2.抽象同事类3.3.具体同事类3.4.具体中介类3.5.测试 4.优缺点5.使用场景 1.概述 (1)一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会…

Redis最新2023年面试题高级面试题及附答案解析(2)【Redis最新2023年面试题高级面试题及附答案解析-第三十九刊】

文章目录 Redis最新2023年面试题高级面试题及附答案解析(2)01、Redis 集群方案应该怎么做?都有哪些方案?02、Redis 的内存用完了会发生什么?03、怎么测试 Redis 的连通性?04、Redis 集群会有写操作丢失吗?为什么&#…

C/C++ 实现获取硬盘序列号

获取硬盘的序列号、型号和固件版本号,此类功能通常用于做硬盘绑定或硬件验证操作,通过使用Windows API的DeviceIoControl函数与物理硬盘驱动程序进行通信,发送ATA命令来获取硬盘的信息。 以下是该程序的主要功能和流程: 定义常量…

青年作家考公引热议,体制内可能不是你想的那样

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 阿福 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 最近,班宇、陈春成、王苏辛三名青年作家出现在了武汉市文联所属事业单位专项招聘拟聘用人员名…

如何有效防止公司内部的信息泄露?

信息泄露对公司可能带来严重影响,因此采取一系列措施以确保信息安全至关重要。以下是一些建议: 部署综合的防泄密软件: 在公司内部,使用专业的防泄密软件如华企盾DSC系统,涵盖文件加密、U盘管控、桌面行为管理、日志审…

前端 react 面试题 (一)

文章目录 vue与react的区别。react的生命周期有哪些及它们的作用。setState是同步的还是异步的。如何更新数据后,立刻获取最新的dom或者更新后的数据。使用回调函数:在生命周期方法中处理: 函数式组件和class组件的区别。class组件函数式组件…

浏览器怎么更新?4个高效设置方法!

“我在使用浏览器时,有时候会提示说浏览器版本太低,需要更新后才能使用。有什么方法可以更新浏览器呢?快给我支支招吧!” 在快速发展的科技时代,浏览器更新是确保网络安全和性能优化的关键步骤。如果浏览器的版本太低&…

windows系统下修改nginx配置后reload重加载后不生效解决方案

windows系统下修改nginx配置后reload重加载后不生效解决方案 1、Nginx配置在重启(reload)后也不生效的原因2、通过服务启动的Nginx,通过stop命令是关闭不了的:(Access is denied)。 1、Nginx配置在重启(reload&#xf…

大语言模型量化方法对比:GPTQ、GGUF、AWQ

在过去的一年里,大型语言模型(llm)有了飞速的发展,在本文中,我们将探讨几种(量化)的方式,除此以外,还会介绍分片及不同的保存和压缩策略。 说明:每次加载LLM示例后,建议清除缓存,以…

前端跨界面之间的通信解决方案

主要是这两个方案,其他的,还有 SharedWorker 、IndexedDB、WebSocket、Service Worker 如果是,父子嵌套 iframe 还可以使用 window.parent.postMessage(“需要传递的参数”, ‘*’) 1、localStorage 核心点 同源,不能跨域(协议、端…

9.MyBatis-Plus

1、前期准备 a. 创建数据库 CREATE TABLE USER (id BIGINT(20)NOT NULL COMMENT 主键ID,NAME VARCHAR(30)NULL DEFAULT NULL COMMENT 姓名,age INT(11)NULL DEFAULT NULL COMMENT 年龄,email VARCHAR(50)NULL DEFAULT NULL COMMENT 邮箱,PRIMARY KEY (id) );INSERT INTO user…