如何将 DICOM 图像转换为 JPG 或 PNG
在计算机视觉中,我们经常使用医学图像,我们拥有的几乎所有数据库都包含 DICOM 图像。Dicom 图像不仅仅是一张图像,它包含像素信息、患者信息等。
在这种情况下,我们只需要将图像可视化或将其保存为 JPG 或 PNG,以便我们可以使用任何我们想要的软件打开它。
为此,我们需要额外的库来与 Python 一起使用。第一个是Pydicom,它是一个专门用于 Dicom 图像的库,第二个是Pillow,我更喜欢用它来显示和保存 JPG 图像。最后,第三个是Numpy来操作数组。
我会一步一步地和你一起做所有的过程,所以不要担心。以下是我们将一起遵循的步骤:
- 安装库
- 提取像素数组
- 重新缩放图像
- 显示和保存新图像
1.安装库
正如我们所说,我们需要两个库来完成这个过程,安装它们是非常重要的。您可以通过输入以下命令来使用终端:
pip install pydicom
pip install pillow
pip install numpy
2.提取像素数组
你知道一张 Dicom 图像包含很多关于患者的信息……所以我们要显示或提取的图像是 Dicom 图像中存在的信息之一。这个图像称为“像素阵列”。为此,我们需要做的就是从图像中调用这个组件。
ds = pydicom.dcmread('the path to the image')
new_image = ds.pixel_array.astype(float)
如您所见,我们用两行代码来完成这项工作。第一行打开 Dicom 图像
,第二行将从中提取像素阵列
,这就是这部分的内容。通过astype函数将数据类型转为float类型。我这样做是因为在下一步中我们将缩放像素,所以如果我们将它们保留为整数,那么在缩放之后我们将有上溢或下溢可能。为此,我们需要使用浮点像素,这样我们就不会丢失信息。
3.重新缩放图像
现在要使用图像,我们应该重新调整其像素并将它们的值设置在0和255之间。
scaled_image = (np.maximum(new_image, 0) / new_image.max()) * 255.0
4.显示和保存图像
我们将使用 Pillow 库创建图像。但在此之前,我们需要将其转换为8 位无符号整数。
scaled_image = np.uint8(scaled_image)
final_image = Image.fromarray(scaled_image)
要显示它,您可以使用这行代码:
final_image.show()
现在,如果您想将其保存为 jpg 或 png 图像。您可以使用 Pillow 中的save函数。
final_image.save('image.jpg')
final_image.save('image.png')
5.如何将一组 Dicom 图像转换为 JPG
现在,您看到了如何将一张 Dicom 图像转换为 JPG 或 PNG。您可以应用相同的程序来转换一组 Dicom 图像。您需要做的就是创建函数。第一个将返回文件夹中图像的名称,第二个将像我们之前所做的那样进行转换。
import os
import numpy as np
import pydicom
from PIL import Imagedef get_names(path):names = []for root, dirnames, filenames in os.walk(path):for filename in filenames:_, ext = os.path.splitext(filename)if ext in ['.dcm']:names.append(filename)return namesdef convert_dcm_jpg(name):im = pydicom.dcmread('Database/'+name)im = im.pixel_array.astype(float)rescaled_image = (np.maximum(im,0)/im.max())*255 # float pixelsfinal_image = np.uint8(rescaled_image) # integers pixelsfinal_image = Image.fromarray(final_image)return final_imageif __name__ == '__main__':names = get_names('Database')for name in names:image = convert_dcm_jpg(name)image.save(name+'.png')
参考目录
https://pycad.co/how-to-convert-a-dicom-image-into-jpg-or-png/
如何将 DICOM 图像转换为 JPG 或 PNG相关推荐
- DCMTK:使用dcmimage 库将DICOM图像转换为PPM或PGM
DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM #inc ...
- DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM
DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM #inc ...
- 【转】DICOM图像像素值(灰度值)转换为CT值
转自:https://www.cnblogs.com/xuhui24/p/6193032.html https://zhuanlan.zhihu.com/p/358770379 ...
- 将 JPG 或 PNG 图像转换为 Dicom
如果您想将普通图像(如 JPG 或 PNG)转换为医学图像(谈论 Dicom 文件),您只需要安装一个名为"pydicom"的库来操作 Dicom 图像,然后您需要一个预先存在的 ...
- DICOM图像像素值(灰度值)转换为CT值
CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...
- 【转】DICOM图像像素值、灰度值与CT值!!!!!
转自:https://blog.csdn.net/syz201558503103/article/details/107238940 做医学图像处理会涉及DICOM图像,初学者应该要对图像像素有一定了 ...
- 在unity中读取并可视化dicom图像(fo-dicom / C# / unity)
第一步:在unity中安装fo-dicom插件 方法:点击window,选择Asset Store,然后搜索fo-dicom,导入即可. 第二步:读取dicom文件中的图像信息并转换为Texture2 ...
- Dicom 图像--像素值(灰度值)转为CT值
摘要: 1. 概念: 2. 公式: 3. 具体情况: 4. DICOM TAG分类和说明 1. 概念: 数据:Dicom数据的原始像素值(pixel value)是没有实际意义的,所以我们常用的是Di ...
- Dicom 图像像素值(灰度值)转为CT值
CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...
最新文章
- Alpha 冲刺报告(8/10)
- Cinder LVM Oversubscription in thin provisioning
- 从零开始发布web项目(五)
- lombok几个基本注解的使用及遇到的坑点
- linux与windows间共享文件夹 FileZilla树莓派文件传输
- fatal error C1010: unexpected end of file while looking for precompiled head
- 拯救你的颈椎,笔记本支架如何选择?
- 虚拟机本来有MySQL,后安装宝塔的MySQL导致MySQL不能启动报错
- nginx主配置文件解释
- 手机信令数据怎么获得_手机信令数据辅助下的张江科学城职住分析及对策 | 上海城市规划...
- 游戏开发入门如何点亮技术树?
- SQL编程:外键约束
- 【VUE】微商城(十一)----购物车下订单,选择收货地址,商品详情页立即购买,取消订单,查看订单详情
- CF342E Xenia and Tree
- 管人用人育人留人之道-不值得定律
- 开源商城WSTMart支付开发研究[转]
- Centos 7.9挂载群晖NAS
- 2019 年最佳 Linux 笔记本电脑发行版 top10
- 所谓情商高就是会说话(摘录)
- SAP中MRP控制者的应用理解
热门文章
- excel如何计算销售提成的思路方法和公式
- c 语言浮点数向上取整,(转)C/C++ 取整函数ceil(),floor(),向上取整,向下取整...
- 程序员面试失败的几种原因
- 电脑上免费的记笔记软件怎么切换皮肤配色方案?
- setsocketopt()函数功能介绍
- MacBook 插入电源后无法充电?5 种修复方法
- BZOJ_P2461 [BeiJing2011]符环(动态规划/记忆化搜索)
- C语言数组指定初始化器
- uni-app 171部分小细节优化
- com.sun.jersey.api.client.ClientHandlerException:java.net.ConnectException:Connection refused:connec