波束合成概述
各位同学,今天我们来聊聊波束合成。说实话,这是整个彩超系统的核心环节。我做了这么多年FPGA,最深的体会就是:波束合成搞不定,后面的图像处理再牛也白搭。
波束合成,说白了就是让超声探头里那几十上百个阵元协同工作。你想想看,每个阵元都在发射和接收超声波,但声波到达不同组织的时间不一样。怎么把这些信号对齐、叠加,最终形成一帧清晰的图像?这就是波束合成要解决的问题。
什么是波束合成
波束合成是一种信号处理技术。它通过控制阵列中各阵元的发射延时和接收延时,让声波在特定方向上聚焦。嗯,这里要注意:聚焦不是物理透镜那种,而是通过电子延时实现的。
我举个例子。假设你有一排人,每个人手里拿着一个手电筒。如果大家同时打开,光线是散的。但如果每个人按照一定顺序依次打开,光线就能汇聚到同一个点。波束合成就是这个道理。
在超声系统中,波束合成有两个关键作用:
- 发射聚焦:让声波能量集中到目标区域
- 接收聚焦:把回波信号对齐,提高信噪比
我在项目中遇到过一个问题:刚开始做波束合成时,总觉得延时计算差不多就行。结果图像出来全是伪影,根本没法看。后来才明白,延时精度直接决定了图像质量。
延时叠加(DAS)原理
延时叠加,英文叫Delay-and-Sum,简称DAS。这是最经典的波束合成方法,也是我们FPGA实现的基础。
DAS的原理其实很简单:
- 每个阵元接收到的回波信号,到达时间不同
- 根据目标点到各阵元的距离,计算出延时量
- 对每个通道的信号施加对应的延时
- 把所有延时后的信号叠加起来
为什么会这样?因为声波在组织中传播速度是固定的(约1540 m/s)。距离越远,到达时间越长。如果不做延时处理,同一个反射点的信号在时间上是错开的,叠加后反而会互相抵消。
我建议你记住这个公式:
延时量 = (目标点到阵元的距离 - 参考距离) / 声速
实际实现时,我们通常用FPGA内部的BRAM做FIFO来实现延时。每个通道一个FIFO,深度根据最大延时量确定。我曾经踩过一个坑:FIFO深度算少了,导致远场信号被截断,图像出现暗区。后来我习惯把深度多留20%的余量。
关键点:DAS的精度取决于两个因素——延时量化精度和采样率。一般来说,采样率越高,延时精度越好。但FPGA资源有限,需要权衡。
波束合成的分类
波束合成可以从不同角度分类。我个人习惯按实现方式分,这样对FPGA设计更有指导意义。
| 分类方式 | 类型 | 特点 |
|---|---|---|
| 按聚焦方式 | 发射波束合成 | 控制发射延时,形成聚焦声场 |
| 接收波束合成 | 处理回波信号,提高图像质量 | |
| 按实现架构 | 模拟波束合成 | 用模拟延时线,精度有限 |
| 数字波束合成 | 用FPGA/DSP,灵活度高 | |
| 按处理维度 | 一维波束合成 | 线阵/凸阵,只做方位向聚焦 |
| 二维波束合成 | 面阵,同时做方位向和俯仰向聚焦 |
目前主流彩超都采用数字波束合成。原因很简单:模拟方案受温度、工艺影响大,一致性差。我记得有一次调试模拟波束合成板,同一批板子测出来延时偏差超过10%,根本没法用。换成数字方案后,问题迎刃而解。
从FPGA实现角度看,我建议重点关注以下几点:
- 延时精度:通常需要亚采样点精度,用插值滤波器实现
- 通道数:64通道、128通道甚至更多,资源消耗线性增长
- 实时性:彩超需要实时成像,FPGA必须流水线处理
小技巧:做FPGA波束合成时,先把延时表算好存到ROM里。运行时查表比实时计算快得多。我一般用MATLAB算好延时表,然后生成coe文件直接加载到Block RAM。
另外,波束合成还有动态聚焦和动态孔径的概念。动态聚焦就是随着接收深度变化,不断调整聚焦点。动态孔径则是根据深度改变参与合成的阵元数量。这两点在实际系统中非常重要,我们后面章节会详细讲。
注意:波束合成的延时计算一定要考虑声速变化。不同组织声速不同,如果统一用1540 m/s,脂肪和骨骼区域会出现明显的聚焦偏差。我曾经因为这个原因,图像中囊肿边界总是模糊的。后来加了声速补偿,效果立竿见影。
好了,波束合成的基本概念就讲到这里。下一章我们深入FPGA实现细节,看看怎么用Verilog把DAS跑起来。记住,理论是基础,但真正上手做项目时,你会遇到各种意想不到的问题。保持耐心,多动手调试,慢慢就有感觉了。