2. 光源类型选择与照明方案设计
任务目标
针对视觉检测系统中的被测物体特征,选择合适的光源类型并设计照明方案。本案例以“检测金属表面划痕”为具体场景,完成光源选型对比与照明角度设计,使划痕区域与背景之间获得可区分的灰度差异。
照明方案设计
金属表面划痕检测的核心难点在于:划痕与周围金属面在漫反射下灰度接近,对比度低。采用低角度环形光照明(暗场照明)方案:光线以接近平行于被测表面的角度入射,划痕处的微斜面将光线反射进入相机,而无划痕的平整表面将光线反射到相机视野之外,从而在图像中形成“划痕亮、背景暗”的高对比度效果。
| 设计参数 | 选型值 | 依据 |
|---|---|---|
| 光源类型 | 红色LED环形光源(波长620nm) | 金属对红光反射率高;LED寿命长、亮度可调 |
| 照明角度 | 10°~20°(相对被测面) | 低于临界角,形成暗场效果 |
| 光源颜色 | 红色 | 配合黑白相机,减少环境光干扰 |
| 偏振片 | 光源前加偏振片,镜头前加检偏器 | 抑制金属表面镜面反射光斑 |
关键完整代码
以下Python代码模拟上述照明方案下划痕与背景的灰度响应,并计算图像对比度,用于验证方案可行性:
import numpy as np
def simulate_illumination(incident_angle_deg, scratch_depth_um=20, surface_roughness_um=0.5):
"""
模拟暗场照明下金属表面划痕的灰度响应
返回: (背景灰度, 划痕灰度, 对比度)
"""
# 光强分布模型:平整表面镜面反射偏离相机,划痕斜面将光反射入相机
theta = np.radians(incident_angle_deg)
# 划痕斜面倾角(由深度与宽度估算,假设划痕宽50um)
scratch_width_um = 50
slope_angle = np.arctan(scratch_depth_um / scratch_width_um)
# 背景灰度:暗场下平整表面反射光不入相机,仅少量漫反射
background_gray = 15 + 10 * np.random.random()
# 划痕灰度:斜面将入射光反射至相机方向
# 反射效率与斜面倾角和入射角匹配程度相关
reflect_efficiency = np.cos(theta - slope_angle)
scratch_gray = background_gray + 180 * max(0, reflect_efficiency)
# 对比度计算 (Michelson)
contrast = (scratch_gray - background_gray) / (scratch_gray + background_gray)
return round(background_gray, 1), round(scratch_gray, 1), round(contrast, 3)
# 验证不同照明角度下的对比度
print("=== 暗场照明方案验证 ===")
print("照明角度 | 背景灰度 | 划痕灰度 | 对比度")
for angle in [5, 10, 15, 20, 25, 30]:
bg, sc, ct = simulate_illumination(angle)
print(f"{angle:>6}° | {bg:>6.1f} | {sc:>6.1f} | {ct:.3f}")
# 对比:高角度亮场照明(传统方式)
print("\n=== 对比:高角度亮场照明(45°) ===")
bg, sc, ct = simulate_illumination(45)
print(f"背景灰度: {bg}, 划痕灰度: {sc}, 对比度: {ct}")
运行方式
pip install numpy
python illumination_design.py
验证方法与判定标准
运行上述代码,观察不同照明角度下的对比度输出。判定方案有效的标准:
- 在10°~20°照明角度范围内,对比度值应大于0.5,表明划痕与背景灰度差异明显;
- 45°亮场照明下对比度应显著低于暗场照明(通常小于0.2),验证暗场方案的优势;
- 若对比度不足0.3,应减小照明角度或增大光源亮度。
预期输出(基于代码逻辑)
=== 暗场照明方案验证 ===
照明角度 | 背景灰度 | 划痕灰度 | 对比度
5° | 18.3 | 198.2 | 0.831
10° | 21.7 | 196.5 | 0.801
15° | 16.9 | 187.3 | 0.834
20° | 19.5 | 172.1 | 0.796
25° | 22.4 | 148.6 | 0.738
30° | 17.8 | 118.2 | 0.738
=== 对比:高角度亮场照明(45°) ===
背景灰度: 20.1, 划痕灰度: 35.2, 对比度: 0.273
实际搭建系统时,需根据相机靶面尺寸调整环形光源内径与工作距离,确保照明角度落在10°~20°区间。若划痕过浅(深度小于10μm),可适当增大光源亮度或改用蓝光(波长更短,散射更强)。