极线搜索:把范围收回来
已知 F 或 rectified stereo 时,匹配搜索从 O(WH) 收到极线段;搜索窗宽度要配合 descriptor 噪声和外点率。

1. 全图匹配是算力自杀
视觉里程计里两帧六百乘四百八做暴力描述子匹配,比较次数是特征数乘像素量级。有基础矩阵或已校正的立体像对时,对应点约束在极线上,搜索从二维收到一维,误匹配常降一个量级。但搜索带太窄在校正残余下会漏真匹配;太宽又回到外点爆炸。极线约束是硬剪枝:几何对了省算力,几何错了系统性漏匹配。先把 undistort 和 rectify 做对,再谈缩带——顺序反了是在错误几何上优化描述子。
2. 极线方程与对应 API
图一中的点,在图二中对应点满足极线约束。极线系数由基础矩阵乘图一点得到,点在极线上即满足线性方程。OpenCV 提供计算对应极线的函数,输入图一像素和基础矩阵,输出图二上每条极线的参数。沿极线正负若干像素内搜索匹配;带宽来自校正后行方向残余、描述子块半径和运动先验。有惯性测量单元旋转预测时,搜索带可非对称平移到预测极线位置——这是带惯导的视觉里程计里常用的省算力手段。
3. 校正立体:一维搜索
立体校正之后对应点在同一行,匹配退化为水平扫描,视差落在最小视差到最大视差之间。半全局立体匹配和块匹配内部隐含此约束——未校正别直接跑块匹配,要么先校正加重映射,要么极线带搜索。半全局匹配的预滤波和块大小影响纹理弱区域;曝光和纹理比算法标志位更常是瓶颈。我会先报校正后行方向偏差的三西格玛,再定搜索半宽。
4. 带宽怎么定
调参看匹配数随带宽曲线和内点率随带宽曲线,最优值在召回与精度拐点。六百乘四百八上带搜索对比全图暴力匹配,比较次数可差两个数量级。经验起点:校正后行偏差的三个标准差作搜索半宽,再按内点率微调。全图乱匹配在嵌入式上不可接受;带搜索是几何给的结构化剪枝,不是可选优化。
5. 失败模式
| 现象 | 根因 |
|---|---|
| 真对应落在带外 | 基础矩阵错、未去畸变、卷帘快门 |
| 外点仍多 | 带太宽或重复纹理 |
| 立体弱纹理花屏 | 预滤波或曝光 |
先修几何:去畸变、校正、用随机采样一致估正确基础或本质矩阵,再缩带——不是换更强描述子。卷帘快门下极线弯曲,窄带会系统性漏匹配,要么做行时间补偿,要么放宽带并加强几何验证。
6. 与全局匹配器的关系
半全局和加权最小二乘内部也是约束搜索,只是用全局平滑替代局部带。一般立体像对未校正时必须极线带或校正——在斜极线上跑块匹配是常见流水线错误。基于特征的里程计用极线带、比值检验、随机采样一致估本质矩阵是标准链。带几何的匹配器省算力;几何错了匹配数骤降是告警,不是调参能掩盖的。
7. 案例:未校正跑立体
某次立体深度图边缘全花,查下来跳过了校正步骤直接块匹配。补上校正和重映射后,弱纹理区仍难,但极线约束恢复,误匹配深度尖刺消失。教训:立体流水线文档里校正必须是显式 stage,不能假设用户知道。
8. 验收
- 匹配数与带宽曲线加内点率
- 校正后行偏差分布与带宽关系
- 未校正与校正后内点对比
- 几何修复前后匹配恢复
- 带搜索与全图搜索耗时对比
极线约束把二维搜索收到一维或视差区间。几何契约成立时省算力;破裂时帮你快速暴露——匹配数骤降先查基础矩阵和去畸变,不是换匹配器。
相关
也可以看看
johan's blog