Dicom文件中图像参数详解
dicom讲义

第十三部分:点对点通信支持的打印管理。 定义了在打印用户和打印提供方之间点对点连 接时,支持DICOM打印管理应用实体通信的必 要的服务和协议。点对点通信框架提供了与第 8部分相同的上层服务,因此打印管理应用实 体能够应用在点对点连接和网络连接。点对点 打印管理通信也使用了低层的协议,与已有的 并行图像通道和串行控制通道硬件硬拷贝通信 相兼容。
第八部分:消息交换的网络通讯支持。说明了 在网络环境下的通讯服务和支持DICOM应用进 行消息交换的必要的上层协议。 第九部分:消息交换的点对点通讯支持。说明 了与ACR-NEMA2.0兼容的点对点通讯的服务和 协议。
第十部分:用于介质交换的介质存储和文件 格式。该部分说明了在可移动存储介质上医学图像 信息存储的通用模型。提供了在各种物理存储介质 上交换不同类型的医学图像的框架,支持封装任何 信息对象定义的文件格式。 第十一部分:介质存储应用框架。用于医学 图像及相关设备信息交换的兼容性声明。给出了心 血管造影、超声、CT、核磁共振等图像的应用说明 和CD-R格式文件交换的说明。
第十四部分:说明了灰度图像的标准显示功能。 这部分仅提供了用于测量特定显示系统显示特性 的方法。这些方法可用于改变显示系统以与标准 的灰度显示功能相匹配或用于测量显示系统与标 准灰度显示功能的兼容程度。 第十五部分:安全措施
第十六部分 内容映射资源(content mapping resource)定义了标准使用的模板和上下文组。 第十七部分 说明信息 第十八部分网络化,而不论设备的 开发商是谁。 有助于开发和推广图像存档和传输系统 (PACS),并能与其它医学信息系统联系。 建立有价值的诊断信息数据库,它能处理地 理上分散的不同设备间的请求。
发展: DICOM以开放式连结系统(OSI)参考模式定下 的7层协议为基础,为影像、公用信息、应用 服务及通讯协议提供了标准模式,允许医学图 像在检查仪器、电脑和医院之间进行交换,医 学影像设备采用此标准数据格式和数据接口后, 其图像可通过网络系统存储和传输。 1982年美国联合成立委员会,制定DICOM标 准,1985 - 公布1.0版本,1988 - 公布2.0版本 DICOM在持续更新中,目前是DICOM 3.0 2004版
DICOM医学图像处理:DIMSE消息发送与接收“大同小异”之DCMTKfo-dicommDCM

DICOM医学图像处理:DIMSE消息发送与接收“⼤同⼩异”之DCMTKfo-dicommDCM背景:从DICOM⽹络传输⼀⽂开始,相继介绍了C-ECHO、C-FIND、C-STORE、C-MOVE等DIMSE-C服务的简单实现,博⽂中的代码给出的实例都是基于fo-dicom库来实现的,原因只有⼀个:基于C#的fo-dicom库具有⾼封装性。
对于初学者来说实现⼤多数的DIMSE-C、DIMSE-N服务⼏乎都是“傻⽠式”操作——构造C-XXX-RQ、N-XXX-RQ然后绑定相应的OnResponseReceived处理函数即可。
本博⽂希望在前⼏篇预热的基础上,对⽐DCMTK、fo-dicom、mDCM三种库构建DIMSE消息的具体操作,来分析⼀下三者对于DIMSE消息的发送和接收的实现,为后续搭建简易版的Dicom Server服务器做准备。
DIMSE:DIMSE,是DICOM Message Service Element的简称。
DICOM3.0第7部分指出:DIMSE为对等DICOM应⽤实体进⾏医学影像及相关信息交换提供了⼀种应⽤服务元素定义(Application Service Element),包括服务和协议(DIMSE Service 和DIMSE Protocol)。
DIMSE Protocol:DIMSE基于DIMSE协议来提供服务,DIMSE协议规定了构造消息必需的编码规则。
⼀条DICOM MESSAGE由固定的指令集合(Command Set),外加可选择的数据集合(Data Set)构成,如下截图所⽰:DIMSE Services:DIMSE服务因操作SOP类型的不同分为DIMSE-C Services和DIMSE-N Services,DIMSE-C服务⽀持在对等DICOM实体间进⾏Composite SOP Instance操作,主要包括C-ECHO、C-FIND、C-STORE、C-MOVE、C-GET等;⽽DIMSE-N服务⽀持Normalized SOP Instance操作,主要包括N-EVENT-REPORT、N-GET、N-SET、N-CREATE、N-ACTION、N-DELETE。
Dicom文档里保存的到底是什么数据

Dicom文档里保存的到底是什么数据?CT值反应的是物质对x射线衰减的能力,即衰减系数,密度越大的物质,CT值越高,人们把标准状态下空气的CT值定义为-1000HU,把水的CT值定义为0HU,其他物质根据密度按比例计算出来,常见物质的CT值范围是-2000到3071HU,CT值越大,图像显示越亮,但是通常把CT值低于-1024HU的都按-1024计算,所以常见的CT值范围是-1024—3071HU。
CT采集图像时,在硬盘上保存的数据是以像素的灰度值表示的数据文档,是12位灰度图像,当被蚂蚁等dicom阅读软件读取时,软件会自动转化为CT值显示出来,因此dicom文档在硬盘上保存的是灰度值,而显示时在内存里保存的是CT值。
在每个dicom文档里的tag文档里都有以下几个数据:这些数据是用来进行灰度值(image pixel value)与CT值之间转换的,其转换方法如下:HU=slope×image pixel value+intercept注:12位灰度图像的像素值最高灰度值即图像像素值(image pixel value)是2的12次方,即4096,实际是4095。
根据上述公式,也可以计算出最大的CT值:1×4095+(-1024)=3071HU以实际图像为例:该图的tag文档里Smallest image pixel value=0Largest image pixel value=3420image pixel value=3420slope=1,intercept=-1024经过上述公式的计算,理论上图中最大的CT值应该:1×3420+(-1024)=2396HU,最小的CT值应该:1×0+(-1024)=-1024通过蚂蚁的工具,实际也可以找到最大的CT值就是2396HU,最小CT值是-1024。
因此,我们用蚂蚁软件读取dicom数据,其显示的就是正常的CT值,并没有任何不符合实际的情况。
Dicom医学图像与nii标签数据处理

Dicom医学图像与nii标签数据处理Dicom 医学图像与 nii 标签数据处理Ⅰ. Dicom医学dicom 图像就长这样dicom图像的源数据范围相当⼤,⽽转化为图像形式保存的数据则为uint8类型,直接转化会有损失,本⽂将其转为.npy形式。
Ⅱ. nii标记数据处理使⽤ITK-SNAP对dicom 图像进⾏标记同样转化为.npy格式Ⅲ. 综合数据处理1. code1使⽤本代码是在dicom数据转化为.npy格式,⽽.nii的标记数据还未进⾏转化的情况下import numpy as np import os #遍历⽂件夹import nibabel as nib #nii 格式⼀般都会⽤到这个包import imageio #转换成图像from matplotlib import pyplot as plt import cv2 def nii_to_image (niifile ): filenames = os .listdir (filepath ) #读取nii ⽂件夹 slice_trans = [] for f in filenames : #开始读取nii ⽂件 img_path = os .path .join (filepath , f ) img = nib .load (img_path ) #读取nii img_fdata = img .get_fdata () fname = f .replace ('.nii','') #去掉nii 的后缀名 #开始转换为图像 (x ,y ,z ) = img .shape for i in range (0,z ): silce = img_fdata [:, :, i ] slice_trans .append (silce ) return slice_trans def get_image_file (file_dir ): image_data = [] files = os .listdir (file_dir ) files .sort (key = lambda x :int (x [:-4])) for file in files : if os .path .splitext (file )[1] == '.npy': img_item = np .load (file_dir + file ) image_data .append (img_item ) return image_data if __name__ == '__main__': filepath = './imgData/seg12190000' label = nii_to_image (filepath ) file_dir = './Documents/dicom2npy_75989854/' image_data = get_image_file (file_dir ) imgfile = './imgData/label/' for i in range (len (image_data )): filename_item = imgfile + str (i + 1) img_item = image_data [i ] # 简单对 img 进⾏处理 img_item [img_item < 0] = 0 img_item [img_item > 512] = 512 # img_item.dtype = np.uint8 img_item = img_item .astype (np .uint8) # 不知道为什么只有这样才能整出来 label_item = label [149-i ] label_item = np .rot90(label_item , -1) label_item = np .flip (label_item , 1) # 图⽚做成三通道查看⼀下效果 img_item = cv2.merge ([img_item , img_item , img_item ]) img_item [label_item > 0] = img_item [label_item > 0] * 0.6 + (80, 0, 0) # imageio.imwrite(os.path.join(imgfile, '{}.png'.format(i)), img_item) # imageio.imwrite(os.path.join(imgfile, '{}.png'.format(i)), label_item) # 保存调试好的label, 反序 + 左右翻转 + 旋转-1*90 np .save (os .path .join (imgfile , '{}.npy'.format (i )), label_item ) print (i )12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364652. 需要说明不知道为什么,采⽤上述博客的做法即对提取出的标记数据以silce = img_fdata[:, :, i]直接进⾏切⽚效果对不上。
DICOM医学影像文件格式解析

DICOM医学影像⽂件格式解析DICOM医学影像⽂件格式解析dicom协议中⽂⽂档可去csdn下载1.DICOMDICOM(DigitalImaging andCommunications inMedicine)是指医疗数字影像传输协定,是⽤于医学影像处理、储存、打印、传输的⼀组通⽤的标准协定。
它包含了⽂件格式的定义以及⽹络通信协议。
DICOM是以TCP/IP为基础的应⽤协定,并以TCP/IP联系各个系统。
两个能接受DICOM格式的医疗仪器间,可通过DICOM格式的⽂件,来接收与交换影像及病⼈资料。
⽬前,DICOM被⼴泛应⽤于放射医疗,⼼⾎管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和⽛科等其它医学领域得到越来越深⼊⼴泛的应⽤。
⽬前采⽤的标准是DICOM3.0,每⼀张图像中都携带着⼤量的信息,这些信息具体可以分为以下四类:(a)Patient(b)Study(c)Series(d)Image每⼀个DICOM Tag都是由两个⼗六进制数的组合来确定的,分别为Group和Element。
如(0010,0010)这个Tag表⽰的是Patient’s Name,它存储着这张DICOM图像的患者姓名。
2.DICOM存储格式DICOM⽂件的整体结构如下表所⽰,先是128字节的导⾔部分(没有实际信息),接着是四个字节组成的"DICM"字符串,然后是若⼲DataElement元素依次排列直⾄⽂件结束。
导⾔"DICM"DataElement DataElement...DataElement128 Byte 4 Byte n Byte n Byte n Byte2.1 DataElement的三种结构DataElement是存储⽂件信息的主体,DataElement的总体结构如下表所⽰:Tag VR(值表⽰法)Len(数据长度)数据值(内容)4 Byte 2 Byte 2 Byte Len ByteTag由2 Byte的组号(group)和2 Byte的元素号(element)组成,VR是DICOM特有的值表⽰法,关于值表⽰法的解释见下⽂按照VR的类型以及是否显⽰VR,DataElement⼜分为三种具体的结构。
医学图像格式转换及读取与显示

医学图像格式转换及读取与显示1.医学图像格式转换通常从机器拷贝出来的医学图像数据为DICOM格式,如果是多种模态图像混合,则需要使用Dcm2AsiszImg.exe工具把多模态图像分类出来,软件如下图所示:Dcm2AsiszImg 是一个接收、发送DICOM 图像、把DICOM 图像进行分类、把DICOM 转化为安科Img 图像格式的软件工具。
用法:“输出目录”选择待转化的图像保存路径,“DICOM图像分类”选择要转化的原始图像目录,最后点击“DICOM图像分类”,输出图像分辨率为256*256。
常用的图像格式还有ANALYZE和NIFTI,ANALYZE格式的图像包括图像文件.img 和头文件.hdr,应用于SPM2。
NIFTI把图像文件和头文件合并为.nii文件,应用于SPM8、FSL、FreeSurfer等。
可以利用MRICron软件的dcm2niigui.exe插件把DICOM格式转化为ANALYAZE 和NIFTI格式。
在Help下的preference处可设置输出参数:2.读取与显示DICOM图像Matlab提供了dicominfo、dicomdict、dicomdisp、dicomread、dicomuid 、dicomwrite函数,可实现DICOM格式图像的读取、显示、保存等操作,以及查看扫描信息。
3.读取与显示NIFTI格式图像MRIcro软件可以显示NIFTI图像① NIfTI这个Matlab程序可以读取显示、保存、制作核磁共振图像。
具体如下:>> [hdr,filetype,fileprefix,machine] = load_nii_hdr('output.hdr');>> [img,hdr] = load_nii_img(hdr,filetype,fileprefix,machine);>> save_nii(nii, filename, [old_RGB]);②SPM方法:help spm_read_volsV = spm_vol_nifti('output.hdr')[Y,XYZ] = spm_read_vols(V);4.Freesurfer的mgh图像读取与显示Freesurfer安装目录下有一个matlab程序包,提供了load_mgh, save_mgh等函数实现该文件的读取与显示。
Dicom数据格式资料

平滑
空间平滑就是将数据在空间上用一个光滑的函数(通常
是Gauss函数
)去卷积
作用:
1、提高信噪比
2、符合Gauss随机场的要求
3、消除不同被试脑结构之间的细微差别
DICOM数据格式
张静远
DICOM数据格式
DICOM全称为医疗数位影像传输协定(Digital Imaging and Communications in Medicine),是一组通用的标准协定,在对于医学影像的处理、 储存、打印、传输上。它包含了档案格式的定义及网络通信协定。DICOM 是以TCP/IP为基础的应用协定,并以TCP/IP联系各个系统。两个能接受 DICOM格式的医疗仪器间,可借由DICOM格式的档案,来接收与交换影像 及病人资料。
DICOM文件结构
文件头 数据元素 数据元素 数据元素 …… 数据元素 标签 VR 数据长度 数值
文件头
文件头包含了标识数据集合的相应信息,由128字节的文 字导言构成。如果该导言不传达信息,可由十六进制的00 填充。
文件头之后是DICOM前缀,内容是字符串“DICM”,表示 是DICOM文件。
文件头之后是数据集合,文件头也可以缺省。
DICOM简要说明

DICOM简要说明一、概述 (2)二、DICOM基本介绍 (3)DICOM解释 (3)DICOM资料的结构 (3)DICOM的服务功能对(SOP) (4)SCU/SCP(ServiceClass User/Provider) (5)DICOM的工作过程 (5)三、常用测试工具介绍 (6)四、实际DVT测试 (7)模拟器配置介绍 (7)Print SCP模拟器 (11)Storage SCU模拟器 (17)Worklist SCP模拟器 (18)DICOM Network Analyzer (19)五、EFILM功能介绍 (24)Storage SCP测试 (26)Storage SCU测试 (27)Query/Retrieve测试 (29)一、概述文档编写目的是为了大家对DICOM有一些基本的了解与一些DICOM测试工具的简单使用方法。
二、DICOM基本介绍引用:DICOM解释DICOM(digital imaging communications in medicine)。
从字面上解释,第一,应用对象是数字化的图像;第二,DICOM规范的核心是“通信”。
综上所述,DICOM可以解释为“医学数字化图像通信/交流的共同规格”,既“医学数字成像和通信”。
DICOM资料的结构一个患者到医院就诊,为了判断他的病灶,医生需要指定不同的检查(例如: CT,MR,超声),每一项检查都需要由相对应的仪器完成,但仪器产生的是一系列的影像(例如CT产生一组10张,MR产生10张和20张各一组影像),这些影像和病人如何产生关联呢?在DICOM规格中,使用了相对应的资料结构来描述: 定义出Patient,Study,Series,Image四个层次来存储上述例子。
Patient中包含了该病人的所有基本资料(姓名,性别,年龄等)和医生指定的检查Study;Study中包含了检查种类(CT,MR,B超)和指定检查的Series;Series中包含检查的技术条件(毫安,FOV,层厚等)和图像Image。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DICOM文件可以大致分为两部分:
一部分:与图像相关的元信息,包括患者信息,检查信息,序列信息,图像信息等等。
另一部分:图像的像素数据。
在解析DICOM文件中的像素数据的时候,我们先需要读取以下图像相关信息:
以下是某个CT影像中的图像信息示例:
(0028,0002) Samples per Pixel VR: US Length: 2 Value: 1
(0028,0004) Photometric Interpretation VR: CS Length: 12 Value: MONOCHROME2
(0028,0010) Rows VR: US Length: 2 Value: 512 (0028,0011) Columns VR: US Length: 2 Value: 512 (0028,0030) Pixel Spacing VR: DS Length: 22 Value: 0.\0. (0028,0100) Bits Allocated VR: US Length: 2 Value: 16 (0028,0101) Bits Stored VR: US Length: 2 Value: 12 (0028,0102) High Bit VR: US Length: 2 Value: 11 (0028,0103) Pixel Representation VR: US Length: 2 Value: 0
(0028,1050) Window Center VR: DS Length: 12 Value: 00100\00100
(0028,1051) Window Width VR: DS Length: 12 Value: 00500\00500
(0028,1052) Rescale Intercept VR: DS Length: 6 Value: -1000 (0028,1053) Rescale Slope VR: DS Length: 2 Value: 1 (0028,2110) Lossy Image Compression VR: CS Length: 2 Value: 01 (0028,2112) Lossy Image Compression Ratio VR: DS Length: 8 Value:
1.(0028,0002) Samples per Pixel
每一个像素的取样数,一般来说,CT,MR,DR等灰度图像都是1,而彩超等彩**图像都是3,分别表示R, G, B三个颜色通道。
2.(0028,0004) Photometric Interpretation
我们经常碰到的Photometric Interpretation有以下几种类型:
Monochrome2 一般的灰度图像都采用这种,Pixel值越大,图像就越白。
Monochrome1 只有部分CR, DR图像使用,Pixel值越大,图像就越黑。
Palette Colour 一般用于彩超图像,每个像素占用8位或者16位,调色板保存在[0028,1201]RedPaletteColorLookupTableData, [0028,1202]GreenPaletteColorLookupTableData, [0028,1203]BluePaletteColorLookupTableData的属性中。
RGB 这是最常用的彩**图像格式。
YBR_FULL 另外一种彩**图像格式,存储格式为Y(Luminance 亮度),B(Blueness 蓝色),R(Redness, 红色)
YBR_FULL_422 一般用于JPG有损压缩格式的彩**图像,每两个像素共同使用32位,每一个像素都有自己的Y(Luminance 亮度),但是共享相同的B(Blueness 蓝色),R(Redness, 红色)。
所以,它的像素值存储方式是:YYBR,YYBT,YYBR
YBR_RCT 用于JPEG 2000无损压缩彩**图*像,Reversible Color Transformation, 可逆色彩变换。
Y = (R+2G+B)/4, CB = B-G ,CR = R - G
G = Y - (CR+CB)/4 , R = CR + G, B = CB + G
YBR_ICT 用于JPEG 2000有损压缩彩**图像Irreversible Color Transformation, 不可逆色彩变换。
Y = + .29900R + .58700G + .11400B
CB = - .16875R - .33126G + .50000B
CR = + .50000R - .41869G - .08131B
3. (0028,0010)Rows
图像的高度
4. (0028,0011)Columns
图像的宽度
5. (0028,0030)Pixel Spacing
图像像素间距,读取Pixel Data的时候不需要,主要用于长度测量。
6. (0028,0100)Bits Allocated
一个像素取样点存储时分配到的位数,一般RGB的图像,每一个颜色通道都使用8位,所以一般取值为8。
对于灰度图像,如果是256级灰阶,一般就是8位。
如果高于256级灰阶,一般就采用16位。
7. (0028,0101)Bits Stored
一个像素取样点存储时使用到的位数。
比方说示例中CT影像,采用的是4K灰阶,像素值取值范围为0~4095,所以使用到的位数为12位。
8. (0028,0102)High Bit
最高位序号,它定义了存储点在分配的内存中的排列方式,它的值是最后一个bit的序号。
如果第一个bit放在0位,那么最后一个bit为Bits Stored -1。
9. (0028,0103)Pixel Representation
如果这个值为0,这表明是无符号类型,其VR类型应该为US,Unsigned Short. 如果这个值为1,这表明为有符号类型,其VR类型应该为SS,Signed Short.
10. (0028,1050)Window Center 和(0028,1051) Window Width
窗宽窗位,不解释
11. (0028,1052)Rescale Intercept 和(0028,1053)Rescale Slope
用于根据像素值计算原始值,比方说,CT可以用于计算HU值。
比方说:HU = Rescale Slope * X + Rescale Intercept.
12. (0028,2110)Lossy Image Compression
当该值为1时,表明该图像曾经经过有损压缩处理。
即使后来解压缩后,再用非压缩格式存储和传输,该值也需要保持为1.
13. (0028,2112)Lossy Image Compression Ratio
有损压缩压缩率。
对于多帧图像,我们还需要读取Number of Frames (0028,0008)来获取帧数,然后,逐帧读取Pixel Data。
对于彩*图像,我们还需要读取Planar configuration (0028,0006),它定义了各个彩色通道值在Pixel Data中排列的排列方式。
当此值为0的时候,它这样排列的RGBRGBRGBRGBRGB。
当此值为1的时候,它是这样排列的:RRRRR......GGGGG.......BBBBB。
对于多帧图像,它是这样排列的:第一帧的RRR..,第一帧的GGG...,第一帧的BBB...,第二帧的RRR..,第二帧的GGG...,第二帧的BBB...。