4. 对准信号处理:信号采集与预处理、峰值检测算法、相关匹配算法、相位提取算法
各位工程师朋友,咱们今天聊聊对准信号处理这块。说实话,这是整个对准系统的"灵魂"所在。你机械结构做得再精密,光学系统调得再好,信号处理跟不上,一切都是白搭。我在产线上见过太多这样的案例了——硬件指标看着漂亮,一跑起来就是对准失败,最后查下来,往往是信号处理环节出了问题。
4.1 信号采集与预处理
信号采集,说白了就是把光信号变成电信号,再变成数字信号。这个过程看似简单,坑却不少。
采集环节要注意三点:
- 采样率要够:根据奈奎斯特定理,采样率至少是信号最高频率的两倍。但我个人习惯留3-5倍的余量。为什么?因为实际信号总有畸变,余量不够,峰值位置就找不准。
- 量化位数要合适:12位是底线,16位更稳妥。我曾经在一个项目中为了省成本用了10位ADC,结果对准精度死活上不去,换了16位立马解决问题。
- 同步触发要精准:扫描信号和采集信号必须严格同步,否则相位信息全乱了。
预处理这一步,我建议按这个顺序来:
- 去直流分量:把背景光去掉,只保留有效信号
- 滤波去噪:用低通滤波器干掉高频噪声
- 归一化处理:把信号幅度归一化到0-1之间,方便后续算法处理
核心要点:预处理的目标不是"好看",而是为后续算法提供稳定、可靠的输入。过度滤波会丢失细节,滤波不足噪声又太大。这个度,得靠经验去把握。
4.2 峰值检测算法
峰值检测,就是找信号的最大值位置。听起来简单吧?但实际信号往往不是完美的单峰,可能有毛刺、有平台、有双峰。
常用的峰值检测方法:
| 方法 | 原理 | 适用场景 | 精度 |
|---|---|---|---|
| 最大值法 | 直接找最大值点 | 信噪比高、单峰信号 | 像素级 |
| 质心法 | 计算峰值区域的质心 | 对称性好的信号 | 亚像素级 |
| 高斯拟合 | 用高斯函数拟合峰值区域 | 接近高斯形状的信号 | 亚像素级 |
| 抛物线插值 | 用抛物线拟合峰值附近三点 | 快速、精度适中 | 亚像素级 |
我个人最常用的是质心法。为什么?因为它对噪声不敏感,计算又快。你想想看,质心相当于把整个峰的能量都考虑进去了,不像最大值法只盯着一个点。
实战技巧:用质心法时,窗口大小很关键。窗口太小,信息不够;窗口太大,引入噪声。我一般取半高全宽的1.5倍作为窗口宽度,效果不错。
4.3 相关匹配算法
相关匹配,说白了就是把采集到的信号和一个理想模板做对比,看看它们有多"像"。这个"像"的程度,用相关系数来衡量。
相关匹配的核心步骤:
- 制作模板:根据光栅参数和光学系统,生成理想信号模板
- 滑动匹配:把模板在实测信号上滑动,计算每个位置的相关系数
- 找最大值:相关系数最大的位置,就是对准位置
这里有个坑,我踩过。模板和实测信号之间往往有幅度差异和相位偏移。幅度差异好办,归一化就行。相位偏移呢?我建议用互相关函数,它能同时给出偏移量和相似度。
// 互相关计算示例(伪代码)
function crossCorrelation(signal, template) {
let n = signal.length;
let m = template.length;
let result = new Array(n - m + 1);
for (let i = 0; i < result.length; i++) {
let sum = 0;
for (let j = 0; j < m; j++) {
sum += signal[i + j] * template[j];
}
result[i] = sum / m; // 归一化
}
return result;
}
注意:相关匹配对信号形状很敏感。如果实际信号和模板差异太大(比如光栅脏了、光学系统有像差),相关系数会很低,这时候匹配结果不可靠。我曾经遇到过这种情况,最后发现是物镜上有灰尘。
4.4 相位提取算法
相位提取,是精度最高的对准方法。它不直接找峰值位置,而是通过分析信号的相位信息来定位。精度可以达到纳米级。
常用的相位提取方法:
- 锁相环法:用锁相环跟踪信号的相位变化,适合动态对准
- 傅里叶变换法:对信号做FFT,提取基频分量的相位
- 正交解调法:用正弦和余弦参考信号分别与实测信号相乘,提取相位
我个人偏爱正交解调法。它实现简单,实时性好,精度也够。原理是这样的:
- 生成两路正交参考信号:sin(ωt) 和 cos(ωt)
- 分别与实测信号相乘,得到 I 和 Q 两路
- 相位 φ = arctan(Q / I)
- 对准位置 = φ / (2π) × 光栅周期
嗯,这里要注意一点。arctan 的值域是 -π/2 到 π/2,但实际相位可能跨越多个周期。所以需要做相位解包裹,把相位展开成连续的。我一般用累积相位差的方法来做解包裹,简单可靠。
精度对比:峰值检测能做到亚像素级(约0.1像素),相关匹配能做到0.01像素,而相位提取可以做到0.001像素甚至更高。当然,精度越高,对硬件和算法的要求也越高。
知识体系总览
下面这张图,是我梳理的对准信号处理的知识体系。你可以把它当作一个"地图",随时回来对照。
这张图把信号采集、预处理和三大算法串起来了。你可以看到,峰值检测、相关匹配、相位提取这三条路,精度依次提高,但复杂度也依次增加。实际项目中怎么选?我的建议是:先看精度要求,再看计算资源,最后看信号质量。没有最好的算法,只有最合适的。
我的经验:如果你刚开始做对准系统,先从峰值检测入手,把整个链路跑通。等信号质量稳定了,再上相关匹配或相位提取。一步到位往往容易翻车。
公众号:蓝海资料掘金营,微信deep3321