一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种针对医学影像的滤波系统及方法与流程

2022-08-28 09:35:31 来源:中国专利 TAG:


1.本发明涉及医学影像处理领域,尤其涉及一种针对医学影像的滤波系统及方法。


背景技术:

2.ct图像中常出现环形伪影,造成该问题的原因在于探测器校准不当或者探测器缺陷。为去除环形伪影,通常采用中值滤波方式。
3.中值滤波是一种非线性算法,可以去除孤立的噪声,同时可以保留边缘信息,比线性平滑滤波器更有效。中值滤波的主要缺点在于计算成本巨大,特别是针对滤波窗口比较大的情况。中值滤波需要先对窗口内的数值进行数值排序,例如:一维中值滤波窗口宽度m,需要对m个数据递归循环遍历直到找到中位数,取中位值作为输出值。现常见的排序方法如冒泡、选择等排序算法,需要两个for循环,每次只关注一个元素,平均时间复杂度为o(n2)(一遍找元素o(n),一遍找位置o(n))且需要大量的if、else等比较分支操作,一旦分支操作越多,数据处理速度越慢。
4.因此,需要一种新型的中值滤波的系统结构及方法,可明显地提高中值滤波的运算速度。


技术实现要素:

5.为了克服上述技术缺陷,本发明的目的在于提供一种针对医学影像的滤波系统及方法,中值滤波算法中大幅减少了if、else处理,有利于cuda多核多线程操作相同的过程,大幅提高运算效率。
6.本发明公开了一种针对医学影像的滤波系统,滤波系统包括图形处理单元,图形处理单元包括:
7.m个处理块,每一处理块包括:
8.n个处理单元,每一处理单元对应一处理线程,所有处理线程呈并行处理;
9.每一处理单元预设有窗宽为q的中值滤波处理窗,当处理单元接收p个浮点数时,自浮点数的首位起,基于中值滤波处理窗计算q个连续浮点数中的中位数并存储为第一输出中值,其中q<p;
10.当处理单元基于前一中值滤波处理窗输出中值数后,处理单元后移一位浮点数并再次计算q个连续浮点数中的中位数并存储为第二输出中值,直至所有浮点数均被计算,使得处理单元形成中值数组;
11.所有处理单元拼接中值数组以形成中值数列。
12.优选地,滤波系统还包括中央处理单元,与图形处理单元连接;
13.图形处理单元自中央处理单元接收待滤波数据,并将中值数列回传至中央处理单元;
14.图形处理单元接收t个浮点数后,将t个浮点数按照每p个浮点数分段,并输入至每一处理单元内;
15.每一处理单元向图形处理单元申请划分q个数据大小的共享内存,并将每次中值滤波处理窗的排序结果存储至共享内存,及将中值数据存储至处理块的全局内存。
16.优选地,处理单元自浮点数的首位起,基于冒泡算法计算q个连续浮点数中的中位数为第一输出中值;
17.处理单元将中值滤波处理窗中的首位删除,于中值滤波处理窗中补入无穷大数后,将邻接于中值滤波处理窗的后一浮点数代入并排序,并将更新后的中值滤波处理窗内的浮点数的中位数输出为第二输出中值;
18.处理单元反复更新中值滤波处理窗及输出的第n输出中值,直至浮点数的末位更新至中值滤波处理窗后输出第p-q 1输出中值。
19.优选地,处理单元基于min/max算子对代入有后一浮点数的中值滤波处理窗内的数值排序。
20.本发明还公开了一种针对医学影像的滤波方法,包括以下步骤:
21.配置一图形处理单元,图形处理单元包括:m个处理块,每一处理块包括:n个处理单元,每一处理单元对应一处理线程,所有处理线程呈并行处理;
22.每一处理单元预设有窗宽为q的中值滤波处理窗,当处理单元接收p个浮点数时,自浮点数的首位起,基于中值滤波处理窗计算q个连续浮点数中的中位数并存储为第一输出中值,其中q<p;
23.当处理单元基于前一中值滤波处理窗输出中值数后,处理单元后移一位浮点数并再次计算q个连续浮点数中的中位数并存储为第二输出中值,直至所有浮点数均被计算,使得处理单元形成中值数组;
24.所有处理单元拼接中值数组以形成中值数列。
25.优选地,配置一图形处理单元,图形处理单元包括:m个处理块,每一处理块包括:n个处理单元,每一处理单元对应一处理线程,所有处理线程呈并行处理的步骤包括:
26.滤波系统还包括中央处理单元,与图形处理单元连接;
27.图形处理单元自中央处理单元接收待滤波数据,并将中值数列回传至中央处理单元;
28.当处理单元接收p个浮点数时,自浮点数的首位起,基于中值滤波处理窗计算q个连续浮点数中的中位数并存储为第一输出中值的步骤包括:
29.图形处理单元接收t个浮点数后,将t个浮点数按照每p个浮点数分段,并输入至每一处理单元内;
30.每一处理单元向图形处理单元申请划分q个数据大小的共享内存,并将每次中值滤波处理窗的排序结果存储至共享内存,及将中值数据存储至处理块的全局内存。
31.优选地,当处理单元基于前一中值滤波处理窗输出中值数后,处理单元后移一位浮点数并再次计算q个连续浮点数中的中位数并存储为第二输出中值,直至所有浮点数均被计算,使得处理单元形成中值数组的步骤包括:
32.处理单元自浮点数的首位起,基于冒泡算法计算q个连续浮点数中的中位数为第一输出中值;
33.处理单元将中值滤波处理窗中的首位删除,于中值滤波处理窗中补入无穷大数后,将邻接于中值滤波处理窗的后一浮点数代入并排序,并将更新后的中值滤波处理窗内
的浮点数的中位数输出为第二输出中值;
34.处理单元反复更新中值滤波处理窗及输出的第n输出中值,直至浮点数的末位更新至中值滤波处理窗后输出第p-q 1输出中值。
35.优选地,处理单元基于min/max算子对代入有后一浮点数的中值滤波处理窗内的数值排序。
36.采用了上述技术方案后,与现有技术相比,具有以下有益效果:
37.1.基于图形处理单元存储数据时,可利用共享内存具有的低延迟特性和并行性,大幅度提高数据处理速度;
38.2.中值滤波方式中,大幅减少if、else处理,减少分叉型逻辑判断后可提高运算效率。
附图说明
39.图1为符合本发明一优选实施例中图形处理单元的模型结构示意图;
40.图2a为符合本发明一优选实施例中待中值滤波的浮点数示意图;
41.图2b为符合本发明一优选实施例中待经中值滤波处理窗排序后的浮点数示意图;
42.图2c为符合本发明一优选实施例中待更新的中值滤波处理窗排序后的浮点数示意图;
43.图2d为符合本发明一优选实施例中待更新的中值滤波处理窗排序后的浮点数示意图;
44.图3a为符合本发明一优选实施中处理块对浮点数的分段示意图;
45.图3b为符合本发明一优选实施中图形处理单元的全局内存和共享内存对中值滤波的存储示意图。
具体实施方式
46.以下结合附图与具体实施例进一步阐述本发明的优点。
47.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
48.在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
49.应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
50.在本发明的描述中,需要理解的是,术语“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
51.在本发明的描述中,除非另有规定和限定,需要说明的是,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,也可以通过中间媒介间接相连,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。
52.在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。
53.参阅图1、图3a及图3b,为对医学影像作中值滤波,本发明中,采用了图形处理单元(gpu)作为数据处理模块。可以理解的是,通常而言,gpu用于处理图像数据,而本发明中,将gpu用作为滤波处理,是本领域中不常采用的方式。gpu拥有多线程架构,包含数百个内核,每8个标量处理内核(sp)经过组织进入多处理器(sm),多处理器中的所有内核执行相同的线程,比如,nvidia gtx 285有30个sm,总共有240个处理核心。针对nvidia显卡编程,可以使用cuda(一种用于处理通用显卡的架构的高级编程语言)。在并行编程模型中(如图1所示),cuda的api允许同时创建数千个线程,线程被组织进入两级层次结构(块grid和网格block)。gpu上有不同的内存类型,大部分cuda程序使用全局、共享内存。全局内存是最大的动态ram,gtx 285通常有1gbytes的全局内存。即图形处理单元包括了m个处理块(block),每个处理块内包括有n各处理单元,每一处理单元对应一处理线程(thread),使得在不同处理线程上的数据可并行处理,节省数据数据时间。
54.为使用处理单元对数据作中值滤波,在处理单元内预设有窗宽为q的中值滤波处理窗,并在处理单元接收到总数为p的浮点数后,以第一个浮点数为起点放置中值滤波处理窗(第1个浮点数至第q个浮点数)后对该q个连续浮点数计算中位数(可排序后提取),并将所得到的中位数存储为第一输出中值。得到该第一输出中值后,可将中值滤波处理窗后移一位,再重新计算新的中值滤波处理窗内框入的浮点数的中位数,并同样存储为第二输出中值,直到所有的p个浮点数都被框入过中值滤波处理窗内被计算中值数后,所得到的所有中值数(第一输出中值、第二输出中值等)排列为中值数组,其中q<p。
55.可以理解的是,上述计算过程中,线程之间不存在大量的分叉判断逻辑,使得运算量和代码量都被压缩的很小。
56.最后,处理单元得到的所有中值数组(并行处理完成)拼接后得到的所有数据排列为中值数列,以作为对医学影像的滤波结果。
57.一优选实施例中,滤波系统还包括中央处理单元cpu,与所述图形处理单元gpu连接,图形处理单元自所述中央处理单元接收待滤波数据,并将所述中值数列回传至所述中央处理单元,即将原现有技术中利用cpu处理数据的方式替换为全部交给gpu。
58.继续参阅图3a和3b,图形处理单元接收t个浮点数后,将t个浮点数按照每p个浮点数分段,并输入至每一处理单元内;每一处理单元向图形处理单元申请划分q个数据大小的共享内存,并将每次中值滤波处理窗的排序结果存储至共享内存,及将中值数据存储至处
理块的全局内存。举例来说,当需要处理的浮点数的总数量为100万时,可在处理单元内设置中值滤波处理窗的窗宽为128(27)。对于gpu而言,配置每一处理单元需处理的浮点数的总数为8192(2
13
),则每一个block划分为拥有10^6/8192(约为122)个处理单元(即122个处理线程thread),每一处理线程处理一组数据,数据存储在gpu的全局内存上,同时为每个处理线程申请划分128数据大小的共享内存,将所有的排序计算都会放置在共享内存上处理,提高运算效率,而排序后得到的中值滤波的结果,再放置回全局内存上。
59.一优选实施例中,处理单元对于浮点数的中值滤波的方法,可执行以下步骤:
[0060]-处理单元自浮点数的首位起,基于冒泡算法计算q个连续浮点数中的中位数为第一输出中值,即将第1位浮点数至第q位浮点数中的中位数输出;
[0061]-得到第一输出中值后,处理单元将前次中值滤波处理窗中的首位删除(则原窗宽为q,其内目前具有的浮点数的数量为q-1),于中值滤波处理窗中补入一无穷大数inf后(窗宽为q,其内目前具有的浮点数的数量回归至q),并将邻接于中值滤波处理窗的后一浮点数代入并排序,直至将无穷大数inf从中值滤波处理窗中顶出,并将更新后的中值滤波处理窗内的浮点数的中位数输出为第二输出中值;
[0062]-处理单元反复更新中值滤波处理窗及输出的第n输出中值,直至浮点数的末位更新至中值滤波处理窗后输出第p-q 1输出中值。
[0063]
参阅图2a至图2d,举例来说,假设有一组待处理的数据,一共有7个浮点数(图2a)(即p为7),中值滤波的窗宽5(即q为5)。首先对第一个中值滤波处理窗中的5个浮点数做一次排序,可以使用常规的排序方法,如冒泡算法,得到第一个输出数值4.5(图2b),并把排好序列的数组放到寄存器内,为下一步做准备。后将处理第二个中值滤波处理窗内数据,把前一中值滤波处理窗的第一个浮点数(4.5)先从数组内删除,后可以通过min/max算子,依次与数组内的每一个数值进行比较,把数值小的往前排,数值大的往后排;同时把剔除的数值(4.5)替换成inf(无穷大),继续进行大小比较;依次循环到最后一个数值7.3,呈现的结果是,前一中值滤波处理窗内包括的第一个数字4.5被剔除,inf被排序到最后(图2c)。后获知在当前中值滤波处理窗的邻接的后一浮点数为6.2,重复上述步骤,通过min/max算子,依次和数组内每一个数值进行比较,把数值小的往前排,数值大的往后排,插入到合适位置,最终完成第二中值滤波处理窗内的数据排序,得到第二个中值滤波处理窗的中位数,作为第二输出中值5.2(图2d)。反复迭代上述步骤,即处理第三个中值滤波处理窗内的数据,获知需剔除的数值为1.7,和需要插入的数值为0.2,得到第三输出中值5.2,以此类推,直至处理完所有的浮点数。通过上述配置,实现该系统和方法的代码中大幅减少了if、else处理,有利于cuda多核多线程操作相同的过程,大幅提高运算效率。
[0064]
本发明还公开了一种针对医学影像的滤波方法,包括以下步骤:配置一图形处理单元,图形处理单元包括:m个处理块,每一处理块包括:n个处理单元,每一处理单元对应一处理线程,所有处理线程呈并行处理;每一处理单元预设有窗宽为q的中值滤波处理窗,当处理单元接收p个浮点数时,自浮点数的首位起,基于中值滤波处理窗计算q个连续浮点数中的中位数并存储为第一输出中值,其中q<p;当处理单元基于前一中值滤波处理窗输出中值数后,处理单元后移一位浮点数并再次计算q个连续浮点数中的中位数并存储为第二输出中值,直至所有浮点数均被计算,使得处理单元形成中值数组;所有处理单元拼接中值数组以形成中值数列。
[0065]
优选地,配置一图形处理单元,图形处理单元包括:m个处理块,每一处理块包括:n个处理单元,每一处理单元对应一处理线程,所有处理线程呈并行处理的步骤包括:滤波系统还包括中央处理单元,与图形处理单元连接;图形处理单元自中央处理单元接收待滤波数据,并将中值数列回传至中央处理单元;当处理单元接收p个浮点数时,自浮点数的首位起,基于中值滤波处理窗计算q个连续浮点数中的中位数并存储为第一输出中值的步骤包括:图形处理单元接收t个浮点数后,将t个浮点数按照每p个浮点数分段,并输入至每一处理单元内;每一处理单元向图形处理单元申请划分q个数据大小的共享内存,并将每次中值滤波处理窗的排序结果存储至共享内存,及将中值数据存储至处理块的全局内存。
[0066]
优选地,当处理单元基于前一中值滤波处理窗输出中值数后,处理单元后移一位浮点数并再次计算q个连续浮点数中的中位数并存储为第二输出中值,直至所有浮点数均被计算,使得处理单元形成中值数组的步骤包括:处理单元自浮点数的首位起,基于冒泡算法计算q个连续浮点数中的中位数为第一输出中值;处理单元将中值滤波处理窗中的首位删除,于中值滤波处理窗中补入无穷大数后,将邻接于中值滤波处理窗的后一浮点数代入并排序,并将更新后的中值滤波处理窗内的浮点数的中位数输出为第二输出中值;处理单元反复更新中值滤波处理窗及输出的第n输出中值,直至浮点数的末位更新至中值滤波处理窗后输出第p-q 1输出中值。
[0067]
优选地,处理单元基于min/max算子对代入有后一浮点数的中值滤波处理窗内的数值排序。
[0068]
应当注意的是,本发明的实施例有较佳的实施性,且并非对本发明作任何形式的限制,任何熟悉该领域的技术人员可能利用上述揭示的技术内容变更或修饰为等同的有效实施例,但凡未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改或等同变化及修饰,均仍属于本发明技术方案的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献