视觉SLAM十四讲:从理论到实践(Chapter5:相机与图像)

devtools/2024/10/18 12:05:31/

前言

学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可

目标

  1. 理解针孔相机的模型、内参与径向畸变参数。
  2. 理解一个空间点是如何投影到相机成像平面的。
  3. 掌握OpenCV的图像存储与表达方式。
  4. 学会基本的摄像头标定方法。

一、相机模型

1.1 针孔相机模型

针孔相机模型如下图所示:

O':主点

根据针孔相机模型和相似三角形原理,有:\frac{Z}{f}=-\frac{X}{X'}=-\frac{Y}{Y'}关系。为了消除负号,把像面翻转导共轭面位置即可获得:\frac{Z}{f}=\frac{X}{X'}=\frac{Y}{Y'},整理得X'=f\frac{X}{Z},Y'=f\frac{Y}{Z}

成像平面到像素坐标:\left\{\begin{matrix} u=f_x\frac{X}{Z}+c_x \\ \\ v=f_y\frac{Y}{Z}+c_y \end{matrix}\right.,f_x=\frac{f}{dx},f_y=\frac{f}{dy},(cx,cy)主点坐标,(dx,dy):像元尺寸。矩阵形式如下:

Z:深度,相机坐标系下三维空间点距离光心的距离。

K:内参矩阵。

世界坐标 --> 相机坐标 --> (投影成像) 归一化平面 --> 像素坐标系

T:变换矩阵 

1.2 畸变模型

径向畸变:由透镜形状引起的畸变

  • 桶形畸变
  • 枕型畸变

切向畸变:组装时透镜和成像面不是严格平行引入的畸变。

畸变矫正模型:

畸变矫正的流程:

相机标定常用张正友标定法。

当使用Matlab或Opencv进行标定时,畸变系数的排列顺序:(k1,k2,p1,p2,k3)

单目相机成像过程总结:

1.3 双目相机模型

双目相机成像原理:

根据上图的几何关系,有以下关系:

整理后可得:d:视差(disparity),同一点在左右相机相面横坐标之差。

d最小为一个像素,所以双目相机模型的深度z具有最大值:fb

1.4 RGB-D相机模型 

不需要计算深度,主动测量深度,按实现原理可分为两类:

  • 结构光(Structured Light)
  • 飞行时间法(Time-of-Flight, ToF)

二、图像


http://www.ppmy.cn/devtools/42935.html

相关文章

基于移动多媒体信源与信道编码调研

前言 移动多媒体是指在移动通信环境下,通过无线网络传输的音频、视频、图像等多种媒体信息。移动多媒体的特点是数据量大、传输速率高、服务质量要求高,因此对信源编码和信道编码的性能提出了更高的要求。 本文对进3年的移动多媒体信源与信道编码的研究…

Flutter 中的 TweenAnimationBuilder 小部件:全面指南

Flutter 中的 TweenAnimationBuilder 小部件:全面指南 在Flutter中,动画是为应用增添活力和吸引力的重要方式。TweenAnimationBuilder是一个功能强大的动画组件,它允许开发者创建基于插值器(tween)的动画效果。这意味…

插件:NGUI

一、版本 安装完毕后重启一下即可,否则可能创建的UI元素不生效 二、使用 Label文字 1、创建Canvs 2、只有根节点的这些脚本全部展开才能鼠标右键创建UI元素 3、选择字体 Sprite图片 1、选择图集 2、选择图集中的精灵 Panel容器 用来装UI的容器,一般UI…

Sam Altman微软Build 2024最新演讲:AI可能是下一个移动互联网

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,所以创建了“AI信息Gap”这个公众号,专注于分享AI全维度知识…

Django 安装步骤

步骤如下 打开cmd输入命令行 pip install django上图代表已经安装好了。但是里面的warning必须得将路径弄好,不然是运行不了 创建django项目 去到VS Code里,进入Terminal 页面,运行下面的命令 django-admin startproject [自己项目名称]就…

力扣 5. 最长回文子串 python AC

动态规划 class Solution:def longestPalindrome(self, s):size len(s)maxl 1start 0dp [[False] * size for _ in range(size)]for i in range(size):dp[i][i] Truefor L in range(2, size 1):for i in range(size):j L i - 1if j > size:breakif s[i] s[j]:if L…

15分钟Element-UI快速入门

Element-UI 是一个基于 Vue.js 2.0 的桌面端组件库,它提供了丰富的、可复用的组件,帮助开发者快速构建出美观且功能强大的网页应用。以下是一个 Element-UI 的快速入门指南: 1. 安装 Element-UI 首先,你需要在你的 Vue.js 项目中…

dolphinscheduler standalone安装

官方文档:https://dolphinscheduler.apache.org/en-us/docs/3.1.3/guide/installation/standalone 1.安装(以放在/home为例) 下载见:https://download.csdn.net/download/taotao_guiwang/89311365 tar -xvzf apache-dolphinsche…