DICOM醫學文件的解析


最近導師一直讓做智慧醫療的一個項目,這里面涉及到DICOM格式的文件處理,在這里分享一下自己學到的關於DCM文件的一些內容。

DICOM

DICOM(DigitalImaging andCommunications inMedicine)是指醫療數字影像傳輸協定,是用於醫學影像處理、儲存、打印、傳輸的一組通用的標准協定。它包含了文件格式的定義以及網絡通信協議。DICOM是以TCP/IP為基礎的應用協定,並以TCP/IP聯系各個系統。兩個能接受DICOM格式的醫療儀器間,可通過DICOM格式的文件,來接收與交換影像及病人資料。

目前,DICOM被廣泛應用於放射醫療,心血管成像以及放射診療診斷設備(X射線,CT,核磁共振,超聲等),並且在眼科和牙科等其它醫學領域得到越來越深入廣泛的應用。

DICOM的存儲格式

DICOM文件的整體結構如圖2.1所示,先是128字節的導言部分(沒有實際信息),接着是四個字節組成的"DICM"字符串,然后是若干DataElement元素依次排列直至文件結束。
在這里插入圖片描述

DataElement的三種結構

DataElement是存儲文件信息的主體,DataElement的總體結構如圖2.2所示:

在這里插入圖片描述

Tag由2 Byte的組號和2 Byte的元素號組成,VR是DICOM特有的值表示法,按照VR的類型以及是否顯示VR,DataElement又分為三種具體的結構。
在這里插入圖片描述

DataElement的Tag

DataElement的Tag用於標識Element的數據內容,比如病人信息、圖像的格式等。Tag總共有2000多個,常用的主要組號:0002組描述設備通訊,0008組描述特征參數,0010組描述患者信息,0028組描述圖像信息參數。

Dicom文件數據中所有dataElement從前到后按tag又可簡單分段:文件元Tag,普通Tag,像素Tag。
1) 文件元Tag(組號+0000):不受傳輸語法影響,總是以顯示VR方式表示,用於定義了傳輸語法;文件元Tag的dataElement,並沒有多大的意義,它的值長度是整個組所有DataElement的字節長度,一個Dicom中可以只有一個文件元Tag,也可以有多個文件元Tag。
2) 普通Tag:除了文件元Tag和像素Tag,其余的都是普通Tag數據。包括:圖像寬,高,數據傳輸格式,病人姓名,病人生日,病歷醫院,病歷科室,病情的描述等等數據;
3) 像素Tag(7fe0,0010):表示DataElement存儲的是病歷的圖像數據。

DataElement的VR

VR(Value Representation)值表示法是DICOM文件中特有的一種數據類型表示方式,規定了不同數據類型的含義及存儲格,共有27種VR。在隱式VR的結構中會根據元素標識進行判斷。Tag和VR是有對應關系的,每一種Tag其實是有一個固定的VR類型。

DataElement的數據長度

數據長度用兩個字節存儲了數據元素值的長度,所有DICOM數據元素都應該為偶數長度,若為奇數,追加空格或空NULL。當數據長度為0xFFFFFFFF時,數據一直到截止符為止。

現有的解析庫

基於C++的DCMTK
基於Java的dcm4che
基於python的pydicom
基於C#的fo-dicom【本次項目基於fo-dicom實現】

通過在工程中引入它們可以避免軟件開發人員去進行底層的解析工作,可為項目開發提高效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM