欢迎光临
我们一直在努力

FAU检测的2D/3D分工:哪些缺陷必须用深度信息,哪些2D就够

1. FAU "深度"检测

光纤阵列单元(FAU,Fiber Array Unit)是光模块、硅光耦合、CPO 封装里的关键无源器件。它的质量直接决定耦合损耗和长期可靠性,所以 FAU 的出厂检测一直是光通信制造环节里最"卷"的工序之一。

但很多产线在检测方案上有一个普遍的认知偏差:把 FAU 的所有外观问题都当成"2D 外观缺陷"来处理。

划痕、崩边、污染,这些确实是 2D 相机能拍到的表面缺陷。可 FAU 真正影响光学性能的,往往不是这些"看得见"的东西,而是看不见的深度量:

  • 槽深是否一致
  • 光纤凸出高度是否在窗口内
  • 相邻光纤之间的高度差有多大
  • 点胶的胶量体积是否合适
  • 端面是否有凹陷

这些量,2D 相机拍不到。2D 图像只记录反射光的强度分布,深度信息在成像那一刻就已经被"压平"了。于是问题来了:是不是所有 FAU 缺陷都必须上 3D?

答案是否定的。3D 传感器(白光干涉、激光共焦、线激光)能测深度,但速度慢、成本高、对产线节拍不友好。如果全检都用 3D,产线根本跑不起来。

所以真正合理的思路不是"2D 还是 3D",而是2D 和 3D 怎么分工。这篇文章就围绕三个问题展开:

  • 哪些缺陷必须用 3D 深度信息才能判定;
  • 哪些缺陷 2D 就足够,没必要浪费 3D 的节拍;
  • 2D 和 3D 数据在同一个工位上怎么融合,坐标怎么对齐。
  • 2. 2D 缺陷和深度量

    在讨论分工之前,先把两类检测对象的物理本质分清楚,后面的判断才有依据。

    2.1 2D 缺陷:“表面反射率的变化”

    2D 相机(面阵 CMOS/CCD)记录的是视场内每个像素接收到的光强。当表面出现划痕、崩边、污染时,这些区域的反射特性会发生变化:

    • 划痕:破坏了表面微观结构,散射增强,在图像上表现为亮线或暗线;
    • 崩边:边缘几何缺失,形成阴影或高亮反光;
    • 污染:异物覆盖,吸收或散射光线,表现为色斑、暗斑。

    这些缺陷的共同点是:它们在图像平面上有明确的、可分辨的灰度/色彩对比。只要打光合适(同轴光、环形光、暗场),2D 相机就能稳定检出。

    2.2 深度量:“Z 方向的高度/体积信息”

    深度量描述的是物体表面在垂直于成像平面方向上的位置。它不体现在灰度对比里,而体现在相位、共焦响应、三角测量等物理量上:

    深度量物理含义对 FAU 的影响
    槽深 V 型槽底部到基准面的距离 决定光纤落位精度
    光纤凸出高度 光纤端面相对基板的高度 影响研磨量与耦合距离
    相邻光纤高度差 阵列内各光纤端面的高度一致性 直接决定通道间损耗差异
    胶量体积 点胶区域的体积 影响固定强度与热应力
    端面凹陷 端面局部低于基准的深度 影响端面质量与回波损耗

    关键点在于:这些量在 2D 图像里可能"看起来正常"。一根光纤凸出高度超差,2D 图像上它和合格品几乎没区别——因为灰度对比没有变化,变的只是高度。

    这就是为什么"2D 全检 + 人工抽检"的方案在 FAU 上经常漏检:漏掉的恰恰是最影响光学性能的深度量。

    3. 必须用 3D 的缺陷

    下面这几类,2D 无论怎么打光都判不了,必须上 3D。

    3.1 光纤凸出高度

    光纤凸出高度是 FAU 最核心的深度指标之一。它指的是光纤端面相对基板基准面的高度,通常在几十微米量级,公差窗口往往只有 ±1~2 μm。

    为什么 2D 判不了?因为 2D 图像里,光纤端面和基板表面的灰度差异取决于材料和镀层,而不是高度。一根凸出 5 μm 的光纤和一根凸出 1 μm 的光纤,在 2D 图像上可能完全一样。

    判定方式:用白光干涉或激光共焦扫描端面区域,提取每根光纤端面的高度值,与基准面做差。

    3.2 相邻光纤高度差

    这是比单根凸出高度更"隐蔽"的指标。单根光纤高度都在窗口内,但相邻两根之间差得太多,同样会导致通道间耦合损耗不一致。

    在 8 通道、12 通道甚至更高密度的 FAU 上,这个指标尤其关键。2D 图像完全无法反映通道间的高度一致性——它只能看到"每根光纤都在那里",看不到"它们是不是一样高"。

    判定方式:3D 扫描后提取阵列内所有光纤端面高度,计算相邻差值(或峰谷值 PV),与阈值比较。

    3.3 端面凹陷

    端面凹陷指的是端面局部区域低于基准面,形成"坑"。它可能来自研磨不均、材料缺陷或清洗损伤。

    2D 图像上,凹陷区域可能因为阴影而呈现暗区,但这个暗区无法量化深度——你分不清是 0.5 μm 的浅坑还是 5 μm 的深坑,也分不清是凹陷还是污染。

    判定方式:3D 高度图直接给出凹陷深度和面积,可量化判定。

    3.4 槽深与胶量体积(延伸项)

    严格说,槽深和胶量体积更偏"工艺参数检测"而非"外观缺陷检测",但它们同样只能靠 3D:

    • 槽深:V 槽深度决定光纤落位,需 3D 轮廓测量;
    • 胶量体积:点胶区域的体积需要 3D 点云积分计算,2D 只能看到胶的投影面积,看不到厚度。

    如果产线把这两项也纳入全检,那 3D 的节拍压力会更大——这也是后面要讲"分区精测"的原因。

    4. 2D 缺陷清单

    反过来,下面这些缺陷用 2D 完全够用,硬上 3D 是浪费。

    4.1 划痕长度与宽度

    划痕是典型的 2D 缺陷。它的判定指标是长度、宽度、走向、数量,这些都在图像平面上可直接测量。

    用 3D 测划痕不仅没必要,还可能更差:3D 传感器的横向分辨率通常低于 2D 相机,划痕这种细长特征在点云里反而不容易提取。

    2D 判定方式:暗场照明 + 亚像素边缘提取,测量划痕长度、宽度,按阈值分级。

    4.2 污染面积与分布

    污染的核心指标是面积、位置、密度。2D 图像通过颜色/灰度分割就能给出污染区域的面积和分布,配合连通域分析还能区分孤立污染点和成片污染。

    3D 对污染几乎无能为力——污染物的高度可能只有亚微米级,3D 传感器未必能分辨,而且点云分割污染区域的成本远高于 2D 图像分割。

    2D 判定方式:多光谱或彩色成像 + 阈值分割 + 连通域分析,输出污染面积占比。

    4.3 崩边尺寸

    崩边是边缘几何缺失,2D 图像上表现为边缘轮廓的缺口。通过边缘检测和轮廓拟合,可以量化崩边的长度和深度(在图像平面内的投影尺寸)。

    注意:如果崩边伴随深度方向的材料剥落,那部分需要 3D 补充;但单纯的边缘缺口,2D 足够。

    4.4 2D/3D 能力对照表

    缺陷/指标2D 能否判定3D 是否必需说明
    划痕长度/宽度 ✅ ❌ 图像平面内可直接测量
    污染面积/分布 ✅ ❌ 灰度/色彩分割即可
    崩边尺寸 ✅ ⚠️ 部分 边缘缺口 2D 够,深度剥落需 3D
    光纤凸出高度 ❌ ✅ 灰度无差异,必须测高
    相邻光纤高度差 ❌ ✅ 需阵列内高度一致性
    端面凹陷 ❌ ✅ 需量化深度
    槽深 ❌ ✅ 需 3D 轮廓
    胶量体积 ❌ ✅ 需点云积分

    5. 同工位 2D/3D 融合

    明确了分工,接下来的问题是:在同一个检测工位上,2D 和 3D 怎么配合?

    最朴素的做法是"2D 拍一遍、3D 扫一遍、两套结果各自判定"。但这样有两个问题:一是 3D 全幅扫描太慢,二是两套结果没有关联,无法互相印证。

    更合理的架构是**“2D 快速筛查 + 可疑区域 3D 精测”**。

    5.1 整体流程

    #mermaid-svg-kqdVouSiHttrsns4{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kqdVouSiHttrsns4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kqdVouSiHttrsns4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kqdVouSiHttrsns4 .error-icon{fill:#552222;}#mermaid-svg-kqdVouSiHttrsns4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kqdVouSiHttrsns4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kqdVouSiHttrsns4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kqdVouSiHttrsns4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kqdVouSiHttrsns4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kqdVouSiHttrsns4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kqdVouSiHttrsns4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kqdVouSiHttrsns4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kqdVouSiHttrsns4 .marker.cross{stroke:#333333;}#mermaid-svg-kqdVouSiHttrsns4 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kqdVouSiHttrsns4 p{margin:0;}#mermaid-svg-kqdVouSiHttrsns4 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-kqdVouSiHttrsns4 .cluster-label text{fill:#333;}#mermaid-svg-kqdVouSiHttrsns4 .cluster-label span{color:#333;}#mermaid-svg-kqdVouSiHttrsns4 .cluster-label span p{background-color:transparent;}#mermaid-svg-kqdVouSiHttrsns4 .label text,#mermaid-svg-kqdVouSiHttrsns4 span{fill:#333;color:#333;}#mermaid-svg-kqdVouSiHttrsns4 .node rect,#mermaid-svg-kqdVouSiHttrsns4 .node circle,#mermaid-svg-kqdVouSiHttrsns4 .node ellipse,#mermaid-svg-kqdVouSiHttrsns4 .node polygon,#mermaid-svg-kqdVouSiHttrsns4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-kqdVouSiHttrsns4 .rough-node .label text,#mermaid-svg-kqdVouSiHttrsns4 .node .label text,#mermaid-svg-kqdVouSiHttrsns4 .image-shape .label,#mermaid-svg-kqdVouSiHttrsns4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-kqdVouSiHttrsns4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-kqdVouSiHttrsns4 .rough-node .label,#mermaid-svg-kqdVouSiHttrsns4 .node .label,#mermaid-svg-kqdVouSiHttrsns4 .image-shape .label,#mermaid-svg-kqdVouSiHttrsns4 .icon-shape .label{text-align:center;}#mermaid-svg-kqdVouSiHttrsns4 .node.clickable{cursor:pointer;}#mermaid-svg-kqdVouSiHttrsns4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-kqdVouSiHttrsns4 .arrowheadPath{fill:#333333;}#mermaid-svg-kqdVouSiHttrsns4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-kqdVouSiHttrsns4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-kqdVouSiHttrsns4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kqdVouSiHttrsns4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-kqdVouSiHttrsns4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kqdVouSiHttrsns4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-kqdVouSiHttrsns4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-kqdVouSiHttrsns4 .cluster text{fill:#333;}#mermaid-svg-kqdVouSiHttrsns4 .cluster span{color:#333;}#mermaid-svg-kqdVouSiHttrsns4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-kqdVouSiHttrsns4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-kqdVouSiHttrsns4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-kqdVouSiHttrsns4 .icon-shape,#mermaid-svg-kqdVouSiHttrsns4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-kqdVouSiHttrsns4 .icon-shape p,#mermaid-svg-kqdVouSiHttrsns4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-kqdVouSiHttrsns4 .icon-shape .label rect,#mermaid-svg-kqdVouSiHttrsns4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-kqdVouSiHttrsns4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-kqdVouSiHttrsns4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-kqdVouSiHttrsns4 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

    否

    是

    FAU 上料定位

    2D 全幅成像

    2D 缺陷检测:划痕/污染/崩边

    是否存在可疑区域

    2D 判定通过

    生成 ROI 列表

    3D 对 ROI 精测

    深度量判定:高度/凹陷/胶量

    2D+3D 结果融合

    输出 OK/NG 与缺陷分类

    这个流程的关键在于:3D 不是全幅扫描,而是只扫 2D 圈出来的 ROI。这样 3D 的扫描时间从"整片"降到"几个小区域",节拍压力大幅下降。

    5.2 2D 筛查阶段

    2D 阶段承担两件事:

  • 直接判定 2D 缺陷:划痕、污染、崩边,按阈值直接给结果;
  • 圈定 3D 精测 ROI:把"可能有深度问题"的区域标出来。
  • 第二件事是融合的核心。哪些区域需要送 3D?典型规则包括:

    • 光纤端面区域(必测高度);
    • 2D 上出现异常暗区/亮区但无法归类为划痕或污染的区域(可能是凹陷);
    • 点胶区域(测胶量);
    • V 槽区域(测槽深)。

    这里有个工程细节:ROI 不能只按缺陷位置圈,还要按"必测区域"圈。因为光纤高度这类指标,即使 2D 上完全正常也必须测——它属于"结构性必测项",不是"可疑项"。

    所以 ROI 列表实际上是两类来源的并集:

    • 结构性 ROI:光纤端面、V 槽、点胶区,固定必测;
    • 可疑性 ROI:2D 检出异常但无法定性的区域,动态生成。

    5.3 3D 精测阶段

    3D 阶段对每个 ROI 做高精度扫描。这里要注意传感器选型:

    • 白光干涉:垂直分辨率最高(纳米级),适合测光纤高度、端面凹陷,但速度最慢,适合小 ROI;
    • 激光共焦:垂直分辨率高,速度中等,适合中等 ROI;
    • 线激光:速度快,适合大范围轮廓,但垂直精度略低,适合槽深、胶量这类公差较宽的量。

    实际产线往往是混合使用:光纤高度用白光干涉或共焦,槽深/胶量用线激光。

    5.4 结果融合

    2D 和 3D 的结果最终要合成一个判定。融合逻辑通常是:

    • 2D 缺陷按 2D 阈值判定;
    • 3D 深度量按 3D 阈值判定;
    • 任一超差即 NG,并记录缺陷类型与位置;
    • 两者都 OK 才判 OK。

    融合的价值不只是"合并结果",更在于互相印证:2D 上看到的暗区,3D 测出来是凹陷还是污染,可以直接定性,减少误判。

    6. 3D 点云与 2D 图像的坐标对齐

    融合方案能不能落地,很大程度上取决于一个工程问题:3D 点云和 2D 图像怎么对齐到同一个坐标系?

    如果坐标对不上,2D 圈出的 ROI 在 3D 里就找不到对应位置,整个"先筛查再精测"的流程就断了。

    6.1 为什么会有对齐问题

    2D 相机和 3D 传感器是两套独立的光学系统,它们的差异体现在:

    • 视场不同:2D 相机视场通常大于 3D 传感器;
    • 光轴不同:两个传感器安装位置不同,存在平移和旋转;
    • 畸变不同:2D 镜头有径向/切向畸变,3D 传感器有自己的扫描畸变;
    • 分辨率不同:2D 是像素网格,3D 是点云,采样密度不一样。

    所以不能简单地把 2D 像素坐标当成 3D 坐标用,必须做标定。

    6.2 标定方法

    常用的对齐方法是基于标定板的联合标定:

  • 制作一块同时包含 2D 特征(棋盘格/圆点)和 3D 特征(已知高度的台阶)的标定板;
  • 2D 相机拍摄标定板,提取特征点像素坐标;
  • 3D 传感器扫描同一块标定板,提取对应特征点的三维坐标;
  • 求解 2D 像素坐标到 3D 坐标的变换关系(单应矩阵 + 深度映射,或完整的相机-传感器外参)。
  • 对于固定工位的产线设备,标定一次后可以长期使用,只需定期复检。

    6.3 坐标变换的实现

    标定完成后,2D 像素坐标 (u, v) 到 3D 坐标 (X, Y, Z) 的映射可以写成:

    import numpy as np

    # 标定得到的单应矩阵 H(3×3),将 2D 像素坐标映射到 3D 传感器的 XY 平面
    H = np.array([
    [1.002, 0.003, –12.5],
    [–0.002, 0.998, 8.3],
    [0.0, 0.0, 1.0]
    ])

    def pixel_to_sensor_xy(u, v):
    """将 2D 像素坐标映射到 3D 传感器的 XY 坐标"""
    p = np.array([u, v, 1.0])
    q = H @ p
    return q[0] / q[2], q[1] / q[2]

    # 示例:2D 图像上检出的可疑点 (1024, 768)
    x, y = pixel_to_sensor_xy(1024, 768)
    print(f"对应 3D 传感器坐标: ({x:.2f}, {y:.2f})")

    拿到 XY 后,再到 3D 点云里找该位置附近的高度值,就完成了"2D 定位 → 3D 取高"的闭环。

    6.4 对齐精度的要求

    对齐精度直接决定 ROI 是否准确。经验上:

    • ROI 尺寸通常比缺陷本身大 2~3 倍,留出对齐误差余量;
    • 对齐误差应控制在 ROI 尺寸的 1/5 以内;
    • 对于光纤高度这类小目标,ROI 要按单根光纤的间距来定,不能太大,否则会把相邻光纤的高度混进来。

    如果对齐误差偏大,常见原因是标定板与产品不在同一工作距离,或者 2D 镜头畸变未校正。这两点在实际调试中要重点排查。

    7. 工程落地建议

    最后给几条落地层面的建议。

    7.1 先做缺陷分类,再定传感器

    不要一上来就选传感器。先把 FAU 的缺陷清单列全,逐项标注"2D 可判 / 3D 必需 / 需融合",再根据 3D 必需项的数量和精度要求选传感器。这样能避免"买了高精度 3D 却只用来测划痕"的浪费。

    7.2 3D 只测该测的

    3D 的节拍是瓶颈,所以 3D 的扫描范围要尽量小。结构性 ROI 固定、可疑性 ROI 动态,两者结合能把 3D 扫描面积压到整片的 10%~20%,节拍基本可控。

    7.3 标定要纳入日常维护

    2D/3D 对齐不是"标一次管一辈子"。产线震动、温度漂移、镜头污染都会让对齐精度下降。建议把标定复检纳入设备日常点检,比如每班次用标准件验证一次对齐误差。

    7.4 数据要能追溯

    2D 图像、3D 点云、ROI 列表、判定结果要一起存档。一旦出现客诉或批次异常,能回溯到具体是哪一项超差、当时的 2D/3D 数据长什么样。这对 FAU 这种高价值器件尤其重要。

    8. 总结

    回到标题的问题:哪些缺陷必须用深度信息,哪些 2D 就够?

    • 必须 3D:光纤凸出高度、相邻光纤高度差、端面凹陷、槽深、胶量体积——这些量的共同点是"灰度无差异、高度有差异",2D 原理上就判不了;
    • 2D 足够:划痕长度/宽度、污染面积/分布、崩边尺寸——这些在图像平面上有明确对比,2D 又快又准;
    • 融合方式:2D 全幅快速筛查 + 结构性/可疑性 ROI 送 3D 精测,3D 不全幅扫描;
    • 对齐是前提:2D 像素到 3D 坐标的联合标定必须做扎实,否则 ROI 对不上,融合就是空谈。

    FAU 检测的 2D/3D 分工,本质上不是"哪个传感器更强"的问题,而是把每个缺陷放到它最合适的测量维度上去。2D 负责"看得见"的表面,3D 负责"看不见"的深度,两者在同一个工位上各司其职,才是能跑通产线的方案。

    赞(0)
    未经允许不得转载:171主机测评 » FAU检测的2D/3D分工:哪些缺陷必须用深度信息,哪些2D就够
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址