plucker射线

Plücker 射线表示 是计算机视觉里一个很重要的几何表示方法,尤其适合表示三维空间中的一条直线,在新视角合成、匹配、重建里经常会用到。

先说直观:Plücker 射线到底在表示什么?

一条三维直线,除了要知道它朝哪个方向走 ,还要知道它在空间里的位置

比如两条平行线:

  • 方向一样
  • 但位置不同

所以只用一个方向向量是不够的。

Plücker 表示就是用 6 个数 来描述一条空间直线:
L=(d,m)\mathbf{L} = (\mathbf{d}, \mathbf{m})L=(d,m)

其中:
d∈R3\mathbf{d} \in \mathbb{R}^3d∈R3:方向向量

表示直线的方向。
m∈R3\mathbf{m} \in \mathbb{R}^3m∈R3:矩向量

表示这条线相对于原点的位置关系。如果你把一条直线看成"一个方向的作用线",那它绕原点产生的"偏移效应"就可以通过叉乘来描述。

所以一条线用 6 维表示

Plücker 坐标的构造方式

如果一条直线经过两点:
p,q∈R3\mathbf{p}, \mathbf{q} \in \mathbb{R}^3p,q∈R3

那么它的 Plücker 表示可以写成:
m=p×q\mathbf{m} = \mathbf{p} \times \mathbf{q}m=p×q

于是整条直线表示为:
L=(d,m)\mathbf{L} = (\mathbf{d}, \mathbf{m})L=(d,m)

相机射线是什么?

在针孔相机模型里,一个像素点 ((u,v)) 对应空间中的一条射线:

  • 起点:相机中心
  • 方向:从相机中心穿过该像素在成像平面上的点

也就是说,一个像素不对应一个 3D 点,而是对应一条 3D 射线

普通相机射线怎么表示?

假设:

  • 相机中心为 (\mathbf{o})
  • 射线方向为 (\mathbf{d})

那么这条射线可以写成:
r(t)=o+td,t≥0\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}, \quad t \ge 0r(t)=o+td,t≥0

其中:

  • o\mathbf{o}o:射线起点
  • d\mathbf{d}d:单位方向向量
  • ttt:沿着射线前进的距离

Plücker 射线为什么适合视觉任务?

因为它非常适合表达"某个像素对应空间中的一条线"这种关系。

在多视图几何和新视角合成中,你经常需要回答:

  • 这个像素对应空间中的哪条射线?
  • 不同图像中的这些射线是否来自同一个 3D 点?
  • 目标视角的某条射线应该从输入图像中取哪些信息?

Plücker 表示把这些关系变成了统一的向量形式,方便神经网络处理。

为什么比"只用方向向量"更好?

如果只用方向向量:
d\mathbf{d}d

那么两条平行射线会完全一样。

但在视觉里,平行并不代表同一条射线,因为它们的空间位置不同。

Plücker 表示加入了:
m=o×d\mathbf{m} = \mathbf{o} \times \mathbf{d}m=o×d

这样就能区分"方向一样但位置不同"的线。

m为什么编码了这条直线相对原点的"偏移量"?

为什么它和"离原点多远"有关?

因为叉乘的模长是:
∥m∥=∥p×d∥=∥p∥ ∥d∥sin⁡θ\|\mathbf{m}\| = \|\mathbf{p} \times \mathbf{d}\| = \|\mathbf{p}\| \, \|\mathbf{d}\| \sin\theta∥m∥=∥p×d∥=∥p∥∥d∥sinθ

其中θ\thetaθ是p\mathbf{p}p和d\mathbf{d}d的夹角。

如果 d\mathbf{d}d是单位向量,那么:
∥m∥=∥p∥sin⁡θ\|\mathbf{m}\| = \|\mathbf{p}\| \sin\theta∥m∥=∥p∥sinθ

而∥p∥sin⁡θ\|\mathbf{p}\| \sin\theta∥p∥sinθ正好就是:

原点到这条直线的垂直距离

所以当方向向量归一化时:
∥m∥=原点到直线的距离\boxed{\|\mathbf{m}\| = \text{原点到直线的距离}}∥m∥=原点到直线的距离

这就是它"表示偏了多远"的原因。

m如何表示方向

m\mathbf{m}m 告诉你:

  • 这条线在原点的哪一边,通过它和原点构成的平面朝向哪里进行判断

因为m=p×d\mathbf{m}=\mathbf{p}\times\mathbf{d}m=p×d是有方向的,直线在原点的哪一边叉乘指向的方向是不一致。

相关推荐
心 爱心 爱4 个月前
Point-SRA: Self-Representation Alignment for 3D Representation Learning 论文精读
计算机视觉·3d·重建·三维点云表征学习·流建模
心 爱心 爱10 个月前
DAS3D: Dual-modality Anomaly Synthesis for 3D Anomaly Detection 论文精读
计算机视觉·异常检测·重建·判别器·多模态目标异常检测·三维异常检测·异常合成
小冷爱读书1 年前
3D高斯破溅和4D高斯
3dgs·高斯·重建·高斯破溅
小冷爱读书1 年前
3D Gaussian Splatting for Real-Time Radiance Field Rendering——文章方法精解
点云·3dgs·重建
Struart_R1 年前
MagicArticulate: Make Your 3D Models Articulation-Ready 论文解读
人工智能·计算机视觉·3d·三维生成
Struart_R1 年前
Edify 3D: Scalable High-Quality 3D Asset Generation 论文解读
人工智能·深度学习·3d·扩散模型·三维生成·三维资产
Struart_R1 年前
LLaMA-Mesh: Unifying 3D Mesh Generation with Language Models 论文解读
语言模型·llama·多模态·三维生成·自回归
Struart_R2 年前
WonderWorld: Interactive 3D Scene Generation from a Single Image 论文解读
计算机视觉·扩散模型·三维生成·场景生产
江上清风山间明月2 年前
Android和IOS Flutter应用开发使用 Provider.of 时,可以使用 listen: false 来避免不必要的重建
android·flutter·ios·listen·provider·重建·闪烁