医学图像数据格式和格式转换

医学图像数据格式和格式转换

 

 本文转载自:http://blog.csdn.net/kingmicrosoft/article/details/35798249

 

由于最近碰到了数据格式的问题,重建不出效果很是头疼,所以简单总结下数据格式相关内容,我的主要开发包是ITK+VTK+QT,所以要说的格式内容基本和VTK相关。

 

1.     Fileformats(几种数据格式介绍)

 

Images

 

    dcm (DICOM Image,only Read): DICOM的 全 称 是 Digital Imaging and Communications in Medicine (DICOM),它是用于处理,存储,打印,和在医学成像发送信息的标准 ,它包括文件格式定义和一个网络通信协议。至于文件格式定义,可以参考其他资料。

 

mha/mhd(Meta Image): 它指定表示该元信息中关于像素数据的报头的一个标准化的方法;

 

 

vti (VTK XML Image Data): 可视化工具包(VTK)的图像格式;带有嵌入二进制数据的XML语法;非常灵活;可以代表在同一文件的多个标量/矢量/张量数据;不支持图像方向(尽管它可以包括表示方向矩阵的自定义数据。注意:是image data!

 

Surfaces

 

vtp (VTK XML): 可视化工具包(VTK)的表示表面的数据;带有嵌入二进制数据的XML语法; POLYDATA(VTP,在VTK的数据体系中就是:串行vtkPolyData(非结构化)

 

    stl (Stereolithography): STL(立体光刻)是一种文件格式,原产于通过3D系统创建的立体CAD软件。STL中也被称为标准的Tessellation语言。 STL文件描述三维物体的只是表面的几何形状没有颜色的任何声明,质地或其他常见的CAD模型属性。 STL的格式指定ASCII和二进制表示。二进制文件是比较常见的,因为他们更紧凑

 

Meshes

 

    vtu (VTK XML): 可视化工具包(VTK)为网格格式;带有嵌入二进制数据的XML语法; UnstructuredGrid(VTU)—在VTK的数据体系中就是:串行vtkUnstructuredGrid (非结构化)

 

    xda (libMesh, only Write): libMesh meshfiles consist of two sections, the header and the data. The header containsimportant size information. It defines the number of elements, number of nodes,etc… that are in the mesh. The data section contains the actual elementconnectivity, the nodal coordinates, and any boundary condition information

 

vtk: 可视化工具包(VTK)为网格格式;ASCII或二进制格式

 

具体可以参考:http://www.vmtk.org/documentation/getting-started.html

 

 

 

2.      Image formatconversion(图像格式转换)

 

我做的方向是点云重建这一块,刚刚起步,目前碰到的数据格式并不多。所以这里且当抛砖引玉好了。

 

1)     dicom格式到.vti格式:

 

Suppose youwant to write the image volume in vti format (the VTK XML format for images -it’s convenient because it’s internally gzip’d):

如果你装了VMTK,可以:

vmtkimagereader-f dicom -d dicom_directory_path --pipe vmtkimagewriter -ofile image_volume.vti

 

2)     polydata转到volumerepresentation (vtkImageData)

参考:http://www.vtk.org/Wiki/VTK/Examples/Cxx/PolyData/PolyDataToImageData

里面附带了全部的源代码,编译后就可以运行的。

 

3)    Read vtp fileand write a ply file

 

参考:http://www.cmake.org/Wiki/VTK/Examples/Cxx/IO/ConvertFile

 

4)     一个开源包:gdcm2vtk(太强大了)

The gdcm2vtktakes as input any file supported by VTK (including DICOM file) and willgenerate as output a DICOM file.

http://manpages.ubuntu.com/manpages/oneiric/man1/gdcm2vtk.1.html

http://gdcm.sourceforge.net/html/gdcm2vtk.html

 

5)利用paraview软件(免费)

 

paraview支持的格式:

 

.boundary,.cas, .case, .cosmo, .cube, .csv, .dem, .d3plot, .e, .ex, .ex2v2, .exo, .exoii,.foam, .g, .gen, .gadget2, .hierarchy, .inp, .isdyna, .k, .mha, .mhd, .nc,.ncdf, .netcdf, .nhdr, .nrrd, .obj, .particles, .pdb, .pht, .ply, .png, .pop,.pvd, .pvti, .pvtk, .pvtp, .pvtr, .pvts, .pvtu, .raw, .res, .sesame, .sos,.spcth, .stl, .tec, .tiff, .tp, .vpc, .vrml, .vthb, .vti, .vtk, .vtm, .vtmb,.vtp, .vtr, .vts, .vtu, .wind, .wrl, .xdmf, .xmf, .xyz

 

还有一个好处就是这个软件是可视化的,有很多参数可以一目了然

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍: DcmTransform是一款专用的医学格式转换器,于对符合DICOM 3.0标准的医学图像文件。软件首先对DICOM文件中的数据进行解析,并将其以图像的样式显示。图像显示后,用户可以自定义地调节医学图像的窗位窗宽。由于医学图像数据的像素变化范围通常为0-4095或0-1023,不同于传统图像文件的0-255。而计算机所能显示的黑白像素范围是0-255,所以需要对医学图像进行像素值的映射处理,即调节医学图像的窗位窗宽。调节操作的作用在于改变显示图像的明暗度对比度。当用户调节好医学图像的窗位窗宽后,即可以对医学图像文件进行格式转化。转化的文件格式可设为BMP格式和JPG格式。用户亦可以根据自己的需要设置转化图像的属性信息,如图像的质量,大小。对于CT,MRI断层图像来说,通常拍摄得到的是一系列DICOM文件,该系列文件通常在同一个文件夹目录下。对于某一系列文件,由于拍摄中设备参数设置不变,其像素的变化范围,图像的明暗度饱和度基本相同,所以在图像转化操作中,用户可以调节好窗位窗宽后,一次性的将系列文件全部转化。对于DSA血管减影造影图像,也是需要拍摄一系列的图像,该系列图像通常保存在同一DICOM文件中。它借助计算机对血管造影图像进行数字图像处理,以消除背景的干扰,突出医生感兴趣的血管部分的信息。医学关心的并不是原始拍摄的图像信息,而是减影成像后的图像。所以本软件即可以将原始图像数据转化成普通图像文件,也可以转化减影成像后的图像。DICOM文件是按照DICOM标准存储的医学文件,它不仅可以用来封装各种医学图像,也可以封装其它医学信息,如病人姓名,性别,拍摄单位、设备参数等。这类资料保存在DICOM文件的文件头中,DICOM文件头包含了标识数据集合的相关信息。DICOM文件一般由1个DICOM文件头和1个DICOM数据集合组成。在对DICOM文件处理过程序中,亦需要对其文件头进行解析,得到图像的相关信息。本软件可以将解析后的文件头保存为TXT文本文件,以便于查看。本软件还为用户提供了普通图像文件浏览的功能,以便于用户转化完DICOM文件后,查看转化效果。图像浏览时,先列出所有转化后图像的缩略图,用户点击任意一幅缩略图即可打开该图像
LUNA16数据集是一个医学影像数据集,包含了用于肺癌检测的CT扫描影像。要将LUNA16数据集转换为PNG格式,可以按照以下步骤进行: 1. 下载LUNA16数据集,包含了DICOM格式的CT扫描图像和CSV文件。 2. 安装Python的pydicom库,用于读取DICOM图像。 3. 编写Python脚本,读取DICOM图像并将其转换为PNG格式。以下是一个示例脚本: ``` python import os import numpy as np import pydicom from PIL import Image # 设置数据集路径和输出路径 data_path = "path/to/LUNA16/data/" output_path = "path/to/output/folder/" # 读取CSV文件,获取需要转换的图像ID列表 with open(os.path.join(data_path, "annotations.csv"), "r") as f: lines = f.readlines() ids = [line.split(",")[0] for line in lines[1:]] # 逐个读取DICOM图像并转换为PNG格式 for id in ids: # 读取DICOM图像 filename = os.path.join(data_path, "subset1", id + ".mhd") ds = pydicom.dcmread(filename) # 将DICOM图像转换为numpy数组 img = ds.pixel_array # 将CT值归一化到0-255范围 img = (img - np.min(img)) / (np.max(img) - np.min(img)) * 255 img = img.astype(np.uint8) # 将numpy数组转换为PIL图像 pil_img = Image.fromarray(img) # 保存为PNG格式 output_filename = os.path.join(output_path, id + ".png") pil_img.save(output_filename) ``` 4. 运行脚本,等待转换完成。 需要注意的是,LUNA16数据集非常大,包含数千个图像文件,转换过程可能比较耗时。建议使用GPU加速和多线程处理来提高转换速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值