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

前言

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

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

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

赢麻了……腾讯1面核心9问,小伙伴过了提42W offer

说在前面 在40岁老架构师尼恩的(50)读者社群中,经常有小伙伴,需要面试腾讯、美团、京东、阿里、 百度、头条等大厂。 下面是一个小伙伴成功拿到通过了腾讯面试,并且最终拿到offer,一毕业就年薪42W&#x…

rabbit的扇出模式(fanout发布订阅)的生产者与消费者使用案例

扇出模式 fanout 发布订阅模式 生产者 生产者发送消息到交换机(logs),控制台输入消息作为生产者的消息发送 package com.esint.rabbitmq.work03;import com.esint.rabbitmq.RabbitMQUtils; import com.rabbitmq.client.Channel;import java.util.Scanne…

csapp第三章读书笔记

caspp chapter 3 寄存器 operand form data movement instructions mov 指令例子: 0扩展 movz 指令: Zero-extending data movement instructions是一种计算机指令类型,涉及将数据从一个位置移动到另一个位置,同时通过在最重要的一端添加零位来将数据扩…

精美可视化:Python自动化生成漂亮的测试报告

“ 运用Python的Unittest、数据驱动测试(DDT)、Excel、Jinja2和HTML技术,构建一个能够自动生成精美可视化测试报告的自动化测试框架” 思路流程 封装读取数据,让所有数据都能够再excel中填写,不再填写任何一行逻辑代码…

【前端】使用json-server报错

当我们使用json-server模仿后端接口时需要运行json-server --watch index.json这个命令生成增删改查接口但是可能会报这个错误,如图 这时我们运行 npm i json-server -g命令即可,然后再重新运行json-server --watch index.json就行了

编码器脉冲信号测量2路DI高速计数器PNP/NPN转RS-485数据采集模块 解码转换成标准Modbus RTU协议 YL150-485

特点: ● 编码器解码转换成标准Modbus RTU协议 ● 可用作编码器计数器或者转速测量 ● 支持编码器计数,可识别正反转 ● 也可以设置作为2路独立DI高速计数器 ● 计数值支持断电自动保存 ● DI输入支持PNP和NPN输入 ● 继电器和机械开关输入时可以…

C++入门(2)—函数重载、引用

目录 一、函数重载 1、参数类型不同 2、参数个数不同 3、参数顺序不同 4、 链接中如何区分函数重载 二、引用 1、规则 2、特征 3、使用场景 做参数 做返回值 4、常引用 5、传值、传引用效率比较 6、引用和指针的区别 接上一小节C入门(1)—命名空间、缺省参数 一…

解决requests库中的期限处理问题:从404到异常再到修复

在使用requests库进行网络请求时,用户可能会遇到一个奇怪的问题:当没有指定请求的期限时,他们得到的响应是404错误,但是一旦指定了请求的期限,就立刻遇到了一个异常,声称远程主机强制关闭了连接。这个问题让…

pytorch文本分类(一):文本预处理

pytorch文本分类(一):文本预处理 本文为自己在鲸训练营答题总结,作业练习都在和鲸社区数据分析协作平台 ModelWhale 上。 🚩学习任务原链接在这里 相关数据链接:https://pan.baidu.com/s/1iwE3LdRv3uAkGGI…

Spring Boot使用EhCache完成一个缓存集群

在上一篇在SpringBoot中使用EhCache缓存,我们完成了在Spring Boot中完成了对EhCaChe的使用,这篇,我们将对EhCache的进一步了解,也就是搭建一个EhCache的缓存集群。 集群 在搭建一个EhCache的时候,我们需要先了解&…

【linux】nmon 工具使用

nmon 介绍 nmon是奈杰尔的性能监视器的缩写,适用于POWER、x86、x86_64、Mainframe和现在的ARM(Raspberry Pi)上的Linux。同样适用于nmon for AIX的工具(与IBM的AIX一起提供)。njmon与之类似,但将数据保存为…

分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测

分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测 目录 分类预测 | Matlab实现PSO-GRU-Attention粒子群算法优化门控循环单元融合注意力机制多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO…

前端转行可以做什么

前端开发者通常拥有很好的技术背景和解决问题的能力,所以有很多可能的职业选择。以下是一些可能的选择: 全栈开发:这是一个非常热门的职位,需要能够处理前端和后端工作。使用多种编程语言和技术来构建从数据库到用户界面的整个应…

Android14 Beta 5

Beta 5,这是 Android 14 Beta 计划中的最后一次计划更新。这是确保您的应用程序已准备就绪并在非 Beta 用户开始获取 Android 14 之前提供反馈的最后机会。为了使您能够在跨多种外形尺寸的设备上测试您的应用程序,Beta 5 适用于 Pixel Tablet 和 Pixel F…

智能制造中后期:深挖成本、提升效率的关键——标准工时

在智能制造的背景下,企业面临着持续的成本压力和效率提升的需求。特别是在智能制造的中后期,要想进一步深挖成本、提升效率,必须考虑标准工时这一重要因素。标准工时作为一种基础而富有价值的管理工具,对于建立领先的标准工时系统…

使用tesseract-ocr实现图片中的中英文字符提取

1 tesseract-ocr介绍 OCR(Optical Character Recognition):光学字符识别,是指对图片文件中的文字进行分析识别,获取的过程。 Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业&…

【2023云栖】刘一鸣:Data+AI时代大数据平台建设的思考与发布

简介: 本文根据2023云栖大会演讲实录整理而成,演讲信息如下: 演讲人:刘一鸣 | 阿里云自研大数据产品负责人 演讲主题:DataAI时代大数据平台应该如何建设 今天分享的主题是DataAI时代大数据平台应该如何建设&#xf…

本地mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

背景介绍: MySQL版本5.7,系统Win7,启动mysql服务时提示如下 解决方案 【会删除库中数据及mysql注册信息】: 1、删除原服务MySQL57 C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld --remove MySQL572、清空data 清空…

HackTheBox-Starting Point--Tier 2---Archetype

文章目录 一 Archetype测试过程1.1 打点1.2 权限获取1.3 权限提升二 题目 一 Archetype测试过程 1.1 打点 1.端口扫描 nmap -sV -sC 10.129.192.2522.枚举SMB共享 smbclient -N -L \\\\10.129.192.252\\查看backups,并发现 prod.dtsConfig 文件,在 pr…

android初集成flutter,遇到的问题

环境 studio版本:2022.1.1 flutter版本:2.8.0 电脑:mac flutter项目总是报错,编译不过 以 Resources Root 加载 记得设置dart:主工程和flutter项目都需要设置,否则不出现手机链接 下面这个样子就是好了&…