当前位置: 首页 > news >正文

读取.nrrd和.dcm文件格式医学图片可视化与预处理

nrrd数据格式

MITK默认会将医学图像保存为格式为NRRD的图像,在这个数据格式中包含:

1、一个单个的数据头文件:为科学可视化和医学图像处理准确地表示N维度的栅格信息。
2、既能分开又能合并的图像文件。

nrrd_options输出
{u’dimension’: 3, # 维度
u’encoding’: ‘raw’, # 编码方式
u’endian’: ‘little’, #
u’keyvaluepairs’: {},
u’kinds’: [‘domain’, ‘domain’, ‘domain’], # 三个维度的类型
u’sizes’: [30, 30, 30], #三个维度的大小
u’space’: ‘left-posterior-superior’, # 空间信息
u’space directions’: [[‘1’, ‘0’, ‘0’], [‘0’, ‘1’, ‘0’], [‘0’, ‘0’, ‘1’]],
u’space origin’: [‘0’, ‘0’, ‘0’],
u’type’: ‘short’}

dcm数据格式

DICOM(DigitalImaging andCommunications inMedicine)是指医疗数字影像传输协定,是用于医学影像处理、储存、打印、传输的一组通用的标准协定。
DCM格式的文件会存储其各类重要信息。其中,常用到
(1)Patient ID : 患者ID (一般与患者的文件夹命名一致);
(2)Series Number : 属于同一三维数据的该序号应当是一样的,例如都是同一CT图像中的某张切片,那么该值是一样,通过该值判断是不是属于同一个三维数据(可能一个患者拍了多张CT图像);
(3)Image Position :该切片左上角像素点的空间位置。简而言之,利用Series Number找出患者文件夹下的所有属于同一三维图像的所有切片,然后利用Image Position对这些切片进行排序并重构成三维数据。

这里仅展示二维读取

代码实现

import nrrd
import pydicom
import numpy as np
import matplotlib.pyplot as plt# dicom文件
path = ".dcm"
ds = pydicom.dcmread(path,force=True)
data = np.array(ds.pixel_array)
plt.figure()
plt.imshow(data,cmap='gray')
plt.axis('off')
plt.show()#nrrd文件
nrrd_filename = '.nrrd'
nrrd_data, nrrd_options = nrrd.read(nrrd_filename)
print(nrrd_data.shape)
data =nrrd_data[:,:,50]#取切片
data = np.array(ds.pixel_array)
def WLww(image,WL,WW):min_v = (2 * WL - WW) / 2.0 max_v = (2 * WL + WW) / 2.0img1= (image-min_v)/WWimg1[img1>1]  = 1img1[img1<0]  = 0img1=img1*255return img1
data = WLww(data,20,400)
plt.figure()
plt.imshow(data,cmap='gray')
plt.axis('off')
plt.show()

结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/177869.html

相关文章:

  • VS CODE中的筛选器如何打开?
  • vue 多环境文件配置(开发,测试,生产)
  • 在服务器上搭建pulseaudio的运行环境,指定其运行目录、状态目录和模块目录
  • [Qt]QListView 重绘实例之一:背景重绘
  • 国庆周《Linux学习第二课》
  • 6年前的麒麟980依旧可以再战
  • JS计算任意多边形的面积
  • ios xcode15 navigationController?.navigationBar.isHidden = false无效
  • Python二级 每周练习题20
  • 深度学习-一个简单的深度学习推导
  • ES写入数据报错:retrying failed action with response code: 429
  • Redis给Lua脚本的调用
  • Spring工具类--ReflectUtils的使用
  • 联盟 | 彩漩 X HelpLook,AI技术赋能企业效率提升
  • MATLAB m文件格式化
  • ​分拆菜鸟将使阿里巴巴股票迎来新一轮上涨?
  • Excel 技巧记录-那些复杂的公式和函数
  • vue里使用elementui的级联选择器el-cascader进行懒加载的怎么实现数据回显?
  • Qt raise()问题
  • 26591-2011 粮油机械 糙米精选机
  • JavaScript位运算的妙用
  • This dependency was not found: vxe-table/lib/vxe-table in ./src/main.js
  • 网工内推 | H3C售前工程师,上市公司,13薪,有带薪年假、年终奖
  • 深入理解常见应用级算法思想
  • Windows下使用pybind11教程(python调用C++代码)
  • 基于通用LLM的一次测试用例自动生成的实验
  • 【excel密码】为什么工作表不能移动、复制了?
  • 软考高级之系统架构师之计算机基础
  • Mysql生产随笔
  • 现代卷积网络实战系列2:PyTorch构建训练函数、LeNet网络