视觉SLAM十四讲学习笔记——第五讲相机与图像
时间:2022-08-11 21:30:00
文章目录
- 前言
- 一、相机模型
-
- 针孔相机模型
- 畸变模型
- 双目相机模型
- RGB-D相机模型
- 二、图像
- 三、代码复现
- 总结
前言
研0学生,放假宅家,本科期间对其感兴趣,故开始学习。
一个人学有点无聊,可以一起学!参考书:高翔《slam第二版十四讲
我会在我的笔记中,结合自己的理解复述内容,并对代码部分完成复现。有问题的可以留言或者私信噢!
开发环境:虚拟机Ubuntu22.04 Vscode。
一、相机模型
针孔相机模型
设 O ? x ? y ? z O-x-y-z O?x?y?z相机坐标系, O O O是相机光心,物理成像平面是 O ′ ? x ′ ? y ′ O^{'}-x^{'}-y^{'} O′?x′?y′。
注:此图应从左往右看。
设 P P P点的坐标是 [ 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,物理成像平面到光心的距离为 f f f(焦距)。根据相似三角形的知识可以得到:
Z f = − X X ′ = − Y Y ′ \frac{Z}{f}=-\frac{X}{X^{'}}=-\frac{Y}{Y^{'}} fZ=−X′X=−Y′Y
负号的原因是因为在小孔成像模型中,所呈现的像是倒像,为更符合实际,把成像平面等价地移至相机前方,去掉负号,并完成归一化,如下图所示。
整理得到一组更为简单的式子:
X ′ = f X Z X^{'}=f\frac{X}{Z} X′=fZX Y ′ = f Y Z Y^{'}=f\frac{Y}{Z} Y′=fZY
为了描述传感器将感受到的光线转换成图像像素的过程,我们设在物理成像平面上固定着一个像素平面 o − u − v o-u-v o−u−v,原点 o o o位于物理成像平面左上角, u u u轴向左平行于 x x x轴,v轴向下平行于 y y y轴。此时得到了像素坐标系下的 P ′ P^{'} P′的坐标 ( u , v ) (u,v) (u,v)。
像素坐标系和成像平面之间,相差了一个缩放和一个原点的平移,设像素坐标系在 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 , v ) (u,v) (u,v)为:
{ u = α X ′ + c x v = β Y ′ + c y \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 = α f X Z + c x v = β f Y Z + c y \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合并成 f x f_{x} fx,将 β f \beta f βf合并成 f y f_{y} fy,得:
{ u = f x X Z + c x v = f y Y Z + c y \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
把上述式子改写成矩阵形式:
( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) = 1 Z K P \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