当前位置: 首页 > news >正文

《视觉SLAM十四讲》-- 相机与图像

04 相机与图像

4.1 相机模型

4.1.1 针孔相机模型

针孔模型描述了一束光线通过针孔后,在针孔背面投影成像的关系(类似小孔成像原理)。

在这里插入图片描述

根据相似三角关系

Z f = − X X ′ = − Y Y ′ (3-1) \frac{Z}{f}=-\frac{X}{X^{\prime}}=-\frac{Y}{Y^{\prime}} \tag{3-1} fZ=XX=YY(3-1)

其中,负号表示成的像是倒立的。

但实际相机得到的图像并不是倒像,我们等价地将成像平面对称地放到相机前方,这样就可以把负号去掉,
在这里插入图片描述

Z f = X X ′ = Y Y ′ (3-2) \frac{Z}{f}=\frac{X}{X^{\prime}}=\frac{Y}{Y^{\prime}} \tag{3-2} fZ=XX=YY(3-2)

整理得

{ X ′ = f X Z Y ′ = f Y Z (3-3) \left\{\begin{array}{l} {X^{\prime}}=f\frac{X}{Z} \\ \\ {Y^{\prime}}=f\frac{Y}{Z} \end{array}\right. \tag{3-3} X=fZXY=fZY(3-3)

像素坐标与成像平面之间,相差了一个缩放和一个原点的平移。假设像素坐标在 u u u 轴上缩放了 α \alpha α 倍, 在 v v v 轴上缩放了 β \beta β 倍,同时,原点平移了 [ c x , c y ] T [c_x, c_y]^T [cx,cy]T。那么, P ′ P' P 在成像平面坐标系和像素坐标系之间的关系为:

在这里插入图片描述

{ u = α X ′ + c x v = β Y ′ + c y (3-4) \left\{\begin{array}{l} u=\alpha X^{\prime}+c_{x} \\ v=\beta Y^{\prime}+c_{y} \end{array}\right. \tag{3-4} {u=αX+cxv=βY+cy(3-4)

代入式(3-3),得

{ u = α f X Z + c x v = β f Y Z + c y (3-5) \left\{\begin{array}{l} u=\alpha f \frac{X}{Z}+c_{x} \\ \\ v=\beta f \frac{Y}{Z}+c_{y} \end{array}\right. \tag{3-5} u=αfZX+cxv=βfZY+cy(3-5)
α f = f x , \alpha f=f_x, αf=fx, β f = f y \beta f=f_y βf=fy

{ u = f x X Z + c x v = f y Y Z + c y (3-6) \left\{\begin{array}{l} u=f_{x} \frac{X}{Z}+c_{x} \\ \\ v=f_{y} \frac{Y}{Z}+c_{y} \end{array}\right. \tag{3-6} u=fxZX+cxv=fyZY+cy(3-6)

写成矩阵形式

[ u v 1 ] = 1 Z [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = def  1 Z K P (3-7) \left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]=\frac{1}{Z}\left[\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \stackrel{\text { def }}{=} \frac{1}{Z} \boldsymbol{K} \boldsymbol{P} \tag{3-7} uv1 =Z1 fx000fy0cxcy1 XYZ = def Z1KP(3-7)

Z Z Z 移到左边

Z [ u v 1 ] = [ f x 0 c x 0 f y c y 0 0 1 ] [ X Y Z ] = def  K P (3-8) Z\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]=\left[\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right]\left[\begin{array}{c} X \\ Y \\ Z \end{array}\right] \stackrel{\text { def }}{=} \boldsymbol{K} \boldsymbol{P} \tag{3-8} Z uv1 = fx000fy0cxcy1 XYZ = def KP(3-8)

中间的矩阵称为相机内参数,一般在相机出厂后便已确定。

由于相机在运动,点 P P P 的相机坐标应由他的世界坐标( P w P_w Pw)根据相机当前位姿变换得到

Z P u v = Z [ u v 1 ] = K P = K ( R P w + t ) = K T P w (3-9) Z \boldsymbol{P}_{u v}=Z\left[\begin{array}{l} u \\ v \\ 1 \end{array}\right]=\boldsymbol{K} \boldsymbol{P}=\boldsymbol{K}\left(\boldsymbol{R} \boldsymbol{P}_{\mathrm{w}}+\boldsymbol{t}\right)=\boldsymbol{K} \boldsymbol{T} \boldsymbol{P}_{\mathrm{w}} \tag{3-9} ZPuv=Z uv1 =KP=K(RPw+t)=KTPw(3-9)
其中, R \boldsymbol{R} R t \boldsymbol{t} t外参

上式描述了从世界坐标系相机坐标系再到像素坐标系的过程。

将世界坐标转换到相机坐标后,再除掉最后一维的数值,这相当于把最后一维作归一化处理,得到它在归一化平面上的投影:

( R P w + t ) = [ X , Y , Z ] T ⏟ 相机坐标  → [ X / Z , Y / Z , 1 ] T ⏟ 归一化坐标  \left(\boldsymbol{R} \boldsymbol{P}_{\mathrm{w}}+\boldsymbol{t}\right)=\underbrace{[X, Y, Z]^{\mathrm{T}}}_{\text {相机坐标 }} \rightarrow \underbrace{[X / Z, Y / Z, 1]^{\mathrm{T}}}_{\text {归一化坐标 }} (RPw+t)=相机坐标  [X,Y,Z]T归一化坐标  [X/Z,Y/Z,1]T

可知,点的深度信息在投影过程中丢失了(变成二维),所以单目视觉无法得到像素点深度值。

4.1.2 畸变模型

(1)由透镜形状引起的畸变称为径向畸变,一般有桶形畸变枕形畸变两类。

在这里插入图片描述

对于径向畸变,离中心距离越远,畸变越严重;穿过图像中心和光轴有交点的直线形状不变。

(2)在相机组装过程中,透镜和成像平面无法完全平行,会产生切向畸变

(3)下面用数学模型进行描述:假设归一化平面上存在一点 P P P,坐标为 [ x , y ] T [x, y]^T [x,y]T,极坐标为 [ r , θ ] T [r, \theta]^T [r,θ]T,那么,正常归一化平面坐标和畸变后的坐标之间的关系为

{ x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) (3-10) \left\{\begin{array}{l} x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)\\ \\ y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6) \end{array}\right. \tag{3-10} xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)(3-10)

类似的,切向畸变数学模型为

{ x distorted  = x + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y distorted  = y + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y (3-11) \left\{\begin{array}{l} \begin{aligned} &x_{\text {distorted }}=x+2 p_{1} x y+p_{2}\left(r^{2}+2 x^{2}\right) \\ &y_{\text {distorted }}=y+p_{1}\left(r^{2}+2 y^{2}\right)+2 p_{2} x y \end{aligned} \end{array}\right. \tag{3-11} {xdistorted =x+2p1xy+p2(r2+2x2)ydistorted =y+p1(r2+2y2)+2p2xy(3-11)

(4)去畸变的过程:

  • 将三维空间上的点投影到归一化平面,得到坐标 [ x , y ] T [x, y]^T [x,y]T

  • 计算径向畸变和切向畸变

{ x d i s t o r t e d = x ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + 2 p 1 x y + p 2 ( r 2 + 2 x 2 ) y d i s t o r t e d = y ( 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ) + p 1 ( r 2 + 2 y 2 ) + 2 p 2 x y (3-12) \left\{\begin{array}{l} x_{distorted}=x(1+k_1r^2+k_2r^4+k_3r^6)+2 p_{1} x y+p_{2}\left(r^{2}+2 x^{2}\right)\\ \\ y_{distorted}=y(1+k_1r^2+k_2r^4+k_3r^6)+p_{1}\left(r^{2}+2 y^{2}\right)+2 p_{2} x y \end{array}\right. \tag{3-12} xdistorted=x(1+k1r2+k2r4+k3r6)+2p1xy+p2(r2+2x2)ydistorted=y(1+k1r2+k2r4+k3r6)+p1(r2+2y2)+2p2xy(3-12)

  • 通过内参矩阵将相机坐标投影到像素平面。
    在这里插入图片描述

(5)单目相机的成像过程

  • 世界坐标系下一点 P w P_w Pw

  • 经旋转平移得到相机坐标 P ~ c = R P w + t \tilde{P}_{\mathrm{c}}=\boldsymbol{RP_w+t} P~c=RPw+t

  • 将坐标的三个分量分别除以 Z Z Z,得到归一化坐标 P c = [ X / Z , Y / Z , 1 ] T P_c=[X/Z, Y/Z, 1]^T Pc=[X/Z,Y/Z,1]T

  • 计算发生畸变后的坐标;

  • 经过内参矩阵,得到像素坐标 P u v = K P c \boldsymbol{P}_{uv}=\boldsymbol{KP_c} Puv=KPc

4.1.3 双目相机模型

在这里插入图片描述

其中, O L O_L OL O R O_R OR为左右相机光圈中心,两者之间的距离称为基线 f f f 为焦距; u R u_R uR 为负数,需加负号。

根据几何关系,有

z − f z = b − ( u L − u R ) b = b − u L + u R b (3-13) \frac {z-f}{z}=\frac {b-(u_L-u_R)} {b}=\frac {b-u_L+u_R} {b} \tag{3-13} zzf=bb(uLuR)=bbuL+uR(3-13)

定义 d = u L − u R d=u_L-u_R d=uLuR,称为视差, 整理上式得,

z = f b d (3-14) z=\frac {fb}{d} \tag{3-14} z=dfb(3-14)

可见,视差越大,距离越近。基线 b b b 越大,可测量的距离就越大;反之,小型双目器件只能测量很近的距离。

4.1.4 RGB-D 相机模型

RGB-D 相机可以主动测量每个像素的深度,按原理可分为两类:

  • 通过红外结构光原理测量像素距离。

  • 通过飞行时间原理测量像素距离。

在这里插入图片描述

RGB-D 相机容易受到日光或其他传感器的干扰,因此不能在室外使用。

4.2 图像

在这里插入图片描述

相关文章:

《视觉SLAM十四讲》-- 相机与图像

04 相机与图像 4.1 相机模型 4.1.1 针孔相机模型 针孔模型描述了一束光线通过针孔后,在针孔背面投影成像的关系(类似小孔成像原理)。 根据相似三角关系 Z f − X X ′ − Y Y ′ (3-1) \frac{Z}{f}-\frac{X}{X^{\prime}}-\frac{Y}{Y^{\p…...

欧科云链:成本与规模之辨——合规科技如何赋能香港Web3生态?

作为国际金融中心,香港近两年来在虚拟资产及Web3领域频频发力。秉持着“稳步创新”的基本逻辑,香港在虚拟资产与Web3领域已建立一定优势,但近期各类风险事件的发生则让业界的关注焦点再次转向“安全”与“合规”。 在香港FinTech Week前夕&a…...

【文献分享】NASA JPL团队CoSTAR一大力作:直接激光雷达里程计:利用密集点云快速定位

论文题目:Direct LiDAR Odometry: Fast Localization With Dense Point Clouds 中文题目:直接激光雷达里程计:利用密集点云快速定位 作者:Kenny Chen, Brett T.Lopez, Ali-akbar Agha-mohammadi 论文链接:https://arxiv.org/pd…...

SPASS-探索性分析

探索性分析的意义 探索性分析更加强大,它是一种在对资料的性质、分布特点等完全不清楚的情况下,对变量进行更深入研究的描述性统计方法。在进行统计分析前,通常需要寻求和确定适合所研究的问题的统计方法, SPSS提供的探索性分析是解决此类问题的有效办法 探索性分析提供了很…...

电子印章怎么弄?三步教你电子印章在线生成免费教程!

在这个数字化快速发展的时代,电子印章已经成为日常商务活动中不可或缺的一部分。相对于传统的实体印章,电子印章具有更高的便捷性和安全性,更是无纸化办公中必不可少的一环。那么,电子印章怎么弄呢?跟着下面这三步来操…...

以技术创新引领行业发展,飞凌嵌入式获双项省级荣誉

近日,飞凌嵌入式荣获「2023年河北省专精特新示范企业」以及「第五批省级制造业单项冠军企业」两项殊荣。这两项荣誉的获得,是对飞凌嵌入式在专业技术领域与创新能力的高度认可,荣誉的背后,凝聚着飞凌嵌入式无数次的研发探索与对创…...

在Google Kubernetes集群创建分布式Jenkins(二)

上一篇博客在Google Kubernetes集群创建分布式Jenkins(一)-CSDN博客我介绍了如何在GCP的K8S集群上部署一个分布式的Jenkins,并实现了一个简单的Pipeline的运行。 在实际的开发中,我们通常都会按照以下的CICD流程来设置Pipeline 在我司的实际实践中&…...

GEE:GEE中调用 Math.js 教程

作者:CSDN @ _养乐多_ Math.js 是一个强大的 JavaScript 数学库,它提供了大量用于数学计算的函数和工具。这个库可用于解决各种数学问题,从基本的算术运算到高级数学和线性代数等领域。本文将介绍在 Google Earth Engine(GEE)云平台中调用 Math.js 第三方库做一些事情的方…...

迅为龙芯3A5000主板,支持PCIE 3.0、USB 3.0和 SATA 3.0显示接口2 路、HDMI 和1路 VGA,可直连显示器

性能强 采用全国产龙芯3A5000处理器,基于龙芯自主指令系统 (LoongArch)的LA464微结构,并进一步提升频率,降低功耗,优化性能。 桥片 桥片采用龙芯 7A2000,支持PCIE 3.0、USB 3.0和 SATA 3.0显示接口2 路、HDMI 和1路 …...

Opencv for unity 下载

GitHub - EnoxSoftware/VideoPlayerWithOpenCVForUnityExample: This example shows how to convert VideoPlayer texture to OpenCV Mat using AsyncGPUReadback. OpenCV for Unity | Integration | Unity Asset Store...

独立IP主机怎么样?对网站有什么影响

对于现在企业来说,搭建网站是必不可少的,而大部分企业网站都会选择使用虚拟主机搭建,且使用的也是共享IP的这样会 有许多的弊端,所以部分站长会选择独立IP搭建。那么到底独立IP主机怎么样呢?使用独立IP主机搭建对网站有…...

Gerrit lfs安装及配置

Gerrit版本:3.1.4 lfs下载:Zuul Gerrit CI界面已经没有3.1.4对应版本的lfs.jar了,需要从上面的页面下载。 一、安装配置lfs 将上面下载的lfs.jar放到$GERRIT_SITE/plugins目录。 修改配置文件:$GERRIT_SITE/etc/gerrit.config …...

基于表面电势的AlGaN/GaN MODFET紧凑模型

标题:A Surface-Potential-Based Compact Model for AlGaN/GaN MODFETs 来源:IEEE TRANSACTIONS ON ELECTRON DEVICES(11年) 摘要 - 本文首次构建了基于表面势(SP)的AlGaN/GaN调制掺杂场效应晶体管&#…...

c语言中的fread

#include <stdio.h> //函数的定义&#xff1a; //size_t fread(void *ptr,size_t nmemb,FILE *stream); //函数的说明&#xff1a; //fread函数从stream所标示的文件中读取数据&#xff0c;一块是size个字节&#xff0c;共nmemb块&#xff0c;存放到ptr指向的内存里 …...

Unity游戏开发基础组件

Unity2D 相机调整&#xff1a;Projection设置为Orthographic。也就是正交模式&#xff0c;忽视距离。 资源&#xff1a; Sprite&#xff1a;一种游戏资源&#xff0c;在2D游戏中表示角色场景的图片资源 SpriteSheet&#xff1a;切割一张图片为多个Sprite 在Sprite Editor中可以…...

股票四倍杠杆什么意思?

股票四倍杠杆是指投资者通过借款或使用金融衍生品&#xff0c;以增加其投资股票的能力&#xff0c;达到放大投资回报的目的。具体来说&#xff0c;投资者可以通过向券商或银行等金融机构借入资金&#xff0c;或者使用融资融券等金融衍生品&#xff0c;以增加其购买股票的资本&a…...

【hcie-cloud】【2】华为云Stack解决方案介绍、缩略语整理 【下】

文章目录 华为文档获取方式、云计算发展背景、坚实基座华为云Stack&#xff0c;政企只能升级首选智能数据湖仓一体&#xff0c;让业务洞见更准&#xff0c;价值兑现更快MRS&#xff1a;一个架构可构建三种数据湖&#xff0c;业务场景更丰富离线数据湖&#xff1a;提供云原生、湖…...

多无人机在线路径规划的新算法

南京航空航天大学自动化学院使用NOKOV度量动作捕捉系统获取多架无人机的精确位置信息&#xff0c;实现多架无人机协同实时路径规划。 研究背景 近年来&#xff0c;无人机越来越多地应用于执行战场侦察、目标识别、跟踪打击等任务。 由多架无人机协同执行任务&#xff0c;通过…...

什么是运营商精准大数据?又有什么作用?

大数据&#xff08;big data&#xff09;&#xff0c;指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 精准大数据&#xff0c;是一种…...

Adobe Photoshop 2020给证件照换底

1.导入图片 2.用魔法棒点击图片 3.点选择&#xff0c;反选 4.选择&#xff0c;选择并遮住 5.用画笔修饰证件照边缘 6. 7.更换要换的底的颜色 8.新建图层 9.使用快捷键altdelete键填充颜色。 10.移动图层&#xff0c;完成换底。...

终极宝可梦随机化工具完整指南:如何让老游戏焕发新生

终极宝可梦随机化工具完整指南&#xff1a;如何让老游戏焕发新生 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-pokemon-randomizer…...

【机器学习】(一)机器学习入门概念

一、什么是机器学习&#xff1f;机器学习 让计算机从数据里自己学会规律&#xff0c;而不是靠人一行行写死规则。传统编程&#xff1a;人写规则 → 输入数据 → 输出结果机器学习&#xff1a;给数据 给答案 → 机器自己学规则 → 以后自己预测新数据就像教小孩&#xff1a;你…...

【回归损失函数实战指南】从MAE、MSE到Huber Loss:如何根据数据特性与任务目标精准选择(2024深度解析)

1. 回归损失函数的选择逻辑&#xff1a;从数据特性到模型目标 当你第一次接触回归问题时&#xff0c;可能会觉得"不就是预测一个连续值吗&#xff1f;"。但真正开始调参时&#xff0c;损失函数的选择往往让人头疼。我在电商销量预测项目中就踩过坑——用了MSE损失函数…...

如何解决Linux下CH341SER驱动问题:CH340/CH341 USB转串口完全指南

如何解决Linux下CH341SER驱动问题&#xff1a;CH340/CH341 USB转串口完全指南 【免费下载链接】CH341SER CH341SER driver with fixed bug 项目地址: https://gitcode.com/gh_mirrors/ch/CH341SER 在Linux系统中连接CH340/CH341系列USB转串口设备时&#xff0c;驱动问题…...

终极指南:Vagas社区生态如何与其他技术招聘平台协同发展

终极指南&#xff1a;Vagas社区生态如何与其他技术招聘平台协同发展 【免费下载链接】vagas :microscope: Espao para divulgao de vagas para front-enders. 项目地址: https://gitcode.com/gh_mirrors/va/vagas Vagas是一个专注于前端开发者的招聘信息分享平台&#x…...

Windows Subsystem for Android技术架构解析与开发者实践

Windows Subsystem for Android技术架构解析与开发者实践 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Android&#xff08;WSA&am…...

微信小程序中实现趋势(折线)面积组合图

一、小程序中实现&#xff0c;面积图的绘制&#xff0c;使用canvas进行绘制渲染&#xff08;从左到右的渲染动画&#xff09;二、面积图封装组件【完整代码】 Component({properties: {title: {type: String,value: },chartData: {type: Object,value: {xAxis: [],yAxis: [],va…...

企业财务数字化转型:从RPA到AI Agent的落地路径

在企业数字化转型中&#xff0c;财务一直是最优先落地的场景之一。原因很现实&#xff1a;流程标准、数据集中、效果可量化。但也正因为“好做”&#xff0c;很多企业对财务自动化的理解&#xff0c;长期停留在一个比较初级的阶段&#xff0c;随着AI能力的引入&#xff0c;财务…...

极简生活清单

极简不是苦行&#xff0c;而是把空间留给真正的满足&#xff1a;一份“满足生活”的极简清单你不需要扔空整个屋子&#xff0c;只需要留下那些真正服务于你的东西。说到“极简生活”&#xff0c;很多人第一反应是&#xff1a;扔东西、空无一物、像苦行僧一样克制。 但真正的极简…...

React Router v6新特性全解析:现代化路由解决方案终极指南

React Router v6新特性全解析&#xff1a;现代化路由解决方案终极指南 【免费下载链接】react-router Declarative routing for React 项目地址: https://gitcode.com/GitHub_Trending/re/react-router React Router 作为 React 生态中最受欢迎的路由库&#xff0c;在 v…...