本发明涉及python应用与开发技术领域,具体涉及一种基于python实现医学图像文件连续转换成jpg映像文件的方法。
背景技术:
随着医疗科技的发展,dicom被广泛应用于放射医疗、心血管成像以及放射诊疗诊断设备上,并且在眼科和牙科等其它医学领域得到越来越深入广泛的应用。在数以万计的在用医学成像设备中,dicom是部署最为广泛的医疗信息标准之一。当前大约有百亿级符合dicom标准的医学图像用于临床使用。但对于病患及医学系学生来说,dicom格式的图像文件需要特定的程序才能打开,在各种生活情景中造成了各种不便。
本发明结合python编程技术开创了一种简单快捷,成熟的图像转换方法,针对目前越来越广泛使用的医学图像文件,解决了其需要特定程序才能打开的不便,并且提供了连续转换的便利功能,达到提高医学图像文件易使用性,易转换性的作用。
技术实现要素:
本发明结合python编程技术开创了一种简单快捷,成熟的图像转换方法,针对目前越来越广泛使用的医学图像文件,解决了其需要特定程序才能打开的不便,并且提供了连续转换的便利功能,达到提高医学图像文件易使用性,易转换性的作用。
本发明解决上述技术问题的技术方案是:
所述的方法包含以下几个步骤:
步骤一:根据程序运行需求,导入所需的模块;
步骤二:环境的初始化,包括变量,路径等;
步骤三:图像转换核心代码的撰写;
步骤四:图像转换关键方法的撰写;
步骤五:转换成功的图像的路径拼接及显示。
所述的步骤一中,根据程序运行需求,导入所需模块的具体步骤如下:
(1)导入基于itk内核的python封装层:simpleitk模块;
(2)导入支持高级大量的维度数组与矩阵运算的模块:numericalpython(numpy)模块;
(3)导入用以链接opencv的模块:cv2模块;
(4)导入用以实现与具体平台无关的操作系统功能的os模块;
(5)导入图像处理模块:image模块;
(6)导入时间模块:time模块。
所述的步骤二中,环境的初始化的具体步骤如下:
(1)设置计数器counter,令它为1;
(2)设置要转换的医学图像文件的路径,比如:path="/users/test";
(3)使用os.listdir()方法,将括号中路径下包含的文件或文件夹的名字的列表返回给filename,比如:filename=os.listdir(path);
(4)输出filename的内容到屏幕上,给用户确认列表中的文件是否就是要转换的全部医学图像文件。
所述的步骤三中,图像转换核心代码的撰写的具体步骤如下:
(1)用一条判断语句实现代码的合理调用:if__name__=='__main__';
实现了当该模块被直接运行时,才允许运行之后的语句;
(2)写一个for()循环,并且读取dicom文件的相关信息;
(3)获取dicom文件的array:用simpleitk读取图像数据的坐标顺序zyx,具体的数据格式类似于(1,height,width)的形式,比如:img_array=sitk.getarrayfromimage(ds_array);
(4)设置中间变量temp,将图像的array信息赋给temp;
(5)获取array中的height和width,并将其中最大的值赋给中间变量high,其中最小的值赋给中间变量low;
(6)调用图像转换的关键方法,比如:transform_to_jpg(img_array,low,high,output_path);
(7)实现了图像的转换,输出提示信息'finished'。
所述的步骤四中,图像转换关键方法的撰写的具体步骤如下:
(1)调用np.array()方法,构建一个图像数据信息的数组;
(2)对数组中的每一个数据进行处理变换,方法为:transform=(img-array[0])/(array[1]-array[0]);
(3)将像素值范围设置为[0,255],且数据类型转换成astype;
(4)调用cv2模块的imwrite()方法,四个输入参数分别为:图像的array信息,中间变量high,low的值,转换的输出路径。
所述的步骤五中,转换成功的图像的路径拼接及显示的具体步骤如下:
(1)设置输出文件夹的路径,比如:outputpath="/users/output/";
(2)设置每一个转换成功的jpg文件的文件名,第一个为1,下一个累加一,为二,以此类推;
(3)在文件名之后加上jpg文件的后缀名,比如fullname=firstname+'.jpg';
(4)将jpg文件的文件名及文件夹路径合并在一起输出到屏幕上。
本发明结合python编程技术开创了一种简单快捷,成熟的图像转换方法,针对目前越来越广泛使用的医学图像文件,解决了其需要特定程序才能打开的不便,并且提供了连续转换的便利功能,达到提高医学图像文件易使用性,易转换性的作用。
附图说明
下面结合附图对本发明进一步说明:
图1是本发明方法流程图。
具体实施方式
如图1所示,本发明具体包含以下几个步骤:
步骤一:根据程序运行需求,导入各种所需的模块:simpleitk模块,numpy模块,cv2模块,os模块,time模块,image模块;
步骤二:环境的初始化,包括:计数器变量的初始化,待转换文件路径的设置,待转换文件列表的读取,待转换文件列表的输出;
步骤三:用一条判断语句实现代码的合理调用:if__name__=='__main__';
实现了当该模块被直接运行时,才允许运行之后的语句;
步骤四:写一个for()循环,并且读取dicom文件的相关信息;
步骤五:获取dicom文件的array:用simpleitk读取图像数据的坐标顺序zyx,具体的数据格式类似于(1,height,width)的形式,比如:img_array=sitk.getarrayfromimage(ds_array);
步骤六:设置中间变量temp,将图像的array信息赋给temp;
步骤七:获取array中的height和width,并将其中最大的值赋给中间变量high,其中最小的值赋给中间变量low;
步骤八:调用图像转换的关键方法,比如:transform_to_jpg(img_array,low,high,output_path);
步骤九:实现了图像的转换,输出提示信息'finished';
步骤十:调用np.array()方法,构建一个图像数据信息的数组;
步骤十一:对数组中的每一个数据进行处理变换,方法为:transform=(img-array[0])/(array[1]-array[0]);
步骤十二:将像素值范围设置为[0,255],且数据类型转换成astype;
步骤十三:调用cv2模块的imwrite()方法,四个输入参数分别为:图像的array信息,中间变量high,low的值,转换的输出路径;
步骤十四:先设置输出文件夹的路径,比如:outputpath="/users/output/";
步骤十五:设置每一个转换成功的jpg文件的文件名,第一个为1,下一个累加一,为二,以此类推;
步骤十六:在文件名之后加上jpg文件的后缀名,比如fullname=firstname+'.jpg';
步骤十七:将jpg文件的文件名及文件夹路径合并在一起输出到屏幕上。