横向平滑:抹掉 GPR 剖面上的窄条纹
增益把深部放大后,一些横向窄的条纹、绕射尾、振铃尾也跟着被放大,在 B-scan 上冒成一片斜纹或竖条毛刺。横向平滑就是沿测线方向做均值替换,把这些窄东西糊掉,横向连续的层位则保留。
和背景去除的区别
背景去除是「减均值」:删掉横向共有的成分,留下横向局部的点目标。
横向平滑是「替换为均值」:把每道替换成左右几道的平均,抹掉横向局部的窄条纹,留下横向共有的连续层位。
两者保留的东西正好相反:
| 操作 | 去掉 | 保留 | |
|---|---|---|---|
| 背景去除 | 减均值 | 横向共有(直达波、水平横条) | 横向局部(钢筋双曲线) |
| 横向平滑 | 替换为均值 | 横向局部(绕射尾、条纹) | 横向共有(连续层位) |
单级盒式的问题
最简单的做法是用一个矩形窗做一级滑动平均。但它的频率响应是 sinc 函数,旁瓣大——阻带里的纹波压不干净,条纹会留残影。
两级盒式更干净
做两级串联:第一级用较大窗做主要平滑,第二级用小窗磨掉第一级留下的边缘台阶。两个矩形核卷积后等效成一个梯形核,频响近似 sinc²,旁瓣比单级小得多。
实测对比(window=10):
| 归一化频率 | 单级响应 | 两级响应 | 两级压到 |
|---|---|---|---|
| 0.05(通带) | 0.577 | 0.558 | 97% |
| 0.15 | 0.177 | 0.128 | 72% |
| 0.25 | 0.091 | 0.030 | 33% |
| 0.30 | 0.091 | 0.012 | 13% |
通带内两者差不多,不伤层位;阻带内两级把残余压到单级的 1/3~1/8。
梯形核怎么来的
以 window=10 为例:第一级半窗 5(11 点核),第二级半窗 1(3 点核)。算中心点输出时,每个位置被几个第二级抽头「看到」:
- 中心位置:3 个抽头都看到,权重最大;
- 边缘位置:只有 1 个抽头看到,权重最小。
把「被看到的次数」画出来就是梯形:1, 2, 3, 3, …, 3, 2, 1。
窗长怎么选
只有一个参数 window:平滑跨度,单位是道数。
- 斜条纹还在:window 调大;
- 横向层位被抹糊了:window 调小,或关掉本步;
- window 的物理含义 ≈ 想抹掉的横向窄目标的宽度,一般 8~20。
副作用
- 会抹掉横向窄的真实目标:小孤腔、细裂隙、单根细钢筋都会被糊掉。
- 破坏幅值定量:每个值被换成邻域均值,原始振幅信息没了。
- 必须放在流水线最后:它破坏幅值,所有需要真实幅值的步骤都要在它之前。
边界处理
图的两端窗会超出范围。我的做法是截断边界,只用地道内真实数据,除以实际参与平均的道数。不补零、不镜像,避免引入假象。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 CYK's Blog!
评论
