1 / 19
文档名称:

读取方法-资料.docx

格式:docx   大小:506KB   页数:19页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

读取方法-资料.docx

上传人:guoxiachuanyue 2021/4/12 文件大小:506 KB

下载得到文件列表

读取方法-资料.docx

相关文档

文档介绍

文档介绍:Dicom格式文件解析器
学数字图像与通讯,这里讲的暂不涉及通讯那方面的问题 只讲*.dcm也就是 diocm格式文件的读取,读取本身是没啥难度的 无非就是字节码 数据流处理。 只不过确实比较繁琐。
分析
整体结构先是128字节所谓的导言部分,说俗点就是没啥意义的破数据 跳过就
是了,然后是dataElement依次排列的方式 就是一个dataElement接一个 dataElement的方式排到文件结尾 通俗的讲dataElement就是指tag就是破 Dicom标准里定义的数据字典。tag是4个字节表示的前两字节是组号后两字节 是偏移号比如0008,0018。所有dataElement在文件中都是按tag排序的比如 0002,0001 0002,0002 0003,0011
文件整体结构如下:
又把论文里的这图贴上来总结的很好。单个dataElement的结构如下:
显示VR : VR为OB OW OF UT SQ UN的元素结构
组号
元素号
VR
预留
值长度
数据元素值
2
2
2
2( 0x00,0x00)
4
由数据长度 决定
显示VR : VR为普通类型时元素结构(少了预留那一行)
组号
元素号
VR
值长度
数据元素值[
2
2
2
4
由数据长度 决定
隐式VR时元素结构
组号
元素号
值长度
数据元素值
2
2
41
由数据长度 决定
ushort
要问VR是啥东东,值表示法啥叫值表示法啊俺不懂int string short 懂不就是这个意思,Dicom标准真坑爹非要整个怪怪的概念。
VR总共27个 跟c#值类型对应关系我都写好了:
1 string getVF( string VR, byte [] VF)
2
{
3
string VFStr = string .Empty;
4
switch (VR)
5
{
6
case "SS":
7
VFStr = BitCo nt16(VF,
0).ToStri ng();
8
break;
9
case "US":
10
VFStr = BitCo nt16(VF,
0).ToStri ng();
11
12
break;
13
case "SL":
14
VFStr = BitCo nt32(VF,
0).ToStri ng();
15
16
break;
17
case "UL":
18
VFStr = BitCo nt32(VF,
0).ToStri ng();
19
20
break;
21
case "AT":
22
VFStr = BitCo nt16(VF,
0).ToStri ng();
23
24
break;
25
case "FL":
26
VFStr = BitCo ngle(VF,
0).ToStri ng();
27
28
break;
29
case "FD":
30
VFStr = BitCo (VF,
0).ToStri ng();
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
}
55
}
break;
case "OB":
VFStr = BitCo ng(VF, break;
case "OW
VFStr = BitCo ng(VF, break;
case "SQ":
VFStr = BitCo ng(VF, break;
case "OF":
VFStr = BitCo ng(VF, break;
case "UT":
VFStr = BitCo ng(VF, break;
case "UN":
VFStr = En codi ng(VF); break;
default :
VFStr = En codi