news 2026/11/3 2:30:17

【学习记录】相位补偿与群延时补偿:全波时反的后续处理与射线补偿的对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【学习记录】相位补偿与群延时补偿:全波时反的后续处理与射线补偿的对比

【学习记录】相位补偿与群延时补偿:全波时反的后续处理与射线补偿的对比

在经颅超声聚焦中,相位畸变是影响聚焦质量的核心问题。射线补偿用几何直线近似快速预估延时,但忽略了折射;而相位补偿和群延时补偿则从全波时反(TR)响应中提取真实延时,精度更高。本文厘清三个概念的区别,详细讲解相位补偿和群延时补偿的原理、实现与适用场景,并给出完整补偿链条。


📌 目录

  1. 先厘清三个概念
  2. 相位补偿
  3. 群延时补偿
  4. 两者的关系
  5. 相位 vs 群延时 vs 射线补偿
  6. 完整补偿链条
  7. 总结

一、先厘清三个概念

名称补偿对象数据来源精度
射线补偿延时(直线近似)几何积分低(忽略折射)
相位补偿中心频率处的相位TR 响应 FFT高(窄带)
群延时补偿频带内的相位斜率TR 响应 FFT高(宽带)

💡相位补偿和群延时补偿都是全波时反(TR)的后续处理,区别在于从 TR 波形里提取延时的方法不同。


二、相位补偿

2.1 原理

核心公式:

步骤:

  1. 对 TR 响应p(t)做 FFT,得到H(f)
  2. 在中心频率f₀处取相位φ(f₀) = angle(H(f₀))
  3. 相位 → 延时
  4. 延时 → 补偿量

物理含义:在单一频率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 响应 FFTTR 响应 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 响应中提取,含折射,精度高于射线补偿。窄带用相位,宽带用群延时,是经颅超声聚焦相位校正的两种核心方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 2:28:59

从源码拆解 MyTinySTL:C++11 迷你标准库架构完整指南

从源码拆解 MyTinySTL&#xff1a;C11 迷你标准库架构完整指南 【免费下载链接】MyTinySTL Achieve a tiny STL in C11 项目地址: https://gitcode.com/gh_mirrors/my/MyTinySTL MyTinySTL 是一个基于 C11 的迷你标准库&#xff08;tinySTL&#xff09;项目&#xff0c;…

作者头像 李华
网站建设 2026/11/3 2:27:57

BiliBiliToolPro 部署完全指南:本地到 K8s 四种方式快速跑起来

BiliBiliToolPro 部署完全指南&#xff1a;本地到 K8s 四种方式快速跑起来 【免费下载链接】BiliBiliToolPro B 站&#xff08;bilibili&#xff09;自动任务工具&#xff0c;支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/11/3 2:26:58

开源科学大模型三强争霸:书生S2、Qwen3.5-35B、Gemini-3.1-Pro 横评

开源科学大模型三强争霸&#xff1a;书生S2、Qwen3.5-35B、Gemini-3.1-Pro 横评 当通用大模型的评测榜趋于饱和&#xff0c;"科学智能"成了 2026 年开源社区最拥挤也最有想象力的新赛道&#xff1a;一边是 Gemini-3.1-Pro 这类闭源旗舰在分子理解、材料生成上持续输…

作者头像 李华
网站建设 2026/11/3 2:25:50

Java线程交替打印问题:从核心原理到面试实操

一、为什么线程交替打印是经典面试题线程交替打印问题&#xff0c;最常见的描述是&#xff1a;启动两个线程&#xff0c;一个线程打印奇数&#xff0c;另一个线程打印偶数&#xff0c;要求最终输出 1、2、3、4、5……100 这样连续递增的序列&#xff1b;或者两个线程轮流打印字…

作者头像 李华