半导体芯片视觉定位:9 点标定完整工程方案
(平面固晶机 / 点胶机 / 焊线机 / 芯片拾取:相机垂直向下、无 Z 变化、纯 XY 平面定位,这是半导体行业最标准、最稳定、量产级方案)
一、方案定位:为什么半导体用「9 点标定」?
半导体视觉定位 99% 满足:
平台平面运动(XYθ,Z 固定或很小)
相机垂直安装(垂直光路,无强透视)
精度要求高(μm 级)
速度要求高(毫秒级转换)
9 点仿射 / 单应性标定 = 像素 ↔ 物理坐标直接输出:芯片物理坐标 (mm) + 旋转角度 (°)满足:固晶、粘片、AOI、切割对位、焊线对位。
二、系统构成(半导体标准配置)
相机:全局快门工业相机(120W~500W)
镜头:远心镜头 / 高精度定焦镜头(低畸变)
光源:同轴光 / 环形无影光(芯片打光关键)
运动平台:XYθ 伺服 / 音圈平台
标定件:9 点标定板(玻璃光刻板 / 陶瓷 Mark 点)
算法:9 点最小二乘标定 + 亚像素中心提取
三、标定目标(数学输出)
建立:像素坐标 (u, v) ↔ 平台物理坐标 (X, Y)变换模型:

最终输出:3×3 单应性矩阵 H(推荐,比仿射更稳)
四、半导体 9 点标定实施步骤(现场可直接照做)
步骤 1:制作 / 安装 9 点标定板
要求:
3×3 均匀分布 9 个 Mark
精度:±1μm ~ ±5μm
材质:玻璃光刻 / 陶瓷 / 不锈钢蚀刻
布满整个视场(不要只在中间)
步骤 2:运动平台走 9 点网格
固定相机,移动平台,使标定板中心依次到达相机视野中心。记录:
9 组 平台坐标 Pw [i] = (Xw, Yw)(机械坐标)
9 组 像素坐标 Pp [i] = (u, v)(视觉提取中心)
半导体要点:走点必须匀速、回零、消反向间隙,否则标定报废。
步骤 3:亚像素精定位(半导体精度核心)
对每个标定 Mark,用:
二值化
轮廓查找
椭圆拟合 / 角点亚像素化(cornerSubPix)
得到0.01pixel 级精度中心。
步骤 4:最小二乘求解变换矩阵
输入 9 组对应点,求解:
H=findHomography(P
p
,P
w
)
得到:像素→物理矩阵 H。
步骤 5:验证精度(必须做)
用第 10 点测试:
像素定位 → 计算物理坐标
与平台实际坐标对比
误差要求:≤ 1/5 像素(半导体合格标准)
五、芯片定位流程(量产运行逻辑)
拍照:芯片 / 晶圆 Mark 点
预处理:滤波、阈值、形态学
提取中心:亚像素中心 (u, v)
坐标转换:(u,v) → H → (X,Y)
输出偏移:
目
标
实
际
下发补偿给运动平台
六、关键参数(半导体行业经验值)
像素精度:0.1μm/pixel ~ 5μm/pixel
标定重复精度:≤ ±1μm
单应性矩阵优于仿射:抗畸变、抗轻微倾斜
标定温度:恒温 25℃(半导体必须温控)
七、可直接落地的代码(Python 半导体定位完整版)
import cv2
import numpy as np
====================== 1. 9点标定数据(半导体示例) ======================
像素点(u,v):从标定板Mark提取
P_p = np.array([
120, 118\], \[326, 122\], \[534, 119\], \[123, 325\], \[328, 327\], \[531, 324\], \[121, 530\], \[325, 532\], \[533, 528
], dtype=np.float32)
物理点(X,Y):平台机械坐标 mm
P_w = np.array([
0.0, 0.0\], \[5.0, 0.0\], \[10.0, 0.0\], \[0.0, 5.0\], \[5.0, 5.0\], \[10.0, 5.0\], \[0.0,10.0\], \[5.0,10.0\], \[10.0,10.0
], dtype=np.float32)
====================== 2. 最小二乘求单应性矩阵 ======================
H, status = cv2.findHomography(P_p, P_w, cv2.RANSAC, 1.0)
print("=== 半导体9点标定矩阵H ===")
print(np.round(H,6))
====================== 3. 芯片定位:像素→物理坐标 ======================
def pixel2world(u, v, H):
p = np.array([[u, v]], dtype=np.float32)
world = cv2.perspectiveTransform(p.reshape(-1,1,2), H)
return world[0][0]
测试:芯片像素中心 → 物理坐标
u_chip = 328
v_chip = 326
X, Y = pixel2world(u_chip, v_chip, H)
print(f"\n芯片像素({u_chip},{v_chip})")
print(f"物理坐标 X={X:.3f}mm Y={Y:.3f}mm")
八、方案优势(半导体产线为什么选它)
快:坐标转换仅一次矩阵乘法(<100μs)
稳:9 点最小二乘抗噪声
准:配合远心镜头,可达 **±1μm**
简单:易标定、易维护、易验收
通用:固晶、焊线、AOI、切割、粘片全适用