一种DICOM图像转换为JPG图像的转换方法、系统以及存储介质与流程

文档序号:24400607发布日期:2021-03-26 14:15阅读:1167来源:国知局
一种DICOM图像转换为JPG图像的转换方法、系统以及存储介质与流程
一种dicom图像转换为jpg图像的转换方法、系统以及存储介质
技术领域
1.本发明属于医疗数字图像领域,尤其涉及一种dicom图像转换技术。


背景技术:

2.近年来,深度学习在计算机视觉领域获得了极大的发展,与此同时相关技术也被引入到医疗图像领域,但是在图像处理和分类任务中,很难直接针对dicom格式的图像文件进行操作。因此选择一个合适的方法将dicom格式图像转换为常用的jpg格式图像,成为一种非常迫切的需求。
3.但是传统的转换方式是直接通过线性映射的方式将uint16类型的dicom数据转换为uint8类型的jpg数据,或者在转换为uint8类型后再进行直方图归一化生成最后的jpg数据。
4.在实际使用过程中,现有的转换方法一些特殊情况下可能会造成像素级信息的丢失。因此在转换数据时,如何最大限度的保存原始像素信息成为本领域亟需解决的问题。


技术实现要素:

5.针对现有dicom数据转换技术所存在的问题,需要一种新的dicom数据转换方案。
6.为此,本发明的目的在于提供一种dicom图像转换为jpg图像的转换方法,其能够在将dicom格式图像转换为jpg格式图像时,最大限度保留像素级信息。
7.在此基础上,本发明还提供一种dicom图像转换为jpg图像的转换系统以及相应的存储介质。
8.为了达到上述目的,本发明提供的dicom图像转换为jpg图像的转换方法,所述转换方法基于去稀疏归一化来dicom图像转换为jpg图像。
9.进一步的,所述方法包括
10.1)从待转换的dicom图片中得到图像的像素矩阵;
11.2)统计步骤1)所得到的像素矩阵的像素分布信息pixel_vals,indices,counts;
12.3)针对步骤2)所得到的像素直方图counts,基于像素柱状图高度大于阈值t的像素柱状图,计算像素映射表;
13.4)基于像素映射表,将dicom图像线性映射到uint8类型上。
14.进一步地,所述步骤(1)中针对待转换的dicom图片,基于pyton的pydicom库的dcmread模式获取dcm文件信息,直接通过dcm.pixel_array来获取像素矩阵。
15.进一步地,所述步骤(2)中通过开源库numpy库中的unique方法来计算像素的分布信息。
16.进一步地,所述步骤(3)中计算像素映射表的方法如下:首先将像素直方图中柱状图高度低于阈值t的像素级向下取最近的满足柱状图高度大于t的像素值,之后对满足条件的像素级映射到0~256之间,并取整型uint8,得到像素映射表image_vals。
17.进一步地,所述步骤(4)中将dicom图像线性映射到uint8类型的实现过程如下:根据像素分布信息中的indices,针对每个像素位置,先在pixel_vals中查询每个像素值的索引,根据像素值在pixel_vals中的索引到image_vals中查询uint8格式下的新像素值,将新像素值赋值给像素矩阵,当所有的像素位置都完成了像素值的转换操作,则完成了从uint16格式到uint8格式的图像类型转换。
18.为了达到上述目的,本发明提供的dicom图像转换为jpg图像的转换系统,所述转换系统包括:
19.像素矩阵模块,所述像素矩阵模块用于从待转换的dicom图片中得到图像的像素矩阵;
20.统计模块,所述统计模块用于统计像素矩阵模块得到的像素矩阵的像素分布信息pixel_vals,indices,counts;
21.映射模块,所述映射模块用于针对统计模块形成的像素分布信息,基于像素柱状图counts高度大于阈值t的像素柱状图,计算像素映射表;
22.转换模块,所述转换模块基于映射模块计算出的像素映射表,将dicom图像转换到uint8类型上。
23.为了达到上述目的,本发明提供的存储介质,所述存储介质包括存储的程序,所述程序执行上述的转换方法。
24.本发明提供的方案采用去稀疏归一化方法可根据图像自适应调整映射函数,并且易于实现。
25.本发明提供的方案可以最大限度保留原始dicom图像的信息,减少因为从uint16到uint8转换过程中导致像素级丢失,而出现图像纹理信息的损失。
附图说明
26.以下结合附图和具体实施方式来进一步说明本发明。
27.图1为本发明实施例的效果对比效果图。
具体实施方式
28.为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
29.为了在dicom转换为jpg格式时,最大限度保留像素级信息,本发明提出了一种新型转换dicom到jpg格式的转换方案。该方案采用去稀疏归一化方法来实现将dicom转换为jpg格式,不仅能够最大限度保留像素级信息,而采用去稀疏归一化方法可根据图像自适应调整映射函数,并且易于实现。这里的映射函数可以将像素个数不足阈值t的像素级进行邻域合并,以保证合并后像素级所对应的像素个数大于阈值t,之后对合并后的像素级映射到uint8空间下。
30.由于图像像素的分布不同,通常所采用的直接线性映射uint16格式到uint8格式无法得到很好的图像展示效果,为了保留更多的像素级信息,本方案将像素个数小于阈值t的像素级向临近像素级合并,对剩下的满足像素个数大于阈值t的像素级进行线性映射;而挑选满足像素个数大于t的像素级的过程是针对特定dicom图像自适应选取相应像素级用
于映射的过程。
31.具体的,本发明给出的基于去稀疏归一化来将dicom图像转换为jpg图像的转换方案,主要由以下步骤构成:
32.1)从待转换的dicom图片中得到图像的像素矩阵;
33.2)统计步骤1)所得到的像素矩阵的像素分布信息pixel_vals,indices,counts;
34.3)针对步骤2)所得到的像素直方图counts,基于像素柱状图高度大于阈值t的像素柱状图,计算像素映射表;
35.4)基于像素映射表,将dicom图像线性映射到uint8类型上。
36.如此方案在具体实现时,针对待转换的dicom图片,基于python的pydicom库的dcmread模式获取dcm文件信息,直接通过dcm.pixel_array来获取像素矩阵。
37.与之配合的,通过开源库numpy库中的unique方法来计算统计像素的分布信息。
38.作为举例,在numpy库中,对于一维数组或者列表,基于unique函数去除其中重复的元素,并返回一个新的经过排序且无元素重复的元组或者列表

pixel_vals。
39.在此基础上可进一步设定参数return_inverse为true,此时则还可返回一个返回旧列表元素在新列表中的位置的数组

indices,可利用该数组可以重建出旧列表。在此基础上可进一步设定参数return_counts为ture,此时则可以返回新列表元素在旧列表中出现的频次数组

counts,故可通过pixel_vals作为直方图横坐标,counts作为直方图纵坐标,构建出原始图像的像素直方图。
40.本实例中在计算图像映射表时,首先将像素直方图中柱状图高度低于阈值t的像素级向下取最近的满足柱状图高度大于t的像素值,之后对满足条件的像素级线性映射到0~256之间,并取整型uint8,得到像素映射表image_vals。
41.如此方案,通过将信息量较低的像素级(像素个数<阈值t的像素级)进行合并,这样可以最大程度保留原始图像的纹理信息,同时最大限度减少待映射像素级数量,通过降低待映射像素级数量,保证了映射前后图像像素级数量差异不会过大,达到了保留图片纹理信息的效果。
42.在此基础上,本实例将dicom图像线性映射到uint8类型的实现过程为,通过步骤2所计算出的indices来重新将步骤3中计算出的像素映射表所对应的uint8像素值image_vals映射到新图像中。
43.具体的,根据像素分布信息中的indices,可以根据像素映射表给图像中每个位置重新赋像素值,该像素值是根据pixel_vals转换到image_vals时所对应的值,即针对某个像素位置,可以根据indices信息查到其在pixel_vals中的索引,因为pixel_vals和image_vals是一一对应的,则根据像素值在pixel_vals中的索引到image_vals中查询uint8格式下的新像素值,将新像素值赋值给像素矩阵,当所有的像素位置都完成了像素值的转换操作,则完成了从uint16格式到uint8格式的图像类型转换。
44.由于pixel_vals和image_vals分别为uint16到uint8像素级一一对应的关系,由于在获取像素分布信息时,记录了像素索引indices信息,故当获得了映射后的像素级信息,可以直接通过像素索引indices来恢复出uint8格式的图像。
45.在此原理方案的基础上,本方案构建了一套可将dicom图像转换为jpg图像的转换系统。该转换系统基于去稀疏归一化方法来构成,能够在将dicom格式图像转换为jpg格式
图像时,最大限度保留像素级信息。
46.该将dicom图像转换为jpg图像的转换系统主要由像素矩阵模块,统计模块,映射模块,以及转换模块配合构成。
47.本系统中的像素矩阵模块用于从待转换的dicom图片中得到图像的像素矩阵;
48.本系统中的统计模块用于统计像素矩阵模块得到的像素矩阵的像素分布信息pixel_vals,indices,counts;
49.本系统中的映射模块用于针对统计模块形成的像素直方图counts,基于像素柱状图高度大于阈值t的像素柱状图,计算像素映射表;
50.本系统中的转换模块基于映射模块计算的像素映射表,将dicom图像线性映射到uint8类型上。
51.本系统在具体实现时,具体可相应的软件程序形式呈现,并可存储在相应的存储介质中,这里对于存储介质的构型形式不加以限定。
52.针对上述方案,以下通过具体应用实例来进一步说明其实施过程。
53.这里以胸部x片智能识别为例,对本发明给出的基于去稀疏归一化来将dicom图像转换为jpg图像的转换方案进行说明。
54.本发明方案给出的转换方案中采用去稀疏归一化方法,用于在数据映射时,将图像中不存在的像素级忽略掉,同时根据图像自身特点动态调整映射函数。
55.众所周知,一张dicom图像数据为uint16的数据类型,像素级范围为0~65535,但是一般情况下,一张图中不会包含全部像素级,而在uint16到uint8的映射过程中,传统转换方法忽略了这一点,直接采用下式的映射方法:
[0056][0057]
其中pixel为dicom图像的原始像素矩阵,pixel

为转换后uint8格式的图像矩阵。
[0058]
该转换方法存在的问题是,在进行整型化时,会导致部分像素级丢失,尤其是当原始dicom数据中像素级集中在某一个小区间中,如[10000,20000]中,转换到uint8类型的jpg图像中,像素级分布在[38,77]之间,导致严重的像素级信息丢失,在视觉观感上呈现的结果就是纹理细节信息丢失。
[0059]
为了解决该问题,最直接的方法是,找到原始dicom图像中像素值的最大值pixel
max
和最小值pixel
min
,然后采用下式的映射方法:
[0060][0061]
其中pixel
max
表示原始dicom图像像素最大值,pixel
min
表示原始dicom图像像素最小值,pixel原始dicom图像像素矩阵,pixel

表示转换后uint8格式的像素矩阵。
[0062]
如此方法虽然可以部分缓解之前提到的像素丢失问题,但是如果原始图像的像素级不是连续分布在某一个区间,而是离散分布的,如[10000,12000]以及[30000,50000]中,则上述方法依然存在一定的像素丢失。
[0063]
针对上述问题,本发明给出的基于去稀疏归一化来将dicom图像转换为jpg图像的转换方案,其采用如下方案,统计图像中存在的图像像素级,生成列表,如:
[0064]
pixel
list
=[1,7,17,103,...,64000,65534]
[0065]
首先生成同pixel
list
等长的列表:
[0066]
pixel
map
=[0,1,2,3,4,...,len(pixel
list
)

1]
[0067]
通过对pixel
map
进行线性映射,计算得到某张图特定的映射表。
[0068][0069]
其中,len(pixel
list
)表示列表pixel
list
的长度,pixel
list
存储着原始图像的像素值,pixel

map
对应位置存储着uint8类型的图像像素值。根据该映射表就可以得到从uint16类型的dicom图像转换到uint8类型的jpg图像。
[0070]
本发明给出的基于去稀疏归一化来将dicom图像转换为jpg图像的转换方案,在uint16到uint8转换过程中最大程度地保留了原始像素的信息,缓解了像素信息丢失的问题。
[0071]
更进一步的,本转换方案还考虑了去除某些像素数量过少的像素级,进一步压缩原始待映射的pixel
list
长度。设定阈值t=50,当统计pixel
list
时,如果某个像素级上的像素数量少于50,则合并该像素级。
[0072][0073]
如果dicom图像中像素值为7和17的像素个数小于50,则映射时将该像素级所对应的像素向下赋值,即原像素值为7的像素赋值为1,原像素值为17的像素赋值为13,则统计得到的pixel
list
为:
[0074]
pixel
list
=[1,13,103,...,64000,65534]
[0075]
后续映射方式不变,与不加阈值的方法一致。
[0076]
一般而言,某像素级所对应的像素个数过少,则认为该像素级在图像成像质量中影响较小,去除该部分像素级以减少原始dicom像素矩阵中的像素级数量,对图像信息破坏较小。本实例在映射到uint8格式后减少原始dicom像素矩阵中的像素级数量,可更好的保留原始图像信息,减少了图像信息的丢失。
[0077]
最后,如图1所示,其左侧图是传统直接映射方法生成的jpg图像,右侧图是本发明方案所生成的图像。通过与传统的映射方法相比,本发明给出的基于去稀疏归一化来将dicom图像转换为jpg图像的转换方案,保留了更多的原始图像信息,为后续进一步图像处理奠定了基础。
[0078]
这里需要说明的,上述本发明的方法,或特定系统单元、或其部份单元,为纯软件架构,可以透过程序代码布设于实体媒体,如硬盘、光盘片、或是任何电子装置(如智能型手机、计算机可读取的储存媒体),当机器加载程序代码且执行(如智能型手机加载且执行),机器成为用以实行本发明的装置。上述本发明的方法与装置亦可以程序代码型态透过一些传送媒体,如电缆、光纤、或是任何传输型态进行传送,当程序代码被机器(如智能型手机)接收、加载且执行,机器成为用以实行本发明的装置。
[0079]
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其
等效物界定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1