超声声场模拟_超声全聚焦(TFM)简介

应读者要求,小编将介绍一下全聚焦TFM的基础知识。如有讲解不对的,欢迎批评指正。

全聚焦是超声检测里面的新事物。早在2005前, Caroline Holmes、Paul D. Wilcox等国外学者就开始研究了全聚焦成像,并通过实验得出了TFM相对于常规相控阵检测的优势,详细的比较结果可以参考《Post-processing of the full matrix of ultrasonic transmit–receivearray data for non-destructive evaluation》。在国内,全聚焦的研究时间稍晚一些,小编查找到的资料上显示,北航的周正干老师,早在15年(也许在此之前,也有学者在研究)之前就研究了TFM。那么TFM究竟是个什么玩意呢?它相对于相控阵,有什么特点呢?它的适用性范围呢?在此,小编叙述一下自己对全聚焦的理解,如有错误,欢迎专家批评指正。

全聚焦(total focusing method),顾名思义,就是在成像区域内每一点进行聚焦。相比相控阵聚焦(在小编的早期公众号中介绍过相控阵的几种聚焦模式),它能实现每一点的聚焦。其成像算法是一种基于全矩阵数据采集的虚拟聚焦后处理成像技术,算法精度高且灵活,逐渐成为近年来的研究热点。

因此,首先需要获得全矩阵数据,即获得成像区域(region of interest,ROI)内每一点的A扫信号,而这些A扫信号是由每个阵元单独激发,所有阵元接收回波,形成一行数据;然后步进一个阵元进行发射,所有阵元接收回波,形成第2行数据;直到最后一个阵元发射,所有阵元接收回波为止,形成第N(假定探头中含有N个阵元)行数据,最终得到N×N个A扫的信号矩阵。可以采用下图1和图2表示。而每个阵元发射的声波,形成的声场,与常规超声中单晶探头发出的声场并没有什么区别,只不过是阵元尺寸小,声束扩散角大,声波指向性不明显而已。

fb337c50ac3f78e3889ebdc8b1d38f13.png

图1阵元发射和接收

3b8d5f1775e00f0566bede86d50c1623.png

图2获得的数据矩阵

此时,还只是针对ROI内某一点得到的N²个数据,还需要对ROI区域内其余的点进行同样的数据采集(如下图3中,对P点数据采集之后,还需要对其附近的Q点,以及其它的点处进行数据采集,直到遍历整个ROI区域内的点)。因此,ROI内点数越多,采集的数据矩阵的个数越多,最终得到的影像质量越好,图像越清晰,分辨率越好,采样的数据越接近于真实的信号(类似于从模拟信号到数字信号一样,确保采样的点能代表真实的信号,并且幅值偏差满足要求,因为采样的点数越多,采集到峰值的概率越大,从某种意义上就能得到真实的信号),但是仪器处理的数据量越大;点数越少,采集的数据矩阵个数越少,影像的质量越差,图像越模糊,分辨率越差,仪器处理的数据量小。那如何确定ROI内的点数呢?

a7107d955197e7f34b1b4283e1ef68e6.png

图3 ROI区域 

在ASME BPVC V article4,mandatory appendix XI中XI-461中amplitude fidelity规定,Amplitude fidelity shall be preserved to 2 dB or less,即采样之后,重构的信号与原始信号幅值之差不超过2dB(在ISO13588标准以及国内的相控阵标准中,在检测完成时对灵敏度进行重新校验,要求的幅值偏差也是不超过2dB,好巧啊!)。即,要求采样的点数不能过少,否则采集的点对应的幅值与真实的幅值偏差将超过2dB,这一点是极其关键的(在Gekko,Mantis,Panther相控阵仪器中都有判定ROI区域内像素点是否满足要求的小工具)。可以采用下图4来理解,假定黄颜色区域代表缺陷区域,如果采样点过少,只能采集如红色圆圈代表的点;当采集点增加时,才能采集到如黑色圆圈代表的点,保证采集到真实的信号峰值。因此图像的像素点越多,意味着在确保幅值的情况下,ROI可以设置越大。或ROI区域尺寸确定之后,得到的信号幅值越接近于真实的幅值。 

4842a7bc636fc0a3672fd2f115400915.png

图 4 ROI区域内的采样点

将ROI划分成若干个小区域,对每个区域进行一次信号采集。左侧为ROI内的采样点,黑色圆圈代表采样点数多,红色圆圈代表采样点数少,黄颜色代表缺陷区域;中间为采样点数多时缺陷处获取的信号,黄颜色为缺陷的原始区域;右侧为采样点数少时缺陷处获取的信号,黄颜色为缺陷的原始区域。可以看出,采样点数不足(或在ROI区域内,像素点不足)时,得到的影像将严重畸变,不能体现真实的缺陷。

获取数据矩阵后,对数据进行处理(通常采用延时叠加)其数学表达式如下式,获得ROI区域内相应点处的信号幅值,然后对幅值进行彩色编码,获得最终的颜色。

 ddab08d363e63f4a0140322039590d77.png

下图右侧显示的是ROI区域内P点的A扫数据矩阵。

5cfad0fd18a2e415273339a62d9ca2e7.png

图5对ROI区域内P点进行数据处理

在后面的章节,我们将叙述TFM成像的优势和应用。

欢迎关注小编微信公众号。

63584c4b7106f7f46752b12c55ab2985.png

84af83214aaf0af4a8468dcb8c09559b.png

免责申明:本文只做知识的交流,仅代表小编的观点。任何人不得将其作为商业用途。

版权所有,如需转载,需注明出处!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433051.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bbb sd6 无e2 修改

1. u-boot修改 board/ti/am335x/board.c void s_init(void)和static int read_eeprom(void)这两个函数要从e2中读取数据,只需要把原版的bbb的e2中的数据读出来并添充到相应的数据结构里即可。 最终是要填充这个结构体 struct am335x_baseboard_id { unsigned int m…

session会话拦截ajax,session过期,拦截ajax请求并跳转登录页面

1.方法一 :1.1使用filter 和ajaxsetup 对ajax进行拦截并跳转登录页面public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletResponse hresponse (HttpServletResponse)re…

ubuntu下修改mysql编码,使能支持中文

通过sudo apt-get install mysql-server安装的mysql的编码是latin1,不能支持中文。 需要修改/etc/mysql/my.cnf文件,可以通过vim或者gedit进入, 找到[client] 添加:default-character-setutf8 //默认字符集为utf8 找到[mysqld]添加: default-…

php二维码存放json数据_PHP生成及获取JSON文件的方法

本文实例讲述了PHP生成及获取JSON文件的方法。分享给大家供大家参考,具体如下:首先定义一个数组,然后遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组json_encode() 函数的功能是将数值转换成 JSON …

gsoap的几个常用设置选项

1. 服务器端设置地址重用 在soapXXXService.cpp中,在类的构造函数中增加 bind_flags SO_REUSEADDR; 2. 客户端设置连接超时时间 在soapXXXProxy.cpp中,在XXXProxy_init中增加 connect_timeout x; 3. 客户端设置请求超时时间 在soapXXXProxy.cpp中&…

post修改服务器数据源,postgresql安装及配置超详细教程

1. 安装根据业务需求选择版本,官网下载初始化数据库执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库:linux 系统用户 postgres:管理数据库的系统用户;密码由于是默认生成的,需要在系…

小程序分享到朋友圈_如何给小程序添加分享朋友圈

微信公众号更新以后,推送不是按照优先来的,你们可以把我的微信公众号点击设置为星标,以便于及时的接收信息.从微信小程序官方分享朋友圈有那么几天了,今天就分享下如何给自己的小程序添加分享朋友圈代码,几行代码的事。根据官方的提示需要基础…

游戏开发第3天小结

今天是正式开始的第三天。这三天来一直在弄跟模型相关的事情,用blender来修改模型,做骨骼,蒙皮,导出到3dXchange中,再导到Iclone里去制作动作,最后导出到Unity里。简单就这样的一个工作流程。其中遇到各种头…

grep -q用于if逻辑判断

grep -q用于if逻辑判断突然发现grep -q 用于if 逻辑判断很好用。-q 参数,本意是 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. 中文意思为,安静模式&…

iReport报表工具的使用

对于本人来说,报表工具只是刚刚接触,经过几个小时的摸索,基本的操作还是可以的。 (1)安装该工具总结 首先需要到日所安装数据库所需的驱动 工具--->选项--->classpath--->addjar(然后选中需要导入的数据库驱动…

mac远程redis_Linux:使用Mac远程(局域网内)访问Ubuntu主机上的Redis服务

1. 前言本文介绍的方法,是通过配置 Redis,在 Mac 上通过 ssh 协议访问 Ubuntu 主机的 Redis 服务;注意:如果 Ubuntu 不做 Redis 配置,Mac 直接访问 Ubuntu 的 Redis 服务时会报以下错误:Could not connect …

bbb 烧写脚本分析

ftp服务器地址,即CCS Uniflash的地址 SERVER_IP"192.168.2.1" MLO u-boot.img uImage压缩文件的名称,即ftp服务器下载目录里的文件名 BOOT_PARTITION"boot_partition.tar.gz" 文件系统的名称,即ftp服务器下载目录里的…

mysql 增量备份脚本_MySQL自动化(全量+增量)备份脚本

一、MySQL的日常备份方案:全备增量备份:1、周日凌晨三点进行全备;2、周一到周日增量备份。不是往常的周日全备份,周一到周六增量备份,这样如果周日数据库在完全备份前出问题,恢复完成后,会少周日…

JS代码大全

一、验证类 1、数字验证内 1.1 整数 /^(-|\)?\d$/.test(str) 1.2 大于0的整数 (用于传来的ID的验证) /^\d$/.test(str) 1.3 负整数的验证 /^-\d$/.test(str) 2、时间类 2.1 短时间,形如 (13:04:06) function isTime(str) …

Linux编程里getopt_long_only函数用法详解

在程序中难免需要使用命令行选项,可以选择自己解析命令行选项,但是有现成的,何必再造轮子。下面介绍使用getopt_long_only和getopt_long( 两者用法差不多 )解析命令行选项。 程序中主要使用: 短选项长选项是否需要参数-n--userna…

mybatis的mysql参数传递参数_mybatis 传递参数的方法总结

有三种mybatis传递参数的方式:第一种mybatis传入参数是有序号的,可以直接用序号取得参数User selectUser(Stringname,String area);可以在xml配置文件中写select * from user_user_t where user_name #{0} and user_area#{1}#{0} 表示传递过来的第一参数 . 也就是说#{N} 就可以…

C# 数据的加密解密

/// <summary> /// 加密数据 /// </summary> /// <param name"Text"></param> /// <param name"sKey"></param> /// <returns></returns> public static string Encrypt(string Text, string sKey){DESCr…

strdup函数的用法

函数名: strdup 功 能: 将串拷贝到新建的位置处 用 法: char *strdup(char *str)&#xff1b; 这个函数在linux的man手册里解释为&#xff1a; The strdup() function returns a pointer toa new string which is a duplicate of the string s. Memory for thenew string is …

eclipse中查看mysql_eclipse中怎样查看sqlite数据库的表

string createtable(classclazz , string tablename){//实例化一个容器&#xff0c;用来拼接sql语句stringbuffer sbuffer new stringbuffer();//sql语句&#xff0c;第一个字段为_id 主键自增&#xff0c;这是通用的&#xff0c;所以直接写死sbuffer.append("create tab…

Java 泛型(一)

1&#xff0c;泛型的声明 a&#xff09;在方法中的声明&#xff1a; 现在访问修饰符后&#xff0c;返回值类型前加上<T>&#xff0c;其它字母亦可。 b&#xff09;在类中的声明&#xff1a; 在类名后加<T> 练习&#xff1a;用泛型写一个方法&#xff0c;将一个数组…