【视觉SLAM十四讲】相机与图像

相机与图像

针孔相机模型

Zf=−XX′=−YY′ (像是倒立的) \frac{Z}{f}=-\frac{X}{X'}=-\frac{Y}{Y'} ~~~ (像是倒立的) fZ=−X′X=−Y′Y (像是倒立的)

坐标系

常用的坐标系一般有三种:

  1. 世界坐标系:描述物体在真实世界中的位置
  2. 相机坐标系:原点为相机光心,Z 轴指向相机前方
  3. 像素坐标系:原点为图像左上角,u 轴向右,v 轴向下

各个坐标系的转换关系如下:

  • 世界坐标系------相机坐标系:通过旋转平移(外参)进行转换
    Pc=RPw+t=TPw(使用变换矩阵T时,Pw是齐次坐标形式) P_c=RP_w+t=TP_w(使用变换矩阵T时,P_w是齐次坐标形式) Pc=RPw+t=TPw(使用变换矩阵T时,Pw是齐次坐标形式)

  • 相机坐标系------像素坐标系:通过内参矩 阵进行转换
    (uv1)=1Z(fx0cx0fycy001)(XYZ)=1ZKPc~ \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}K\tilde{P_c} uv1 =Z1 fx000fy0cxcy1 XYZ =Z1KPc~

畸变模型

由于透镜的存在,越靠近图像边缘的位置,畸变的现象就越明显

  • 径向畸变:由透镜形状引起。可视为坐标点距离原点的长度发生了改变。桶形畸变图像的放大率随着与光轴之间的距离增加而减小,枕形畸变则相反。这两种畸变中,仅有穿过图像中心与光轴有交点的直线不变

{xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6) \begin{cases}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{cases} {xdistorted=x(1+k1r2+k2r4+k3r6)ydistorted=y(1+k1r2+k2r4+k3r6)

  • 切向畸变 :由透镜制作和安装的缺陷引起(与成像平面不平行)。可视为坐标点水平夹角发生了改变
    {xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+p1(r2+2y2)+2p2xy \begin{cases}x_{distorted}=x+2p_1xy+p_2(r^2+2x^2)\\y_{distorted}=y+p_1(r^2+2y^2)+2p_2xy \end{cases} {xdistorted=x+2p1xy+p2(r2+2x2)ydistorted=y+p1(r2+2y2)+2p2xy

去畸变

去畸变的核心是反向映射,对于目标图像(去畸变图像)上的每一个点

  1. 通过内参逆变换映射到无畸变的归一化平面上,得到点 (x,y)(x,y)(x,y)
  2. 将该点正向代入畸变模型,计算出该点发生畸变后,在畸变的归一化平面上的对应坐标 (xdistorted,ydistorted)(x_{distorted},y_{distorted})(xdistorted,ydistorted)
  3. 将 (xdistorted,ydistorted)(x_{distorted},y_{distorted})(xdistorted,ydistorted) 通过内参变换,得到它在原始畸变图像上的像素坐标,并通过插值获取该位置的像素值赋给去畸变图像的对应点

内参

k=fxscx0fycy001 k=\begin{bmatrix} f_x&s&c_x\\0&f_y&c_y\\0&0&1 \end{bmatrix} k= fx00sfy0cxcy1

  • fx,fyf_x,f_yfx,fy :焦距 f 在像素坐标系u,v上的缩放。fx=fdxf_x=\frac{f}{dx}fx=dxf ,dx 是传感器上一个像素的实际物理尺寸
  • cx,cyc_x,c_ycx,cy :主点。即光心在像素坐标系的投影
  • sss :轴倾斜参数,描述 u 轴和 v 轴之间的夹角偏离 90∘90^\circ90∘ 的程度,通常为 0

外参

描述相机姿态,由旋转矩阵 R(3x3)和平移向量 t(3x1)组成,或者直接用变换矩阵表示

双目相机模型

左右相机中心的距离即为基线,左右像素的几何关系如下:
z−fz=b−uL+uRb \frac{z-f}{z}=\frac{b-u_L+u_R}{b} zz−f=bb−uL+uR

整理得
z=fbdd=uL−uR z=\frac{fb}{d} \qquad d=u_L-u_R z=dfbd=uL−uR

相关推荐
Rocktech_ruixun4 小时前
机器人端侧大模型部署对主板有哪些要求?瑞迅主控板分级方案对比
人工智能·嵌入式硬件·机器人
Rocktech_ruixun5 小时前
机器人数据采集能力取决于什么?瑞迅科技RK3588/3576核心板方案深度解析
人工智能·嵌入式硬件·机器人
深念Y8 小时前
基于 NapCat 与本地 RAG 的群聊 AI 机器人方案(ARM64 部署)
人工智能·ai·机器人·node.js·自动化·情感陪伴·bot
搞科研的小刘选手9 小时前
【河南省科学院、河南工业大学主办 | 郑州举办】2026年计算机视觉与具身智能国际学术会议(CVEI 2026)
人工智能·计算机视觉·具身智能·学术会议·会议推荐
知识分享小能手9 小时前
线性代数学习教程,从入门到精通,相似矩阵及二次型 — 知识点详解(9)
学习·线性代数·机器学习
M-Robots echo9 小时前
驱动抽象层解析:标准化硬件接口,解决机器人硬件碎片化适配难题
人工智能·机器人·ros·开源社区·m-robots
workflower9 小时前
例二:某汽车制造企业深度融合AI智能体,构建园区网络的智能运维体系
人工智能·机器学习·设计模式·机器人·云计算·汽车·制造
xwz小王子9 小时前
Science Robotics 观点探讨| 机器人是工具还是代理人?
人工智能·机器人
QYR-分析10 小时前
软爪采摘机器人加速落地,高价值果蔬采收迎来柔性自动化新机遇
大数据·机器人·自动化
71777711 小时前
开源协同底座支撑具身智能:Gitee 企业版与 AGIROS 共建机器人操作系统基础设施
机器人·gitee·开源