4. 对准信号处理:信号采集与预处理、峰值检测算法、相关匹配算法、相位提取算法

各位工程师朋友,咱们今天聊聊对准信号处理这块。说实话,这是整个对准系统的"灵魂"所在。你机械结构做得再精密,光学系统调得再好,信号处理跟不上,一切都是白搭。我在产线上见过太多这样的案例了——硬件指标看着漂亮,一跑起来就是对准失败,最后查下来,往往是信号处理环节出了问题。

4.1 信号采集与预处理

信号采集,说白了就是把光信号变成电信号,再变成数字信号。这个过程看似简单,坑却不少。

采集环节要注意三点:

  • 采样率要够:根据奈奎斯特定理,采样率至少是信号最高频率的两倍。但我个人习惯留3-5倍的余量。为什么?因为实际信号总有畸变,余量不够,峰值位置就找不准。
  • 量化位数要合适:12位是底线,16位更稳妥。我曾经在一个项目中为了省成本用了10位ADC,结果对准精度死活上不去,换了16位立马解决问题。
  • 同步触发要精准:扫描信号和采集信号必须严格同步,否则相位信息全乱了。

预处理这一步,我建议按这个顺序来:

  1. 去直流分量:把背景光去掉,只保留有效信号
  2. 滤波去噪:用低通滤波器干掉高频噪声
  3. 归一化处理:把信号幅度归一化到0-1之间,方便后续算法处理

核心要点:预处理的目标不是"好看",而是为后续算法提供稳定、可靠的输入。过度滤波会丢失细节,滤波不足噪声又太大。这个度,得靠经验去把握。

4.2 峰值检测算法

峰值检测,就是找信号的最大值位置。听起来简单吧?但实际信号往往不是完美的单峰,可能有毛刺、有平台、有双峰。

常用的峰值检测方法:

方法原理适用场景精度
最大值法直接找最大值点信噪比高、单峰信号像素级
质心法计算峰值区域的质心对称性好的信号亚像素级
高斯拟合用高斯函数拟合峰值区域接近高斯形状的信号亚像素级
抛物线插值用抛物线拟合峰值附近三点快速、精度适中亚像素级

我个人最常用的是质心法。为什么?因为它对噪声不敏感,计算又快。你想想看,质心相当于把整个峰的能量都考虑进去了,不像最大值法只盯着一个点。

实战技巧:用质心法时,窗口大小很关键。窗口太小,信息不够;窗口太大,引入噪声。我一般取半高全宽的1.5倍作为窗口宽度,效果不错。

4.3 相关匹配算法

相关匹配,说白了就是把采集到的信号和一个理想模板做对比,看看它们有多"像"。这个"像"的程度,用相关系数来衡量。

相关匹配的核心步骤:

  1. 制作模板:根据光栅参数和光学系统,生成理想信号模板
  2. 滑动匹配:把模板在实测信号上滑动,计算每个位置的相关系数
  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,提取基频分量的相位
  • 正交解调法:用正弦和余弦参考信号分别与实测信号相乘,提取相位

我个人偏爱正交解调法。它实现简单,实时性好,精度也够。原理是这样的:

  1. 生成两路正交参考信号:sin(ωt) 和 cos(ωt)
  2. 分别与实测信号相乘,得到 I 和 Q 两路
  3. 相位 φ = arctan(Q / I)
  4. 对准位置 = φ / (2π) × 光栅周期

嗯,这里要注意一点。arctan 的值域是 -π/2 到 π/2,但实际相位可能跨越多个周期。所以需要做相位解包裹,把相位展开成连续的。我一般用累积相位差的方法来做解包裹,简单可靠。

精度对比:峰值检测能做到亚像素级(约0.1像素),相关匹配能做到0.01像素,而相位提取可以做到0.001像素甚至更高。当然,精度越高,对硬件和算法的要求也越高。

知识体系总览

下面这张图,是我梳理的对准信号处理的知识体系。你可以把它当作一个"地图",随时回来对照。

对准信号处理知识体系 信号采集 信号预处理 对准算法 采样率选择 量化位数 同步触发 去直流 滤波去噪 归一化 峰值检测 相关匹配 相位提取 最大值法 质心法 高斯拟合 抛物线插值 锁相环法 傅里叶变换法 正交解调法 精度对比 峰值检测:~0.1像素 相关匹配:~0.01像素 相位提取:~0.001像素 图:对准信号处理知识体系总览

这张图把信号采集、预处理和三大算法串起来了。你可以看到,峰值检测、相关匹配、相位提取这三条路,精度依次提高,但复杂度也依次增加。实际项目中怎么选?我的建议是:先看精度要求,再看计算资源,最后看信号质量。没有最好的算法,只有最合适的。

我的经验:如果你刚开始做对准系统,先从峰值检测入手,把整个链路跑通。等信号质量稳定了,再上相关匹配或相位提取。一步到位往往容易翻车。


公众号:蓝海资料掘金营,微信deep3321