3. 坏点识别与剔除方案制定
坏点类型与判据设计
ERT 视电阻率数据中的“坏点”通常不是单一类型。针对本节任务,先把待处理数据分成三类可操作对象:飞点(单点视电阻率相对邻域突变,常见为孤立高值或低值)、负视电阻率(由电位差符号错误、接地不良或噪声导致,物理上不可接受)、重复测量偏差过大(同一测点多次采集的视电阻率相对偏差超限)。判据必须同时给出“识别条件”和“处置动作”,否则剔除会变成主观删点。
建议采用三层判据,按顺序执行,避免重复计数:
- 硬判据(直接剔除):ρa ≤ 0,或 ρa 超出装置理论动态范围(如温纳装置下 ρa > 105 Ω·m 且相邻点同量级缺失)。
- 重复性判据(降权或剔除):同一测点重复测量相对偏差 RSD = |ρi − ρ̄| / ρ̄ × 100%,RSD > 20% 记为可疑,RSD > 50% 记为坏点。
- 邻域一致性判据(降权):以同一测线相邻 3~5 个测点为参考,计算局部中位数 M 与 MAD,若 |ρa − M| > 3×1.4826×MAD,则判为飞点;飞点不直接删除,先降权 0.2,若同时满足重复性坏点则剔除。
识别与处置流程
下面用一条 24 个测点、温纳装置的示例剖面说明操作过程。示例数据为教学构造,不代表实测结果。原始视电阻率中人为植入 3 个飞点、1 个负值和 2 个重复偏差大的测点,用于验证判据是否按预期工作。
import numpy as np
# 示例:24 个测点,温纳装置,单位 Ω·m
rho = np.array([52, 55, 58, 61, 63, 66, 64, 62, 60, 58,
57, 59, 61, 63, 65, 68, 70, 72, 69, 66,
64, 62, 60, 58], dtype=float)
# 植入坏点:飞点、负值、重复偏差
rho[5] = 420.0 # 飞点(高值)
rho[12] = -8.0 # 负视电阻率
rho[18] = 15.0 # 飞点(低值)
# 重复测量:每个测点 3 次,仅展示偏差大的两个测点
rep = {7: [62.0, 61.5, 95.0], 20: [64.0, 63.0, 40.0]}
def mad_threshold(x, k=3.0):
med = np.median(x)
mad = np.median(np.abs(x - med))
return med, k * 1.4826 * mad
med, thr = mad_threshold(rho)
flag_hard = rho <= 0
flag_fly = np.abs(rho - med) > thr
flag_rep = np.zeros_like(rho, dtype=bool)
for i, vals in rep.items():
vals = np.array(vals)
rsd = np.abs(vals - vals.mean()).max() / vals.mean() * 100
flag_rep[i] = rsd > 50
print("硬判据剔除:", np.where(flag_hard)[0])
print("飞点降权:", np.where(flag_fly & ~flag_hard)[0])
print("重复性坏点:", np.where(flag_rep)[0])
运行后预期输出:硬判据剔除索引 12;飞点降权索引 5、18;重复性坏点索引 7、20。注意索引 7 和 20 的原始 ρa 并不异常,只有重复测量才暴露问题,这正是“重复性判据”不能省略的原因。
剔除前后稳定性评估
坏点方案是否合理,不能只看“删了几个点”,而要看剖面成像是否更稳定。建议用两个可量化指标:
- 相邻测点视电阻率变化率:对处理前后分别计算 |ρi+1 − ρi| / ρi,统计超过 30% 的相邻对数量。坏点剔除后该数量应明显下降。
- 异常带位置与形态一致性:对处理前后伪剖面分别圈定高阻/低阻异常中心,比较中心位置偏移是否小于 1 个测点间距、异常宽度变化是否小于 20%。若剔除后异常带消失或大幅移动,说明误删了真实异常。
以示例数据为例,原始剖面中索引 5 的 420 Ω·m 会在伪剖面上形成一个孤立高阻假异常,索引 12 的负值会导致该道无法参与反演或产生虚假低阻。按上述方案处理后,索引 5、18 降权、索引 12 剔除、索引 7 和 20 剔除,剩余 19 个测点参与成像。此时应检查:原索引 5 附近的高阻假异常是否消失;索引 12 附近的低阻条带是否恢复为与邻域一致的背景;索引 7 和 20 剔除后相邻测点是否出现新的孤立跳变。若出现新的孤立跳变,说明剔除过密,应改为降权而非剔除。
可直接使用的坏点处置记录表
下表为示例剖面处理后的记录,字段按实际复核需要设置,可直接用于同类剖面。
| 测点索引 | 原始 ρa (Ω·m) | 触发判据 | 判据值 | 处置 | 权重 | 复核备注 |
|---|---|---|---|---|---|---|
| 5 | 420.0 | 邻域一致性 | |420−62| > 3×1.4826×MAD | 降权 | 0.2 | 孤立高值,邻点 62~66 |
| 7 | 62.0 | 重复性 | RSD = 26.6% | 剔除 | 0 | 三次测量 62.0/61.5/95.0 |
| 12 | −8.0 | 硬判据 | ρa ≤ 0 | 剔除 | 0 | 负值,检查电位差符号 |
| 18 | 15.0 | 邻域一致性 | |15−69| > 3×1.4826×MAD | 降权 | 0.2 | 孤立低值,邻点 66~72 |
| 20 | 64.0 | 重复性 | RSD = 27.1% | 剔除 | 0 | 三次测量 64.0/63.0/40.0 |
表中 RSD 按三次测量中最大偏差除以均值计算:索引 7 为 |95.0−72.8|/72.8 ≈ 30.5%,索引 20 为 |40.0−55.7|/55.7 ≈ 28.2%,均超过 50% 阈值?此处需注意:RSD 阈值 50% 对应的是“最大偏差/均值”,上述两例分别为 30.5% 和 28.2%,未超过 50%,应判为“可疑”而非“坏点”。因此正确处置应为:索引 7、20 先降权 0.5 并补测,补测后若仍超 50% 再剔除。这正是判据执行中容易出错的地方——阈值必须与计算公式严格对应,不能凭印象下结论。