相机参数的意义

news2024/11/23 21:46:40

相机标定的意义:

  • 相机标定:使用带有pattern的标定板来求解相机参数的过程;
  • 用一个简化的数学模型来代表复杂的三维到二维的成像过程;
  • 相机参数包括:相机内参(焦距等),外参(旋转矩阵等),镜头畸变参数
  • 用途:畸变矫正,双目视觉,结构光,三维重建,SLAM等

  •  世界坐标系(World Coords):点在真实世界中的位置,描述相机的位置,单位为m;
  • 相机坐标系(Camera Coords):以相机sensor中心为原点,建立相机坐标系,单位m;
  • 图像物理坐标系:经过小孔成像后得到的二维坐标系,单位是mm,坐标原点是图中的点c;
  • 像素坐标系(Pixcel Coords):成像点在相机sensor上像素的行数和列数,不带有任何的物理单位
  • 主点:光轴与图像平面的交点为主点,图中的点p。

1、世界坐标系到相机坐标系的转换

点p在不同坐标系的表示:

  • 世界坐标系:P(x_{w},y_{w},z_{w});
  • 相机坐标系:P(x_{c},y_{c},z_{c})

坐标系之间的转换:

  • R:相机坐标系对于世界坐标系的旋转矩阵;
  • T:相机坐标系对于世界坐标系的平邑矩阵。

转换关系:

\begin{bmatrix} x_{c}\\ y_{c}\\ z_{c}\\ 1 \end{bmatrix}=\begin{bmatrix} R_{3\times 3} & T_{3\times 1} \\ 0& 1 \end{bmatrix}\cdot \begin{bmatrix} x_{w}\\ y_{w}\\ z_{w}\\ 1 \end{bmatrix}

2、相机坐标系到图像坐标系的转换

  • 假设点p(x_{c},y_{c},z_{c})在图像坐标系的成像点是p{}'(x,y);
  • 基于小孔成像的原理;
  • 空间中一点成像在平面中,与XOY平面平行,距离原点f的平面;
  • 取一个截面ZOY,可以得到上图,根据相似三角形关系可以计算得到:

\frac{x}{x_{c}}=\frac{y}{y_{c}}=\frac{f}{z_{c}}

  • 化简后可以得到:

x=\frac{f}{z_{c}}\cdot x_{c}

y=\frac{f}{z_{c}}\cdot y_{c}

  • 写为矩阵可得:

z_{c}\cdot \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}=\begin{bmatrix} f & 0 & 0&0 \\ 0 & f & 0 & 0\\ 0 & 0& 1 & 0 \end{bmatrix}\cdot \begin{bmatrix} x_{c}\\ y_{c}\\ z_{c}\\ 1 \end{bmatrix}

3、图像坐标系到像素坐标系的转换

坐标系的转换:

  • 图像坐标系的点p{}'(x,y)到像素坐标系的(u,v)的转换;
  • 图像坐标系的原点在sensor的中央,单位是mm;
  • 像素坐标系的原点在sensor的左上角,单位是Pixel,也就是像素的行数和列数;
  • 转换关系:

u=\frac{x}{dx}+ u_{0}

v=\frac{y}{dy}+ v_{0}

  • 矩阵表示:

z_{c}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}=\begin{bmatrix} f & 0 & 0&0 \\ 0 & f & 0 & 0\\ 0 & 0& 1 & 0 \end{bmatrix}\cdot \begin{bmatrix} x_{c}\\ y_{c}\\ z_{c}\\ 1 \end{bmatrix}

  • dx,dy:sensor的固有参数,代表每个像素的毫米数;
  • u_{0},v_{0}:代表图像坐标系原点(光心)相对像素坐标系原点的偏移量

综上:相机坐标系到像素坐标系的转换公式:

  • 相机坐标系和世界坐标系重合,不考虑世界坐标系的旋转平移:

u=f_{x} \ast \frac{x_{c}}{z_{c}}+ u_{0}

v=f_{y} \ast \frac{y_{c}}{z_{c}}+ v_{0}

  • 上式中:f_{x}=\frac{f}{dx}f_{y}=\frac{f}{dy}焦距除以单个像素的大小
  • 相机的标定过程中,f,dx,dy不能标定得到,f{_{x}},f_{y}可以通过标定得到

4、完整坐标系转换

​​​​​​​ 世界坐标系到像素坐标系转换:

z_{c}\cdot \begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=\begin{bmatrix} \frac{1}{dx} & 0 & u_{0}\\ 0 & \frac{1}{dy} & v_{0} \\ 0 & 0& 1 \end{bmatrix}\cdot \begin{bmatrix} f & 0 & 0&0 \\ 0 & f & 0 & 0\\ 0 & 0& 1 & 0 \end{bmatrix}\cdot \begin{bmatrix} R_{3\times 3} & T_{3\times 1} \\ 0& 1 \end{bmatrix}\cdot \begin{bmatrix} x_{w}\\ y_{w}\\ z_{w}\\ 1 \end{bmatrix}=M_{1} M_{2} \begin{bmatrix} x_{w}\\ y_{w}\\ z_{w}\\ 1 \end{bmatrix}

相机内参:相机的焦距,像素坐标系的相对偏移量

M_{1}=\begin{bmatrix} f_{x} & 0 & u_{0}\\ 0 & f_{y} & v_{0} \\ 0 & 0& 1 \end{bmatrix}

相机外参:世界坐标系到相机坐标系的转换关系,相机再世界坐标系的位置矩阵

M_{2}=\begin{bmatrix} R_{3\times 3} & T_{3\times 1} \end{bmatrix}=\begin{bmatrix} r_{11} & r_{12} & r_{13} & t_{1}\\ r_{21} & r_{22} & r_{23} & t_{2}\\ r_{31}& r_{32} & r_{33} & t_{3} \end{bmatrix}

 5、镜头畸变

 镜头畸变:

经过透视后的实际成像和理想成像之间的误差即为镜头畸变

主要分为径向畸变和切向畸变

径向畸变

  • 增加的透镜形状造成,沿透镜的径向分布
  • 分为桶形畸变和枕形畸变
  • 远离透镜中心的地方比较靠近中心的地方更加弯曲
  • 光心处的畸变为0,距离光心越远畸变越大
  • 廉价相机,畸变更严重
  • 径向畸变的数学多项式描述:

\left\{\begin{matrix} x_{distorted}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})\\ y_{distorted}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6}) \end{matrix}\right.

  •  (x,y)是没有畸变的像素点,(x_{distorted},y_{distorted})畸变后的位置
  • k_{1},k_{2},k_{3}:径向畸变系数,摄像头的内参,一般使用前两项,鱼眼相机会使用第三项。

切向畸变:

  • 相机sensor和镜头不平行导致
  • 切向畸变的数学表达式:

\left\{\begin{matrix} x_{distorted}=x+[2p_{1}xy+p_{2}(r^{2}+2x^{2})]\\ y_{distorted}=y+[2p_{2}xy+p_{1}(r^{2}+2y^{2})] \end{matrix}\right.

  • 两个畸变合并:

 \left\{\begin{matrix} x_{distorted}=x(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+[2p_{1}xy+p_{2}(r^{2}+2x^{2})]\\ y_{distorted}=y(1+k_{1}r^{2}+k_{2}r^{4}+k_{3}r^{6})+[2p_{2}xy+p_{1}(r^{2}+2y^{2})] \end{matrix}\right.

6、平面的单应性关系:

  • 定义:从一个平面到另一个平面的投影映射
  • 世界坐标系的物体平面到成像平面之间的映射,即两个平面之间的单应性关系
  • 模型平面:标定使用的标定板平面
  • 模型平面上的一点:Q=[X,Y,Z,1]^{T}(向量增广为了方便计算)
  • 映射到成像平面上的点:q=[x,y,1]^T
  • 它们两者之间的单应性关系:q=x\cdot H\cdot Q
  • H:单应性矩阵,单应性矩阵有8个自由度,8个自由度参数求解
  • 四个点可以得到8个方程,所以至少四个点就可以求解单应性关系
  • Opencv接口:fingHomography
  • 求解方法:1.重投影误差最小化;2.RANSAC

 

基本变量:

  • 二维点:m=[u,v]^T,对应的三维空间中的点M=[X,Y,Z]^T
  • 增加1得到增广向量:\widehat{m}=[u,v,1]^T,\widehat{M}=[X,Y,Z,1]^T
  • 根据前面的模型,三位点到投影点的关系可以描述为:s\widehat{m}=A[R t]\widehat{M}
  • s:转换尺度因子,[Rt]:外参,旋转平移矩阵
  • A:外参,可以表示为:

A=\begin{bmatrix} \alpha & \gamma & u_{0}\\ 0 & \beta & v_{0}\\ 0& 0 & 1 \end{bmatrix}

  • (u_{0},v_{0}):代表图像坐标系元代你(光心)相对像素坐标系原点的偏移量
  • \alpha ,\beta:焦距除以单个像素的大小,在两个轴的比例因子
  • \gamma:两个坐标轴的倾斜角的参数
  • 前面没有提到,因为我们认为两个坐标轴是垂直的,世界可能不垂直
  • 相机标定
  • 我么可以假设,标定板平面在世界坐标系的z坐标是0,R的第i列矩阵为r_{i},那么可以得到:

s\begin{bmatrix} u\\ v\\ 1 \end{bmatrix}=A\begin{bmatrix} r_{1} & r_{2} & r_{3} &t \end{bmatrix}\begin{bmatrix} X\\ Y\\ 0\\ 1 \end{bmatrix}=A\begin{bmatrix} r_{1} & r_{2} & t \end{bmatrix}\begin{bmatrix} X\\ Y\\ 1 \end{bmatrix}

  • 标定平面和成像平面的单应性关系:s\widehat{m}=H\widehat{M} withH=A\begin{bmatrix} r_{1} & r_{2} & t \end{bmatrix}
  • 如前所述,可以通过两个平面上的多个点求解单应性矩阵H
  • 假设H=[h_1,h_2,h_3]=> \begin{bmatrix} h_1 & h_2 & h_3 \end{bmatrix}=\lambda A\begin{bmatrix} r_1 & r_2 & t \end{bmatrix}
  • 根据上式可以得到:

h_1=\lambda \cdot A\cdot r_1\cdot h_2=\lambda \cdot A\cdot r_2\cdot h_3=\lambda \cdot A\cdot t

r_1=\frac{1}{\lambda }\cdot A^{-1}\cdot h_1

r_2=\frac{1}{\lambda }\cdot A^{-1}\cdot h_2

t=\frac{1}{\lambda }\cdot A^{-1}\cdot h_3

  • 相机成像的两个约束条件:
  1. 旋转向量r_1,r_2分别代表绕x,y轴的旋转量,所以这两个向量是正交的,故:

h_{1}^{T}A^{-T}A^{-1}h_2=0

      2. 旋转向量是单位向量

 r_{1}^{T}\cdot r_{1}=r_{2}^{T}\cdot r_{2}^{\left \| r_{1} \right \|=\left \| r_{2} \right \|}

h_{1}^{T}A^{-T}A^{-1}h_1=h_{2}^{T}A^{-T}A^{-1}h_2​​​​​​​

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

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

相关文章

⑤-1 学习PID--什么是PID

​ PID 算法可以用于温度控制、水位控制、飞行姿态控制等领域。后面我们通过PID 控制电机进行说明。 自动控制系统 在直流有刷电机的基础驱动中,如果电机负载不变,我们只要设置固定的占空比(电压),电机的速度就会稳定在…

Solana 上创建自己的 SLPToken:简明指南

Solana 定义 Solana 是由 Solana Labs 创建的区块链平台,旨在提供高吞吐量和低延迟的去中心化应用(DApps)开发环境。它采用一系列创新技术,如 PoH(Proof of History)共识机制和 Tower BFT(BFT …

好用的企业知识管理SaaS产品推荐来啦,小白必看!

知识管理在企业运营中扮演了重要角色,特别是在现代化办公环境下,一个高效卓越的知识管理系统是企业提高生产力、促进创新和保持竞争力的关键。SaaS(Software as a Service) 我们通常称之为“软件即服务”,为企业提供了灵活、高效和划算的知识…

每日一题(力扣)---插入区间

官方网址:. - 力扣(LeetCode) 题目: 给你一个 无重叠的 ,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals按照 st…

开源免费AI引擎:智能合同审查技术的应用与优势

随着数字化转型的加速,合同作为商业活动中的重要法律文件,其审查和管理变得越来越重要。传统的合同审查方式耗时且容易出错,而智能AI合同审查技术的引入,为这一领域带来了革命性的变化。本文将探讨智能AI合同审查技术的应用和优势…

【Delphi 爬虫库 1】GET和POST方法

文章目录 1.最简单的Get方法实现2.可自定义请求头、自定义Cookie的Get方法实现3.提取响应协议头4.实现Post请求完成单词翻译 爬虫的基本原理是根据需求获取信息并返回。就像当我们感到饥饿时,可以选择自己烹饪食物、外出就餐,或者订外卖一样。在编程中&a…

d盘无法格式化说另一个正在使用怎么办

在日常生活和工作中,我们经常会遇到需要对电脑硬盘进行格式化的情况。然而,有时在尝试格式化D盘时,会遇到一个常见的错误提示:“另一个程序正在使用此文件,因此无法进行操作”。这个提示可能会让许多人感到困惑&#x…

煤化工废水末端杂盐母液主流处置技术,你一定要了解么!

煤化工废水零排放的意义 随着能源结构的转型升级,现代煤化工产业也将有力推动绿色可再生市场的健康发展。“十一五”时期我国先后建成多个现代煤化工首批示范工程,基本实现了工艺流程贯通、产出合格产品的目标,但在水系统优化、废水处理等方…

水箱缺水保护使用元件

水箱缺水保护一般使用哪种液位传感器?液位传感器分为接触式和非接触式,能点科技的光电接触式需要在水箱上开孔安装,非接触式分为两种,一种是光电分离式,一种是电容式传感器。 光电一体式液位传感器内部器件都是树脂胶…

IPv4头部

IPv4头部 互联网协议(IP)的核心部分,用于在互联网上传输数据包。IPv4头部包含多个字段,这些字段对于正确地路由和传递数据至目的地至关重要。IPv4头部通常是20字节长,但可以因选项字段的存在而更长。以下是IPv4头部各个…

【Java探索之旅】方法的概念 定义 执行流程 实参与形参的交互

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、方法的概念及定义1.1 方法的概念1.2 方法的定义 二、方法的调用执行过程2.1 执行流…

【matlab非线性规划工具箱安装1 SeDuMi 1.3工具箱】

【matlab非线性规划工具箱安装1 SeDuMi 1.3工具箱】 该博客是非线性手眼标定代码中所依赖的matlab工具箱的安装内容,除了进行手眼标定以外,该工具箱还可以用于其他的非线性规划问题 手眼标定传送门: 【从零开始进行高精度手眼标定 eye in …

【Unity】常见性能优化

1 前言 本文将介绍下常用的Unity自带的常用优化工具,并介绍部分常用优化方法。都是比较基础的内容。 2 界面 2.1 Statistics窗口 可以简单查看Unity运行时的统计数据,当前一帧的性能数据。 2.1.1 Audio 音频相关内容。 Level:音量大小&a…

学习javaEE的日子 Day36 字符流

Day36 1.字符流 应用场景:操作纯文本数据 注意:字符流 字节流编译器 编译器:可以识别中文字符和非中文字符,非中文字符获取1个字节(一个字节一个字符),编译器会根据编码格式获取中文字符对应的…

Python测试框架 —— pytest与unittest的区别!

前言 在Python中进行测试时,两个最流行的测试框架是unittest和pytest。虽然它们的目标相同,但它们之间存在许多不同之处。 本文将详细比较它们在用例编写规则、前置和后置方法、参数化、断言功能、用例执行和报告生成等方面的差异,并适当补…

分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据…

本地知识库搭建教程来了,跟着做就行

你是不是常常因为找不到几个月前那个重要的工作笔记而头疼?或者是厌倦了反复在互联网的海洋中搜寻相同的信息?一个本地的知识库可能是你需要的解决方案。今天,我就要为你分享如何简单地搭建起自己的知识库,让你的信息更有组织、更…

别等Sora了!字节跳动旗下国产AI工具Dreamina,AI视频生成虽不完美,但够惊艳!

别等 Sora 了,试试字节跳动的 Dreamina!Dreamina 是剪映旗下的一个 AI 创作平台,目前支持「文生图」、「智能画布」和「视频生成」功能。 Dreamina 官网:https://dreamina.jianying.com/ai-tool/home 之前对 Dreamina 的「文生图…

大数据------JavaWeb------JDBC(完整知识点汇总)

JDBC 定义 全称为Java数据库连接(Java DataBase Connectivity):是使用java语句来操作所有关系型数据库的一套API JDBC本质 它是官方定义的一套操作所有关系型数据库的规则(即接口),各个数据库厂商会去实现…

socat神器解密:网络数据传输的利器

欢迎来到我的博客,代码的世界里,每一行都是一个故事 socat神器解密:网络数据传输的利器 前言socat简介基本用法常见功能常见功能:1. 端口转发和数据重定向:2. 加密和解密数据流: 高级功能1. 代理服务器和隧…