AI Hero Club

视觉与三维场景 · 第 4 章

已自行标记完成0 / 8

仅保存在当前浏览器;完成标记不代表通过项目验收。

本章提纲 3 个小节
全课目录 8 章
完整课程计划 ↗
视觉与三维场景 / 课程计划 ↗

CHAPTER 04 / 8建议学习 120 分钟

对应关系、极线约束与错误匹配

两处亮斑颜色相近且满足极线约束时,为什么仍不能认定它们是同一个三维点?

本章要解决的 3 个问题
  • 实现描述子距离、互为最近与比值筛选
  • 从相机几何推导基础矩阵
  • 区分几何一致与身份正确
课程项目 ZIP ↓

描述子匹配与极线几何

本章的未知量不是三维坐标,而是“哪个图像观测对应同一物理标记”。第一张图第零个分量与第二张图第零个分量没有天然关系,因为扫描顺序会受投影位置与遮挡改变。我们先用归一化颜色描述子提出候选,再用相机几何拒绝不可能的候选。身份判断与位置估计要分层记录,否则三角化给出一个数便容易被误当成匹配已获证明。

设左图有 n 个描述子、右图有 m 个,均为单位三维颜色向量。距离矩阵每项是两向量差的欧氏长度。枚举所有对需要 n 乘 m 次常维运算和相应存储,小标记场景足够;大图像检索可以换近邻索引,但近似搜索可能漏掉真实最近项,必须保留可测精度边界。单位向量距离平方等于二减二倍内积,所以这里按距离与按余弦相似度排序完全一致。

dij=∥ai−bj∥2,dij2=2−2ai⊤bj(∥ai∥=∥bj∥=1)d_{ij}=\|a_i-b_j\|_2,\qquad d_{ij}^2=2-2a_i^\top b_j\quad(\|a_i\|=\|b_j\|=1)
距离只是描述子相似度,不是物理身份概率。

筛选有三道描述子条件。最近距离必须小于固定上限;最近距离还要小于第二近距离乘比值阈值,要求最好候选有足够优势;最后左右互为最近,限制多人同时挤向一个右图点。项目上限零点零八、比值零点八均预先固定。若最近和第二近都为零,比值严格不等式不成立,歧义被拒绝。这比把零除零变成一个任意数更符合信息含义,但也可能拒绝颜色确实重复的真对应。

算例一:互为最近不能代替歧义检验

假设一个左描述子到右图两点的距离为零点零一和零点零二,零点零一小于零点八乘零点零二,优势筛选通过;若右点也把它作为最近且距离低于上限,就接受候选。另一左点的距离为零点零一九和零点零二,比值零点九五,虽然绝对距离很小,却缺少辨别能力,应拒绝。若两候选完全同色,距离都为零,也要拒绝而非以较小数组编号判正确。

这些规则可以减少局部歧义,却不能杜绝错配。两个不同珠子恰好具有相同或很接近的色彩,真实对应又被遮挡时,剩下的错点可能成为唯一优胜。互为最近只是对现有候选的双向一致,不是对现实身份的双向证明。因此还要引入独立的几何必要条件。为了不把图像轴对齐当成默认,我们从一般相机矩阵推导极线,而不是只检查左右两点纵坐标相等。

一张图像点在世界中定义一条经过相机中心的射线。该射线上的任何三维点与第二相机中心共同落在一张平面内,这张平面与第二图像平面相交成一条极线。于是正确对应必须位于这条线。若两相机中心相同只有纯旋转,射线不再提供通常的双目基线深度信息;即使还能建立像素映射,也不能把它当有视差的三角测量。

用齐次线性代数表达上述关系。左相机矩阵 P 一的中心齐次向量 C 一位于它的零空间;第二图像里的极点 e 二是 P 二乘 C 一。给定左像素 x 一,伪逆 P 一加号乘 x 一给射线上的一个代表点;再投影到右图得到 q 二。右极线经过 e 二和 q 二,因此齐次线向量是二者叉乘。叉乘可写成三乘三反对称矩阵乘向量,从而得到基础矩阵 F。

e2=P2C1,l2=[e2]×P2P1+x1=Fx1,x2⊤Fx1=0e_2=P_2C_1,\quad l_2=[e_2]_\times P_2P_1^+x_1=Fx_1,\quad x_2^\top Fx_1=0
加号表示 Moore–Penrose 伪逆;三维齐次像素和齐次线的点积为零。

伪逆作为数值工具导入,它给一个最小范数代表;沿左相机中心方向加任意倍数不改变左投影。投影到右图后只改变极点方向分量,与极点叉乘会消掉该差异,所以同一条极线不依赖具体射线代表。F 也允许整体比例,项目按矩阵范数归一。它的秩在一般非零基线条件下为二;基础矩阵是像素坐标对象,已经包含内参,不要和只作用于归一化坐标的本质矩阵混名。

极线方程写作 a u 加 b v 加 c 等于零。为了把代数残差转换成右图像素距离,将点代入后的绝对值除以根号 a 平方加 b 平方。这种单向距离不是完整对称几何重投影误差,但有明确像素单位,适合预筛。若线前两项同时接近零,分母会退化,必须报错或换表达;这类特殊位置不能靠任意加一个大容差宣称通过。

算例二:平行双目是一般极线的特殊情况

两相机同姿态、横向基线,内参相同且没有畸变。对应点的归一化纵坐标相同,所以右极线水平;若线为零、一、负二十,则右点纵坐标二十三的距离为三像素,与横坐标无关。横向改错十像素可能仍在同一极线上。这说明极线约束是必要而非充分条件:它把二维候选空间降为一维,却没有告诉你这条线上的哪个位置才是真物体。

现在让右相机产生旋转,极线一般倾斜或汇聚,纵坐标相等不再成立。项目用实际旋转相机估出的 P 构造 F,正确标记的极线残差接近检测误差量级;人为把对应向另一行偏移,残差明显增大。真正三角化后还要做正深度与像素重投影检查。某些错误对应能同时满足极线与正深度,因此三种检查叠加仍不是身份充分证明,必须保留描述子与轨迹来源。

多视角轨迹将同一物体的多张图像观测连在一起,不能只拼相邻视图的配对而不检查环路。若左到中、中到右、右到左最终回到另一个点,说明至少有一条对应不一致。小项目用前两张训练图自动匹配重建,第三张训练图提供独立光度拟合约束;这不是完整的多视角轨迹图优化。课程据此讲清可扩展接口,不把未实现的全局 SfM 功能写入实测。

鲁棒估计常用 RANSAC:抽最小样本估模型,统计满足阈值的内点,再用内点重估。它适合“部分对应错、其余共享同一几何”的假设,并不能从全是歧义或全是错误数据中保证恢复。当前项目相机已由专用靶标标定,因此匹配阶段直接用固定几何筛选,不运行 RANSAC 求相机。若以后加入未知相机估计,需要记录抽样种子、阈值、迭代预算和失败概率,而不是只保存一个最好模型。

错误应通过可复现实验暴露。项目在正常重建之后另外构造十二组错位对应,保存它们被正深度或重投影门槛拒绝的原因;这些候选从不进入正常点云。实测这组全部被拒绝,只能说明这一组负对照被检测到,不能声称所有错配都会失败。另一测试专门输入重复颜色,要求描述子层拒绝歧义。两组测试攻击不同假设,不能以其中一个替代另一个。

遮挡与重复纹理也会产生正确但无法确定的观测。没有匹配时,程序应减少输出或拒绝,而不是复制最近点凑够十二个。对应记录至少保存原文件、局部区域编号、颜色距离、极线距离和后续重投影残差;便于审稿人沿结果回到图像。观测 ID 应与生成器的三维真值编号分离,否则即使没有直接读取坐标,也可能从预先提供的身份表绕开真实匹配任务。

在课程项目目录运行正确一般相机对应与人为扰动的独立极线检查。
import numpy as np
from vision3d.core import look_at,project,fundamental,epipolar_distance
P,_=look_at([-.8,.1,0]);Q,_=look_at([.9,-.2,.1])
X=np.array([[.2,.3,4.2]])
a,_=project(X,P);b,_=project(X,Q)
F=fundamental(P,Q)
assert epipolar_distance(a[0],b[0],F)<1e-10
print(epipolar_distance(a[0],b[0]+[0,12],F))

TRY IT YOURSELF

练习一:单位向量距离

证明两个单位向量的欧氏距离平方等于二减二倍内积。若内积从零点九五增为零点九九,距离怎样变化?

提示 1
展开向量差的长度平方,再利用两个向量都是单位长度。
提示 2
分别将两个内积代入后开平方,区分距离变化与物理对应身份概率。
对照参考解答
展开差向量平方为各自长度平方之和减两倍内积,单位条件让前两项合为二。内积零点九五时距离为根号零点一,约零点三一六;零点九九时为根号零点零二,约零点一四一。更大内积对应更小距离。这个关系只比较描述子方向,不给正确身份的概率,也不意味着阈值可以跨不同特征定义直接复用。

TRY IT YOURSELF

练习二:点线距离

右极线为三u加四v减一百等于零,候选像素十、二十。求代数残差和几何距离;整条线乘七之后结果怎样?

提示 1
代数残差是直线方程左边,几何距离还需除法向量长度。
提示 2
把直线全部系数乘7后,分子分母同时如何变化?用它检查门槛是否尺度不变。
对照参考解答
代入得三十加八十减一百等于十,代数残差十。法向长度五,所以点到线距离二像素。整条线乘七后残差七十,法向长度三十五,比值仍为二;这就是齐次线的尺度不变性。若直接用代数残差阈值,会因同一条线的任意整体比例而改变决定,不能作为有稳定单位的门槛。

TRY IT YOURSELF

练习三:极线内的错误

平行双目中,某个错误右点与真点在同一横行,为什么可能通过极线筛选?要补哪些信息,仍有什么不能保证?

提示 1
校正双目的极线还允许同一横行上的多少候选点?
提示 2
区分必要几何约束与物理身份充分证据,再列描述子、双向匹配、多视角等可补信息及其剩余歧义。
对照参考解答
水平极线只约束纵坐标,错误右点只要在同一行就满足必要条件。可用描述子优势、双向最近、正深度、三角化重投影、多视角环路及对象可见性进一步筛查。但一个处于几何一致位置且外观重复的错误点仍可能通过,因此不能宣称这些门槛构成身份证明。应保留歧义、多假设或主动补视角,项目实测只覆盖保存的负对照。

CHECK YOUR UNDERSTANDING

检验理解

先作答,再决定是否展开解析。选择题用于发现理解缺口;独立实现与迁移任务仍需另行检验。

1. 两个最优距离都是零时比值筛选应如何处理?

查看解析相同描述子没有足够信息确定身份。
2. 一般旋转双目正确对应必须满足什么?

查看解析纵坐标相等只对校正后的特殊双目成立。
3. 极线约束是否足以证明对应正确?

查看解析极线降低候选维数,不提供物理身份充分条件。
4. 实测十二组错误对应均被拒绝意味着什么?

查看解析有限失败集检验给局部证据,不是普适保证。

自行标记用于记录学习进度,不代表通过项目验收。