1. 光度立体法到底解决的是什么问题
1.1 一句话把光度立体法说清楚
光度立体法(Photometric Stereo)解决的是一件听起来有点玄乎、但工业现场天天在做的事:在相机和被测物都不动的前提下,只靠切换打光方向,把物体表面的微观凹凸和法线方向算出来。它输出的不是三维点云,而是一张逐像素的表面法线图(Normal Map)加一张反照率图(Albedo),这两张图合起来,就足够还原出物体的凹凸纹理、判断划痕、凹陷、氧化、压印字符这些表面形貌问题。
我第一次接触这个概念的时候其实走错了方向,以为它是结构光那种靠投影条纹算深度的方案。后来才意识到,光度立体法和结构光是两个完全不同维度的东西。结构光管的是"这个面在哪里、多高",光度立体法管的是"这个面朝哪个方向、是平是凹"。前者给你几何位置,后者给你表面细节。对于检测一颗螺丝的螺纹是否完整、一片光伏电池片上的隐裂、一个手机中框的微小划痕,几何位置信息常常是多余的,法线信息才是真正能区分缺陷的抓手。
这也是为什么它这几年在工业视觉领域越来越吃香。传统二维灰度检测靠对比度和纹理,遇到低对比度的浅划痕、或者和背景反照率接近的凹凸缺陷,就容易漏检。光度立体法把反照率和法线解耦之后,可以在反照率图上做缺陷检测,也可以在法线图上做法线散度、曲率分析,两个通道互补,直接把可检缺陷类型扩大一截。
1.2 它适合谁,不适合谁
先泼冷水,说清楚边界。光度立体法不是万能钥匙,它有明确的适用前提:
- 表面不能是镜面或强金属反射。经典光度立体法依赖朗伯体假设(各向同性漫反射),高反光金属、镜面、玻璃这类材质要么做偏振预处理,要么直接换方案。
- 相机和被测物必须相对静止。它默认像素级对齐,你一动,整套数学就崩了。
- 光源方向必须已知且可复现。这是整个方法能成立的地基,也是很