三色光视触觉形貌重建:从一张 RGB 图像到接触表面高度
编者注: 三色光度立体的形貌重建方案,某种程度上有点像 IMU 手套通过加速度积分恢复位置:局部测量看起来好像都挺漂亮,但只要前端的法向量估计存在一点系统性偏差,经过空间积分之后,就可能逐渐累积并放大,最后让整个形貌出现整体倾斜、局部畸变,甚至产生一些相当幽默的重建结果。 当然,人类已经发明了 Poisson 积分、全局最小二乘优化和各种误差约束,试图给这个问题收拾残局。但这些方法更多是在解决法向量场的可积性和积分一致性问题,并不能凭空修正前端测量中的系统性偏差。尤其是在真实柔性材料、复杂反射和非理想光照条件下,这套方案究竟能有多健壮,恐怕还得交给工程实践来检验。^_^ 前提与问题:一台相机怎样“看见”深度 先设想这样一个任务:我们只有一台普通 RGB 相机,希望从接触画面中恢复带有实际尺度的三维形貌,而不是凭经验猜测物体大概是什么形状。困难在于,相机记录的是二维投影和亮度,并不直接记录每个像素到镜头的距离。在针孔模型中,空间点满足 $$ u-c_x=f_x\frac{X}{Z},\qquad v-c_y=f_y\frac{Y}{Z}. $$同一条视线上的不同点可以落到同一个像素;一个较小、较近的物体,也可能与较大、较远的物体形成相同投影。明暗同样存在歧义:某个区域变暗,可能因为表面发生倾斜,也可能只是材料颜色更深,或者照明变弱。单张普通单目图像一般不足以唯一确定具有实际尺度的深度。 学习模型可以利用训练先验预测深度,运动、多视角和已知尺寸也能提供额外约束,但这些都不再只依靠这一帧图像本身。 图1 像素提供的是方向,而不是距离。左图中两个点位于同一视线上;右图中近处的小物体和远处的大物体占据相同视角。没有额外约束,仅凭投影无法区分这些情况。 主动光学测量的一种思路,是给画面加入已知“编码”,让几何变化留下可识别的痕迹。结构光就是典型例子:投影模块向表面打出条纹、点阵或其他图案,相机识别每个观测位置对应的投影编码。知道了相机像素和投影位置,就得到一条相机射线与一条投影射线;配合已标定的相对位置,可以通过三角测量确定表面点。图2右侧的弯曲条纹只是这个过程的观测,真正恢复深度还需要解码和几何标定,而不是看到条纹弯曲就已经得到了高度。 图2 结构光编码的是空间对应关系。左图表示一个已识别的投影编码如何与相机像素共同确定空间点;右图为起伏表面上条纹弯曲的解析示意,并非实测图像。相机与投影模块之间需要已知的几何关系。 常见结构光需要独立的投影器件以及相机—投影器基线。这里的投影器件不一定是完整的商用投影仪,也可以是微型投射模块,但它仍会带来体积、装调和图案设计的代价。对于空间受限的触觉指尖,自然会产生另一个问题:能否不投射空间条纹,而用更简单的照明给几何编码? 三色光采取的正是另一种思路。让红、绿、蓝三组光从不同方向照向表面,局部朝向就会改变三种光的相对亮度。一台彩色相机在同一帧中记录三个通道,便有机会从这组明暗关系反推表面坡度,再积分得到形貌。它不是把结构光投影仪简单换成三盏彩灯,而是改用了不同的物理约束:结构光先找“照到了哪里”,三色光先判断“表面朝向哪里”。 编码也不是获取深度的唯一办法,但在这两类主动方案中,它使本来含糊的图像获得了可标定的几何含义。 摘要 三色光视触觉利用透明弹性体与薄反射膜,将接触形状转换为内部相机可见的浮雕,再用不同方向的 RGB 照明把表面朝向编码为颜色组合。其重建过程不是直接把颜色读成距离,而是经过“RGB—法向或坡度—高度积分”三个环节。它具有单帧同步、稠密成像、细节对比度好和高精度测量的潜力,也无需独立的结构光投射模块。然而,几何信息既然寄托在颜色响应上,光源、材料和相机的变化就容易被误解释为形变。理解这条路线,既要看到它为什么能够呈现细腻的接触形貌,也要理解标定困难、材料光衰和长期漂移为什么会成为关键问题。文末附录用四个受控仿真预设,对照不同形态下的重建效果与误差。 一、相机看见的不是物体,而是它压出的膜面 三色光视触觉最巧妙的地方,并不只是使用了三种颜色,而是先把被测表面换成了一层相对可控的反射膜。物体从外侧压向透明弹性体,接触面的薄涂层随之变形;相机则从内部观察这层涂层。这样,黑色塑料与亮面金属即使有完全不同的光学反射性质,只要形成相近的接触形状,也可能在膜后产生相近的形貌信号。GelSight 的经典工作便利用这一机制,使几何观测在很大程度上不再依赖物体原有的颜色和光泽1。 图3 三色光视触觉的原理剖面。物体与膜面在外侧接触,彩色光从内部照亮反射层,相机接收膜面的反射图像。第三组光位于另一方位,因此在同一剖面中不能完整表示其空间位置。图中层厚、光线和器件位置仅为说明关系,不是制造尺寸,也不表示所有结构都必须包含同样的支撑层。 图3也揭示了这类测量的边界:首先被恢复的是受载膜面,并非物体未经接触时的完整三维形状。胶体可能跨过狭窄凹槽,较厚的保护层可能抹去细纹,软物体自身也会变形。因此,“图像能否正确还原膜面”和“膜面是否准确复制了物体”是两件事。即便光学反演十分准确,接触复制中的机械误差仍然存在。 统一反射膜让问题更可控,却不意味着它永远均匀不变。涂层厚度、拉伸、污染和磨损会改变反射;胶体厚度与硬度决定它能否贴合细节。这些因素后面会重新进入标定和稳定性问题。可以说,三色光不是消除了材料的影响,而是把难以控制的各种物体材质,转换成了一种更容易制造、维护与标定的传感膜。 二、三种颜色怎样变成局部坡度 把一个表面微元想象成一块很小的倾斜平板。它越正对某个方向的光源,通常接收到的有效照明越强。若三个方向分别使用红、绿、蓝光,这块小平板的朝向就会留下一个三通道“指纹”。这里的三个颜色代表照明方向,不是三个相机视角,也不是结构光中的条纹编号。白光下的一张普通彩色照片虽然也有 RGB,却通常没有这三组独立的方向信息。 图4 左图用三个相隔120°的方位说明颜色与方向的对应,这是一种便于理解的布局,而非所有装置的固定设计。右图表示倾斜膜面的局部打光:彩色箭头沿光传播方向,公式中的光源方向向量则从表面指向光源,与箭头相反。法向是局部表面的朝向,不是光线方向。右图为方便观看,将观察侧画在膜面上方;它采用局部示意坐标,不表示后文统一公式中的世界坐标正负方向。 在近似 Lambert 漫反射条件下,第 $k$ 个光源对应的亮度可写为 $$ I_k=\rho e_k\max(0,\boldsymbol n^{\mathsf T}\boldsymbol s_k). $$其中 $\boldsymbol n$ 是单位法向,$\boldsymbol s_k$ 从表面指向光源,$e_k$ 包含光强和通道响应,$\rho$ 是反照率。假定三个通道已分离、相机线性、没有阴影截断,并且表面在各通道共享一个灰谱反照率,就能把三个观测写成 $$ \boldsymbol I=\rho\boldsymbol L\boldsymbol n, \qquad \boldsymbol L= \begin{bmatrix} e_R\boldsymbol s_R^{\mathsf T}\\ e_G\boldsymbol s_G^{\mathsf T}\\ e_B\boldsymbol s_B^{\mathsf T} \end{bmatrix}. $$只要光照矩阵满秩,令 $\boldsymbol g=\rho\boldsymbol n$,便有 ...