速度与精度的平衡术:码实智能 250mm/s 高速扫描背后的双滤波算法
——拆解软件里那两组参数:卡尔曼递归估计负责"跟得上",滑动窗口负责"压得住"
【导语】 "双滤波"这个词,如果只出现在宣传页上,它没有信息量。但把宁波码实智能科技(MAS)平面磁成像分析仪MAS-PlaneScanner-A1的软件参数面板打开,它是有实物对应的:一组叫"滤波参数",包含过程噪声、测试噪声、遗忘因子——这是卡尔曼递归估计的标准三件套;另一组单独叫"滑动窗口",只有一个滑窗大小。两级滤波,分工明确,参数可调。本文要做的,是把码实智能这两组数字翻译成工程语言:它们各自在对抗什么,为什么必须分成两级而不能合并成一级,截图里那组取值(0.001 / 0.1 / 0.4 / 250)意味着多大的降噪能力和多宽的空间平滑,以及最实用的一条——当扫描速度从100mm/s提到250mm/s时,这些参数该怎么改。
一、先看实物:软件里的两组滤波参数
讨论之前,先看码实智能设备软件的参数面板。

图1 码实智能MAS-PlaneScanner-A1软件的扫描与滤波参数面板。扫描参数区包含OSA、OCT倍频档位、量程档位、扫描速度与分辨率;滤波参数区为卡尔曼递归估计的三个参数;滑动窗口独立成组。
面板上的信息量相当大,逐条对应如下。
扫描参数区:OSA与OCT均为"1倍频",量程为"1倍量程",扫描速度100mm/s,分辨率0.1mm。
滤波参数区:过程噪声0.001,测试噪声0.1,遗忘因子0.4。这三个参数名是卡尔曼滤波的标准配置——过程噪声即状态方程的噪声协方差Q,测试噪声即观测噪声协方差R,遗忘因子则是渐消记忆型自适应卡尔曼中用来给历史数据降权的系数。
滑动窗口区:滑窗口大小250,单独成组,与上面的滤波参数并列。
这个界面布局本身就说明了架构:两级滤波不是同一套算法的两个参数,而是两个独立的处理环节,各有各的参数组。接下来解释为什么必须这样分。
界面参数 |
截图取值 |
工程含义 |
调大会怎样 |
过程噪声 Q |
0.001 |
对"真值本身会变化"的预期;越小越认为真值平缓 |
响应变快,但平滑效果下降 |
测试噪声 R |
0.1 |
对"单次测量"的不信任度;越大越不信任瞬时读数 |
更平滑,但跟随变慢 |
遗忘因子 |
0.4 |
给历史数据降权,遇到突变时快速放开增益 |
越小越"健忘",边界更锐利但抗噪变差 |
滑窗口大小 |
250 |
窗口统计平均的长度,决定稳态降噪量与等效空间平滑宽度 |
噪声更低,但空间细节被磨圆 |
OSA / OCT |
各 1倍频 |
采样与输出的倍频档位,决定原始数据量 |
数据量增加,可换取更低噪声 |
量程 |
1倍量程 |
磁场量程档位,与最大1200mT配合 |
覆盖更强磁场,但分辨力相应变粗 |
二、提速损失了什么:三个性质不同的通道
要理解两级分工,先要理解提速到底带来了几种不同的麻烦。把"高速会降低精度"这句常识拆开,它至少包含三条彼此独立的劣化路径。
劣化通道 |
物理机理 |
随速度的变化规律 |
在这台设备上由谁应对 |
统计通道 (随机噪声) |
单像素驻留时间缩短,可平均的采样数下降 |
噪声按 √v 上升;100→250mm/s 上升约1.58倍 |
滑动窗口为主,卡尔曼为辅 |
突变通道 (边界与野值) |
磁极边界处真值阶跃;铁屑、干扰造成孤立野值 |
速度越高,边界在时间轴上越陡 |
卡尔曼的遗忘因子 |
时序通道 (相位偏移) |
磁场采样与位置编码之间存在固定时间差 |
位置偏移 = v×Δt,与速度成正比 |
标定补偿,需随速度自适应 |
这三条的关键差别在于:它们要求滤波器具备互相冲突的性质。
统计通道要求"平滑"——把更多样本平均起来,噪声按样本数的平方根下降。平滑得越狠,噪声压得越低。
突变通道要求"锐利"——磁极边界处的过零点位置,直接决定极宽、无磁区宽度、同心度这些核心指标。而任何平滑操作都会把阶跃磨圆,让边界位置变得模糊。
这就是滤波设计里那个经典的矛盾:降噪与保边界不可兼得。一个固定的低通滤波器,参数调到能压住噪声,边界必然被磨钝;调到能保住边界,噪声必然压不下去。
而码实智能这台设备的解法,正是用两级不同性质的滤波分别承担这两件事。
三、第一级:带遗忘因子的卡尔曼,负责"跟得上"
卡尔曼滤波与普通低通滤波的本质区别在于,它不是固定权重的,而是每一步都在重新权衡"我预测的"和"我测到的"哪个更可信。
这个权衡由过程噪声Q与测试噪声R的比值决定。Q代表你认为真值本身变化得有多快,R代表你认为单次测量有多不可靠。Q小R大,滤波器倾向于相信自己的预测,输出更平滑;Q大R小,滤波器倾向于相信新来的测量,跟随更快。
截图中Q=0.001、R=0.1,比值Q/R=0.01。对一维随机游走模型,稳态卡尔曼增益可以解出来:
将Q=0.001、R=0.1代入稳态解,得到K≈0.095。这个数字的含义很直观——每一个新到的测量值,只占最终输出约9.5%的权重,其余90.5%来自历史积累。
这等价于一个平滑系数α≈0.095的指数移动平均,等效记忆长度约20个样本,对随机噪声的抑制约4.47倍。
注意这个记忆长度:20个样本。相比之下滑动窗口是250个样本,长了一个数量级。这说明卡尔曼这一级的定位不是主力降噪,而是别的东西。
那是什么?答案在第三个参数上。
3.1 遗忘因子0.4:这是"保边界"的关键
遗忘因子是本文最想讲清楚的一个参数,因为它恰好解决了上一节那个矛盾。
标准卡尔曼滤波有一个众所周知的毛病:当真值发生阶跃时,它会反应迟钝。因为滤波器在稳定运行一段时间后,会对自己的预测越来越自信(协方差收敛到很小),此时突然来了一个与预测差异很大的测量值,它会倾向于认为那是噪声而不是真实变化,于是输出滞后、拖尾、过冲。
而磁极边界恰恰就是阶跃——扫描探头从N极区域跨进过渡带再进入S极区域,真值在很短的距离内完成大幅变化。如果滤波器在这里迟钝,过零点的位置就会偏移,极宽就会测不准。
渐消记忆卡尔曼的做法是引入一个小于1的遗忘因子,在每一步递推时人为放大协方差,相当于让滤波器"忘掉"一部分历史、保持适度的不自信。这样一来,当新息(测量值与预测值之差)突然增大时,滤波器能迅速放开增益跟上去。
截图中的取值是0.4,这是一个相当强的遗忘设定。它说明设计上明确地在"平滑"与"跟随"之间偏向了跟随——宁可少压一点噪声,也要保住边界的锐利度。
这个取舍是完全合理的,甚至可以说是必然的。因为码实智能这台设备输出的核心指标——极宽、磁极计数、无磁区宽度、同心度——全部依赖过零点的准确定位。边界一旦被磨圆,这些指标就集体失真,而峰值这类幅值指标反而对平滑不那么敏感。把"锐利"放在第一级、把"降噪"交给第二级,是符合指标优先级的架构选择。
顺带一提,卡尔曼这一级还有一个附带好处:它对孤立野值的抑制天然优于滑动平均。一颗铁屑、一次电气干扰造成的单点尖峰,在递归估计里只贡献约9.5%的权重就被稀释掉了,而在滑动平均里它会被完整地摊进整个窗口。
四、第二级:滑动窗口250,负责"压得住"
第二级的任务纯粹得多:把随机噪声压到底。
长度为N的滑动窗口平均,对独立随机噪声的抑制是√N倍。N=250对应约15.81倍——这才是主力降噪。
两级串联,分工就清晰了:卡尔曼管"快",用短记忆和强遗忘保住边界、剔除野值;滑窗管"稳",用长窗口把稳态噪声压到最低。
但这里有一个必须算清楚的问题:250个样本,在空间上有多宽?
4.1 关键换算:滑窗宽度会随速度成倍变化
这是全文最实用的一节。
滑动窗口是按采样点计数的,而探头在移动。因此时间域的窗口,被扫描运动映射成了空间域的窗口,其宽度等于采样点数乘以采样周期再乘以扫描速度。
关键推论:滑窗大小固定不变时,等效空间平滑宽度与扫描速度成正比。
代入数字估算。假设原始采样率为100kHz(这是一个便于换算的假设值,实际值应以码实智能文档为准),250个样本对应2.5毫秒。在100mm/s下,空间窗约为0.25毫米,即2.5个像素;而在250mm/s下,同样的250点变成约0.625毫米,即6.25个像素。
这个换算顺便验证了一件事:滑窗的250一定是作用在原始采样流上,而不是作用在成像栅格上。因为如果250指的是0.1毫米的像素,空间窗就是25毫米——足以把整个磁极彻底抹平,图上什么都不会剩下。这个反证说明第二级滤波工作在成像之前的数据流阶段。
4.2 空间窗变宽会损失什么:查表就能回答
一个宽度为W的窗口平均,对空间波长λ的正弦分量的保留比例是sinc(W/λ)。把上面两个宽度代入:
扫描速度 |
单像素驻留 |
滑窗250点对应的等效空间窗 |
λ=2mm 特征保留 |
λ=1mm 特征保留 |
100 mm/s |
1.000 ms |
约 0.25 mm(2.5像素) |
97.45% |
90.03% |
250 mm/s(滑窗仍为250) |
0.400 ms |
约 0.625 mm(6.25像素) |
84.69% |
47.05% |
250 mm/s(滑窗调至100) |
0.400 ms |
约 0.25 mm(2.5像素) |
97.45% |
90.03% |
这张表把问题说得很清楚。
在100mm/s、滑窗250的默认配置下,0.25毫米的等效空间窗对实际要测的特征几乎无损:十六极环的一对极对应约13.74毫米波长,保留99.95%;2毫米尺度的过渡带特征保留97.45%。这是一个安全且从容的配置。
而如果把速度提到250mm/s却不动滑窗,空间窗扩大到0.625毫米,2毫米尺度的特征保留率从97.45%掉到84.69%,1毫米尺度的特征更是从90.03%掉到47.05%——损失过半。这已经不是降噪的代价,而是实实在在地在磨掉信息。
解法很直接:把滑窗大小按速度比例调小。250乘以100除以250等于100,也就是说250mm/s档位下滑窗应设为约100点,即可维持与低速档相同的0.25毫米等效空间窗。
代价当然存在——窗口从250缩到100,降噪倍数从15.81降到10,噪声上升约1.58倍。而这恰好就是提速2.5倍在统计通道上带来的噪声上升量。换句话说,这笔账是守恒的:你想在高速下保住空间分辨率,就必须接受噪声上升;想同时保住两者,只能从别处找补——提高OSA或OCT倍频档位(截图中两者都还停在1倍频,这意味着这方面的余量完全没有动用过),或者提高原始采样率。
这一节可以浓缩成一条操作建议:换速度档时,滑窗大小必须跟着改,而且是按速度成反比改。用低速档的参数跑高速档,得到的图会比你以为的模糊得多,而软件不会给出任何提示。
五、为什么可以放心地滤:有用信号的带宽本来就窄
看到这里可能会有一个疑问:既然滤波总要损失细节,那有没有可能干脆少滤一点?
答案要回到物理。第一篇里推导过,磁场在离开表面后,空间波长为λ的分量按 exp(−2πd/λ) 衰减。在0.3毫米的提离距离下,波长0.5毫米的分量只剩约2.3%,波长0.2毫米的分量只剩万分之零点八。
也就是说,到达探头平面的磁场信号,其空间频谱本来就被物理规律截断在毫米量级。而随机噪声是宽带的,铺满全频段。信号挤在低频,噪声遍布全域——这正是滤波最理想的工作条件。
把这一点与上一节的表格合起来看,结论就完整了:0.25毫米的等效空间窗之所以"安全",不是因为它足够窄,而是因为有用信号本来就没有那么细的成分。码实智能这台设备的0.1毫米栅格相对于物理可达的信息量是过采样的,而这份过采样的余量,正是滤波器可以花掉的预算。
所以"高速仍能保精度"的底层答案是朴素的:不是算法变魔术,而是设计者准确地知道信号带宽在哪里,因此知道可以安全地花掉多少空间分辨率去换信噪比。
六、反直觉的一节:250mm/s的实际节拍收益远小于2.5倍
这一节与滤波无关,与运动学有关,但它对产线选型可能是全文最有用的部分。
一个常见的误解是:速度提高2.5倍,扫描时间就缩短到1/2.5。这在长行程下近似成立,在码实智能这台设备76.4毫米的幅面上完全不成立——因为机器根本来不及跑到标称速度。
按标准梯形速度曲线计算,加速到速度v所需的距离是v²/(2a)。取加速度a=1 m/s²,加速到100mm/s只需5毫米,加速到250mm/s却需要31.25毫米。而单趟行程只有76.4毫米,加减速就要吃掉62.5毫米,只剩13.9毫米的匀速段。
加速度 |
速度档 |
加速距离 |
匀速段长度 |
单趟耗时 |
实际提速倍数 |
1.0 m/s² |
100 mm/s |
5.00 mm |
66.40 mm |
0.864 s |
— |
1.0 m/s² |
250 mm/s |
31.25 mm |
13.90 mm |
0.556 s |
1.56×(名义2.5×) |
2.0 m/s² |
100 mm/s |
2.50 mm |
71.40 mm |
0.814 s |
— |
2.0 m/s² |
250 mm/s |
15.62 mm |
45.15 mm |
0.431 s |
1.89×(名义2.5×) |
结论很直白:名义上2.5倍的速度提升,在76.4毫米行程上,加速度1 m/s²时实际只带来1.56倍的时间收益;即便把加速度提高到2 m/s²,也只有1.89倍。
把这个结论与前面的滤波分析放在一起,高速档的性价比就清楚了:你付出的是噪声上升1.58倍(或者为了压噪而牺牲空间分辨率),换来的只是1.56倍的时间。交换比接近1比1。
这意味着高速档并不是免费的午餐,而是一个需要按具体节拍需求判断的选项。如果产线节拍并不紧张,低速档往往是更优解——同样的设备,参数不动,白得一份精度。
还有一个容易被忽略的推论:对小幅面扫描设备而言,加速度对节拍的影响可能比最高速度更大。从表中可见,把加速度从1提到2 m/s²,250mm/s档的单趟时间从0.556秒降到0.431秒,收益比继续提高最高速度更显著。选型时只比较最高扫描速度这一个数字,会错过真正决定节拍的那一项。
需要说明,上述计算采用标准梯形速度曲线与假设的加速度值,实际设备可能采用S曲线加减速(更平滑、对振动更友好,同等条件下耗时略长)。但"短行程下高速收益次线性"这个结论由运动学决定,不因实现方式而改变。
七、双档设备的正确用法
把前面所有分析收拢成使用建议。
第一,把两个速度档当作两种作业模式,而不是同一件事的快慢版本。高速档做"筛",目标是在节拍内不漏过明显不良;低速档做"判",目标是给出可写进报告、可与客户对齐的数字。首件、末件、争议复核、送样报告用低速档,产线全检用高速档。
第二,切换速度档时必须同步调整滤波参数,尤其是滑窗大小。这一条现在有了具体的计算依据:滑窗应与速度成反比调整,以维持等效空间平滑宽度不变。把这个换算关系做成一张对照表,写进作业指导书,比让操作者临场判断可靠得多。
第三,两档必须分别标定判定门限,不可共用一套。理由有三个且各自独立:噪声水平不同、等效空间平滑宽度不同、时序补偿量不同。三者叠加,同一件产品在两档下的读数会存在系统性差异——注意是系统性差异,不会在多次测量中被平均掉,只能靠分别标定处理。
第四,标定时实测两档之间的偏差量并记录。做法是取一组覆盖公差范围的样品,在两档下各测若干次,比较同一指标的均值差与标准差。均值差用于设定各自门限,标准差用于验证高速档能力是否满足公差要求。这份数据同时也是回答客户"你们高速全检的数据可信吗"这个问题的直接证据。
第五,把滤波参数视为配方的一部分而不是全局设置。不同产品的特征尺度不同——测一个十六极环(特征波长十几毫米)和测一个细长异形件(特征尺度一两毫米),可以安全使用的空间平滑宽度差别很大。理想做法是把速度档、OSA/OCT档位、量程档位、滤波三参数与滑窗大小一起绑进配方号,换型时整组切换。
八、给采购的四条追问
最后,把本文的分析转成可以在技术交流时直接问出口的问题。
第一,滑窗大小的单位是什么——原始采样点、像素,还是扫描行?这个问题决定了等效空间平滑宽度的换算方式,而它直接影响你能否正确设置高速档参数。
第二,原始采样率是多少?没有这个数字,滑窗大小无法换算成空间宽度,前面所有的估算都只能停留在比例关系上。
第三,各速度档的推荐滤波参数组合是什么,有没有出厂预设的配方?如果厂商(比如码实智能)能直接给出一张速度-参数对照表,说明这件事他们已经做过;如果需要用户自己摸索,那就要在验收阶段留出标定时间。
第四,250mm/s档位下的精度指标是多少,在什么滤波配置下测得?参数表标注的精度带有明确的速度与采样前提,这是诚实的标注方式,但它同时留下了一格需要由买方补齐的空白。
这四个问题问下来,基本能判断一台设备的高速能力是被认真设计过的,还是只是把电机调快了。
结语:平衡术的本质是知道余量在哪里
回到标题里的"平衡术"。拆解到底层会发现,它的答案朴素得多。
降噪与保边界这对矛盾,被拆成两级分别处理:带遗忘因子的卡尔曼递归估计负责跟得上边界、剔得掉野值,短记忆、强遗忘;滑动窗口负责把稳态噪声压到底,长窗口、大平均。两级串联,各司其职——这就是码实智能"双滤波"在软件参数面板上的实物对应。
而之所以能够大胆地用空间平滑去换信噪比,是因为磁场本身已经把有用信号的带宽限制在毫米量级,0.1毫米栅格相对于这个带宽是过剩的。这份过剩,就是可以花掉的预算。
所以平衡术不是变魔术,而是准确地知道余量在哪里、可以花掉多少、花掉之后还剩多少。落到使用者手上,它变成一条很具体的纪律:换速度档时,记得把滑窗一起改。
至于产线选型,本文最实用的一条或许仍是那个反直觉的结论:在76.4毫米的幅面上,250mm/s并不等于快2.5倍。真正该问的不是最高速度是多少,而是——在我的样品、我的模式、我的精度要求下,单件到底几秒。
(本文所用参数面板为设备软件真实数据,来自宁波码实智能科技(MAS)公开案例资料,参数取值以所示版本为准,不同软件版本可能存在差异。文中对卡尔曼稳态增益、等效记忆长度、滑窗降噪倍数、sinc平滑衰减、梯形速度曲线耗时的推算均已列出计算依据;其中原始采样率、加速度取值为便于换算的假设值,滑窗大小的计数单位需向厂商确认,实际数值以厂商实测文档为准。对两级滤波分工的解读为依据参数名称与通用信号处理原理做出的技术分析,非厂商披露的内部实现细节。精度指标随速度档、滤波配置、提离条件与标定方式而变,任何精度数字在引用时均应附其成立条件。本文不构成任何设备的选型建议。)
“特别声明:以上作品内容(包括在内的视频、图片或音频)为凤凰网旗下自媒体平台“大风号”用户上传并发布,本平台仅提供信息存储空间服务。
Notice: The content above (including the videos, pictures and audios if any) is uploaded and posted by the user of Dafeng Hao, which is a social media platform and merely provides information storage space services.”
