在计算机视觉中,我们经常使用医学图像,我们拥有的几乎所有数据库都包含 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相关推荐

  1. DCMTK:使用dcmimage 库将DICOM图像转换为PPM或PGM

    DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM #inc ...

  2. DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM

    DCMTK:使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM 使用dcmimage库将DICOM图像转换为PPM或PGM #inc ...

  3. 【转】DICOM图像像素值(灰度值)转换为CT值

    转自:https://www.cnblogs.com/xuhui24/p/6193032.html            https://zhuanlan.zhihu.com/p/358770379 ...

  4. 将 JPG 或 PNG 图像转换为 Dicom

    如果您想将普通图像(如 JPG 或 PNG)转换为医学图像(谈论 Dicom 文件),您只需要安装一个名为"pydicom"的库来操作 Dicom 图像,然后您需要一个预先存在的 ...

  5. DICOM图像像素值(灰度值)转换为CT值

    CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...

  6. 【转】DICOM图像像素值、灰度值与CT值!!!!!

    转自:https://blog.csdn.net/syz201558503103/article/details/107238940 做医学图像处理会涉及DICOM图像,初学者应该要对图像像素有一定了 ...

  7. 在unity中读取并可视化dicom图像(fo-dicom / C# / unity)

    第一步:在unity中安装fo-dicom插件 方法:点击window,选择Asset Store,然后搜索fo-dicom,导入即可. 第二步:读取dicom文件中的图像信息并转换为Texture2 ...

  8. Dicom 图像--像素值(灰度值)转为CT值

    摘要: 1. 概念: 2. 公式: 3. 具体情况: 4. DICOM TAG分类和说明 1. 概念: 数据:Dicom数据的原始像素值(pixel value)是没有实际意义的,所以我们常用的是Di ...

  9. Dicom 图像像素值(灰度值)转为CT值

    CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这 ...

最新文章

  1. Alpha 冲刺报告(8/10)
  2. Cinder LVM Oversubscription in thin provisioning
  3. 从零开始发布web项目(五)
  4. lombok几个基本注解的使用及遇到的坑点
  5. linux与windows间共享文件夹 FileZilla树莓派文件传输
  6. fatal error C1010: unexpected end of file while looking for precompiled head
  7. 拯救你的颈椎,笔记本支架如何选择?
  8. 虚拟机本来有MySQL,后安装宝塔的MySQL导致MySQL不能启动报错
  9. nginx主配置文件解释
  10. 手机信令数据怎么获得_手机信令数据辅助下的张江科学城职住分析及对策 | 上海城市规划...
  11. 游戏开发入门如何点亮技术树?
  12. SQL编程:外键约束
  13. 【VUE】微商城(十一)----购物车下订单,选择收货地址,商品详情页立即购买,取消订单,查看订单详情
  14. CF342E Xenia and Tree
  15. 管人用人育人留人之道-不值得定律
  16. 开源商城WSTMart支付开发研究[转]
  17. Centos 7.9挂载群晖NAS
  18. 2019 年最佳 Linux 笔记本电脑发行版 top10
  19. 所谓情商高就是会说话(摘录)
  20. SAP中MRP控制者的应用理解

热门文章

  1. excel如何计算销售提成的思路方法和公式
  2. c 语言浮点数向上取整,(转)C/C++ 取整函数ceil(),floor(),向上取整,向下取整...
  3. 程序员面试失败的几种原因
  4. 电脑上免费的记笔记软件怎么切换皮肤配色方案?
  5. setsocketopt()函数功能介绍
  6. MacBook 插入电源后无法充电?5 种修复方法
  7. BZOJ_P2461 [BeiJing2011]符环(动态规划/记忆化搜索)
  8. C语言数组指定初始化器
  9. uni-app 171部分小细节优化
  10. com.sun.jersey.api.client.ClientHandlerException:java.net.ConnectException:Connection refused:connec