国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DICOM格式醫(yī)學(xué)圖像的讀取與顯示

2010-01-25 01:05李清美
關(guān)鍵詞:表示法字節(jié)灰度

李清美

(泰山醫(yī)學(xué)院附屬泰山醫(yī)院影像中心,山東 泰安 271000)

DICOM(digital imaging and communications in medicine)標(biāo)準(zhǔn)主要涉及到信息系統(tǒng)中最主要也是最困難的醫(yī)學(xué)圖像的成像和通信,可直接應(yīng)用在放射科信息系統(tǒng)(RIS)和圖像存檔與通信系統(tǒng)(PACS)中[1]。它的應(yīng)用促進(jìn)了醫(yī)學(xué)影像設(shè)備之間的互操作性,提供了一種用于醫(yī)學(xué)信息的開放性的數(shù)據(jù)交換標(biāo)準(zhǔn),使得不同廠商生產(chǎn)的影像設(shè)備形成的圖像統(tǒng)一存檔與通訊成為可能[2]。現(xiàn)有的大多數(shù)圖像處理軟件都不能直接讀取和顯示DICOM格式的醫(yī)學(xué)圖像。因此,編程實(shí)現(xiàn)DICOM格式的醫(yī)學(xué)圖像的讀取和顯示在醫(yī)學(xué)圖像處理和臨床應(yīng)用中具有重要意義。本研究首先分析了DICOM格式圖像文件的結(jié)構(gòu),然后給出開窗顯示的理論分析,最后,利用C/C++語言在VC++開發(fā)環(huán)境下編程實(shí)現(xiàn)了DICOM格式醫(yī)學(xué)圖像的讀取和顯示。

1 材料和方法

1.1材料

泰山醫(yī)學(xué)院附屬醫(yī)院放射科提供的DICOM格式CT圖像100幅,Windows XP 操作系統(tǒng),Microsoft Visual C++6.0 編程軟件。

1.2方法

1.2.1DICOM 圖像文件格式 DICOM格式圖像文件是按照DICOM標(biāo)準(zhǔn)所生成的圖像文件,它有文件元信息和數(shù)據(jù)集組成。文件元信息也叫文件頭,包括封裝數(shù)據(jù)集的識(shí)別信息。文件頭由128個(gè)字節(jié)的文件前言、緊隨4個(gè)字節(jié)的DICOM前綴和文件元要素組成。這個(gè)文件頭將在每個(gè)DICOM文件中出現(xiàn)。文件前言可加以利用,正如應(yīng)用框架或具體的操作所定義的。DICOM標(biāo)準(zhǔn)的這部分對(duì)固定大小的前言不要求任何結(jié)構(gòu)。不需要構(gòu)建成具有標(biāo)簽和一定長度的DICOM數(shù)據(jù)元素。本部分通過提供與許多常使用的電腦圖像文件格式的兼容性,來便利于對(duì)DICOM文件中的圖像數(shù)據(jù)和其他數(shù)據(jù)的訪問。不論文件前言是否包含信息,DICOM文件內(nèi)容應(yīng)該與該部分要求相符合,數(shù)據(jù)集應(yīng)該與文件元信息中指定的SOP(service object pair)類相符合。如果應(yīng)用框架或特殊操作不使用文件前言,所有128字節(jié)都被設(shè)置成00H。當(dāng)所有128字節(jié)不按上述規(guī)定設(shè)置的時(shí)候,目的是幫助識(shí)別前言被使用過了。4個(gè)字節(jié)的DICOM前綴將包含字符串“DICM”,它被當(dāng)作大寫字母利用ISO 8859 GO字符指令進(jìn)行編碼。這4個(gè)字節(jié)前綴沒有被構(gòu)造為具有標(biāo)記符和長度的DICOM數(shù)據(jù)元素。前言和前綴之后是具有標(biāo)記符和長度的一套DICOM元要素。

數(shù)據(jù)集是由一系列數(shù)據(jù)元素組成。每個(gè)數(shù)據(jù)元素都有唯一的標(biāo)記符,這些數(shù)據(jù)元素在數(shù)據(jù)集中按標(biāo)記符中的組號(hào)以及元素號(hào)數(shù)值增加的方式進(jìn)行存放。一個(gè)數(shù)據(jù)元素在數(shù)據(jù)集內(nèi)至多只能出現(xiàn)一次。但是在嵌套的數(shù)據(jù)集中可以再次出現(xiàn)。顯式和隱式數(shù)值表示法在數(shù)據(jù)集精確嵌套數(shù)據(jù)集中并不同時(shí)存在,一個(gè)數(shù)據(jù)集是否使用顯式或隱式數(shù)值表示法以及其它特性,取決于傳輸語法的協(xié)商。

一個(gè)數(shù)據(jù)元素包含了數(shù)據(jù)元素標(biāo)記符、值表示法、值長度和數(shù)據(jù)元素值。數(shù)據(jù)元素的值表示法是否存在決定于協(xié)商的傳輸語法。對(duì)隱式值表示法的傳輸語法,數(shù)據(jù)元素沒有值表示法。而在顯式值表示法的傳輸語法下,數(shù)據(jù)元素包括值表示法。數(shù)據(jù)元素有標(biāo)準(zhǔn)數(shù)據(jù)元素和私有數(shù)據(jù)元素兩種類型。標(biāo)準(zhǔn)數(shù)據(jù)元素具有偶數(shù)值組號(hào),私有數(shù)據(jù)元素具有奇數(shù)組號(hào),自DICOM 3.0以后,數(shù)據(jù)組號(hào)并不傳遞任何語義上的含義。數(shù)據(jù)元素中值域的字節(jié)長度必須是偶數(shù)個(gè),不足的部分填充空格[3]。

標(biāo)記符(Tag)用4字節(jié)的16進(jìn)制數(shù)表示,前面2字節(jié)的數(shù)是數(shù)據(jù)元素的組號(hào),后面2字節(jié)的數(shù)是元素號(hào)。組號(hào)為偶數(shù)的是標(biāo)準(zhǔn)數(shù)據(jù)元素,具體含義可以在DICOM的數(shù)據(jù)字典中查到。DICOM的數(shù)據(jù)字典定義了許多數(shù)據(jù)元素標(biāo)記符,涵蓋了大多數(shù)的應(yīng)用需要。組號(hào)為奇數(shù)的為私有數(shù)據(jù)元素,由用戶在使用過程中自己定義。在DICOM標(biāo)準(zhǔn)中每個(gè)數(shù)據(jù)元素都有一個(gè)唯一的標(biāo)記符,這些標(biāo)記符可以在數(shù)據(jù)字典中查到。例如:(0x0028 0010) 表示存儲(chǔ)圖像高度的數(shù)據(jù)元素的標(biāo)記符,(0x0028 0011) 表示存儲(chǔ)圖像寬度的數(shù)據(jù)元素的標(biāo)記符,(0x0028 1050) 表示存儲(chǔ)圖像窗位的數(shù)據(jù)元素的標(biāo)記符,(0x0028 1051) 表示存儲(chǔ)圖像窗寬的數(shù)據(jù)元素的標(biāo)記符,(0x7FE0 0010) 表示存儲(chǔ)圖像像素值的數(shù)據(jù)元素的標(biāo)記符。

值表示法(value representation, VR)是數(shù)據(jù)元素值的表示方法,DICOM標(biāo)準(zhǔn)中,對(duì)每個(gè)屬性都定義了值表示法。值表示法具體描述了屬性值如何進(jìn)行編碼。值表示法有隱式和顯式這兩種形式。隱式就是采用預(yù)先規(guī)定的表示方法,通過標(biāo)記符從數(shù)據(jù)字典中查到DICOM對(duì)這個(gè)屬性表示方法的規(guī)定,從而正確解釋屬性值的內(nèi)容。顯式是用兩個(gè)字符明確表示值的表示方法,如AE表示應(yīng)用實(shí)體,AS表示年齡字符串,DT是日期和時(shí)間,F(xiàn)D表示雙精度浮點(diǎn)數(shù)等。值表示法的知識(shí)是信息交換雙方所共享的。對(duì)某個(gè)屬性(以標(biāo)記符標(biāo)識(shí))的解碼和編碼過程必須仔細(xì)選擇正確的值表示法。共享這個(gè)信息有兩種可能的方法:共享包含所有可能屬性的數(shù)據(jù)字典,或把值表示法作為數(shù)據(jù)元素的一部分。后一種方法增加了信息交換的開銷,但比用共享數(shù)據(jù)字典更靈活,尤其在多制造商環(huán)境,數(shù)據(jù)字典同步更新很困難。值長度表示數(shù)據(jù)元素值所占據(jù)的字節(jié)數(shù)。數(shù)據(jù)元素值是數(shù)據(jù)元素值域中所存儲(chǔ)的數(shù)值。圖1是一個(gè)具體的數(shù)據(jù)元素示例。

圖1 存儲(chǔ)圖像高度的數(shù)據(jù)元素

圖1中,(0x0028 0010) 表示存儲(chǔ)圖像高度的數(shù)據(jù)元素的標(biāo)記符,US表示數(shù)據(jù)元素值是按無符號(hào)短整型數(shù)存儲(chǔ)的,2表示數(shù)據(jù)元素值占據(jù)兩個(gè)字節(jié),0x0100表示圖像的高度是256。

根據(jù)DICOM文件結(jié)構(gòu)的特點(diǎn),在VC++開發(fā)環(huán)境下,我們可以利用C語言中的While語句和Switch語句讀取文件信息。部分C/C++源代碼如下:

fseek(fp,128,SEEK_CUR);

if(fread(&nDICMFlag, sizeof(int), 1, fp)!=1)

{

AfxMessageBox("Read dicom file header error");

return false;

}

else

{

if(nDICMFlag!=0x4d434944) //DICM

{

AfxMessageBox("Not surport image format(dicom) ");

return false;

}

}

while(fread(&usTag, sizeof(short), 1, fp) == 1)

{

switch(gTag)

{

case 0x0002:

if(fread(&usTag, sizeof(short), 1, fp) == 1)

switch(eTag)

{

case 0x0010: // Transfer syntax UID

if(readTransfSyntaxStr(fp, sTransfSyntaxUID,

false, nDataEndian) == 0)

if(!strcmp(sTransfSyntaxUID, "1.2.840.10008.1.2.2"))

{

bImplicitVR = FALSE;

nDataEndian = BIG_ENDIAN;

}

break;

case 0x0028:

if(fread(&usTag, sizeof(short), 1, fp) == 1)

{

if (nDataEndian == BIG_ENDIAN)

SwapWord((char *) &usTag, 1);

eTag=usTag & 0xffff;

}

switch(eTag)

{

case 0x0010:

nRows=readWHCIS(fp,bImplicitVR,nDataEndian, nOffBytesOut,nValLenOut);

break;

1.2.2DICOM 圖像的顯示 通常使用的電腦顯示器由于動(dòng)態(tài)范圍有限,并受到操作系統(tǒng)的限制,對(duì)于灰度圖像所能顯示的最大灰度值是8bit。而DICOM格式圖像的最大灰度值通常不低于12bit,利用普通的電腦顯示器難以直接顯示全部灰度信息。因此,必須通過開窗顯示技術(shù),在不影響視覺效果的前提下將DICOM圖像的較大范圍內(nèi)的灰度值逐段映射為0~255灰度范圍來顯示。概括來說,開窗顯示就是在高精度醫(yī)學(xué)圖像的較大灰度范圍內(nèi)開設(shè)一個(gè)窗口,將這個(gè)窗口范圍內(nèi)的灰度值映射為0~255范圍內(nèi)的灰度值來顯示,并通過不斷地調(diào)節(jié)窗寬和窗位將所有的DICOM圖像信息逐段顯示出來,同時(shí)也可以通過調(diào)節(jié)窗寬和窗位將醫(yī)學(xué)圖像的最佳診斷信息在電腦顯示器上顯示出來[5]。開窗顯示的部分C/C++源代碼如下:

for(n=0;n

{

for(k=0;k

{ nGonk=*(pnImgBufIn+k+n*nWidth);

if(nGonk <=nLowVal)

{

nGwnk=0;

}

else if(nGonk >=nHighVal)

{

nGwnk=255;

}

else

{

nGwnk=(int)(( nGonk -nLowVal)*(255.0/nWindowWidth));

}

*( m_lpWindowShowBufOut +3*k+n*nRowBytes)=nGwnk;

}

}

2 結(jié) 果

利用C/C++語言在VC++開發(fā)環(huán)境下進(jìn)行編程實(shí)現(xiàn)了圖像的讀取與顯示,圖2是DICOM醫(yī)學(xué)圖像開窗顯示的部分實(shí)驗(yàn)結(jié)果,圖中,圖像(a)的窗位是600,窗寬是255, (b)的窗位是1014,窗寬是255,圖像 (c)的窗位是1014,窗寬是350, (d)的窗位是1014,窗寬是2430。

(a)

(b) (c) (d)

3 討 論

從圖2的實(shí)驗(yàn)結(jié)果可以看出,在窗寬一定的情況下,通過改變窗位能夠?qū)ICOM圖像的信息按一定的灰度范圍逐段顯示出來,窗位對(duì)應(yīng)醫(yī)學(xué)圖像的亮度,窗位越小,圖像越亮,窗位越大,圖像越暗,通過改變窗位可以改變圖像的亮度??梢钥闯?,在窗位一定的情況下,通過改變窗寬能夠?qū)ICOM圖像的信息在某個(gè)信息點(diǎn)進(jìn)行壓縮和展開,窗寬對(duì)應(yīng)圖像的對(duì)比度,窗寬越大,圖像的對(duì)比度越小,窗寬越小,圖像的對(duì)比度越大,通過改變窗寬,可以改變圖像的對(duì)比度。不同的窗位和窗寬顯示了不同灰度范圍的圖像信息,只有選擇合適的窗位和窗寬才能顯示出最佳的圖像診斷信息。由于DICOM格式圖像文件不同于普通的圖像文件,具有特殊的結(jié)構(gòu)特點(diǎn),讀取和顯示這類圖像文件,必須采用不同于普通圖像的編程方法,才能獲得較好的效果。

[1] 賈克斌.數(shù)字醫(yī)學(xué)圖像處理、存檔及傳輸技術(shù)[M].北京:科學(xué)出版社,2006,20-25.

[2] 王世剛,李月卿,王昌元.DICOM圖像到BMP圖像轉(zhuǎn)換[J]. 泰山醫(yī)學(xué)院學(xué)報(bào),2007,8(4):269-271.

[3] DICOM 2009,. ftp://ftp.nema.org/ medical/dicom.

[4] 田捷,包尚聯(lián),周明全.醫(yī)學(xué)圖像處理與分析[M].北京:電子工業(yè)出版社,2003.

[5] 姜睿智,岳秀艷,史廷春,等. 基于DCMTK的DICOM醫(yī)學(xué)圖像顯示及其調(diào)窗方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2009,5:182-185.

猜你喜歡
表示法字節(jié)灰度
采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過濾技術(shù)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
基于灰度拉伸的圖像水位識(shí)別方法研究
No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
否定意義的四種特殊表示法
簡(jiǎn)談MC7字節(jié)碼
基于最大加權(quán)投影求解的彩色圖像灰度化對(duì)比度保留算法
從一道小題聯(lián)想到的整數(shù)表示法
基于灰度線性建模的亞像素圖像抖動(dòng)量計(jì)算
名詞易錯(cuò)點(diǎn)透視