dcm文件数据学习

simpleITK读取数据

import SimpleITK as sitk
import numpy as np
import matplotlib.pyplot as plt
base_path = "/Users/yxk/Desktop/test/"
image = sitk.ReadImage(base_path+"000000.dcm") # type(image) <class 'SimpleITK.SimpleITK.Image'>
image_array = np.squeeze(sitk.GetArrayFromImage(image))  # type(image_array) ->> <class 'numpy.ndarray'>  image_array.shape ->> (512, 512)
plt.imshow(image_array,cmap="gray")
plt.show()
#不加这个cmap="gray"其图像显示为蓝色背景

在这里插入图片描述

pydicom读取数据

import pydicom
import numpy as np
import matplotlib.pyplot as plt
base_path = "/Users/yxk/Desktop/test/"
ds = pydicom.dcmread(base_path+"000000.dcm")# 打印基本信息
print(ds.dir())
print('Patient Name:', ds.PatientName)
print('Patient ID:', ds.PatientID)
print('Study Date:', ds.StudyDate)
print('Modality:', ds.Modality)# 获取像素数据
print("*"*50)
pixel_data = ds.pixel_array
print("*"*50)
print(pixel_data.shape)
print("*"*50)
print(pixel_data)
print("*"*50)
print(np.max(pixel_data))
print("*"*50)
print(np.min(pixel_data))
print("*"*50)
# 显示图片
plt.imshow(pixel_data, cmap=plt.cm.gray)
plt.show()

结果如下
在这里插入图片描述在这里插入图片描述

保存灰度图像(PNG是RGBA格式)

import pydicom
import numpy as np
import matplotlib.pyplot as plt
from PIL import Imagebase_path = "/Users/yxk/Desktop/test/"
ds = pydicom.dcmread(base_path+"000000.dcm")
pixel_data = ds.pixel_arrayplt.imsave("./AABB.png", pixel_data, cmap='gray')img_path = './AABB.png'
image = Image.open(img_path)
width, height = image.size
print("图片的宽度为={},高度为={}".format(width,height))
print("图片的mode为{}".format(image.mode))
print("图片的format为{}".format(image.format))
# pixel = image.load()
img_arr = np.array(image)
print("图片数组大小为{}".format(img_arr.shape))print("图片像素值最大为{}".format(np.max(img_arr)))
print("图片像素值最大为{}".format(np.min(img_arr)))
# #显示图片
image.show()
## 

在这里插入图片描述

显示图片

import matplotlib.pyplot as plt
display(Image.fromarray(img_arr))

在这里插入图片描述

保存成灰度图像(jpg格式是RGB)

import pydicom
import numpy as np
import matplotlib.pyplot as plt
from PIL import Imagebase_path = "/Users/yxk/Desktop/test/"
ds = pydicom.dcmread(base_path+"000000.dcm")
pixel_data = ds.pixel_array
plt.imsave("./AABB.jpg", pixel_data, cmap='gray')img_path = './AABB.jpg'
# 读取图片
image = Image.open(img_path)
width, height = image.size
print("图片的宽度为={},高度为={}".format(width,height))
print("图片的mode为{}".format(image.mode))
print("图片的format为{}".format(image.format))
# pixel = image.load()
img_arr = np.array(image)
print("图片数组大小为{}".format(img_arr.shape))print("图片像素值最大为{}".format(np.max(img_arr)))
print("图片像素值最大为{}".format(np.min(img_arr)))
# #显示图片
image.show()
## 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/595905.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode代码记录(两个数组的交集

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 […

手工瑞士卷的自然美味,口感松软滋味甜蜜

我很喜欢吃各种甜点&#xff0c;最近我尝试了JIAN趣品牌的手工瑞士卷。很多朋友为了获得更新鲜的点心&#xff0c;一般都会选择线下店&#xff0c;因为JIAN趣支持顺丰保温箱发货&#xff0c;保证了瑞士卷在运输过程中的新鲜度和口感&#xff0c;所以入手会更加方便一些&#xf…

windows 系统下 mysql 数据库的下载与安装(包括升级安装)

windows 系统下 mysql 数据库的下载与安装&#xff08;包括升级安装&#xff09; 一、mysql 介绍&#xff1a; MySQL 是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。 MySQL 是最流行的关系型数据库管理系统之一&#xf…

Kubernetes学习笔记7

使用kubeadm部署Kubernetes集群方法 使用kubernetes部署单节点Master节点K8s集群。 在实际生产环境中&#xff0c;是不允许单master节点的&#xff0c;如果单master节点不可用的话&#xff0c;当导致我们的K8s集群无法访问。 可以使用kubeadm将单master节点升级为多master节点…

java网络编程——网络编程概述及UDP/TCP通信编程的实现

前言&#xff1a; 学习到通信了&#xff0c;整理下相关知识点。打好基础&#xff0c;daydayup!!! 网络编程 网络编程指可以让设备中的程序与网络上其他设备中的程序进行数据交互。 基本的通信架构 基本的通信架构有两种形式&#xff1a;CS架构&#xff08;Client客户端/Server服…

LabVIEW深度学习

目录 一、配置环境1.1、显卡选择1.2、下载显卡驱动1.3、下载并安装Anaconda1.4、配置Anaconda软件包下载服务器1.5、配置虚拟环境tf_gpu1.6、安装vscode1.7、安装tensorflow1.8、下载安装Git1.9、安装TensorFlow Object Detection API框架1.10、安装依赖的python软件包1.11、配…

【C++航海王:追寻罗杰的编程之路】C++的类型转换

目录 1 -> C语言中的类型转换 2 -> 为什么C需要四种类型转换 3 -> C强制类型转换 3.1 -> static_cast 3.2 -> reinterpret_cast 3.3 -> const_cast 3.4 -> dynamic_cast 4 -> RTTI 1 -> C语言中的类型转换 在C语言中&#xff0c;如果赋值运…

Java | Leetcode Java题解之第9题回文数

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isPalindrome(int x) {// 特殊情况&#xff1a;// 如上所述&#xff0c;当 x < 0 时&#xff0c;x 不是回文数。// 同样地&#xff0c;如果数字的最后一位是 0&#xff0c;为了使该数字为回文&#xff0…

一些Java面试题

1、 Java语言有哪些特点 1、简单易学、有丰富的类库 2、面向对象&#xff08;Java最重要的特性&#xff0c;让程序耦合度更低&#xff0c;内聚性更高&#xff09; 3、与平台无关性&#xff08;JVM是Java跨平台使用的根本&#xff09; 4、可靠安全 5、支持多线程 2、面向对象和…

错误:找不到或无法加载主类(vscode的解决方法)

项目场景&#xff1a; 某天&#xff0c;喵某人在敲代码的过程中&#xff0c;点击运行代码&#xff0c;突然显示找不到或无法加载主类。之前创建的java文件都可以正常运行。但新建的java文件无论是什么&#xff0c;点击运行都会显示“错误&#xff1a;找不到或无法加载主类”。 …

初学python记录:力扣1483. 树节点的第 K 个祖先

题目&#xff1a; 给你一棵树&#xff0c;树上有 n 个节点&#xff0c;按从 0 到 n-1 编号。树以父节点数组的形式给出&#xff0c;其中 parent[i] 是节点 i 的父节点。树的根节点是编号为 0 的节点。 树节点的第 k 个祖先节点是从该节点到根节点路径上的第 k 个节点。 实现…

如何解决Redis和数据库的一致性问题?

为了保证Redis和数据库的数据一致性&#xff0c;肯定是要缓存和数据库双写了。 这时候就需要考虑两个问题&#xff1a;是先操作缓存还是先操作数据库&#xff1f;是删除缓存还是更新缓存&#xff1f; 我的建议是优先考虑删除缓存而不是更新缓存&#xff0c;因为删除缓存更加简单…