自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 【I3D 2024】Deblur-GS: 3D Gaussian Splatting from Camera Motion Blurred Images

因此新位姿。

2025-07-15 14:25:19 730

原创 机器人位姿变换的坐标系相对性:左乘法则与右乘法则解析​

设机器人当前位姿(位置和姿态)表示为齐次变换矩阵 Tcurrent\boldsymbol{T}_{current}Tcurrent​,该矩阵将局部坐标系(机器人自身坐标系)的点坐标映射到世界坐标系:Pworld=Tcurrent⋅Plocal\boldsymbol{P}_{world} = \boldsymbol{T}_{current} \cdot \boldsymbol{P}_{local}Pworld​=Tcurrent​⋅Plocal​其中,Plocal\boldsymbol{P}_{loca

2025-07-15 10:50:27 474

原创 视觉 SLAM 十四讲 - 李代数求导与扰动模型

李代数求导(尤其是。

2025-07-13 14:30:23 517

原创 视觉 SLAM 十四讲 - 李群与李代数

下文内容参考了《视觉 SLAM 十四讲》。群是一种集合加上一种运算的代数结构。不妨设存在集合 AAA 和运算 ⋅\cdot⋅,则群可以记作 G=(A,⋅)G = (A, \cdot)G=(A,⋅),并且满足以下条件:上述条件简记为。常见的群有:现在我们来证明 SO(n)SO(n)SO(n) 和 SE(3)SE(3)SE(3) 对矩阵乘法构成群(对矩阵加法不构成群):对于 SO(n)SO(n)SO(n) 有:对于 SE(3)SE(3)SE(3) 有:李群是具有的群。其光滑结构使得我们可以应用微分与积分等分析

2025-07-13 08:59:44 644

原创 pixelSplat: 3D Gaussian Splats from Image Pairs for Scalable Generalizable 3D Reconstruction

αϕz​。

2025-07-10 20:22:01 825

原创 多视图几何:本质矩阵与基础矩阵

假设 a=(axayaz)\mathbf{a} = \begin{pmatrix} a_x \\ a_y \\ a_z \end{pmatrix}a=​ax​ay​az​​​ 以及 b=(bxbybz)\mathbf{b} = \begin{pmatrix} b_x \\ b_y \\ b_z \end{pmatrix}b=​bx​by​bz​​​,叉乘 a×b\mathbf{a} \times \mathbf{b}a×b 的矩阵表示为:a×b=(0−azayaz0−ax−ayax0)(bxbybz)=[

2025-07-04 00:15:01 1394

原创 实对称矩阵的基本性质与证明

实对称矩阵A\mathbf{A}A。

2025-06-27 14:25:10 1499

原创 距离度量类型总结

曼哈顿距离(Manhattan Distance,也称为 L1 距离)的定义为:在直角坐标系中,两点之间的距离是它们在各坐标轴方向上差的绝对值之和。曼哈顿距离的几何意义是"沿轴向移动的最短路径",常用于计算两点间的最短可行路径。在 nnn 维空间中,点 A=(a1a2⋮an)A = \begin{pmatrix} a_1 \\ a_2 \\ \vdots \\ a_n \end{pmatrix}A=​a1​a2​⋮an​​​ 和点 B=(b1b2⋮bn)B = \begin{pmatrix} b_1

2025-06-26 22:38:51 841

原创 TPAMI 1991:Least-Squares Estimation of Transformation Parameters Between Two Point Patterns

如下图所示,在计算机视觉任务中,经常需要计算两个点集之间的相似变换。具体地,设存在两个点集 {xi∈Rm}\{\boldsymbol{x_i} \in \Bbb{R}^m\}{xi​∈Rm} 和 {yi∈Rm}\{\boldsymbol{y_i} \in \Bbb{R}^m\}{yi​∈Rm}(mmm 一般取值为 2 或者 3),其中 i=1,2,⋯ ,ni = 1, 2, \cdots, ni=1,2,⋯,n。我们需要求解相似变换参数(旋转矩阵 R\mathbf{R}R,平移向量 t\boldsymbol

2025-06-25 19:28:21 1157 1

原创 GAMES101:现代计算机图形学入门 - 光栅化

光栅化是图形渲染管线的核心阶段,负责将连续的几何图形(如三角形、线段)映射到离散的像素网格上,并确定每个像素对应的颜色、深度等属性。在光栅化过程中,像素采样的核心原则是:若像素中心点被判定位于三角形内部(例如,通过叉乘符号一致性测试,具体原理可参考博客:GAMES101:现代计算机图形学入门 - 前置知识),则对该像素进行着色(或采样)。下图展示了光栅化的效果示例:​从图中可以明显观察到,光栅化后的图像边缘呈现阶梯状的锯齿(Jaggies),这种现象在图形学中称为​​(Aliasing)​​,其本质是​

2025-06-22 11:16:59 1097

原创 GAMES101:现代计算机图形学入门 - 前置知识

内部时,其坐标可通过​​重心坐标(Barycentric Coordinates)​表示。叉积又称为外积、叉乘、向量积,是对三维空间中两个向量的二元运算,使用符号。同号(即要么同时都大于 0,要么同时小于 0),否则点。(假设不考虑三角形边界的情况)的方法,如下图所示。二维向量叉积可以视为三维叉积的特例,将二维向量。如果我们以矩阵的形式描述向量点积,则公式。如下图所示,我们可以根据公式。二维向量叉积得到的向量的模是以。根据上面的性质,我们引申出利用。的左边,同理也可以判断出点。构成坐标系的基向量,当。

2025-06-21 16:21:02 1191

原创 三维重建 —— 7. 透视结构恢复

透视结构恢复问题的数学模型如下图所示:透视结构恢复的歧义如下图所示。从图中可以看出,xij=MiXj=(MiH−1)(HXj)=M∗X∗x_{ij} = \mathbf{M}_i X_j = (\mathbf{M}_i \mathbf{H}^{-1})(\mathbf{H} X_j) = \mathbf{M}^* X^*xij​=Mi​Xj​=(Mi​H−1)(HXj​)=M∗X∗。因此,估计的投影矩阵 M∗\mathbf{M^*}M∗ 与真实的投影矩阵 M\mathbf{M}M 至多相差一个可逆矩阵

2025-06-18 19:15:53 945

原创 直线拟合 - 最小二乘法与 RANSAC 算法

课程视频链接:北京邮电大学_计算机视觉_鲁鹏_第三次课_拟合 和 北京邮电大学_计算机视觉_鲁鹏_第4次课_拟合(RANSAC复习,hough)。如下图所示,设二维平面内存在 nnn 个点 {(xiyi)}i=1n\{ \begin{pmatrix} x_i \\ y_i \end{pmatrix} \}_{i = 1}^{n}{(xi​yi​​)}i=1n​,现需构造最优直线模型来拟合该数据集,下面从三种不同的方法来解决这个问题。对下面所述的各个算法做一个总结图,如下图所示:最小二乘法(Least

2025-06-17 22:28:58 1416

原创 奇异值分解

以下讨论仅限于实数矩阵范围以内,不考虑复数矩阵。

2025-06-16 22:18:50 970

原创 三维重建 —— 6.多视图几何(运动恢复结构)

运动恢复结构(Structure from Motion, SfM)是计算机视觉领域的核心问题,旨在从一组多视角二维图像序列中恢复三维场景的结构信息(3D 点)和相机的运动参数(相机位姿),如下图所示:运动恢复结构问题的数学模型可表述为::根据相机模型和已知参数的不同,SfM 可分为三类典型任务:欧式结构恢复​是最常见的任务,相机内参(焦距、主点等)已通过标定确定,仅需计算相机外参(旋转矩阵 R\mathbf{R}R 和平移向量 TTT​)和 3D 场景点坐标。欧式结构恢复问题的数学模型可以表述如下

2025-06-16 14:50:29 672

原创 三维重建 —— 5. 双目立体视觉

极点 e′e'e′ 是相机光心 O1O_1O1​(在相机 O1O_1O1​ 坐标系下的齐次坐标为(0001)\begin{pmatrix} 0 \\ 0 \\ 0 \\ 1 \end{pmatrix}​0001​​)在相机 O2O_2O2​ 对应图像平面上的投影点,即有:e′=K′[Tx][RT](0001)=KT(1)e' = \mathbf{K}' [T_x] [\mathbf{R} \quad T] \begin{pmatrix} 0 \\ 0 \\ 0 \\ 1 \end{pmatrix} =

2025-06-14 16:22:51 1665

原创 三维重建 —— 4. 三维重建基础与极几何

课程视频链接:计算机视觉之三维重建(深入浅出SfM与SLAM核心算法)—— 4. 三维重建基础与极几何。​​鉴于单目相机三维重建的困难,引入多目相机。多目相机三维重建需要用到三角化,现在来介绍一下三角化的概念。​假设存在两个相机,不妨记为 O1O_1O1​ 和 O2O_2O2​,且已知从相机 O1O_1O1​ 到 O2O_2O2​ 的旋转变换矩阵和平移向量分别为 R\mathbf{R}R 和 TTT,引出下图的问题:如上图所示,在相机坐标系 O1O_1O1​ 中存在射线 lll,在相机坐标系 O2O_

2025-06-14 10:26:28 1275

原创 三维重建 —— 3. 单视几何

我们不加证明地给出 2D 和 3D 空间的旋转变换矩阵,其中 2D 空间的旋转矩阵如下图所示:而 3D 空间的旋转矩阵为:R=(1000cos⁡α−sin⁡α0sin⁡αcos⁡α)(cos⁡β0sin⁡β010−sin⁡β0cos⁡β)(cos⁡γ−sin⁡γ0sin⁡γcos⁡γ0001)\mathbf{R} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos \alpha & -\sin \alpha \\ 0 & \sin \alpha & \cos \a

2025-06-13 19:15:00 1078

原创 三维重建 —— 2. 摄像机标定

在相机标定任务中,需要求解线性方程组以确定相机内外参数 x1​,x2​,...,xq​x_1​, x_2​, ..., x_q​x1​​,x2​​,...,xq​​。通过采样一系列点可以列出该方程组(如图所示),此时通常有方程个数 ppp > 参数个数 qqq​,构成超定方程组 Ax=yAx = yAx=y。当矩阵 AAA 列满秩时,求解线性方程组 Ax=yAx = yAx=y (A∈Rm×n,x∈Rn,y∈Rm\mathbf{A} \in \mathbb{R}^{m × n}, x \in \mathb

2025-06-12 19:37:23 1010

原创 三维重建 —— 1. 摄像机几何

若将胶片直接置于物体前方成像,胶片上单个感光点会接收来自物体不同位置的光线,导致成像模糊。在物体与胶片之间设置带针孔的隔板,限制光线仅通过小孔进入。这种结构确保了胶片上每一点仅接收来自物体上对应点的光线,显著提升了成像清晰度。由此引出针孔相机模型,如下图所示:在成像平面上,物体成像是倒立的。为便于观察和分析,可通过引入虚拟像平面,使成像物体呈现正立状态。在针孔相机模型中,依据相似三角形原理,相机坐标系下的三维点 P(x,y,z​)P(x, y, z​)P(x,y,z​) 与其在图像坐标系中的二

2025-06-12 10:26:23 1439

原创 PyTorch学习笔记 - 损失函数

只需实现 forward() 方法,无需手动编写反向传播(自动求导引擎处理)。自定义损失函数类实例化后直接调用即可计算损失值。在 PyTorch 中,torch.autograd.Function 是一个用于定义自定义自动求导操作的类。它允许用户实现自定义的前向传播forward 和反向传播 backward 逻辑。这对于实现非标准操作、自定义激活函数、或在某些特殊场景中替代现有 PyTorch 操作非常有用。torch.autograd.Function 实现自定义求导,需要实现forward。

2025-06-04 23:50:44 736

原创 NeRF PyTorch 源码解读 - NDC空间

NeRF 将视锥体空间的射线rotd转换到归一化设备坐标系(Normalized Device Coordinates, NDC)空间上。现在从理论推导和代码实现两个角度进行分析。

2025-06-04 12:03:10 1180 1

原创 计算机图形学 - 投影变换推导

投影变换由正交投影和透视投影两个部分组成,如下图所示:这里我们假设近平面为 z=−nz = -nz=−n 和远平面为 z=−fz = -fz=−f(nnn 和 fff 均大于 000)。近平面在 XXX 和 YYY 轴上满足:现在我们来推导投影变换矩阵,分为两部分:透视变换和正交变换。如下图所示,根据相似三角形可得:y′y=n−z\dfrac{y'}{y} = \dfrac{n}{-z}yy′​=−zn​即有 y′=−nzyy' = -\dfrac{n}{z}yy′=−zn​y。同理可得,x′

2025-06-03 17:45:52 1362 1

原创 NeRF PyTorch 源码解读 - 体渲染

如下图所示,渲染图像上点 PPP 的颜色值 ccc 是累加射线 OP→\overrightarrow{OP}OP 在近平面和远平面范围内采样的一系列点的颜色值得到的。具体的计算公式如下:C(r)=∫tntfT(t)σ(r(t))c(r(t),d)dtC(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) c(\mathbf{r}(t), \mathbf{d}) dtC(r)=∫tn​tf​​T(t)σ(r(t))c(r(t),d)dt

2025-05-31 00:18:53 993

原创 Voxblox算法

无人机的轨迹优化需要障碍物距离信息,这些信息可以从欧几里得有符号距离场(Euclidean Signed Distance Fields, ESDF)获取。ESDF 中的每个体素都包含其到最近障碍物的欧几里得距离。论文提出了一种通过 TSDF 在线增量式构建 ESDF的方法。截断符号距离场TSDF。

2025-05-18 22:09:17 1706

原创 截断符号距离场TSDF

截断符号距离函数(Truncated Signed Distance Function, TSDF)是一种用于三维重建的隐式表面表示方法,广泛应用于机器人导航、SLAM 和三维建模等领域。TSDF 核心思想是通过体素(Voxel)网格存储每个点到物体表面的符号距离,并通过截断和多帧融合提升重建精度。TSDF 中的 SDF 表示符号距离函数对于三维空间中的每个点(体素),SDF 表示该点到最近物体表面的最短距离,规定如下:1)距离为正数:点位于物体表面前方2)距离为负数:点位于物体表面后方。

2025-05-17 10:24:32 831

原创 世界坐标系到像素坐标系的变换

现在我们来推导从世界坐标系到像素坐标系的变换矩阵。假设世界坐标系、相机坐标系、图像坐标系和像素坐标系如下图所示:点P为三维空间上的一点,它在世界坐标系和相机坐标系上的坐标分别为xw​yw​zw​和xc​yc​zc​。点P在图像坐标系上对应点P′,点P′在图像坐标系和像素坐标系上的坐标分别为xy和uv。相机的焦距为f,单位为米m。:为了更加方便地描述,设置相机坐标系的Xc​轴和Yc​轴与图像坐标系的X轴和Y轴以及像素坐标系的U。

2025-05-10 00:33:37 1444

原创 NeRF PyTorch 源码解读

以 load_llff_data 为例,对代码中的数据集加载流程进行分析。LLFF数据集的官方链接:https://github.com/Fyusion/LLFF。关于 LLFF 中 poses_bounds.npy 的介绍如下:总结一下上面的描述:poses_bounds.npy 文件中存储的旋转矩阵和平移向量是相机坐标系到世界坐标系的变换矩阵(即 Camera-to-World (c2w) 矩阵),数学表达式如下:Pworld=Rc2w⋅Pcamera+Tc2wP_{world} = R_{c

2025-05-04 22:22:29 1737

原创 3DGS源码解读 - 自适应高斯密度控制

3DGS 的自适应密度控制是其核心优化机制之一,用于动态调整场景中高斯点的分布和数量,以平衡重建精度与计算效率,整体流程图如下所示:图片来源于文献:3D Gaussian Splatting for Real-Time Radiance Field Rendering自适应密度控制的原因是:某一些高斯点的空间位置(xyz)的梯度太大。为什么要对这些空间位置梯度较大的高斯点进行优化呢?xyz 的梯度反映了高斯点位置对损失函数(渲染图像与真实图像的误差)的影响程度,梯度越大表明高斯点的位置可能偏离了真实场

2025-05-02 13:56:13 1151

原创 3DGS源码解读 - renderCUDA

renderCUDA 函数实现了对图像的渲染,为每一个像素赋予了一个 RGB 颜色。renderCUDA 的流程大致如下图所示:。

2025-05-02 09:28:21 1074

原创 3DGS源码解读 - duplicateWithKeys 和 RadixSort

基数排序的本质是一种非比较型、基于分桶的稳定排序算法,其核心思想是通过逐位处理数字的每一位(如个位、十位、百位等),将数据分配到不同的桶中,并在每一轮排序中利用稳定排序的特性,逐步构建最终的有序序列。基数排序-2分钟极速掌握。基数排序的时间复杂度是Ok×nO(k×n)Ok×n,其中nnn是排序元素的个数,kkk是最大数的位数。基数排序的稳定性是其成立的关键条件:1)稳定排序:在每一轮排序中,相同位值的元素会按照它们在原序列中的相对顺序进入同一个桶;

2025-05-01 19:06:54 958

原创 3DGS源码解读 - preprocessCUDA

X−μTΣ−1X−μk,其中k0。我们以二维空间为例,假设二维点XxyT,中心点为μμx​μy​T,协方差矩阵Σcovxxcovxy​covxycovyy​。由于Σ是半正定对称矩阵,所以ΣQDQT,其中,Dλ1​0​0λ2​​为对角矩阵(λ1​λ2​0),Q为正交矩阵。则有X−μTΣ−1X−μX−μTQDQT−1X−μ。

2025-05-01 14:45:46 950

原创 Ubuntu24.04 + Docker 部署 Hydra 框架

默认情况下,需要使用 sudo 权限来运行 Docker 命令,通过将用户添加到 Docker 用户组,可以在无需 sudo 的情况下运行 Docker 命令。首先需要 cd catkin_ws/devel,接着 source setup.bash,然后启动 Hydra(启动前需要先 cd /catkin_ws/src):roslaunch hydra_ros uhumans2.launch,最后 rosbag play 解压的Bag包的路径 --clock。上述指令中参数的含义可以自行百度查阅。

2025-04-29 10:32:31 746

原创 3DGS源码解读 - 视图变换和投影变换

和。

2025-04-28 22:55:44 964

原创 3DGS源码解读 - 数据加载

我们以 COLMAP 数据为输入,分析 3DGS 源码中数据加载管道的流程。使用的代码分析工具为 PyCharm Community Edition 2024.1.7。

2025-04-27 09:44:17 1436

原创 3DGS源码解读 - 高斯模型

fx2π3/2∣Σ∣1/21​exp−21​x−μTΣ−1x−μ三维高斯分布的概率密度函数可视化如下:fxexp−21​xTΣ−1x其中,Σ为 3D 高斯的协方差矩阵。为什么 3D 高斯是椭球呢?事实上,不妨假设xTΣ−1x等于常数d,将公式dxTΣ−1x展开后就是一个椭球面。由于Gx∈01,所以xTΣ−1x∈0∞,从0∞逐个取不同的d。

2025-04-26 16:45:42 1400 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除