R&D
CENTER

Photometric Stereo:用 2D 相机看出表面高低起伏的方法

一边改变光源方向一边拍摄多张图像,就能计算出每个像素处表面朝向哪一侧。本课说明如何用曲率图呈现肉眼和普通图像中看不见的浅压痕。

基础4 分钟1 浏览
本课要点
  1. 同一个表面会因光线照射方向不同而呈现不同亮度。利用这一差异,反推出每个像素处表面的方向(法线)。
  2. 输出结果为反射率(albedo)、法线图(normal map)、曲率图(mean-curvature)。浅压痕在曲率图中最明显。
  3. 无需 3D 相机,只用 2D 相机和光源就能检测表面凹凸。
  4. 拍摄期间零件必须保持静止,像镜面一样光亮的表面需要额外处理。

金属表面上浅浅的压痕,颜色和亮度都与周围相同,因此在普通光源拍摄的图像中几乎看不见。但从侧面打光时,压痕一侧的壁面会变亮,另一侧则会变暗。Photometric Stereo 从多个方向系统地测量这一现象,以像素为单位计算表面的斜率。

零件 依次点亮 8 个方向的光源拍摄 Albedo无阴影的反射率 Normal map表面方向 Mean curvature突出压痕·划伤 Depth对法线积分
fineAi Viewer & Inspector 用 8 方向光源计算 Normal、Depth 和曲率。输出的图可直接作为异常检测模型的输入。

原理:亮度由表面方向与光线方向的夹角决定

在哑光(漫反射)表面上,一个点的亮度大致如下。

亮度 = 反射率 × 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 视觉与点云 会讲解。