弱纹理与反光表面识别失败
别名: 弱纹理 · 反光表面 · 特征不足 · 白墙
概念解释
一面刚刷过的白墙、一张玻璃茶几、一块亮着的显示器,看起来都是「很大的平面」,对视觉 SLAM 却常常是空白。视觉特征不足(insufficient visual features)会让平面检测迟迟不收敛,或给出一块跟着高光游走的假平面。失败出在表面的光学性质,不是用户没有对准。
弱纹理缺的是可重复锁定的角点;反光多出来的是会随视点移动的假特征。两种表面经常出现在同一件家具上。
机制
特征点要在相邻帧里被认成「还是那个点」。均匀粉刷、大面积纯色、重复的细条纹提供不了独特点,匹配只能瞎猜或拒绝。镜面反射把灯和窗户的像当作场景里的结构,头一动,这些「结构」在表面上滑,拟合出的平面就跟着扭。飞行时间与结构光在黑、透、镜三类表面上丢波,深度同样空洞。IMU 可以在短时间内外推位姿,外推不生长新的平面。
所以「这是一张桌子」对人和对算法不是同一句话。人用轮廓和用途认;算法用可跟踪的纹理认。办公室里最常见的放置目标——白桌、玻璃、显示器——正好落在算法最弱的集合里。
怎么研究
用表面材料做自变量:贴了海报的墙、同一面墙撕掉海报、玻璃桌、木纹桌,测量平面首次出现的时间、平面法向抖动、以及 ARCore INSUFFICIENT_FEATURES / ARKit limited 中特征不足原因的占比。光照方向也要扫一档,因为反光失败会随灯动。
因变量:检测时延、平面稳定后的法向方差、任务放弃率。 不要只在实验室的标定板前测——标定板是为了让特征足够,测不到这种失败。
边界
带 LiDAR 的设备在部分无纹理表面上仍能出几何,弱纹理不再等于失败,但玻璃和显示器往往依旧不行。人为贴上的临时纹理(胶带、标记)会把失败变成成功,这是实验操作,不是产品可依赖的环境。完全黑暗里失败的主因是曝光,不是纹理。重复纹理的地毯会给出很多特征,却可能把两块不同的区域认成同一处,那是另一类匹配错误,不是「没有特征」。
怎么落地
- 把「白墙、玻璃、屏幕」写成已知的失败表面,放置引导避开它们,指向有纹理的区域(木纹、接缝、画框)。
- 检测长时间不出平面时,提示要具体到表面性质(「试试有花纹的桌面」),不要只说「再走一走」。
- 展陈与零售如果必须落在亮桌面上,布展阶段加可跟踪的纹理,而不是指望现场算法突然变强。
- 验证:同一盏虚拟灯,分别往木纹桌和玻璃桌上放。玻璃桌上平面不出、或出来之后跟着灯走,就是这条失败被打中了;不要只用贴满海报纸的实验室墙做验收。