MATLAB:一种超声图像的运动分析方法(块匹配法)

0 引言

心血管疾病( cardiovascular diseases,CVD)危险因素对居民健康的影响愈加显著,CVD 的发病率仍持续增高。 CVD 给居民和社会 带来的经济负担日渐加重,已成为重大的公共卫生问题,已成为危害各国人民健康的三大疾病之一,其患病率和死亡率居于全球之首,中国 CVD 患病率处于持续上升阶段。 推算 CVD 现患人数 3. 3 亿,其中脑卒中 1300 万,冠心病1139 万,心力衰竭 890 万,肺源性心脏病 500 万,心房颤动 487 万,风湿性心脏病 250 万,先天性心脏病 200 万, 外周动脉疾病 4 530 万,高血压 2. 45 亿[1]。动脉硬化是CVD的主要原因之一,研究表明动脉硬化的早期表现是血管壁内中膜的变厚,导致动脉壁运动的弹性变差,由于血管壁的二维运动的检测是血管弹性检测的基础 。所以检测血管壁的二维运动能为血管弹性的检测提供效信息,从而对CVD的早期诊断起到很大帮助[2]。

超声成像技术凭借其无创、实时、低成本、无电离辐射等独特优势,已广泛渗透于临床医学诊断、生物医学研究、工业无损检测等多个核心领域。在临床医学中,超声图像不仅可用于脏器形态结构的直观观察,更能通过对组织、血流等运动信息的精准分析,为心血管疾病、肝脏疾病、胎儿发育异常等病症的早期筛查、病情评估及疗效监测提供关键依据。因此,基于超声图像进行血管壁的二维运动(如图1)是更具优势。基于超声图像运动分析方法,根据核心原理主要基于光流场的方法及基于块匹配的方法等,其中,块匹配法(Block Matching Method, BMM)凭借其原理简洁、计算效率高、抗噪声能力较强、易于工程实现等突出优势,成为当前超声图像运动分析中应用最广泛、最成熟的方法之一。块匹配法的核心思想是将参考帧超声图像划分为若干互不重叠或部分重叠的矩形图像块,通过在目标帧的对应搜索区域内寻找与参考块灰度相似度最高的匹配块,进而确定各图像块的位移矢量,最终实现整个图像序列的运动分析。块匹配法无需复杂的预处理和迭代过程,能在保证一定分析精度的前提下,满足超声图像运动分析对实时性的要求,尤其适用于临床实时诊断、动态监测等对时间响应速度敏感的场景。因此,本文主要介绍块匹配算法的原理以及基于MATLAB如何运行。

图1 血管壁的二维运动[3]

注:这个B超图像来自于[3]。

目录

0 引言

1 块匹配法的匹配准则

2 径向运动的估计(MATLAB)

2.1 NCC 匹配法则

2.2 MAD 匹配法则

2.3 MSD 匹配法则

3 结果分析

3.1 时间的差异

3.2 径向位移的差异

4 讨论

5 参考

1 块匹配法的匹配准则

块匹配 算法将图像看作是由一个个块组成,且认为各个块中的所有像素的光流是一样 的。在下一帧(comparison image)中的一定范围(search range)按照一定的匹配准则 进行搜索,寻找当前帧(reference image)的某个块(模板块,template block)的最相 近的对应块(候选块,candidate block),前后两个对应的块的位移向量就作为该块 的运动向量[4],如下图2所示:

图2 块匹配原理

在块匹配过程中,用于衡量两图像块匹配程度的量化指标种类繁多,其中应用较为广泛的包括归一化相关系数(NCC, Normalized Cross Correlation)、平均均方误差(MSD, Mean Square of Differences)以及平均绝对差(MAD, Mean Absolute of Differences)等。在这三类指标中,归一化相关系数(NCC)与平均绝对差(MAD)因各自的特性优势,在实际应用中更为普遍。针对序列超声图像中待匹配的M×N尺寸图像块X与Y,上述三种匹配度衡量指标的定义分别如下[4]:

其中,分别表示前后两帧超声图像中M×N尺寸(见图2)的第m行和第n列的像素值。

2 径向运动的估计(MATLAB)

现有研究大多数都是针对径向运动进行估计[5-8],因此这里仅对径向运动进行分析,使用上述三种匹配法则(NCC、MAD和MSD)分别进行估计。

2.1 NCC 匹配法则

为实现上述 NCC 公式的计算(选择最大值),使用 MATLAB 编写的核心函数如下:

function rho = calc_corr(cw1, cw) % 二维互相关公式 % cw1 -匹配块 % cw - 参考块 %计算cw和cw1 的均值矩阵 cw1_mean = mean(cw1(:)) * ones(size(cw1)); cw_mean = mean(cw(:)) * ones(size(cw)); %计算cw和cw1与均值矩阵的差值 term1 = cw1 - cw1_mean; term2 = cw - cw_mean; % 对差值相乘求和 numerator = sum(term1(:) .* term2(:)); % 对差值先平方 再求和 然后相乘,再开方 denominator = sqrt( sum(term1(:).^2) * sum(term2(:).^2) ); % 计算相关系数 rho = numerator / denominator; end

本方法采用 10×10 像素的图像模块进行运动特征分析,固定第一帧为参考基准帧,将其余所有帧作为待匹配帧依次完成匹配运算,最终输出各帧相对参考帧的位移量,以及整个分析过程的运行耗时。结果如下:

图3 基于NCC匹配原则的径向位移

2.2 MAD 匹配法则

为实现上述 MAD 公式的计算(选择最小值),使用 MATLAB 编写的核心函数如下:

function mad_val = calc_mad(cw1, cw) % 二维平均绝对差(MAD)公式 % cw1 - 匹配块 % cw - 参考块 % 计算两个块对应元素的绝对差 abs_diff = abs(cw1 - cw); % 计算所有绝对差的平均值 mad_val = -mean(abs_diff(:)); end

本方法同上采用 10×10 像素的图像模块进行运动特征分析,固定第一帧为参考基准帧,将其余所有帧作为待匹配帧依次完成匹配运算,最终输出各帧相对参考帧的位移量,以及整个分析过程的运行耗时。结果如下:

图4 基于MAD匹配原则的径向位移

2.3 MSD 匹配法则

为实现上述 MSD 公式的计算(选择最小值),使用 MATLAB 编写的核心函数如下:

function msd_val = calc_msd(cw1, cw) % 二维均方差(MSD)公式 % cw1 - 匹配块 % cw - 参考块 % 计算两个块对应元素的差值平方 squared_diff = (cw1 - cw).^2; % 计算所有平方差的平均值 msd_val = -mean(squared_diff(:)); end

本方法同上采用 10×10 像素的图像模块进行运动特征分析,固定第一帧为参考基准帧,将其余所有帧作为待匹配帧依次完成匹配运算,最终输出各帧相对参考帧的位移量,以及整个分析过程的运行耗时。结果如下:

图5 基于MSD匹配原则的径向位移

三种匹配法则的代码如下:

clc; clear; % 启动计时器 tic; load("B1.mat"); num_frames = size(data, 3); r = zeros(1,num_frames); c = zeros(1, num_frames); % 确定参考帧和匹配帧的尺寸大小 %参考帧:cw起始行a 终点行b 起始列d 终点列e %匹配帧:cw1起始行a1 终点行b1 起始列d1 终点列e p=10;%最大像素位移 a=321; b=330; d=41; e=50; a1=a-p;b1=b+p;d1=d-p;e1=e+p; for k = 1:num_frames cw = data(a:b, d:e, 1);%参考帧 cw_t =data(a1:b1, d1:e1, k);%匹配帧 R = zeros(2*p+1, 2*p+1); % 计算相关系数矩阵 for i = 0:2*p for j = 0:2*p %R(i+1,j+1) = calc_corr(cw_t(i+1:i+10,j+1:j+10), cw);#调用NCC %R(i+1,j+1) = calc_mad(cw_t(i+1:i+10,j+1:j+10), cw);#调用MAD R(i+1,j+1) = calc_msd(cw_t(i+1:i+10,j+1:j+10), cw);;#调用MSD end end [sorted_values, sorted_indices] = sort(R(:), 'descend'); [rows, cols] = ind2sub(size(R), sorted_indices); found = false; for idx = 1:length(sorted_values) current_row = rows(idx); current_col = cols(idx); row_indices = current_row; col_indices = current_col; end r(k) = row_indices; c(k) = col_indices; end pluse=-(r-(p+1)); plot(pluse); elapsed_time = toc; % 输出运行时间 fprintf('程序总运行时间:%.4f 秒\n', elapsed_time);

3 结果分析

3.1 时间的差异

从运行时间来看,NCC (0.4358s) > MSD (0.3781s) > MAD (0.3428s),这一结果直观反映了三种相似性度量算法的计算效率差异:(1)计算复杂度决定耗时差异:NCC 耗时最长,核心原因是其需要先计算两个块的均值矩阵、差值矩阵,再完成乘法求和与开方运算,涉及均值计算、矩阵减法、逐元素乘法、平方求和、开方多步操作;而 MSD 仅需逐元素平方差 + 均值,MAD 仅需逐元素绝对差 + 均值,运算步骤更少、浮点操作数更低,因此耗时依次降低。(2)效率与精度的取舍:虽然 MAD 耗时最短,但需注意算法特性的适配性 ——NCC 因做了均值归一化,对亮度偏移、对比度变化的鲁棒性最强,适合光照不稳定的场景;MSD 对像素差值的平方放大效应使其对大误差更敏感,适合需要精准检测像素偏差的场景;MAD 计算最快且对异常值鲁棒性优于 MSD,适合实时性要求高的轻量化场景。

3.2 径向位移的差异

从图6中可见,基于 MAD 计算的径向位移在约 15–20 区间出现了明显的峰值,数值突破 6,显著高于 NCC(图中未出现明显峰值)和 MSD 的同期最高值(约 5)。尽管 MAD 的波动幅度更大,但三者的整体变化趋势基本保持同步:在初期阶段均呈快速上升态势,随后在中期进入平台期并伴随阶梯式下降,最终在末期共同趋于零值。这种趋势上的一致性,表明三种算法在反映径向位移的整体演化规律上具有良好的一致性,而 MAD 对局部突变的高敏感性。

图6 基于MAD、NCC和MSD匹配原则的径向位移

代码如下:

clc; clear; NCC=load("pluse_NCC.mat");MAD=load("pluse_MAD.mat");MSD=load("pluse_MSD.mat"); ncc = NCC.pluse; mad = MAD.pluse; msd = MSD.pluse; figure('Position', [100, 100, 1400, 800], 'Color', 'white'); plot(ncc, 'r-', 'LineWidth', 1.2, 'DisplayName', 'NCC'); hold on; plot(mad, 'g-', 'LineWidth', 1.2, 'DisplayName', 'MAD'); plot(msd, 'b-', 'LineWidth', 1.2, 'DisplayName', 'MSD');

4 讨论

本文主要介绍块匹配算法的原理以及基于MATLAB如何运行。从算法原理层面分析,MAD作为一种基于像素灰度值绝对误差的匹配准则,其计算逻辑为逐像素求取参考块与待匹配块的灰度差值绝对值并取平均,这种计算方式对像素灰度的局部突变更为敏感,因此在径向位移峰值处表现出更高的数值;而 NCC通过对灰度值进行归一化处理,有效降低了光照变化等因素的干扰,MSD则通过平方放大了误差的权重,二者对局部极值的响应弱于 MAD,这也是三者峰值差异的原因。其中 MAD 函数的核心代码仅需一行即可实现,计算效率最高;NCC 函数则需先通过cov函数计算协方差,再结合标准差完成归一化,代码复杂度稍高;MSD 函数需通过完成均方差求解。实际测试中,在 MATLABR2023a 环境下,对斑块大小(10X10)进行块匹配计算时,MAD 算法的单次运行耗时约 0.34s,NCC 约 0.44s,MSD 约 0.38s,这与算法原理的计算复杂度完全契合。

5 参考

[1] 刘明波,何新叶,杨晓红,等.《中国心血管健康与疾病报告2023》要点解读[J].中国心血管杂志,2024,29(04):305-324.

[2] 孙园园.基于超声图像的颈动脉运动估计[D].哈尔滨工业大学,2017.

[3] https://img.xjishu.com/img/zl/2017/10/26312254527875.gif

[4] 徐明才.颈动脉超声序列图像运动分析[D].中国科学技术大学,2010.

[5] 毛剑文.基于B超图像的颈动脉血管管壁搏动位移检测[D].云南大学,2016.

[6] 陈龙.基于改进光流场模型的颈动脉管壁搏动位移检测[D].云南大学,2017.

[7] 颈动脉管壁搏动位移超声检测_超声测量pwv-CSDN博客

[8] 血管管壁搏动位移信号提取的研究 - 豆丁网

注:若有侵权部分,请留言将会删除。

个人观点,仅供参考

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

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

相关文章

微信小程序要怎么做?哪家公司可以做?2026最全教程分享 - 企业数字化改造和转型

作为深耕小程序开发领域8年的老兵,我经手过几百个从0到1的小程序项目,不管是个体户想做线上门店,还是企业搭建私域载体,最实用的路径其实是借助成熟的小程序制作平台——不用懂代码,成本可控,还能快速上线。毕竟…

Java语言提供了八种基本类型。六种数字类型【函数艾弗森】

变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。 因此,通过定义不同类型的变量,可以在内存中储存整…

异地恋不慌!Like_Girl 情侣纪念站可以用cpolar把爱意存进云端随时看

Like_Girl v5.2.0 作为专为情侣打造的纪念网站系统,核心功能贴合情侣日常记录需求:恋爱计时器精准到秒记录相伴时光,留言板可留存日常甜蜜对话,恋爱相册能收纳合照与心动瞬间,还有恋爱清单、点点滴滴等板块定格回忆&am…

Win11怎么关闭自动更新_Win11禁用系统更新详细步骤,禁止windows系统更新的软件工具

Win11怎么关闭自动更新_Win11禁用系统更新详细步骤【教程】 Windows系统的自动更新功能本来是好意,能帮我们及时安装安全补丁和新功能。但实际用起来,不少人却被它搞得头大: 正忙着工作呢,突然弹出更新提示,打断思路…

TRON链深度解析:从华人公链到全球稳定币枢纽的演进之路

在多元化的公链竞争中,TRON(波场)以其清晰的战略定位和技术特色,发展成为全球区块链生态中不可或缺的一部分。本文将深入探讨TRON链的发展历程、技术架构、生态系统与未来前景。一、历史演进:从内容娱乐平台到金融基础…

微软运行库合集2026电脑版 - 一键安装缺失运行库 高效快速

系统提示DLL系统缺失怎么办?DLL系统修复专家:微软件运行库合集 2026电脑版 - 一键安装缺失运行库 高效快速 微软件运行库合集-搭载先进的算法和海量数据库,可以迅速的检测出电脑缺失的. dll文件类型, 以及存在的问题,高效精准修复异常运行库,快速恢复系统…

基于 YOLOv26 的危险物品检测系统:技术详解与模型原理

文章目录基于 YOLOv26 的危险物品检测系统:技术详解与模型原理前言一、系统核心挑战二、YOLOv26 模型原理主要模块和功能三、数据集与预处理1. 数据收集2. 数据标注3. 数据增强四、训练流程与优化1. 环境配置2. 模型训练示例3. 优化策略五、推理与评估1. 模型推理2.…

Avalanche(雪崩协议):重新定义高性能区块链的架构与未来

在区块链技术快速发展的今天,Avalanche(雪崩协议)凭借其创新的共识机制和独特的架构设计,已成为解决“区块链三难困境”的重要竞争者。本文将深入解析Avalanche的技术特点、发展历程、生态系统及未来前景。一、Avalanche是什么&am…

深度学习计算机毕设之基于python-CNN卷积神经网络人工智能对不同柑橘病变识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

基于 YOLOv26 的车型识别与计数系统:技术详解与模型原理

文章目录基于 YOLOv26 的车型识别与计数系统:技术详解与模型原理前言一、系统核心需求与挑战二、YOLOv26 模型原理核心设计原则任务特定优化主要模块三、数据集与预处理1. 数据采集2. 数据标注3. 数据增强四、训练流程与优化1. 环境准备2. YOLOv26 配置示例3. 模型训…

springboot非物质文化遗产再创新系统

背景分析非物质文化遗产(非遗)作为文化传承的重要载体,面临现代化冲击下的保护与传承难题。传统记录方式效率低、传播范围有限,年轻群体参与度不足。SpringBoot框架因其快速开发、微服务支持等特性,为构建数字化非遗系…

Cardano:构建在科学严谨性上的下一代区块链生态系统

在区块链技术快速发展的浪潮中,Cardano(ADA)以其独特的“研究先行”理念和科学的开发方法,致力于解决早期区块链网络在可扩展性、互操作性与可持续性方面的核心挑战。本文将深入探讨Cardano的历史背景、技术架构、生态系统作用及其…

RWA:打通现实与数字世界的万亿美元资产桥梁

在区块链技术蓬勃发展的今天,一个关键趋势正悄然改变我们对资产所有权的认知:现实世界资产代币化。这一被称为RWA的赛道,旨在将房地产、债券、艺术品等传统资产引入区块链,实现数字化与代币化,构建连接现实与数字世界的…

springboot非遗文化传承与推广平台管理系统

非遗文化传承与推广平台的背景随着全球化与现代化进程加快,许多非物质文化遗产(非遗)面临失传风险。传统手工技艺、民俗活动、口头传统等因缺乏系统记录、传播渠道有限、年轻一代参与度低等问题逐渐边缘化。数字化技术的普及为非遗保护提供了…

基于 YOLOv26 的机场航拍小目标检测系统:技术详解与模型原理

文章目录基于 YOLOv26 的机场航拍小目标检测系统:技术详解与模型原理前言一、系统需求与挑战二、YOLOv26 模型原理核心设计原则任务特定优化模块结构三、数据集与预处理1. 数据采集2. 数据标注3. 数据增强四、模型训练与优化1. 环境配置2. 配置 YOLOv26 数据集3. 模…

2026年最新版小程序开发公司TOP排名:哪家才是首选? - 企业数字化改造和转型

进入2026年,小程序已成为企业数字化转型的标配工具。但随着市场选择越来越多,许多企业主面临挑选靠谱小程序服务商的难题:技术门槛高、隐性费用多、后续运维难、访客量受限……这些常见痛点该如何解决?今天我们结合…

13.QLabel新手入门

一、核心知识点总结功能核心方法关键说明显示纯文本setText("文本") / setNum(数字)setNum自动把数字转文本,更方便显示富文本/HTMLsetText("HTML代码")支持字体、颜色、图片、超链接显示图片setPixmap(QPixmap("路径"))配合setScale…

《当投放预算跑不动:易元AI如何解决电商素材产能的系统性瓶颈》

Q1:现在电商投放最大的瓶颈是什么? A:不是预算,而是素材产能。 很多品牌并不是不敢花钱,而是没有足够多、足够快的投放素材承接消耗。人工剪辑单条素材消耗高,但产能有限,一旦素材跑量&#xff…

计算机深度学习毕设实战-基于python-深度学习机器学习CNN-pytorch训练识别蝴蝶-蚂蚱等昆虫

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

攻防世界cookie

1.认识cookie Cookie 全称 HTTP Cookie,是服务器通过 HTTP 响应头的 Set-Cookie 字段,下发给客户端浏览器的键值对格式文本数据(比如 flag=flag{123}; name=test);浏览器本地存储后,后续对该服务器的所有请求,都…