前言

打光是视觉项目里最容易被低估的一环。算法不行可以调,相机不够可以换,但打光错了,神仙来了也救不了

本文不讲理论光谱分析,只讲产线上三种最常见的打光困境和对应的解决方案:

  1. 金属件反光 — 高光干扰,特征被吃掉
  2. 透明塑料件 — 轮廓看不清,边缘检测=猜
  3. PCB 焊盘检测 — 背景太花,特征分割困难

方案 1:金属件反光 — 低角度环形光 + 偏振

问题

金属表面(轴承、螺丝、镜面不锈钢)的打光最大问题是:高光反射把特征淹没了

1
2
3
4
5
6
垂直打光效果:
🟡🟡🟡🟡🟡   ← 整个面白花花一片
🟡🟡🔩🟡🟡   ← 螺丝轮廓被高光吃掉
🟡🟡🟡🟡🟡

实际上螺丝的六角头在里面,完全看不出来

方案

低角度环形光(Low-Angle Ring Light)+ 偏振片

  • 光源角度:15°-30°(低于 30° 叫低角度)
  • 颜色:白色(通用)或蓝色(对金属纹理增强更好)
  • 偏振:光源 + 镜头前各加一片偏振片,方向垂直
1
2
3
4
低角度打光效果:
⚫⚫⚫⚫⚫
⚫⚫🔧⚫⚫   ← 螺丝六角头清晰可见
⚫⚫⚫⚫⚫

硬件配置

部件推荐型号参考价
低角度环形光源海康 MV-LR-72-W(72mm 外径,白色)¥450
偏振片(光源用)线性偏振膜,按光源尺寸裁切¥30
偏振片(镜头用)海康 MVL-PF12.5(C口偏振镜)¥120

Halcon 处理:增强特征

* 偏振后图片对比度可能偏低,拉一下
read_image (Image, 'metal_screw.tiff')
* 高斯去噪保留边缘
gauss_filter (Image, ImageGauss, 3)
* 动态阈值增强六角头特征
mean_image (ImageGauss, ImageMean, 31, 31)
sub_image (ImageGauss, ImageMean, ImageSub, 2, 128)
* 圆形 ROI 找螺丝中心
gen_circle (ROI, 256, 256, 200)
reduce_domain (ImageSub, ROI, ImageReduced)

注意事项

  • 偏振片会损失约 50% 光强,需要相应提高光源亮度或曝光时间
  • 低角度安装意味着工作距离短,注意不要撞到被测物
  • 如果工件带油污,先用气枪吹干净,否则油污散射会引入伪特征

方案 2:透明塑料件 — 背光源 + 暗场照明

问题

透明塑料瓶盖、亚克力面板、薄膜的检测难点:常规打光下,透明物体几乎不可见

1
2
3
4
5
6
正面打光:
💡  ← 光源
↓↓↓
🟫🟫🟫   ← 相机看到的是背景颜色
🟫⬜🟫   ← 瓶盖边缘根本找不到
🟫🟫🟫

方案

高亮背光源 + 暗场照明

  • 背光源(透射光):物件放在光源和相机之间,轮廓变黑
  • 暗场照明(反射光):检查内部气泡、划痕、杂质
1
2
3
4
5
相机
↓↓↓
🟫⬜🟫   ← 瓶盖边缘是黑色,内部透光
⬜⬜⬜
💡💡💡   ← 背光源从下方打

硬件配置

部件推荐型号参考价
背光源海康 MV-BL-100-100-W(100×100mm 白色)¥580
暗场光源海康 MV-DL-60-R(60mm 红色环形暗场)¥400
匀光板背光自带,无需另购

Halcon 处理:边缘提取

* 背光下,透明件轮廓为黑色
read_image (Image, 'plastic_cap.bmp')
* 用大阈值二值化提取完整轮廓
threshold (Image, Region, 0, 80)
* 填充内部空洞
fill_up (Region, RegionFill)
* 边缘提取
boundary (RegionFill, RegionBorder, 'inner')
* 用边缘拟合圆
fit_circle_contour_xld (RegionBorder, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)

透明件检测的 3 个要点

  1. 背光要调到足够亮,让透光部分接近白色饱和
  2. 镜头光圈不要收到最小(f/8 左右最佳),太小的光圈会让划痕看不出来
  3. 红/蓝光选择:透明塑料用红色背光穿透力更强;半透明磨砂用蓝色背光对比度更高

方案 3:PCB 焊盘检测 — 同轴光源 + 分时多角度

问题

PCB 检测(焊盘有无、偏位、虚焊)的痛点:背景太花

PCB 上有绿油、走线、字符丝印、阻焊层、铜箔,打光后一幅画面里什么都有,焊盘特征淹没在杂讯里。

1
2
3
4
常规打光:
🟩🟩🟩🟩🟩
🟩🟨🟩🟨🟩   ← 铜箔亮、绿油暗、锡膏反光
🟩⬜🟨⬜🟩   ← 焊盘和走线混在一起分割不了

方案

同轴光源(Coaxial Light)+ 多角度分时采图

  • 同轴光源:光线通过分光镜垂直照射,消除阴影和反光角度差异
  • 分时采图:用不同色温/角度的光源依次打光,从多张图中合成信息
1
2
3
4
同轴光效果:
🟥🟥🟥🟥🟥   ← 背景均匀
🟥🟨🟥🟨🟥   ← 焊盘清晰突起
🟥🟨🟥🟨🟥   ← 走线不再干扰

硬件配置

部件推荐型号参考价
同轴光源海康 MV-CX-50-W(50×50mm,白色同轴)¥1,200
远心镜头(可选)海康 MVL-T-25-0.3X¥1,800
光源控制器数字式 4 通道 PWM 控制器¥600

Halcon 处理:差分法提取焊盘

* 策略:采两张图,一张亮同轴光,一张不亮环境光
read_image (ImageCoax, 'pcb_coax.tiff')    * 同轴光照
read_image (ImageAmbient, 'pcb_ambient.tiff')  * 环境光

* 差分:焊盘在两张图之间变化最大
sub_image (ImageCoax, ImageAmbient, ImageDiff, 1, 128)

* 阈值分割提取焊盘区域
threshold (ImageDiff, Region, 135, 255)

* 连通域分析,过滤噪声
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 50, 99999)

* 焊盘位置和数量校验
count_obj (SelectedRegions, NumPads)
disp_message (3600, '检测到焊盘: ' + NumPads + ' 个', 'window', 12, 12, 'black', 'true')

PCB 检测的加分技巧

  • 多光谱合成:红色光源穿透绿油层看铜箔,蓝色光源看锡膏反光。可以在光源控制器上配 2 个通道,各拍一张后做融合
  • 远心镜头优先:PCB 检测尽量用远心镜头,没有透视畸变,焊盘测量更准
  • 时间换精度:如果产线节拍允许(>5s/片),多角度分时打光远比单次"凑合打光"效果好

总结:打光方案速查表

检测对象推荐打光方式光源类型关键技术点
金属件(螺丝、轴承、镜面)低角度环形 + 偏振白色/蓝色偏振片90°交叉,角度<30°
透明塑料(瓶盖、薄膜、亚克力)背光源 + 暗场红/蓝背光背光要饱和,暗场找瑕疵
PCB(焊盘、走线、丝印)同轴 + 分时多角度同轴白+多色差分法提取,远心镜头
印刷品(二维码、字符、LOGO)穹顶光源白色消除反光,均匀照明
大面积检测(手机玻璃、面板)线性光源 + 线扫相机高亮白配合线扫系统

打光的核心原则只有一条:让目标特征和背景之间的对比度最大化,其他都是围绕这个目标的技术路径。

发布日期:2026-07-02
标签:#机器视觉 #打光 #光源选型 #Halcon