日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】DICOM命令集和数据集解析!!

發布時間:2023/12/10 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】DICOM命令集和数据集解析!! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:DICOM命令集和數據集解析 - 微笑的艾米 - 博客園

摘?? 要:本文通過分析一個典型的DICOM消息,詳細地解析了DICOM命令集和數據集的構成方式和其含義。并在此基礎上,提出了一種實現DICOM命令集和數據集解析的實施方案,并對該種方案的設計思路和具體實現方法進行了詳細的闡述。

關鍵詞:醫學數字成像及通信標準,信息對象定義,服務對象對

1.???????前言

DICOM(Digital Imaging and Communications in Medicine)是醫療設備的國際標準通信協議,它為在不同醫療設備之間對醫學圖像等數字信息進行各種命令操作定義了統一的規范。現在,越來越多的醫療設備生產廠家開始施行并支持DICOM標準。現在廣泛使用的版本是DICOM3.0。

在本文中,利用一個實例來分析DICOM協議是如何利用DICOM命令集和數據集在不同醫療設備之間進行圖像存儲操作的,并在此基礎上,提出了一個解析DICOM命令集和數據集的實現方案。

2.????信息對象定義

DICOM是一個數字醫學圖像的網絡通訊接口標準。基于此,將現實世界中的實體進行抽象數據化是制定標準的一個重要步驟。DICOM標準描述了許多信息對象類(Information Object Class,簡稱IOC)。這些信息對象類為現實世界中能夠以數字醫學圖像這種方式通訊的實體提供了一個面向對象的抽象定義,這個定義稱作信息對象定義(Information Object Definition,簡稱IOD)。一個信息對象定義(IOD)是由若干包含相關信息的信息實體組成。每一個信息實體對應著DICOM應用模型中的現實世界實體(如患者、圖像等)的一個數據抽象。每個信息實體是由若干屬性組成的,屬性是現實世界實體性質(如患者的姓名、年齡、圖像的成像日期等)的抽象。在DICOM標準中,每個屬性用一個數據元素來描述,而一個信息實體的相關屬性的集合則用數據集來描述。

3.?服務對象對

面向對象的設計不僅描述了對象本身的屬性,同時還說明了怎樣處理這些對象的方法。DICOM標準就是利用這個概念,定義了諸如存儲圖像、獲取病人信息之類的服務。由于是面向對象的設計,故服務又被稱作服務類。一個服務類由若干個相關的服務對象類(Service Object Pair Class,簡稱SOP Class)組成。SOP類是DICOM標準中定義的基本功能單位。對于一個特定的SOP類來說,一臺裝置可能扮演以下兩個角色:一:服務類提供者(Service Class Provider,簡稱SCP),扮演這個角色的機器提供SOP類的服務,它相當于客戶/服務器模型中的服務器(Server);二:服務類使用者(Service Class User,簡稱SCU),扮演這個角色的裝置使用SOP類的服務,它相當于客戶/服務器模型中的客戶。例如一臺成像裝置要打印一幅圖像,在這種情況下,該成像裝置為與打印相關的SOP類的SCU,打印機為SCP。一個SOP類的一次具體實現稱作服務對象對實例,存儲圖像、獲取病人信息等操作就是通過SOP實例實現的。

圖1形象地描述了SOP類及其實例的關系。

????

?????????動詞:Store ??服務(DIMSE)
????????????名詞:MRI?Image ??信息對象定義IOD
一般句子:Store?a?MRI?image ??SOP類
特指句子:Store?this?MRI?image ??SOP實例
?????????????

圖1 SOP類與實例

4.???????DICOM消息

一個SOP類被定義為一組特定的服務與一個相關的信息對象(IOD)的結合,一個SOP類的具體實現是通過DICOM消息的交互完成的。

在DICOM標準中,DICOM消息由命令集和數據集組成,其中數據集描述現實世界信息對象的一個實例,而命令集則描述對這個信息對象實例做何種操作。命令集由若干個命令元素組成,每個命令元素由標簽域、值長度域和值域組成。而數據集由若干個數據元素組成,每個數據元素由標簽域、數據表示類型域(可選域)、值長度域和值域組成。

無論是在命令集還是數據集中,標簽都唯一的標識一個命令或者數據元素,元素必須按標簽的升序依次排列,且每個元素一般最多只能出現一次(嵌套除外),元素標簽由一對組號和元素號組成,兩者均為16位無符號整數;值長度域是以字節數表明值域的長度,其值必須為偶數;值域包含了有關操作命令的屬性值(針對命令元素而言)或者現實世界信息對象實例的屬性的具體值(針對數據元素而言),其長度是可變的,但是不能超過值長度域所規定的長度。

在數據集中,數據表示類型域是一個可選項,說明值域的類型。當元素中包含該域時,稱作顯式VR(Value Representation),否則稱作隱式VR。

下面的表格描述了一個典型DICOM消息,其中數據集描述了一個圖像的具體實例,而命令集的含義則是請求對該圖像實例做存儲(C-STORE)服務,很顯然,這是一個從SCU發往SCP的存儲(C-STORE)請求(REQUEST)消息。其中組號為0000的元素為命令元素,其它為數據元素。如表1所示。

表1 C-Store服務的DICOM請求消息

元素

長度

意義

說明

0000

0000

0004 0000

0056 0000

從本字段的結束至下一組開始的偶數字節

0000

0001

0004 0000

01A0 0010

從本字段的結束至報文結束的偶數字節

0000

0010

000C 0000

4341 2D52 454E 414D 3120 302E

“ACR-NEMA 1.0”

識別碼

0000

0100

0002 0000

0001

0001H

命令字段=C-Store-Request

0000

0110

0002 0000

123A

123A

由成像裝置生成的報文識別號

0000

0200

0004 0000

4344 3148

“DCH1”

發送者邏輯地址

0000

0300

0004 0000

4341 3148

“ACH1”

接收者邏輯地址

0000

0800

0002 0000

0000

0000H

數據類型=圖像

0008

0000

0004 0000

0080 0000

0008

0001

0004 0000

013E 0100

0008

0010

000C 0000

4341 2D52 454E 414D 3120 302E

“ACR-NEMA 1.0”

識別碼

0008

0020

000A 0000

3032 3230 312E 2E31 3532

“2002.11.25”

分項檢查日期

0008

0030

0008 0000

3231 303A 3A35

“12:05:59”

分項檢查時間

0008

0040

0002 0000

0000

0000H

數據集類型=圖像

0008

0060

0002 0000

5254

“DR”

成像模式

0008

0070

0004 0000

4241 4443

“ABCD”

制造商

0008

0080

000E 0000

454D 4352 2059 4F48 5053 5449 4C41

“Mercy Hospital”

醫院識別號

0008

0090

0000 0000

檢查醫師未知

0010

0000

0004 0000

0042 0000

組長度

0010

0010

000E 0000

4F4A 454E 2C53 4A20 4D49 4320 202E

“JONES, Jim C. “

患者姓名

0010

0020

0008 0000

3031 2D32 3033 2034

“102-304 “

患者識別號

0010

0030

000A 0000

3931 3632 312E 2E31 3532

“1926.11.25”

患者出生日期

0010

0040

0002 0000

204D

“M “

患者性別=男

0018

0000

0004 0000

0000 0000

組長度為零—無其它元素傳送

0020

0000

0004 0000

0018 0000

組長度

0020

0010

0004 0000

3932 3330

“2903”

分項檢查號

0020

0020

0004 0000

5C52 2046

“R/F”

患者取向

0028

0000

0004 0000

002C 0000

組長度

0028

0010

0002 0000???

0400

0400H

行數=1024

0028

0011

0002 0000

0400

0400H

列數=1024

0028

0030

0006 0000

2E20 5C33 332E

“ .3\.3”

像素的實際尺寸=0.3*0.3像素

0028

0100

0002 0000

0008

008H

每個像素指定的位數=8

7FE0

0000

0004 0010

0008 0010

組長度

7FE0

0010

0000 0000

*******…*****

像素數據(524,288字節)

5.???????編碼

在實際應用中,利用兩個基類CElement和CElementSet分別表示數據元素(或者命令元素)以及這些元素集合的抽象,并且描述各自的基本特征屬性。利用這兩個基本類可以派生出其它類。例如,我們利用類CElementSet的一個派生類DcmFile來描述一個DICOM圖像文件,在這個類中,我們實現了兩個主要方法loadDcmFile()和writeToDcmFile(),它們的含義分別是從指定的路徑下讀取DICOM圖像文件和把數據集中的所有數據元素還原成指定路徑下的DICOM圖像文件;同樣,我們利用類CElementSet的另外一個派生類CommandSet來描述一個命令集,它包含兩個主要方法getCmdValue()和getDataType(),其含義分別是獲取此命令集描述的服務和消息類型以及獲取此命令集的操作對象(數據集)所描述的信息實體類型。

在解析一個命令集(或者數據集,例如一個DICOM圖像文件)時,可以以標簽為標識,讀出感興趣的命令元素(或者數據元素),并將該命令元素(數據元素)作為類CCommandElement(或者類CDataElement,均為類 CElement的派生類)的一個實例來處理。

例如在解析表1的DICOM消息時,首先應該讀取它的命令集,即組號為0000的元素。讀取的每個命令元素作為類CCommandElement (類CElement的派生類)的一個實例存在,而讀取的所有命令元素的集合作為類CommandSet的一個實例存在。然后,再利用CommandSet提供的方法getCmdValue()和getDataType()獲取此命令集描述的服務和消息類型以及此命令集的操作對象(即數據集)所描述的信息實體類型。在本例中,根據DICOM標準,由于命令集中標簽為[0000,0010]的值域的具體值是0001H,所以,該命令集所描述的是C-STORE服務請求,而標簽為[0000,0080]的值域的具體值是0000H,因此,該命令集的操作對象(即數據集)的類型是圖像。綜合起來,這個DICOM消息的含義就是存儲封裝在數據集中的圖像文件。

解析完命令集后,根據解析結果,再讀取同一個DICOM消息中的數據集,即組號不是0000的元素,這里,將每個讀取的數據元素作為類CDataElement(類CElement的派生類)的一個實例存在,而讀取的所有數據元素的集合作為類DcmFile的一個實例存在。然后,調用類DcmFile所提供的writeToDcmFile()方法,將這些數據元素還原成圖像文件的形式并加以存儲。最后,根據命令執行的成功與失敗,構造一個響應信息,返回給服務請求端。

6.結束語

DICOM標準是第一個廣為接受的醫療設備間通訊的國際標準,它作為一個計算機和醫學相關聯的紐帶起著非常重要的作用。

本文通過分析一個典型的DICOM消息,詳細地解析了DICOM命令集和數據集的構成方式和其含義。并在此基礎上,提出了一種實現DICOM命令集和數據集解析的實施方案,并對該種方案的設計思路和具體實現方法進行了詳細的闡述。實現DICOM命令集和數據集的解析為遠程醫療應用提供了基礎。

參考文獻

1.?????? National Electrical Manufacturer Association. Digital Imaging and Communication in Medicine(DICOM)[S],1999

2.?????? 賈克斌,沈波. 實現醫學影像存檔和傳輸系統中的若干關鍵技術[J]. 中國圖像圖形學報,2000,5(A)(7):539-544

總結

以上是生活随笔為你收集整理的【转】DICOM命令集和数据集解析!!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。