金属表面上浅浅的压痕,颜色和亮度都与周围相同,因此在普通光源拍摄的图像中几乎看不见。但从侧面打光时,压痕一侧的壁面会变亮,另一侧则会变暗。Photometric Stereo 从多个方向系统地测量这一现象,以像素为单位计算表面的斜率。
原理:亮度由表面方向与光线方向的夹角决定
在哑光(漫反射)表面上,一个点的亮度大致如下。
亮度 = 反射率 × cos(表面法线与光线方向之间的夹角)
光线正对表面照射时较亮,越倾斜就越暗。每个像素的未知数为反射率 1 个和法线方向 2 个(斜率),共 3 个。在已知光线方向的情况下拍摄 3 张以上,就能解出这些未知数。用 8 个方向拍摄,即使部分图像因阴影或高光而无法使用,仍能用其余图像稳定求解。
四种输出结果
- Albedo(反射率) — 去除光照造成的阴影后,表面本来的亮度。可看出污渍、变色、印刷不良。
- Normal map(法线图) — 每个像素处表面朝向的方向。通常用 RGB 颜色表示 X·Y·Z 分量。
- Depth(深度) — 对法线积分得到的相对高度。用于观察整体的翘曲或变形。
- Mean curvature(平均曲率) — 表面弯曲的急剧程度。平坦面接近 0,在压痕·划伤的边缘数值会大幅跳变。浅缺陷在曲率图中最容易看到。
用于检测的方法
在 Multi-Inspector 中,通过检测模式类型(modeN_type)选择使用哪一种图。
| 模式 | 输入图像 |
|---|---|
albedo, albedo-clahe |
反射率图(是否包含对比度校正) |
mean-curvature, mean-curvature-clahe |
曲率图 |
normal-map |
法线图 |
这些图已经是整理好的图像,无需额外旋转即可直接送入异常检测模型。只用良品的曲率图训练,模型就会把曲率与正常状态不同、出现跳变的地方找出来判为异常。
注意事项
- 拍摄期间零件必须保持静止。 拍摄 8 张图像期间零件如果移动,像素对应关系就会被破坏。请在静止状态下拍摄,或使用光源切换速度快的控制器(如 IDGC)。
- 光亮表面会偏离原理。 镜面反射不符合上述公式,会产生高光。可以排除出现高光的图像后再计算,或用漫射板使光线柔和。
- 必须准确知道光源方向。 光源位置改变时要重新标定。
如果需要真正的 3D 形状(高度 mm),请使用 3D 相机。下一课 3D 视觉与点云 会讲解。