每扇小窗都是一份唯一身份证:散斑图案编码全拆解

0 阅读10分钟

一句常被当成八卦的误解:深度相机投出去的散斑,是不是"随手撒了一把点"?答案是"不是"。投影模组里藏着一张严密设计的"编码母版"——画面里每一小块窗口对应母版哪处,必须唯一确定"对得上号"。双目匹配、结构光解码,第一件事都是几何上的"定位",一旦小窗在母版出现不止一次,窗口"撞了脸",深度错之千里。

本文循着链路拆解:解码为何是定位,母版如何用伪随机与 De Bruijn 序列把唯一性刻进每扇窗,窗口大小与深度分辨率如何拉扯,DOE 怎样铺满视场,双投射器又如何"时间分片"防互扰。

阅读收获:看懂"解码即定位"的本质;理解伪随机母版与 De Bruijn 序列怎样保证窗口唯一;看懂窗口越小点越密的权衡;认识 DOE 铺场与双投射器分时的代价。

一、解码的第一步,不是认点而是定位

人眼靠双眼位差判断远近,深度相机演着类似戏法,但前提常被漏掉:你得先能在多幅图中认出"这是同一点"。

双目相机拿到左右两帧,关心的是同一物理点落在左右像素(列)上的位差(视差),可匹配的第一步却是先找:左图这个带图案的小块,在右图里长得一样的那个在哪儿?结构光更直接,先要知道投出的"编码母版图",再看观察到的局部图案是母版哪一段。两者都落进同一问题:这一小窗图案,在全幅空间里的坐标唯一吗?

散斑工程第一信条可压成一句:**解码即定位,定位靠唯一。**后面所有母版设计、自相关抑制、双投射器时间片,都在给"唯一"建地基。散斑不是随手抖动的斑点,而是满屏刻意安排的"唯一身份证"阵列。

二、局部歧义:为什么窗口"长重复"就没救

散斑图案编码与窗口匹配示意

图可见,母版被切成一扇扇小窗,解码要判断"每扇窗落在母版哪一处",窗口若在局部重样就歧义。把问题推到底:若母版有两串光点分布高度近似甚至逐点相同会怎样?双目那边右图搜索出现两个高相似候选,代价函数"多峰",argmin 判不出谁对,视差跳错,深度图整片错位或跳变;结构光更依赖"这段编码只对应母版唯一一段",一旦重复就把两段天南地北的 3D 混淆进同一观察,深度直接崩。

这同视觉的"重复图案陷阱"是同一物理根源:**凡长得一样的局部图案,都必然稀释匹配的信息量。**区别在自然场景你控不了周期纹理,但散斑是你自己投出去的——图案长什么样,图纸上全由你说了算,于是工程师能把"局部重复"提前掐死在图纸里。表归纳各失效源:

失效来源表象母版设计的应对
局部图案重复匹配多峰、深度跳变/错位让任意小窗在母版内只出现一次
随机均匀但含周期表面密,算法撞车抑制周期性,强调随机
窗口内内容太贫无可比对的纹理保证每窗口内特征足够可分

结论:**别让母版里任何两处小窗长得一样,**这正是下文"伪随机母版"登场的原因。

三、伪随机母版:把唯一性写进设计

既然要"任意小窗在母版内只出现一次",直白做法是让母版"很随机"。但工程要的是可证明性质的随机——**"任意给定大小的窗口在全幅中唯一"**这一强条件,而非"看起来乱"。先分清"真随机"与"伪随机":

概念含义用在散斑上
真随机每次生成不可复现、不可设计无法离线验证窗口唯一,不可取
伪随机由确定算法生成、可复现母版可离线全幅扫描验证唯一性

伪随机的价值:一是可复现,同种子得同母版,产线一致;二是可离线全幅核查,投产后逐窗扫描揪出重复;三是可定量"制造随机"——哪里加点、哪里留白都由参数控制,不必赌运气。母版常作"规则可控的伪随机格栅"排布,光点既不落周期矩阵(带来周期歧义),也不过度聚集(否则窗口内特征失衡)。而真正把"任意小窗唯一"变成可证明性质的,往往是组合数学里的现成工具——De Bruijn 序列。

四、De Bruijn 序列:一张编码生出满窗口唯一

证明"任意长 n 的小窗唯一"最顺手的教科书工具,就是 De Bruijn 序列。直白定义:取含 k 个"字母"的符号集,De Bruijn 序列是一条能从头到尾、每个长度为 n 的连续子串在序列中恰好只出现一次的循环序列。它有极漂亮的性质:一条长到 kⁿ 的序列,把所有 kⁿ 种长度为 n 的窗口"不重不漏"全装了进去。

这一性质对散斑编码堪称天作之合:每个可能的局部模式都有唯一位置且都在全幅中。化作验证逻辑大约是:

用 k 元符号集构造阶 n 的 De Bruijn 序列 B,铺成散斑格栅;
遍历全幅提取每个长 n 的窗口片;
断言:任何两片窗口片互不相等 —— 唯一性成立。

要强调,De Bruijn 给的不是"大概率不重复",而是可证明、全覆盖的不重复,等于把"随机撞车"换成"数学上不可能撞车"。真正落到物理散斑还叠加灰度、多点占位等考量,但骨架正是"有限字母表 + 窗口唯一"的组合数学,目标收敛到一句:让算法在任一局部窗口都能无歧义说出"我是母版哪位"。

五、窗口越小、匹配点越密:编码设计的两难

唯一性讲清后是分辨率权衡——**匹配窗口取多大?直觉上窗口越大信息越多、匹配越稳,但坏处双重:一是在母版里"撞脸"机会变大,唯一性更难保;二是匹配点变稀疏。**一个匹配点来自"在一个可靠的唯一窗口上找到对应",锚点撒得稀,点间靠插值填补;反过来,窗口越小,同一视场能放下越多"各自唯一的锚窗",匹配点越密、深度图越细。

匹配窗口唯一性难度匹配点密度深度图细腻度代价
偏大较易排但占空间稀疏粗,靠插值细节易丢
偏小每窗在母版唯一,更难编码算法更苛刻

这也是为什么"散斑看似乱点",背里却常跑着一套精密的编码理论——密度与唯一性是互相咬合的旋钮,拧小窗这一头,就须在编码那头付出更多。

六、DOE 复制:一段编码如何铺满视场

还有个量产现实:怎么在一块有限元件上投影出铺满整片视场、又保持局部唯一的图案?关键词是 DOE(衍射光学元件)。思路近似"印模盖章":不要求整张视场是独一无二的大手稿,而是先设计一小片含编码语义的"母版单元",再借 DOE 衍射复刻成百上千份铺满视场。

引入 DOE 复制,唯一性迁移为:重复单元内部的每个局部窗口,在全幅(含跨副本边界)仍只对应一个真实物理位置——副本间要能被同一套"窗口定位"规则无歧义地衔接,不能跑着跑着跳进另一份副本认错坐标。这把"设计唯一大母版"折算成"设计小母版 + 保跨副本唯一":元件制造与成本可控、规格一致,一套小母版合格即可铺满,产线验收简单;代价是编码与 DOE 设计耦合加深,母版单元分界、副本间距都不能破坏解码的全局定位。

七、双投射器:两套编码如何时间分片防互扰

某些场型需双投射器——扩大覆盖、增加亮度或消除单投射器盲区。但两套散斑同时打向同一场景,光点叠在同一张红外图里,一旦无法区分,解码立即被"双份图案"搅乱,产生大片互扰伪影。工程通行解法是时间分片(时分交替):两套编码轮流开、轮流关,某时刻场景只亮一套,相机只在亮的那一帧采图,另一套的"污染"被彻底隔开:

手段怎么做换来什么代价
空间分片各管一片投影区各片区不受干扰交叠区仍互扰、覆盖割裂
时分交替某时刻只亮一套,相机切到该套采样从根本消除叠加污染帧率按分片份数摊薄
波长/编码区分各用各的波段或码型复用同一时段光学与解码复杂度上升

两套图案的"码"仍需独立设计,可共享 DOE 复制思路,却必须让各自窗口唯一性在互斥时段里各自成立,任意时刻都不出现"另一套残影混充本套窗口"的歧义。时分交替以牺牲帧吞吐换极高的干扰一致性且几乎不添光学元件,是消费级/机器人深度方案里相当稳妥的主干线。

总结

收拢成几条硬结论:

  1. 解码即定位,定位靠唯一——双目与结构光的第一步都是认出小窗来自母版何处,窗口重复就挂。
  2. 散斑不是随手撒点,是精心编码——要在图纸层面预先掐死全部局部重复。
  3. 伪随机与 De Bruijn 把唯一性变成可证明性质——任意小窗只出现一次,一窗即一份身份证。
  4. 窗口越小匹配点越密、图越细,编码也越苛刻——密度与唯一性互相咬合。
  5. DOE 把"设计唯一"折算成"复制+保跨副本唯一",可控铺满视场。
  6. 双投射器用两套独立编码 + 时间分片,从时间轴根除互扰。

给工程的踩坑三句:选型别只看"点数密",要追问局部唯一性怎么保证与验证;定窗口大小时记住,省下的唯一性难度正以深度图稀疏作代价;上双投射器前先算清分时把帧率摊薄后应用能否承受。

参考资料

  1. 散斑投影编码与结构光/主动双目解码原理的系统资料。
  2. 组合序列(De Bruijn 序列)构造与"任意窗口唯一"性质推导。
  3. DOE 衍射复制母版、多投射器时分复用的公开工程说明。

【备选标题】

  1. 解码即定位:散斑每一扇窗口为何都是唯一路标
  2. 窗口越小点越密:散斑编码里那对死磕的旋钮
  3. 从 De Bruijn 序列到双投射器:散斑编码方案全拆解