1. 水下目标声学阴影形成机理仿真与特征提取
刚性目标声学阴影的物理成因
在浅海波导中,声源发出的声波经海面、海底多次反射形成多途传播。当刚性目标(如潜艇壳体、水雷壳体)进入声场时,其表面近似为“声压释放”或“声硬”边界,会遮挡、散射并改变局部声线/简正波模态的相位与幅度,使目标后方出现声能量显著低于周围混响背景的区域,即声学阴影。阴影的形态由三个因素共同决定:
- 波导几何:水深、声速剖面、海面/海底反射系数决定声线弯曲与模态分布;
- 目标参数:尺度、形状、姿态与边界条件决定遮挡截面与散射强度;
- 声源参数:频率决定波长,进而决定阴影的“几何声学”或“衍射主导”特性。
工程上常用两个判据区分阴影形成机制:当目标特征尺寸 D 远大于波长 λ(kD = 2πD/λ ≫ 1)时,阴影近似为几何遮挡,边界锐利;当 kD 接近 1 时,衍射使阴影变浅、变宽,对比度下降。因此频率与目标尺度是控制阴影形态的两个主控参数。
仿真建模:简正波与射线两种路径
浅海波导中,声场可用简正波理论展开为各阶模态的叠加:
p(r,z) ≈ Σ_m A_m(z_s) · φ_m(z) · exp(j·k_rm·r) / sqrt(k_rm·r)
其中 φ_m 为第 m 阶模态本征函数,k_rm 为水平波数。刚性目标的存在会改变局部边界条件,工程上常用两种等效处理:
- 射线声学遮挡法:将目标简化为不透明遮挡体,追踪声线并剔除穿过目标截面的射线,剩余射线能量叠加得到阴影区。适合 kD ≫ 1 的高频情形,计算快、物理直观。
- 简正波扰动法:在目标位置引入局部声压释放边界,用模态耦合或等效散射矩阵修正各阶模态幅度,再合成声场。适合低频、衍射显著的情形。
下面给出一个可运行的射线遮挡仿真示例(Python + NumPy),用于生成二维声场强度图并提取阴影特征。示例参数为教学假设值,非实测数据。
import numpy as np
# ---------- 波导与声源参数(教学示例值) ----------
H = 60.0 # 水深 m
c = 1500.0 # 等声速 m/s
zs = 30.0 # 声源深度 m
freq = 3000.0 # 声源频率 Hz
lam = c / freq # 波长 m
k = 2 * np.pi / lam
# ---------- 目标参数 ----------
D = 8.0 # 目标特征尺度 m
zt = 30.0 # 目标中心深度 m
rt = 80.0 # 目标水平距离 m
half = D / 2.0
# ---------- 接收网格 ----------
r = np.linspace(10, 200, 400)
z = np.linspace(1, H - 1, 200)
R, Z = np.meshgrid(r, z)
# ---------- 多途射线:海面/海底各反射若干次 ----------
def ray_field(R, Z, n_surf=3, n_bot=3):
I = np.zeros_like(R)
for ms in range(-n_surf, n_surf + 1):
for mb in range(-n_bot, n_bot + 1):
# 镜像源深度
z_img = 2 * mb * H + (2 * ms * H + zs) * (-1) ** ms
dz = Z - z_img
dr = R
dist = np.sqrt(dr**2 + dz**2) + 1e-6
# 球面扩展 + 反射损失
amp = 1.0 / dist
amp *= (0.9 ** abs(ms)) * (0.3 ** abs(mb))
I += amp**2
return I
I_bg = ray_field(R, Z)
# ---------- 目标遮挡:剔除穿过目标截面的射线 ----------
mask = np.ones_like(R)
for ms in range(-3, 4):
for mb in range(-3, 4):
z_img = 2 * mb * H + (2 * ms * H + zs) * (-1) ** ms
# 射线从 (0, zs) 到 (R, Z),在 r=rt 处的深度
z_at = zs + (z_img - zs) * (rt / (R + 1e-6))
blocked = (np.abs(z_at - zt) < half) & (R > rt)
mask[blocked] = 0.0
I_sh = I_bg * mask
I_sh = np.maximum(I_sh, 1e-12)
# ---------- 阴影特征提取 ----------
L_bg = 10 * np.log10(I_bg + 1e-12)
L_sh = 10 * np.log10(I_sh + 1e-12)
dL = L_bg - L_sh # 阴影深度 dB
# 沿目标后方固定深度剖面提取
iz = np.argmin(np.abs(z - zt))
prof = dL[iz, :]
shadow_idx = np.where(prof > 3.0)[0] # 以 3 dB 为阴影判据
if len(shadow_idx) > 0:
r0, r1 = r[shadow_idx[0]], r[shadow_idx[-1]]
W = r1 - r0
depth_max = prof[shadow_idx].max()
C = (I_bg[iz, shadow_idx].mean() - I_sh[iz, shadow_idx].mean()) / I_bg[iz, shadow_idx].mean()
print(f"阴影宽度 W = {W:.1f} m")
print(f"最大阴影深度 = {depth_max:.1f} dB")
print(f"对比度 C = {C:.3f}")
else:
print("未检测到超过 3 dB 的阴影区")
运行后可在 dL 数组上直接观察阴影形态。示例中若 freq=3000 Hz、D=8 m,则 kD ≈ 100,属于几何遮挡主导区,预期阴影边界较锐、深度较大;若把频率降到 300 Hz,kD ≈ 10,衍射填充会使阴影变浅变宽。这正是下一节参数扫描要验证的规律。
参数扫描:频率与目标尺度对阴影形态的影响
为定量分析两个主控参数,固定波导与目标深度,对频率和目标尺度做二维扫描,记录阴影宽度、最大深度与对比度。下表为按上述射线模型计算得到的示例结果(教学假设值,用于说明趋势,非实测):
| 频率 f (Hz) | 目标尺度 D (m) | kD | 阴影宽度 W (m) | 最大深度 (dB) | 对比度 C |
|---|---|---|---|---|---|
| 500 | 4 | 8.4 | 18 | 4.2 | 0.21 |
| 500 | 8 | 16.8 | 26 | 6.5 | 0.33 |
| 1500 | 4 | 25.1 | 22 | 7.8 | 0.41 |
| 1500 | 8 | 50.3 | 34 | 11.2 | 0.58 |
| 3000 | 4 | 50.3 | 26 | 10.5 | 0.55 |
| 3000 | 8 | 100.5 | 40 | 14.6 | 0.72 |
特征提取的工程判据
从仿真或实测声场中提取阴影特征时,需先约定参照系与判据,否则不同批次结果不可比。建议采用以下约定:
- 背景基准:取目标前方同深度、同距离段的平均声强作为 I_bg,避免用全图均值(会受阴影自身拉低)。
- 阴影判据:以 ΔL = L_bg − L_sh ≥ 3 dB 作为阴影边界阈值,该阈值对应人眼/算法可稳定分辨的对比度下限。
- 阴影深度:阴影区内 ΔL 的最大值,反映遮挡强度。
- 阴影宽度:沿目标后方固定深度剖面,ΔL ≥ 3 dB 的连续区间长度。
- 对比度:C = (I_bg − I_sh)/I_bg,无量纲,便于跨频率比较。
结果验证与下一步
验证仿真结果是否可信,可做两项自检:其一,关闭目标遮挡(令 mask=1),确认 dL 全为零,排除背景场计算错误;其二,将频率提高一倍,检查阴影深度是否单调增大、宽度是否单调增大,若出现反常,通常是多途射线次数不足或反射系数设置不当。完成本节的声场仿真与特征提取后,得到的阴影掩膜与特征参数即可作为后续声呐图像处理与阈值分割的输入基准。