DICOMDIR文件結構:
格式:
DICOMDIR文件遵照DICOM文件的存儲格式,需要有128個無意義字節的前言(假如沒有特殊要求,這些字節都為00H),緊接着是DICOM前綴(長度為4字節的“DICOM”字符串,判斷是否為DICOM文件的唯一標准),再接着是group標簽為:0x0002的elemnt,強制要求的有[0002,0000] [0002,0001] [0002,0002] [0002,0003] [0002,0010] [0002,0012]。
之后是目錄信息(group為0x0004的元素),其中有第一個組件的入口和最后一個組件的入口以及圖像集相對路徑(DICOMDIR文件名必須為“DICOMDIR”,並且必須與圖像集文件夾在同一目錄內) (PS10,P.20)
物理結構:
邏輯結構:
DICOMDIR展開依次有4層的樹狀結構:
1. Patient
2. Study
3. Series
4. Image
在設計數據結構的時候,可以用樹的節點來表示每一層的每一個實體。如下:
class Patient
{
public:
Info Name;
Info Id;
int sonnum;
Patient(void);
~Patient(void);
};
class Study
{
public:
Info Date;
Info Time;
Info Description;
Info Instance;
Info ID;
Info AccNum;
int sonnum;
Study(void);
~Study(void);
};
class Series
{
public:
Info Modality;
Info Instance;
Info Number;
int sonnum;
Series(void);
~Series(void);
};
class Image
{
public:
Info Instance;
Image(void);
~Image(void);
};
class Root
{
public :
int sonnum;
char *Version;
char *Path;
};
每一層由多個實體組成,每個實體包含2個內容:目錄信息和實體信息。
目錄信息必須具備以下元素:下一個實體入口地址(0x0004,0x1400)、下一層(第一個)實體入口地址(0x0004,0x1420)、目錄使用標記組成(0x0004,0x1410)和實體類型(0x0004,0x1430),另外Image實體還需要包含對應影像文件的相對路徑。
不同層的實體要求包含不同的元素,詳見PS3.3 P.1217。
DICOMDIR或者DICOM的實體,從邏輯上的上至下遍歷可以直接通過入口地址進行索引,也可以通過一種比較方便的結構來進行組織和索引,就是通過嵌套的形式(Sequence)。在DICOM標准中,一共有3種嵌套格式,如下:
(ps5.7 p.44)
嵌套結構(也即串)格式如下:
一個VR為SQ的元素起頭,接下去的ITEM(也即元素)以(FFFE,E000為TAG的元素起頭)。SQ元素記錄整個(不包括SQ元素)數據集(dataset)的大小。FFFE,E000元素記錄其下內容的大小。
Dataset則是由1個或多個ITEM組成。
元素(ITEM)格式:
顯式時:
隱式時:
TAG由2字節16進制的group tag 和 element tag 組成。
VR有顯式和隱式2種方式,當顯式傳輸時,VR有值,當隱式傳輸時,VR無值;另外,組號是0002的元素都是顯式的。
當VR值是OB,OW,OF,SQ,UT或者UN的時候,VR的長度為4字節,由2字節的字符串和2字節的00H組成。當VR值是其他值的時候,VR的長度為2字節,即2字節的字符串。
ValueLength的長度是根據VR可變的,共有2種長度,當VR為OB,OW,OF,SQ,UT或者UN的時候長度為4字節。當VR為其他值時,長度為2字節。ValueLength表示的是Value的長度,另外,當DataLength的長度不為偶數時,則根據需要添加前綴或者后綴補齊。
Value區則是具體的值,長度根據ValueLength。
Item的數據格式可以定義如下:
Class Item
{
short Group;
short Element;
char VR[4];
int ValLen;
char *Value;
};