下载此文档

读取方法-资料.docx


文档分类:IT计算机 | 页数:约19页 举报非法文档有奖
1/19
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/19 下载此文档
文档列表 文档介绍
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

读取方法-资料 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数19
  • 收藏数0 收藏
  • 顶次数0
  • 上传人guoxiachuanyue
  • 文件大小506 KB
  • 时间2021-04-12