没有合适的资源?快使用搜索试试~ 我知道了~
≥≥ ≥≥软件X 17(2022)100959原始软件出版物PRETUS:基于插件的实时超声成像研究平台放大图片作者:Alberto Gomeza. Zimmera,b,Gavin Wheelera,Nicolas Toussainta,Shujie Denga,Robert Wrighta,Emily Mrstona,Jackie Matthewa,Bernhard Kainzc,d,Jo Hajnala,Julia Schnabela,b,ea英国伦敦国王学院生物医学工程成像科学学院b德国慕尼黑工业大学信息学系c英国伦敦帝国理工学院计算机系d弗里德里希-亚历山大大学 德国埃尔朗根-纽伦堡eHelmholtz Zentrum Münchenar t i cl e i nf o文章历史记录:接收16九月2021收到修订版2021年11月29日接受2021年保留字:实时超声成像插件a b st ra ct我们介绍了PRETUS -一个基于插件的实时超声软件平台,用于实时超声图像分析和操作员支持。该软件是轻量级的;功能通过独立的插件引入,可以按顺序排列。该软件允许捕获来自几乎任何超声机器的实时超声图像流,应用计算方法并实时显示结果。插件可以并发运行,而不会相互阻塞。它们可以在C++和Python中实现。可以为每个插件实现图形用户界面,并以紧凑的方式呈现给用户。该软件是免费和开源的,并允许快速原型和测试的实时超声成像方法在一个不可知的方式。该软件提供了输入、输出和处理插件,以及说明如何为PRETUS开发新插件的教程。©2021由Elsevier B.V.发布这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本1.1用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-21-00173法律代码许可证MIT许可证使用git的代码版本控制系统使用C++、Python的软件代码语言、工具和服务编译要求、操作环境依赖性Qt、ITK、VTK、Boost、OpenCV(特定插件可能具有额外的依赖关系)如果可用,链接到开发人员文档/手册N/A(可以生成Doxygen)问题支持电子邮件pretus@googlegroups.com软件元数据当前软件版本1.1此版本可执行文件的永久链接https://github.com/gomezalberto/pretus/releases/tag/v1.1法律软件许可证MIT许可证计算平台/操作系统Linux安装要求依赖Qt 5.12、VTK 8.0、ITK 4.12、Boost。对于Python插件,另外还有:PyBind11、Pyhton 3.6、numpy。不同的插件可能会添加依赖项,请检查每个插件如果可用,请链接到用户手册-如果正式发布,请包括参考文献列表中对出版物的参考问题支持电子邮件pretus@googlegroups.com∗通讯作者。电子邮件地址:alberto. kcl.ac.uk(Alberto Gomez).https://doi.org/10.1016/j.softx.2021.1009592352-7110/©2021由Elsevier B. V.出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxAlberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)10095921. 动机和意义超声(US)成像是最广泛使用的医学成像模式之一,因为它是便携式的,经济实惠的和安全的,并且可以用于获得对大多数身体器官的洞察。此外,US与其他常见模式(如计算机断层扫描(CT)、磁共振成像(MRI)或X射线)不同,设计的实时模态:为了使用超声系统,操作者需要解释显示器上显示的实时图像流,并使用解释的信息来引导超声换能器到所需视图。随着检查的进行,操作员通常会存储几十个静态图像或短片段以供报告或进一步调查。重要的是,超声图像的主要临床用途是在手术过程中。这是因为在诊断成像中,诊断是由操作员在图像被采集和解释时完成的。在介入成像中,使用实时图像中的图像来引导手术工具。US图像分析是一个非常活跃的研究领域[1大多数已发表的工作都集中在“离线”分析上,由操作员存储的图像和剪辑的数据。然而,对US图像流的实时分析可以潜在地改变超声的使用方式,因为它可以在检查期间为操作者提供扩展的信息和指导,如之前所指出的,这提供了最大的潜在益处。我们确定了在实时US图像分析方面所做的工作有限的三个主要原因:首先,大多数US系统不支持收集实时数据,并且需要外部设备,例如视频帧捕获器;少数系统支持DICOM(医学数字成像和通信 , 用 于 存 储 和 传 输 医 学 图 像 的 国 际 标 准 -https : //www.dicomstandard.org)帧需要专用协议来访问图像流。其次,用于实现实时图像分析方法的现有研究工具被设计为对图像流执行单个计算任务,然而实时分析通常需要连续(或并行)运行多个任务而不损害实时性能。第三,为了进行平移研究,实时分析的结果必须以不需要在扫描期间在显示器之间切换的方式显示给操作者,因为这是不可行的。在本文中,我们描述了PRETUS:基于插件的实时UltraSound,一个软件,解决了这三个挑战,同时仍然是一个简单,轻量级的工具,可以很容易地通过插件扩展— 可以单独构建的独立软件,主软件可以动态添加以扩展其功能。在过去的几年里,已经提出了许多研究软件,支持实时超声成像用于研究目的。其中,最常用的是Slicer IGT [4]和MITK IGT[5]。Slicer IGT是通过集成现有导航工具(例如,PLUS工具包— www.plustoolkit.org 和 OpenIGTLink [6] ) 到 Slicer ( www.slicer.org),一个用C++编写的通用医学成像软件。Slicer IGT被设计为PLUS(连接和管理来自传感器和图像源的数据)之上的一个层,提供广泛的可扩展算法集合,并且在其之上可以构建特定于应用程序的GUI和逻辑。方便的是,Slicer的功能可以通过自定义Python脚本模块进行扩展。MITK IGT随后发布,并遵循类似的范例:将图像引导工具纳入MITK,一种通用图像处理软件。MITK确实有一个Python模块,允许使用Python命令查询数据。与Slicer IGT和MITK IGT相反,PRETUS是一个最小的软件,除了连接插件并确保它们可以同时运行并在它们之间通信之外,它本身没有任何功能。所有的功能都是由插件引入的,插件是作为在运行时加载的动态库构建的。这促进了相对于MITK IGT或Slicer IGT的关键范式转变:而不是旨在与最大数量的设备兼容,PRETUS被认为是尽可能独立于特定设备,通过将大部分功能委托给插件,以便在需要时可以实现自包含的设备特定插件这种设计范例还提倡功能是模块化的,每个插件在特定的输入上执行一个简单的任务,并产生特定的输出。另外,这允许插件的非常灵活的互连,例如使得能够以如由用户定义的任意方式互连的多个输入、输出和最后,一个主要的区别是,PRETUS插件以用户定义的帧速率同步运行如后所示,这具有即使在插件通过权衡帧速率而执行缓慢的情况下也能够实现整体实时行为的优点。这些差异总结在表1中。PRETUS是在iFIND项目( www.ifindproject.com )中开发的,用于收集500多名妊娠患者的数据和测试方法。该软件已用于2D和3D超声应用。在3D成像应用中使用PRETUS的方法包括通过实时快速配准3D超声体积序列进行3D全胎儿成像[7,8],通过融合和分割来自多个3D超声视图的胎盘进行全胎盘成像[9,10],以及使用图谱配准和融合进行全胎头成像[11,12]。PRETUS还用于实时2D应用,例如标准胎儿平面检测[13]、标准胎儿平面中的自动生物计量测量[14,15]以及超声图像中胎儿器官的自动检测和定位 [16] 。 在 VITAL 项 目 ( http://vital.oucru.org/ ) 的 背 景 下 ,PRETUS也被用于研究在低收入和中等收入国家实施人工智能超声方法,特别是登革热患者的肺部超声[17]。该软件通过命令行可执行文件使用,其中用户在运行时定义实时管道。具体的实验设置将取决于期望的流水线,然而,典型的设置将是定义输入成像源(例如,来自磁盘或帧捕获器的文件)、处理任务(例如,检测标准平面)和输出任务(例如,在屏幕上显示结果)。更多示例和用例在第3节中更详细地描述。总之,PRETUS是一款轻量级、可扩展的软件,可解决上述三大挑战:首先,通过使用视频输出,几乎可以从任何机器上收集实时US数据。第二,通过同时启用多个图像处理和可视化步骤的实时流水线.第三,通过以实时、紧凑和统一的方式显示来自不同处理任务的实时此外,PRETUS可以拍摄预先录制的视频或图像,并以采集帧率回放,以模拟实验室中的实时会话2. 软件描述PRETUS是一个命令行软件,使用开源软件构建,并在Linux中进行了测试(所有依赖项都是跨平台的,但在Windows和Mac中进行了有限的测试),以促进实时超声成像的研究。该软件通过建立一个具有任意数量的元素(插件)的实时处理管道来工作。中的插件Alberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)1009593表1PRETUS与其他两种广泛使用的实时成像软件之间的差异概述。总之,PRETUS的设计目标是非常轻量级,并将所有功能委托给在运行时加载的插件,这些插件异步运行以确保实时行为。软件Main app可在python中扩展?模块执行切片机IGT通用,功能齐全是的Python 脚 本 可以 从 主 应 用 程序异步MITK IGT通用,功能齐全是的可编程Python模块异步PRETUS最小化,模块化,所有功能都来自插件是的可 以 同 时 运行的独立同步(用户定义的帧速率)Fig. 1. 插件管道概念概述。每个框代表一个插件,按从左到右的顺序插入执行管道。第一个插件(A)通常是图像源(例如,帧抓取器或文件读取器),最后一个插件通常用于可视化(如此处所示,集成小部件所有插件)。配置是向下游传输的(如顶部的配置行所示),数据是使用流概念从每个插件向下游传输的(第2.2.2节)。流水线执行特定的功能,例如生成实时数据流(例如来自超声视频源),对数据流应用实时算法(例如,经由深度神经网络实现),并输出结果(例如,通过可视化经处理的图像或元数据,或将两者保存到文件)。2.1. 软件构架该 软 件 被 实 现 为 一 个 轻 量 级 的 QApplication(https://www.qt.io/),它互连并启动管道中的许多插件。图1示出了具有插件和数据传输线或数据流的流水线的图示,稍后在第2.2.2节中描述。该软件分为四个模块:在应用程序文件夹中的PRETUS应用程序。应用程序首先在运行时加载并实例化在plug-ins文件夹(或文件夹)中找到的插件(作为动态库实现),还将任何命令行参数传递给每个插件。所有插件都继承自Plugin类,它实现了异步回调(使用QT信号和插槽)来在插件之间传输配置信息和数据。建立这些传输线(这里称为流,在2.2.2节中有更详细的描述),最后激活插件,开始整个插件管道的执行循环通用模块,其中包括通用类,在-从iFIND项目中分离出来,用于管理数据。这个模块中的主类是ifind::Image类,它在PRETUS中用于封装图像和元数据,并通过信号/插槽进行传输。• PluginLib库,它实现了插 件 需 要 继 承 ( 主 要 是 Plugin 、 Worker 和 Qt-PluginWidgetBase)。该库在第2.2.1节中有更详细的描述。Plugins文件夹,其中包括一些随软件发布的基本插件。第3节和附录A中的示例进一步描述了此版本中包含的插件。···Alberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)1009594×由于主要功能是通过插件引入的,因此在下文中,我们将更详细地描述插件的架构2.2. 软件功能PRETUS在运行时定义了一个图像插件管道,这些插件依次处理图像流。的来源成像数据、过程本身以及是否显示和/或存储结果取决于所使用的插件。在性能方面,PRETUS旨在满足两个主要要求。首先,插件可以并发执行,即,每个插件的工作在单独的非阻塞线程中运行。第二,插件必须尽可能接近实时运行。每个插件的工作都以用户定义的帧速率运行,并且当先前的计算已经完成时,处理最新的可用帧。为此,PRETUS将在插件的输入处丢弃帧,直到插件准备好接受新帧。如果某个特定插件不需要实时性能,并且需要处理所有帧,则上述两个功能是通过两种机制实现的:插件系统和流。2.2.1. 插件系统插件是独立的程序,构建为动态库,并在运行时加载到PRETUS所有插件都将图像作为输入,在输出时生成图像,并通常将处理任务委托给Worker类。插件还可以有两种显示信息和输出的互补方式(i) 通过实现一个小部件,通常将显示图形,数字和文本,并允许通过滑块和其他小部件输入;(ii)通过实现一个图像小部件,将显示图像,覆盖,蒙版等。小部件和图像小部件都必须继承自PluginLib中的QtPluginWidgetBase类。如何为PRETUS构建插件的两个示例在第3节中概述,并在存储库(https://github.com/gomezalberto/pretus)上提供。插件在管道中的基本操作如下:1. 插件从流水线中的先前插件接收输入图像。该图像还将传递给下一个插件。2. 如果图像属于此插件接受的Stream,则图像将被发送到插件3. 如果工作线程没有处理前一个映像,则计时器会在单独的线程中将最新映像发送给工作线程。4. 插件的主要处理任务在Worker中执行。完成后,输出图像被发送到插件,并通知计时器工作人员已准备好拍摄新图像。5. 插件通过插件的输出Stream发送输出图像。下游插件现在可以使用它。6. 如果插件具有Widget和/或ImageWidget,则输出图像将发送给它们以供显示。用户可以对小部件中可用的任何输入(例如滑块、复选框等)进行操作。以在映像会话期间更改插件行为我们建议(就像我们在这个存储库中包含的所有插件中所做的那样)将插件任务产生的任何输出图像由于图像是作为指针传输的,因此不会在内存中复制数据,因此这种机制是有效的。此外,这允许始终跟踪使用什么图像来产生什么结果,即使不同的流以不同的速率运行,同时保持实时性能。2.2.2. 流在此上下文中,流是指由插件产生的每个图像序列,并且可由管道中的所有其他下游插件访问。每个流都以生成它的插件命名,除了在源处生成数据的插件(也称为输入插件)。输入插件捕获成像数据并将其传输到管道的下游。 在当前版本的PRETUS中,提供了三个输入插件:视频管理器插件,可以从视频文件中读取和传输帧;帧捕获器插件,可以从超声系统中读取视频输出并逐帧传输;文件管理器,可以从文件夹系统中读取图像并以给定的帧率传输。这些类型的插件必须通过IsInput( ) 插件方 法返回true 。输 入插件传 输的Stream 被称为“Input”,而不管插件的名称。可以同时使用多个输入插件,在这种情况下,只有第一个插件会有一个名为“Input”的Stream,其余的(按照在管道中出现的顺序)将被称为“Input1”,“Input2”等。管道中的其余插件默认接受来自“Input”的图像<2.2.3. 构建插件插件是用C++编写的动态库,与PRETUS提供的插件库链接插件执行的处理任务可以用C++或Python实现。为了说明这两种类型的插件,存储库在Plugins文件夹中包含了两个示例插件,它们被设计和记录为开发人员实现C++插件(Plugin_CppAlgorithm)和Python插件(Plugin_PythonAlgorithm)的模板和教程2.3. 硬件要求和实验配置RETUS已在基本笔记本电脑中构建和测试,它定义了最低推荐要求并设置了性能下限。这种性能在第3.3节中的示例插件上进行了量化。笔记本电脑是2015年的DELL XPS 15 9550,配备16 GB RAM,Intel Core i7-6700HQ CPU@2.60 GHz 8 CPU 和 NVIDIA GeForceGTX 960 M 2 GB GPU。这台笔记本电脑配置了Ubuntu 20.04 LTS。3. 说明性实例在本节中,我们描述三个使用示例:首先,超声视频的实时模糊和阈值化的示例。这些插件在设计时并没有考虑到预期的应用,而只是举例说明了PRETUS的设计和性能。其次,示例显示了SonoNet [13](一种用于自动识别解剖胎儿标准视图平面的深度神经网络)与PRETUS的集成。第三,模糊,阈值和SonoNet在同一管道中工作,我们使用并发C++和Python插件评估实时性能。在所有情况下,视频都是15分钟长,并以每秒30帧的速度编码。补充材料中提供了显示三个示例的视频,这些视频的屏幕截图如图所示。 二、Alberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)1009595图二. 三条PRETUS管道的截图。(a)其中输入图像显示在左上方,模糊图像显示在右上方,阈值化图像显示在右上方。模糊图像的版本,覆盖在输入上,在左下角。(b)捕获PRETUS中集成SonoNet的标准平面检测插件,其中已检测到“头部”标准视图。(c)三个插件(模糊,阈值和Sononet)同时工作。所有示例在第3节中进行了描述,并在补充材料的视频中进行了3.1. 模糊化和阈值化这个例子的目的是说明一个插件的输出到另一个插件的输入的连接,以及结果的可视化。为此,我们构建了一个包含四个插件的管道:视频管理器插件(附录A.2)作为输入插件,它从文件中读取视频并通过管道传输每个帧。然后,Python算法插件(附录A.5)获取视频帧并应用模糊操作。将模糊帧输入到Cpp算法插件(附录A.4),该插件对模糊图像执行二进制阈值处理操作。最后,GUI插件(附录A.8)从前面三个插件中获取所有小部件,并将它们显示在屏幕上。默认情况下,所有插件都接受来自Input流的图像这个流是由任何输入插件(视频管理器、帧抓取器和文件管理器)生成的,这些插件首先在管道中为了让Cpp Algorithm插件接收Python Algorithm插件的输出作为输入,我们使用可选参数--cppalgorithm_stream pythonalgorithm ( 或 者 从 PythonAlgorithm和小部件中的最后一层中选择输入此外,Python算法将模糊图像作为附加层添加到其输入图像中,并且需要使用命令行参数--cppalgorithm_layer-1通知Cpp算法插件要使用pythonalgorithm流中的哪一层,在本例中是最后一层。此示例的完整命令行调用是:美元/ bin/pretus−pipeline“videomanager>pythonalgorithm>cppalgorithm>gui”−−videomanager_input video/data/video.MP4\−−cppalgorithm_stream pythonalgorithm\−−cppalgorithm_layer −1该程序将启动,显示有关插件的信息,如下所示,并打开一个窗口与GUI(图。 2,左,和视频SV1)。3.2. SonoNet集成在本例中,我们说明了SonoNet [13]的集成,这是一种用于检测20周胎儿筛查超声检查的标准胎儿平面的模型。SonoNet模型通过Standard Plane Detection插件并入pretus。由于SonoNet是逐帧实现的,因此在我们的实现中,我们允许用户使用时间平均值来利用高采集帧速率来稳定平面预测。要平均的帧数可以通过命令行参数设置,并通过小部件中的滑块实时修改有了这个,结果调用是:美元/ bin/pretus −pipeline“videomanager>standardplanedetection>gui”\−−videomanager_input video/data/video.MP4−−standardplanedetection_taxpanel 20由此产生的显示和交互可以在图中看到。2,中间,和视频SV2。3.3. 同一管道中的所有插件本示例的目的是演示多个C++和Python插件可以并发工作,并评估影响整个流水线的性能中每个插件的延迟和执行时间以及相对于输入流的总延迟。 我们使用视频管理器插件作为输入,并使用Python算法,Cpp算法和SonoNet,然后是GUI插件。为了说明高延迟时的丢帧行为,我们在Python算法插件中引入了一个人工变量等待时间。所有插件都提供了命令行选项_time 1,用于测量worker的执行时间。我们在五种配置中运行管道:1)使用Input流的所有插件; 2)到5),使用插件-插入顺序连接,使用前一个插件的输出流作为输入,以及10 Hz(配置2)、20 Hz(配置3)、30 Hz(配置4)和40 Hz(配置5)的插件帧速率(所有三个插件相同)。我们还测量所有插件的执行时间第一个配置的执行调用是:美元/ bin/pretus −pipeline“ideomanager>pythonalgorithm>cppalgorithm>standardpanedetection>gui”\−−videomanager_input video/data/video.MP4\−−standardplanedetection_time 1 −−pythonalgorithm_time 1 −−cppalgorithm_time 1\−−pythonalgorithm_delay 0.1程序将通过在命令行中输入“quit”退出对于配置2)至5)(替换帧速率值):Cpp算法−> GUIVideoManager::Initialize()− loading video~/data/video.MP4.已加载,FPS = 60,帧= 110842开始采集Manager::exitLoop()-输入>>视频管理器−> Python算法Python算法−> Cpp算法6 [Plugin]正在加载文件夹>/libPlugin_planeDetection. so.标准平面检测(6)已加载7 [Plugin] loading folder>/libPlugin_GUI.so.GUI(7)已加载4 [Plugin]正在加载文件夹>/libPlugin_framegrabber. so.图像采集卡(4)已加载5 [Plugin] loading folder>/libPlugin_Pythonplugin. so.Python算法(5)加载2 [Plugin] loading folder>/libPlugin_videomanager.so.视频管理器(2)加载3 [Plugin] loading folder>/libPlugin_Cppplugin. so...Cpp算法(3)加载0 [Plugin]正在加载文件夹>/libPlugin_filemanager.so.文件管理器(0)已加载1 [Plugin] loading folder>/libPlugin_imageFileWriter.so.图像文件写入器(1)已加载从文件夹加载插件>Alberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)1009596±±美元/ bin/pretus −pipeline“videomanager>pythonalgorithm>cppalgorithm>standardpanedetection>gui”\−−videomanager_input/data/video.MP4 −−videomanager_verbose 1\−−standardplanedetection_time 1 −−pythonalgorithm_time 1 −−cppalgorithm_time 1\−−pythonalgorithm_framerate 10 −−pythonalgorithm_delay 0.1\−−cppalgorithm_framerate 10 −−standardplanedetection_framerate 10\−−cppalgorithm_stream Python算法−−cppalgorithm_layer −1\−−standardplanedetection_stream cppalgorithm −−standardplanedetection_layer −1表2每个插件的执行时间的平均标准差,单位为ms:Python算法(PA)、Cpp算法(CA)和标准平面检测(SPD),配置1)。等待0 ms 50 ms100 ms150 Ms200 MsPA26.2± 576.7±7124.4± 3173.6± 1223.9± 1这些因素的影响,我们在表3中报告了每个插件的实测帧速率。我们 还 对 报 告 的 结 果 进 行 了 统 计 学 显 著 性 检 验 ( N-wayANOVA)。正如预期的那样,平行(Par.),在所有插件都使用输入流中的数据的情况下,CA和SPD插件维护请求的帧速率(20 Hz)独立于其他插件。时间(ms)CA 0.9± 1 0.9± 1 0.8± 1 0.8± 0 0.7± 1显然,PA插件只能在以下情况下保持帧速率:SPD17.6 ±617.7 ±915.0 ±314.6 114.8±2一个显示配置2的可视化的例子可以在图2中看到。2,右,在视频SV3中。表2显示平均每个插件的标准偏差执行时间,对于序列中第一个插件(Python Algorithm plug-in - PA)中引入的不同等待时间。统计数据是在15分钟的视频中对插件的所有调用进行计算的。视频以30 Hz的频率传输图像,总共产生27000帧。根据每个插件设置的帧速率,这将导致每个插件的3500到35000个独立时间测量值 我们对每个插件报告的执行时间进行了n向ANOVA测试,发现:对于Python算法,所有执行时间都有显着差异(p <0. 05)。01),如预期;为在Cpp算法中,只有第一个实验(等待= 0 ms)与最后两个实验(150和200 ms)显著不同,这两个实验彼此没有差异(p <<0. 05)。01);对于标准平面检测,前三个实验(0、50和100 ms)和后两个实验(150和200ms)在组内没有显著差异,但在组间有差异(p <0 . 05)。01)。总之,如表所示,等待时间(从0到200 ms)对下游其他插件的执行时间影响很小,因为每个插件都在单独的线程上执行。有趣的是,结果是等待时间越长,执行速度越快,可能是因为插件等待但不消耗任何CPU资源,其他插件拥有更多的资源。当按顺序设置插件时(接受来自前一个插件的输入,配置2)到5)),它们各自的执行时间不受影响。如表2所示,标准平面检测插件中观察到的执行时间随着等待时间的增加而减少,这是由于在预处理步骤和其他基于CPU的任务中使用了更多的可用CPU资源。然而,每个插件仍然需要等待从前一个插件接收图像,这与处理来自“输入”流的图像相比引入了额外的延迟我们通过跟踪来自输入的帧编号并比较处理后该帧的时间戳来测量插件输出和“Input”流之间的总延迟。此延迟将根据请求的插件帧速率而变化插件会以请求的帧速率(默认为20 Hz)检查最新输入帧,并丢弃新帧,直到插件完成当前处理任务,以避免时间漂移。当空闲时,下一个图像在下一个周期性输入检查到达时被处理。这两种效应如图所示。3 .第三章。由于帧丢弃,有效帧速率,即,每个插件实际处理的每秒帧数取决于三个因素:(1)插件的执行时间(其限制最大有效帧速率),(2)如果按顺序连接(当前插件将必须等待),则在当前插件之前的插件的执行时间,以及(3)其它系统参数(例如,存储器、CPU等)。为了说明不引入等待时间,然后帧速率与等待时间成反比地减小。这进一步证明了两个插件(其中任务是用Python实现的)可以独立地并行运行。这是通过跨插件共享Python解释器来实现的帧速率受到等待时间的限制;结果,所请求的帧速率只能在某些情况下实现,在表中以浅灰色突出显示(这些情况在统计上与P 0的所需帧速率没有不同<)。01)。当请求非常高的帧速率时,管道可能无法以该帧速率进行传输,并且帧速率将被限制为该特定管道的最大系统帧速率,在这种情况下约为26 Hz(在表3中以深灰色突出显示)。4. 影响PRETUS将促进和促进实时超声成像研究,主要有两个原因:第一,PRETUS是基于插件的,插件在实现数据处理、参数处理、用户界面、图像可视化和任何其他显示或输入部件的意义上是自包含的;然而,插件库中提供了开发插件的默认模块和基本构建块,并提供了使用C++和Python的插件示例,简化了新插件的实现。第二,PRETUS实现了用户透明的多线程插件执行,定期调用插件实现的任务,以确保插件始终使用最新生成的输入图像,并且它们尽可能接近实时地运行。至关重要的是,Python解释器在Python插件之间共享,从而也可以并发执行独立的、动态加载的Python插件。事实上,数百篇关于超声图像的研究论文每年都会发布分析结果,其中大部分都是使用图像数据库进行离线训练和测试的。因此,在美国研究中高度寻求一种平台,以便于实时数据收集以及在连接到超声成像系统的现实、实时临床场景中实施和评估计算方法。PRETUS允许以简单灵活的方式集成C++和Python方法,对用户和开发人员可能已经拥有的离线版本进行最小的更改。为此,我们提供了有关如何 用C++和Python构建插件。方便的是,PRETUS还允许回放捕获的视频或图像序列,并以采集帧速率进行回顾,以在实验室中离线复制实时会话。作为一个轻量级和基于插件的软件,PRETUS可以加速超声成像诊断和干预的转化研究。与其他软件不同,PRETUS实现了实时扩展,对用户和插件开发人员透明,确保无论计算方法的性能和速度如何,最新的输入图像总是被馈送到 避免执行漂移。PRETUS还确保插件并行运行,并且它们的输出和输入可以在运行时相互连接。此外,用户可以在运行时改变插件的互连方式,或者例如基于算法的输出以编程方式改变插件的互连方式,这使得PRETUS非常灵活。PRETUS的一个独特功能是插件可以用Python和C++实现,多个Python插件可以通过共享PythonAlberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)1009597→→→±图三. 当插件按顺序连接时,每个插件的输出和实时输入流之间的测量延迟:输入Python算法(PA,黄色)Cpp算法(CA,橙色)SonoNet(SPD,蓝色)。PA插件中引入的增加等待时间以从浅到深的阴影进行编码对于每个插件。当请求更高的帧速率时,延迟减小直到30 Hz左右,其中其它系统参数(例如,存储器、CPU等)成为限制因素。(关于此图例中颜色的参考解释,请读者参考本文的网络版本表3当并行执行Python算法(PA)、Cpp算法(CA)和标准平面检测(SPD)这三个插件时,每个插件的测量有效帧速率的平均标准偏差(以Hz为单位)行)或按顺序连接(Seq.行)以指示的用户请求的帧速率(对于所有三个插件都是相同的)。高亮显示的单元格浅灰色表示测量的帧速率和请求的帧速率匹配。20 Hz(二)Seq.10 Hz(三)Seq.20 Hz(四)Seq.30 Hz(五)Seq.40 HzSPDPACASPDPACASPDPACASPDPACASPD20.0±2.120.2±3.110.2± 1.510.0±0.710.3±1.919.6± 2.619.6±2.519.8±3.225.9± 5.026.0±5.127.1±7.926.3± 4.026.4±4.327.6±7.920.3 ± 3.420.4 ± 3.520.3 ± 3.720.3± 2.919.9± 4.0 20.0± 4.4 20.0± 4.2 20.0± 3.39.6 ± 1.45.0 ± 0.15.0 ± 0.13.3 ± 0.69.7± 1.4 5.0± 0.1 5.0± 0.1 3.3± 0.59.8± 1.8 5.1± 0.6 5.0± 0.4 3.3± 0.69.9± 0.8 6.7± 0.3 5.0± 0.1 4.0± 0.19.9± 0.8 6.7± 0.3 5.0± 0.1 4.0± 0.010.0± 1.4 6.7± 0.5 5.0± 0.2 4.0± 0.110.6± 0.9 7.4± 0.5 5.2± 0.1 4.1± 0.610.5± 0.9 7.4± 0.5 5.2± 0.1 4.1± 0.610.8± 2.2 7.5± 1.1 5.2± 0.3 4.1± 0.611.4± 1.1 7.3± 0.4 5.4± 0.2 4.2± 0.111.4± 1.2 7.3± 0.4 5.4± 0.2 4.2± 0.111.7± 2.1 7.5± 1.7 5.4± 0.4 4.2± 0.2口译员。此外,PRETUS被设计为连接到几乎任何超声系统的视频输出,从而消除了特定格式和传输协议的障碍。然而,如果机器特定的协议可用,则开发者可以使用所提供的输入插件作为示例来容易地实现PRETUS还包括一个文件保存插件,将系统变成一个强大的数据收集软件,可以方便地获取大量的研究数据。 由于可以同时捕获多个输入流,因此也可以捕获和存储同步的多源数据。保存图像的标签或文件夹可以实时更改,从而可以轻松地注释帧序列(例如,在考试期间,总的来说,PRETUS有两个主要目标:首先,通过证明一个轻量级的应用程序,可以很容易地扩展,并被设计为实时运行,促进第二,通过将算法轻松集成到实时框架中,并提供一个平台来使用预先录制的视频数据在现场程序或回放中测试它们,从而促进计算方法的转换。我们相信这将使研究人员能够更好地展示他们的计算方法在更现实的临床情况下的潜在临床影响。5. 结论我们已经讨论了PRETUS,一个基于插件的实时软件,用于US成像研究。该软件允许收集实时超声数据和使用算法(用C++或Python实现)。PRETUS动态加载插件,用户可以在运行时定义插件管道我们已经评估了PRETUS与三个例子,demonstrat- ING实时,并发执行多个插件。PRETUS可以通过更多的插件轻松扩展,并且有潜力使研究人员能够以最小的实现工作实时评估他们的方法。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢本 研 究 部 分 由 英 国 Wellcome Trust IEH Award 资 助 [WT102431/Z/13/Z]。为目的Conf.等0毫秒50 ms100 ms150 Ms200 Ms(一)段落PACA20.0±2.59.8±1.06.6±0.54.9±0.33.9±0.2Alberto Gomez,Veronika A. Zimmer,Gavin Wheeler等.软件X 17(2022)1009598开放获取,作者已经申请了CC BY公共版权许可证,任何作者接受的手稿版
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- StarModAPI: StarMade 模组开发的Java API工具包
- PHP疫情上报管理系统开发与数据库实现详解
- 中秋节特献:明月祝福Flash动画素材
- Java GUI界面RPi-kee_Pilot:RPi-kee专用控制工具
- 电脑端APK信息提取工具APK Messenger功能介绍
- 探索矩阵连乘算法在C++中的应用
- Airflow教程:入门到工作流程创建
- MIP在Matlab中实现黑白图像处理的开源解决方案
- 图像切割感知分组框架:Matlab中的PG-framework实现
- 计算机科学中的经典算法与应用场景解析
- MiniZinc 编译器:高效解决离散优化问题
- MATLAB工具用于测量静态接触角的开源代码解析
- Python网络服务器项目合作指南
- 使用Matlab实现基础水族馆鱼类跟踪的代码解析
- vagga:基于Rust的用户空间容器化开发工具
- PPAP: 多语言支持的PHP邮政地址解析器项目
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功