【学习记录】相位补偿与群延时补偿:全波时反的后续处理与射线补偿的对比
在经颅超声聚焦中,相位畸变是影响聚焦质量的核心问题。射线补偿用几何直线近似快速预估延时,但忽略了折射;而相位补偿和群延时补偿则从全波时反(TR)响应中提取真实延时,精度更高。本文厘清三个概念的区别,详细讲解相位补偿和群延时补偿的原理、实现与适用场景,并给出完整补偿链条。
📌 目录
- 先厘清三个概念
- 相位补偿
- 群延时补偿
- 两者的关系
- 相位 vs 群延时 vs 射线补偿
- 完整补偿链条
- 总结
一、先厘清三个概念
| 名称 | 补偿对象 | 数据来源 | 精度 |
|---|---|---|---|
| 射线补偿 | 延时(直线近似) | 几何积分 | 低(忽略折射) |
| 相位补偿 | 中心频率处的相位 | TR 响应 FFT | 高(窄带) |
| 群延时补偿 | 频带内的相位斜率 | TR 响应 FFT | 高(宽带) |
💡相位补偿和群延时补偿都是全波时反(TR)的后续处理,区别在于从 TR 波形里提取延时的方法不同。
二、相位补偿
2.1 原理
核心公式:
步骤:
- 对 TR 响应
p(t)做 FFT,得到H(f) - 在中心频率
f₀处取相位φ(f₀) = angle(H(f₀)) - 相位 → 延时
- 延时 → 补偿量
物理含义:在单一频率f₀处,波形相对于参考偏移了多少相位。
适用:窄带信号(3 周期或 10 周期 tone burst)。
2.2 实现
% 1. FFTH=fft(gatedResponse,nFft,2);% 2. 在中心频率处取相位f0Index=nearestIndex(freqHz,1e6);phaseWrapped=angle(H(:,f0Index));% 范围 [-π, π]% 3. 相位 → 延时rawDelay=-phaseWrapped/(2π*f0);% 模1周期的延时% 4. 解缠绕cycleCount=round((peakTime-rawDelay)/period);phaseDelay=rawDelay+cycleCount*period;% 真实延时% 5. 补偿ref=max(phaseDelay);compDelay=ref-phaseDelay;关键:
angle()只给[-π, π],需要解缠绕- 解缠绕靠首达时间
peakTime
2.3 特点
| 优点 | 缺点 |
|---|---|
| 精度高(不受采样率限制) | 需要解缠绕 |
| 计算简单 | 只反映单频 |
| 适合窄带 | 宽带下可能不准 |
三、群延时补偿
3.1 原理
群延时定义:相位对频率的导数。
物理含义:波包(信号整体)的传播时间。
为什么叫“群”:它描述的是一群频率成分整体的延时,不是单个频率。
核心公式:
💡对纯延时,相位谱是直线,斜率 = -2πΔt。群延时就是这条直线的斜率。
3.2 实现
% 1. FFTH=fft(gatedResponse,nFft,2);% 2. 取频带(比如 0.75–1.25 MHz)bandIdx=find(freqHz>=0.75e6&freqHz<=1.25e6);hBand=H(:,bandIdx);% 3. 展开相位phaseAll=unwrap(angle(hBand),[],2);% 4. 加权线性拟合,求斜率omega=2*pi*freqHz(bandIdx);weights=abs(hBand).^2;% 幅度平方做权重slope=weightedLinearFit(omega,phaseAll,weights);% 5. 群延时 = -斜率groupDelay=-slope/(2π);% 6. 补偿ref=max(groupDelay);compDelay=ref-groupDelay;关键:
- 用整个频带的信息,不是单点
- 加权拟合:幅度大的频率点权重大
unwrap:展开相位,恢复连续性
3.3 特点
| 优点 | 缺点 |
|---|---|
| 抗噪好(用整个频带) | 频带内相位非线性时不准 |
| 适合宽带 | 需要足够的频带宽度 |
| 不需首达时间参考 | 计算稍复杂 |
四、两者的关系
4.1 数学关系
相位延时:在f₀处读一个点。
群延时:在频带内拟合斜率。
对纯延时信号,两者相等:
对有频散或散射的信号,两者可能不同:
- 相位延时反映单频行为
- 群延时反映频带整体行为
4.2 什么时候用哪个
| 信号 | 推荐 |
|---|---|
| 窄带(3–10 周期) | 相位补偿 |
| 宽带(短脉冲) | 群延时补偿 |
| 有频散 | 群延时更稳健 |
| 高信噪比窄带 | 相位补偿更精确 |
💡TR 响应是 3 周期脉冲,带宽约 0.7–1.3 MHz,两种都可以。脚本默认用相位法(
cfg.method.name = 'phase'),因为它更简单。
五、相位 vs 群延时 vs 射线补偿
| 维度 | 射线补偿 | 相位补偿 | 群延时补偿 |
|---|---|---|---|
| 数据来源 | 几何直线 | TR 响应 FFT | TR 响应 FFT |
| 提取方法 | 积分 | 单频相位 | 频带斜率 |
| 是否含折射 | 否 | 是 | 是 |
| 是否需要解缠绕 | 否 | 是 | 否(unwrap 自动) |
| 抗噪 | 好 | 中 | 好 |
| 计算量 | 最小 | 中 | 中 |
| 预期恢复率 | 20–30% | 50–80% | 50–80% |
射线补偿和相位/群延时补偿的本质区别:
- 射线补偿:用几何模型算延时(忽略折射)
- 相位/群延时补偿:用全波仿真的真实波形算延时(含折射)
相位补偿和群延时补偿的区别:
- 相位补偿:在一个频率处提取
- 群延时补偿:在一个频带内提取
六、完整补偿链条
simulate_skull_tr_response │ 焦点放虚拟源,发脉冲 │ 记录阵元波形 p(t) ▼ tr_delay_compensation_export │ ├─ 相位法:FFT → angle(H(f0)) → 解缠绕 → 延时 │ └─ 群延时法:FFT → unwrap → 斜率拟合 → 延时 ▼ focus_channel_attenuation.csv extra_delay_us, relative_amplitude_scale ▼ skull_focus_simulation_export │ 构造发射信号:gain × circshift(pulse, delay/dt) │ 跑k-Wave,记录焦平面 ▼ focus_metrics.json shift_mm, recovery, contrast_dB七、总结
| 方法 | 原理 | 实现 |
|---|---|---|
| 相位补偿 | 单频相位 → 延时 | FFT +angle+ 解缠绕 |
| 群延时补偿 | 频带相位斜率 → 延时 | FFT +unwrap+ 加权拟合 |
| 射线补偿 | 直线积分 → 延时 | griddedInterpolant+ 梯形积分 |
核心结论:
- 相位补偿和群延时补偿都用全波 TR 波形,含折射;射线补偿用直线近似,不含折射。
- 窄带用相位,宽带用群延时。
- 3 周期脉冲两种都行,脚本默认相位法。
- 射线补偿精度有限(20–30%),相位/群延时补偿可达 50–80%。
一句话总结:相位补偿在单频处提取延时,群延时补偿在频带内拟合斜率,两者都从全波 TR 响应中提取,含折射,精度高于射线补偿。窄带用相位,宽带用群延时,是经颅超声聚焦相位校正的两种核心方法。