dicom文件格式:
DICOM的数据结构定义了数据集(Data Set)来保举乎存前面所介绍的信息对象定义(IOD),数据集又由多个数据元素(Data Element)组成。
每个数据元素描述一条信息(所有的标准数据元素及其对应信息在标准的第六部分列出),它由对应的标记(8位16进制数,如(0008,0016),前4位是组号(Group Number),后十位是元素号(Element Number)唯一确定 DICOM数据元素分为两种,盯答答即:
标准(Standard)数据元素,组号为偶数,含义在标准中已定义。
私有(Private)数据元素,组号为奇数,其描述信息的内容由用户定义。
DICOM介绍:
DICOM即医学数字成像和通信,是医学图像和相关信息的国际标准(ISO 12052)。它定义了质量能满足临床需要的可用于数据交换的医学图像格式。
DICOM被广泛应用于放射医疗,心血管成像以及放射诊疗诊断设备(X射线,CT,核磁共振,超声等),并且在眼科和牙凯慧科等其它医学领域得到越来越深入广泛的应用。在数以万计的在用医学成像设备中,DICOM是部署最为广泛的医疗信息标准之一。
本章将结合开源项目 IMBRA 讲解如何解析一个DCM文件
文件开头会有128字节的导言,这部分数据没有内容。接着是4字节DICOM文件标识,存储这"DICM"。然后紧接着就是dicom数据数据元素了
旧版本的DCM文件会在开头8个字节验证芦腊签名,在读完128字节后,读取4个字节验证DICOM标识。
接下来开始读取数据元素了,现读取两个字节的tagId,并且验证大小端。
dicom的数据元素的tagId是从大到肆大小的读取的,而最小的tagId就是从0x0002,当tagId不是0x0002说明已经陪雹滑读取完所以关于0x0002的tagId。从中找出(0002,0010)的tag,这个tag设置当前数据是否大端格式,显示VR编码还是隐式VR编码。 "1.2.840.10008.1.2.2" 表示大端格式, 1.2.840.10008.1.2 表示隐式编码。
显示编码解析 取先获取VR 再获取长度 最后获取值
隐式编码解析
FileStream fs = new FileStream(@"D:\aaaa.dcm", FileMode.Open, FileAccess.Read)fs.Seek(128, SeekOrigin.Begin)
byte[] head = new byte[4]
fs.Read(head, 0, 4)
string str = System.Text.Encoding.Default.GetString(head)
if (!str.Trim().Equals("DICM"))
{
MessageBox.Show("Not Dicom File")
}
else
{
//MessageBox.Show("Dicom File")
Console.WriteLine("Dicom File")
}
DICOM文件头(DICOM File Meta Information)包含了标识数据集合的相关信息。每个DICOM文件都必须包括该文件头。文件头的最开始是文件前言,它由128个00H字节组成,接下来是DICOM前缀,它是一个长度为4字节的字符串族源敬“DICM”,可以根据该值来判断一个文件是不是DICOM文件。文件头中还包括其它兆慎裂枝一些非常有用的信息,如文件的传输格式、生成该文件的应用程序等等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)