相机的外参和内参

相机的外参和内参 TLDR 💡 **外参矩阵:**将点从世界坐标系转换到相机坐标系。 **内参矩阵:**将点从相机坐标系转换到像素坐标系。 关键概念 相机是用于捕捉图像的传感器,它们将世界中的点投影到我们看到的2D平面上。 这种变换通常分为两个部分:外部参数和内部参数。相机的外部参数取决于其位置和方向。相机的内部参数则取决于它如何捕捉图像(焦距、光圈、视场、分辨率)。 坐标系 在成像过程中,主要使用三种坐标系: 世界坐标系(3D):这是一个固定的全局坐标系,用于描述场景中物体的绝对位置。 相机坐标系(3D):这是以相机为中心的坐标系,用于描述相对于相机的物体位置。 图像坐标系(2D):这是投影到2D图像平面上的坐标系,用于描述图像上像素的位置。 像素坐标系(2D):这是具体到图像像素的坐标系,通常以图像左上角为原点。 外部参数 外部参数包括旋转矩阵 $R$ 和平移向量 $t$ ,它们描述了世界坐标系到相机坐标系的变换。具体来说,给定一个世界坐标系中的点 $P_w$ ,通过外部参数变换可以得到相机坐标系中的点 $P_c$ : $P_c = R \cdot P_w + t$ 其中 $R$ $$ 是一个 $3 \times 3$ 的旋转矩阵, $t$ 是一个 $3 \times 1$ 的平移向量。 内部参数 内部参数描述了相机的成像特性,主要包括焦距 $f$ 、主点 $(c_x, c_y)$ 、像素尺寸等。内部参数矩阵 $K$ 可以表示为: $K = \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix}$...

June 3, 2024 · 1 min · Huijie Liu

3DGS Tutorial

3DGS 基本思想 3D高斯分布可以通过它们的各向异性协方差矩阵、位置和透明度等参数来有效地表示复杂场景。由于这些参数是通过机器学习方法进行训练的,渲染阶段无需进行大量处理。因此,它可以利用基于瓦片的光栅化器实现快速渲染,从而在性能上有显著的提升。 创新点 Point-Based Rendering:点基渲染直接将三维空间中的点渲染为图像。 Tiled Rasterization:分块光栅化的基本思想是将屏幕划分为多个小块(Tiles),然后在每个小块内进行相关计算和处理(可微分)。这种方法能够显著减少内存流量,从而提高渲染效率。 Spherical Harmonics:球谐函数是一种在球面上表示函数的方法,特别适用于描述球形表面的光照和阴影效果。 基本流程 收集数据 图像 视频->ffmpeg截取视频帧 ffmpeg -i <VIDEO_PATH> -qscale:v 1 -qmin 1 -vf fps=2 %04d.jpg 输出如下 📦 $FOLDER_PATH ┣ 📂 input ┃ ┣ 📜 000000.jpg ┃ ┣ 📜 000001.jpg ┃ ┣ 📜 ... 获取相机位姿 COLMAP:开源Structure-from-Motion (SfM) 软件,输入images,输出相机位姿 原论文使用的是自带的convert.py,自动调用COLMAP并转换成需要的格式 桌面软件:RealityCapture, Metashape 移动app:Polycam, Record3D(利用了雷达) 输出如下: 📦 $FOLDER_PATH ┣ 📂 (input) ┣ 📂 (distorted) ┣ 📂 images ┣ 📂 sparse ┃ ┣ 📂 0 ┃ ┃ ┣ 📜 points3D....

May 23, 2024 · 10 min · Huijie Liu