python文件格式转换,python图片格式转换
目录
1.准备工作
2.创建项目
3.导入dicom图像数据
4.获取dicom图像数据元素
5.将dicom格式图像转换为jpg格式图像
6.输出结果
1.准备工作1)下载python
2)下载pycharm
3)配置的路径。脚本文件放在python目录下的系统环境路径下,重启它,就可以使用pip命令了。
4)使用anaconda包管理工具安装simpleITK、cv2、pydiocm(5老师告诉我:用康达的pip安装任何一个包都会自动从官网下载最新的包,我也可以指定版本号)
e:\ CD condae:\ conda pip install opencv-pythone:\ conda pip install simoleitke:\ conda pip install pydicom 5)如果用pip直接安装失败,可以替换镜像。
6)使用pip命令安装清华图像源:
pip安装-I https://pypi.tuna.tsinghua.edu.cn/simple pydicom
2.创建工程1)输入pycharm并创建一个新项目PY01。该目录位于E:\pythontrain\py01中,
2)创建一个新的hello2.py文件,并在hello2.py文件中输入代码:
3.导入dicom图像数据。在此项目文件夹下导入要处理的dicom图像。我这里导入15092560.dcm。
4.获取dicom图像数据元素在hello2.py文件中输入以下代码,以便读入图像并获取导入的dicom图像的数据元素信息:
导入dicomIMPORT OSINFO={} #读取DICOM文件DCM=py DICOM . Read _ file( 15092560 . DCM )#通过字典关键字获取图像的数据元素信息(当然也可以基于标签号)#这里获取一些常用信息info[PatientID]=dcm。patient id # patient id info[ patient name ]=DCM . patient name #患者姓名信息[patientage]=dcm.patientage #患者年龄信息[patientsex]=dcm.patientsex #性别信息[StudyID]=dcm。study id # exam id info[ study date ]=DCM . study date #考试日期信息[studytime]=dcm.studytime #考试时间信息[InstitutionName]=dcm。InstitutionName #机构名称信息[制造商]=dcm.manufacturer #设备制造商信息[ study description ]=DCM . study description #检查程序描述打印(信息)以运行代码。结果如下。读出数据元素,如患者ID、姓名和年龄:
c:\ Users \ Administrator \ AppData \ Local \ Programs \ Python \ Python 38 \ Python . exe E:/Python train/py01/hello 2 . py { patient id : MCS 10002 ,PatientName: S400_典型儿童体型,患者年龄: 016y ,患者性别: m ,研究id: p101123 ,研究日期: 20200119 ,研究时间:。机构名称: Anke影像中心,制造商: Anke ,研究描述: S400典型_儿科_身体(儿童) }流程已完成,退出代码为0备注:
数据位存储(BitsStored)、数据位分配(BitsAllocated)、数据符号类型(PixelRepresentation)、灰度偏移(RescaleIntercept) 和数据值(PixelData)本身的关系:
(1)、BitsAllocated:对应于分配给每个像素的位数的位数,例如单字节为8,双字节为16.................
(2)、PixelRepresentation:是数据的存储类型,0代表无符号存储,1代表有符号存储;
(3)、BitsStored:在dicom文件中,BitsStored是BitsAllocated中的有效存储位。如果PixelPresence=1(有符号存储),则BitsStored的高位是符号位。例如,当BitsStored=12且HighBit=11时,意味着有效存储位中的最高位是符号位。此时,数据表示范围为-2048(即2 ^ 11)~ 2043(即2 ^ 11)
(4)、RescaleIntercept:用于获取输出灰度值,即每个像素的PixelData值加上RescaleIntercept。如果一幅图像中一个像素的灰度为1024,重标度截距的偏移量为-1024,那么该像素对应的输出为1024(-1024)=0;
(5)从(3)和(4)可以看出,图像存储的有符号或者无符号不能决定图像的输出灰度的正负是由RescaleIntercept和PixelData相加确定的。例如,对于一幅无符号存储的图像,如果某个像素的灰度为255,但rescale截距的偏移量为=-1024,则输出灰度为=255-1024=-769;
(6)由(3)和(4)可知图像的输出灰度的数据类型与分配的位宽美元不一定一致,比如位址=8,最大表示灰度255个,如果偏移为2048年,那么输出灰度为1793年,必须要用短裤!短裤类型才能保存。
5.将DICOM标准(DICOM)格式图像转换为使用jpeg文件交换格式存储的编码图像文件扩展名格式格式图像导入pydicomimport matplotlib。py plot as plport num py as NP import osfilename= test。DCM jpgname=测试。jpg #读取DICOM标准(DICOM)文件DCM=pydicom。read _ file( 15092560。DCM )#获取图像唯一标识符UIDuid=dcm .复盖UID#获取像素矩阵img_arr=dcm.pixel_array#打印矩阵大小print(img_arr.shape)#获取像素点个数镜头=img _ arr。shape[0]* img _ arr。形状[1]#获取像素点的最大值和最小值arr _ temp=NP . shape(img _ arr,(lens。))最大值=最大值(数组温度)最小值=最小值(数组温度)#图像归一化img _ arr=(img _ arr-min _ val)/(max _ val-min _ val)#绘制图像并保存PLT。图(figsize=(12.12),dpi=250) #图像大小可以根据文件不同进行设置plt.imshow(img_arr,cmap=PLT。厘米。骨)PLT。标题( uid:{ } ).格式(uid))工厂。保存配置(jpg name)PLT。关闭()运行代码,结果如下,输出了. dcm提供图像矩阵的大小,以及将DICOM标准(DICOM)格式的图像转换成了使用jpeg文件交换格式存储的编码图像文件扩展名格式格式的图像:
6.输出结果
9.解析使用jpeg文件交换格式存储的编码图像文件扩展名格式图像,用简历(简历)库处理
从太平航运导入图像导入数量为npfrom skimage。超正析象管导入imreadfilepath= test。jpg cv2 _ im=cv2。imread(文件路径)print( cv2 _ in shape ,cv2_im.shape) # (height,width,ch)im=image。open(文件路径)print( pil image size,im.size) # (width,height,ch)pil _ im=NP。asar射线(im)打印( pil _ in shape ,pil_im.shape运行结果,输出100 . jpg格式的输出:(对应信息:frame_num、width、height)帧参数:帧号,代表计算机化X线体层照相术扫描扫描层数注意:img_array对应的是图像的矩阵信息
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。