视觉SLAM十四讲学习笔记——第五讲相机与图像
文章目录
- 前言
- 一、相机模型
- 针孔相机模型
- 畸变模型
- 双目相机模型
- RGB-D相机模型
- 二、图像
- 三、代码复现
- 总结
前言
研0学生,放假宅家,本科期间对其感兴趣,故开始学习。
一个人学有点无聊,可以一起来学呀!参考书:高翔《slam十四讲》第二版
我会在我的笔记中,结合自己的理解复述内容,并对代码部分完成复现。有问题的可以留言或者私信噢!
开发环境:虚拟机Ubuntu22.04+Vscode。
一、相机模型
针孔相机模型
设O−x−y−zO-x-y-zO−x−y−z为相机坐标系,OOO是相机光心,物理成像平面是O′−x′−y′O^{'}-x^{'}-y^{'}O′−x′−y′。
注:此图应从左往右看。
设PPP点的坐标是[X,Y,Z]T[X,Y,Z]^{T}[X,Y,Z]T,P′P^{'}P′点的坐标是[X′,Y′,Z′]T[X^{'},Y^{'},Z^{'}]^{T}[X′,Y′,Z′]T,物理成像平面到光心的距离为fff(焦距)。根据相似三角形的知识可以得到:
Zf=−XX′=−YY′\frac{Z}{f}=-\frac{X}{X^{'}}=-\frac{Y}{Y^{'}}fZ=−X′X=−Y′Y
负号的原因是因为在小孔成像模型中,所呈现的像是倒像,为更符合实际,把成像平面等价地移至相机前方,去掉负号,并完成归一化,如下图所示。
整理得到一组更为简单的式子:
X′=fXZX^{'}=f\frac{X}{Z}X′=fZXY′=fYZY^{'}=f\frac{Y}{Z}Y′=fZY
为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面 o−u−vo-u-vo−u−v,原点ooo位于物理成像平面左上角,uuu轴向左平行于xxx轴,v轴向下平行于yyy轴。此时得到了像素坐标系下的P′P^{'}P′的坐标(u,v)(u,v)(u,v)。
像素坐标系和成像平面之间,相差了一个缩放和一个原点的平移,设像素坐标系在uuu轴缩放了α\alphaα倍,vvv轴缩放了β\betaβ倍,原点平移了[cx,cy]T[c_{x},c_{y}]^{T}[cx,cy]T,可以得到像素坐标系下的P′P^{'}P′的坐标(u,v)(u,v)(u,v)为:
{u=αX′+cxv=βY′+cy\left\{\begin{matrix} u=\alpha X^{'}+c_{x}\\ v=\beta Y^{'}+c_{y} \end{matrix}\right.{u=αX′+cxv=βY′+cy
将X′X^{'}X′和Y′Y^{'}Y′代入,得:
{u=αfXZ+cxv=βfYZ+cy\left\{\begin{matrix} u=\alpha f\frac{X}{Z}+c_{x}\\ v=\beta f\frac{Y}{Z}+c_{y} \end{matrix}\right.{u=αfZX+cxv=βfZY+cy将αf\alpha fαf合并成fxf_{x}fx,将βf\beta fβf合并成fyf_{y}fy,得:
{u=fxXZ+cxv=fyYZ+cy\left\{\begin{matrix} u=f_{x}\frac{X}{Z}+c_{x}\\ v=f_{y}\frac{Y}{Z}+c_{y} \end{matrix}\right.{u=fxZX+cxv=fyZY+cy
把上述式子改写成矩阵形式:
(uv1)=1Z(fx0cx0fycy001)(XYZ)=1ZKP\begin{pmatrix} u\\ v\\ 1 \end{pmatrix}=\frac{1}{Z} \begin{pmatrix} f_{x}&0&c_{x}\\ 0& f_{y} &c_{y} \\ 0 & 0 &1 \end{pmatrix}\begin{pmatrix} X\\ Y\\ Z \end{pmatrix}=\frac{1}{Z} KP⎝⎛uv1⎠⎞=Z1⎝⎛fx000fy0cxcy1⎠⎞⎝⎛XYZ⎠⎞=Z1KP
至此,我们得到得矩阵KKK即相机得内参矩阵,通常情况,相机生产好时,厂商会将其告诉你,如果没有,则需要自己标定,现在这个标定也很成熟,如张正友标定法。
相机既然有内参就会有外参,外参得概念是,观察上一个式子的PPP是相机坐标系下的坐标,在实际过程中相机是在运动的,所以PPP的相机坐标是它的世界坐标PwP_{w}Pw经过平移旋转得到的。那么有:
ZPuv=Z[uv1]=K(RPw+t)=KTPwZP_{uv}=Z\begin{bmatrix} u \\ v\\ 1 \end{bmatrix}=K(RP_{w}+t)=KTP_{w}ZPuv=Z⎣⎡uv1⎦⎤=K(RPw+t)=KTPw其中R,TR,TR,T称为相机的外参。
畸变模型
待更新
双目相机模型
待更新
RGB-D相机模型
待更新
二、图像
待更新
三、代码复现
待更新
总结
视觉SLAM十四讲学习笔记——第五讲相机与图像相关推荐
- 视觉SLAM十四讲学习笔记-第五讲-相机模型
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践
专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
专栏系列文章如下: 专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...
- 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机
第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题
专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...
- 视觉SLAM十四讲学习笔记专栏汇总
专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二 ...
最新文章
- 奥巴马竟被「去马赛克 AI」洗白,CVPR 新研究惹上种族歧视大麻烦,LeCun 也被卷入其中...
- 知识图谱如何让“人工智能”更智能?
- java 多线程共享数据_Java多线程学习:多个线程间共享数据
- java项目中怎么查看用的序列_如何在Java应用程序中使用序列化分类器对...
- .NET应用迁移到.NET Core(一)
- 深夜,学妹说她想做Python数据分析师
- Spring框架-事务管理注意事项
- 苹果小圆点怎么弄出来_原来苹果手机轻点2下屏幕就能截图,以前还不知道,太方便了...
- Android开发杂谈更新中
- 电子书链接的集合 (不断更新)
- 数据结构在程序中的实现及表现形式
- 像素测量工具_结构光视觉传感器的标定方式和测量原理
- 使用N4BiasFieldCorrection处理MRI图像
- volatile工作原理学习总结
- 【可视化】盒须图 散点图 柱状图 折线图 饼图
- 7. 文件和数据格式化
- Ubuntu安装使用Krita
- 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
- there was an error while executing `VBoxManage`,a CLI used by Vagrant for controlling VirtualBox. T
- html 动画标签,无HTML标签元素的恐龙动画
热门文章
- js之DOM获取元素,更改属性
- 8g内存一般占用多少_4/8/16/32GB 玩游戏多少内存才够用?实测大吃一惊
- 开源简单网络巡检工具(NetDevOps)项目
- java sslcontext详解_Java SslContext.newServerContext方法代码示例
- android shape 画阴影_Android使用shape绘制阴影图层阴影效果示例
- word无法读取此文档,文档可能已损坏 请尝试下列方法:*打开并修复文件*用文本恢复转换器打开文件
- 如何用计算机快速计算方法有哪些,win10快速打开计算器工具的两种方法(图文)...
- xml的复杂解析取值和节点插入导出合并后的xml文件
- Python基础库-ctypes
- 2016words---论文标题多级目录和图片清单