文章目录

  • 前言
  • 一、相机模型
    • 针孔相机模型
    • 畸变模型
    • 双目相机模型
    • 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′=fZX​Y′=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′+cx​v=β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​+cx​v=β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=fx​ZX​+cx​v=fy​ZY​+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​⎝⎛​fx​00​0fy​0​cx​cy​1​⎠⎞​⎝⎛​XYZ​⎠⎞​=Z1​KP
至此,我们得到得矩阵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十四讲学习笔记——第五讲相机与图像相关推荐

  1. 视觉SLAM十四讲学习笔记-第五讲-相机模型

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  2. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-三角测量和实践

     专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第 ...

  3. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵

    专栏系列文章如下:  专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...

  4. 视觉SLAM十四讲学习笔记-第四讲---第五讲学习笔记总结---李群和李代数、相机

    第四讲---第五讲学习笔记如下: 视觉SLAM十四讲学习笔记-第四讲-李群与李代数基础和定义.指数和对数映射_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第四讲-李代数求导与扰动模 ...

  5. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-特征点法和特征提取和匹配实践

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  6. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的实践-高斯牛顿法和曲线拟合

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  7. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的非线性最小二乘问题

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  8. 视觉SLAM十四讲学习笔记-第六讲-非线性优化的状态估计问题

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  9. 视觉SLAM十四讲学习笔记专栏汇总

    专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二 ...

最新文章

  1. 奥巴马竟被「去马赛克 AI」洗白,CVPR 新研究惹上种族歧视大麻烦,LeCun 也被卷入其中...
  2. 知识图谱如何让“人工智能”更智能?
  3. java 多线程共享数据_Java多线程学习:多个线程间共享数据
  4. java项目中怎么查看用的序列_如何在Java应用程序中使用序列化分类器对...
  5. .NET应用迁移到.NET Core(一)
  6. 深夜,学妹说她想做Python数据分析师
  7. Spring框架-事务管理注意事项
  8. 苹果小圆点怎么弄出来_原来苹果手机轻点2下屏幕就能截图,以前还不知道,太方便了...
  9. Android开发杂谈更新中
  10. 电子书链接的集合 (不断更新)
  11. 数据结构在程序中的实现及表现形式
  12. 像素测量工具_结构光视觉传感器的标定方式和测量原理
  13. 使用N4BiasFieldCorrection处理MRI图像
  14. volatile工作原理学习总结
  15. 【可视化】盒须图 散点图 柱状图 折线图 饼图
  16. 7. 文件和数据格式化
  17. Ubuntu安装使用Krita
  18. 搭建rtmp直播流服务之1:使用nginx搭建rtmp直播流服务器(nginx-rtmp模块的安装以及rtmp直播流配置)
  19. there was an error while executing  `VBoxManage`,a CLI used by Vagrant for controlling VirtualBox. T
  20. html 动画标签,无HTML标签元素的恐龙动画

热门文章

  1. js之DOM获取元素,更改属性
  2. 8g内存一般占用多少_4/8/16/32GB 玩游戏多少内存才够用?实测大吃一惊
  3. 开源简单网络巡检工具(NetDevOps)项目
  4. java sslcontext详解_Java SslContext.newServerContext方法代码示例
  5. android shape 画阴影_Android使用shape绘制阴影图层阴影效果示例
  6. word无法读取此文档,文档可能已损坏 请尝试下列方法:*打开并修复文件*用文本恢复转换器打开文件
  7. 如何用计算机快速计算方法有哪些,win10快速打开计算器工具的两种方法(图文)...
  8. xml的复杂解析取值和节点插入导出合并后的xml文件
  9. Python基础库-ctypes
  10. 2016words---论文标题多级目录和图片清单