999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DCMTK的DICONDE文件構造生成

2017-04-22 07:50:02李志鵬王明泉張俊生
無損檢測 2017年4期
關鍵詞:服務信息

李志鵬,王明泉,2,張俊生,2

(1.中北大學 信息與通信工程學院, 太原 030051;2.中北大學 儀器科學與動態測試教育部重點實驗室, 太原 030051)

基于DCMTK的DICONDE文件構造生成

李志鵬1,王明泉1,2,張俊生1,2

(1.中北大學 信息與通信工程學院, 太原 030051;2.中北大學 儀器科學與動態測試教育部重點實驗室, 太原 030051)

DICONDE是無損檢測領域數字成像與通信的國際標準,其文件的構造生成是普及該標準的基礎,基于DCMTK開發庫進行了相關的研究。首先在分析DICONDE信息模型的基礎上,給出了構造DICONDE的一般流程;然后以數字X射線圖像存儲系統為例搭建了基于DCMTK的開發環境,給出了詳細的開發步驟;最后用專業軟件測試生成的文件。結果表明:生成的文件均能被識別為DICONDE文件并正確讀取圖像及相關信息,且支持中文;基于DCMTK開發庫降低了開發難度,具有一定實用價值。

DICONDE;構造生成;DCMTK;圖像存儲系統

DICONDE(Digital Imaging and Communication in Nondestructive Evaluation)是為方便無損檢測領域廠商和用戶共享數據逐步發展起來的標準,其衍生于廣泛使用的DICOM (Digital Imaging and Communications in Medicine)標準[1]。本質上講,其是一個允許圖像和其相關信息(組件、研究、設備、缺陷等)存儲在一起的系統。

DICONDE文件的生成存儲是普及該標準的基礎,并引起了無損檢測行業的重視,如我國2015年9月1日起實施的關于承壓設備無損檢測的行業標準(NB/T 47013.11-2015《承壓設備無損檢測 第11部分:X射線數字成像檢測》)對圖像存儲有“存儲格式宜按照DICONDE格式執行”的說明。在此背景下,對DICONDE文件的構造生成做了研究。

如果從頭開始理解DICONDE標準,然后完全自行編寫代碼來實現這些標準,是一件工程浩大的事情。德國OFFIS公司開發的DCMTK(DICOM Toolkit)開發庫,為使用者提供了實現DICONDE標準的一個平臺,使得使用者可以在它的基礎上輕松地完成自己的主要工作,而不必把太多的精力放在實現DICONDE標準的細節問題上。筆者基于DCMTK開發庫, 給出了構造DICONDE的一般流程,實現了對DICONDE文件的宏觀設計;并以數字X射線圖像存儲系統為例,搭建了基于DCMTK開發庫的開發環境,簡便地構造生成了DICONDE文件。

1 DICONDE的構造流程及文件結構

1.1 DICONDE的信息模型

1.1.1 基本結構

DICONDE信息模型定義了與無損檢測圖像通信相關信息的組織結構,其基本組織結構如下:

信息對象定義(IOD, Information Object Definition):對現實世界中無損檢測實體的面向對象的抽象,對一類具有共同屬性實體的抽象。IOD由多個信息模塊組成,每個模塊又由多個屬性組成,如此構成樹狀結構。例如數字X射線(DX, Digital X-ray)圖像IOD包含組件、組件研究、無損檢測設備等模塊,其中組件模塊包含組件名稱、材料名稱、厚度等屬性[2]。IOD 分為兩類[3]:標準 IOD,只包含 DICONDE信息模型中單個實體的信息;復合 IOD,包含了 DICONDE信息模型中多個實體的部分信息。

DIMSE(DICOM Message Service Element)服務是針對 IOD對象所能進行的各種操作的抽象。DIMSE服務分為兩類:DIMSE-N服務,只適用于標準IOD;DIMSE-C服務,只適用于復合IOD。復合服務包括驗證服務、存檔服務、 取文檔服務、查詢服務、文檔移動服務[4]。DIMSE服務組由一組DIMSE服務或者介質存儲服務組成。

服務對象對類(SOP, Service-Object Pair):由IOD 和相關的DIMSE 服務組一對一配對組成。DICONDE信息模型中的 SOP類相當于面向對象中對象的類,屬性相當于對象的成員變量,服務組相當于對象的成員函數。

服務類(Service Class):由一至多個SOP組成。DICONDE共定義了8個服務類,其中4個是復合服務類,另4個是標準服務類。復合服務類中存儲服務類可以提供基本傳輸和存儲圖像的服務。

1.1.2 結構關系

DICONDE信息模型中主要結構之間的關系[5]如圖1所示。每個服務類指定了多個服務對象對類(SOP類),每個SOP類又由一個服務組和一個IOD組成。該服務組應用于該IOD上,類似于面向對象技術中類的成員函數和成員變量的關系。每個服務組是一組DIMSE服務或者介質存儲服務,每個IOD包含了多個屬性。

圖1 DICONDE信息模型中主要結構的關系

1.2 DICONDE的構造流程

從上面的信息模型可知,要實現一定的功能,首先要選擇能提供該操作的服務類。該服務類和多個SOP類相關,使用者可從中選擇所需要的SOP類。一旦SOP類選定,相應的IOD和DIMSE服務也就可以確定;然后就可給相應的屬性賦值,使用DIMSE服務或介質存儲服務來完成相應的操作。

以數字X射線圖像存儲系統為例,首先選定存儲服務類,由于系統使用的是用于呈現的X射線數字圖像,所以選定用于呈現的數字X射線圖像存儲SOP類。接下來對相應的DX圖像IOD中的屬性進行確定,同時確定要使用的介質存儲服務。根據這個模型可以方便地選擇所要使用的各個相關信息來完成所需的功能。

圖2 DICONDE文件的結構

1.3 DICONDE文件的結構

DICONDE標準允許將數據的傳輸結果存成DICONDE文件的形式,典型的DICONDE文件結構如圖2所示。其由以下部分組成:① 導言。共128個字節,可將文件的有關說明放在導言中。② 前綴。4個字節,規定為 “D”、 “I”、 “C”、 “M”共4個字符。③ 數據元素。一般會有很多組數據元素,每個數據元素對應一個IOD的屬性。

每個數據元素具有以下的統一格式和內容:① 標識符。其是占4個字節的無符號整數,前兩個字節是組號,后兩個字節是元素號,十六進制下格式是(gggg,eeee)。其中組號表明這個數據元素屬于哪個數據組,而元素號用于區分同一組中的不同數據元素;組號和元素號組成的標識符唯一表示一個特定的數據元素,數據字典就是依據標識符來檢索不同數據的[6]。② 數據類型(VR, Value Representation)。其占用2個字節,規定了數據元素的數據類型和格式,VR根據不同的傳輸語法可以省略。③ 數據長度。其指定數據的長度,占2個字節或 4個字節。DICONDE標準規定數據長度必須是偶數,不足時要補齊。④ 數據。該數據元素所代表屬性的實際值,必須包含偶數個字節。

數據元素中一組組號為2的數據元素被稱為元信息,其決定了DICONDE文件的傳輸語法,提供了介質存儲SOP類 UID(Unique Identifier)、介質存儲SOP類實例UID、實現類 UID等重要信息。緊隨文件元信息之后的是數據集,它是很多數據元素的集合,也是DICONDE文件構造的重點。整體來看數據集主要包括組件、研究、序列、設備等信息模塊及相應的屬性,其中標簽為(7FEO, 0010)的數據元素是用來存放圖像的像素數據的。

2 實現的過程與結果

以數字X射線圖像存儲系統為例,基于DCMTK開發庫實現DICONDE文件的構造生成。

2.1 搭建開發環境 以使用廣泛的VC++語言進行開發,開發環境為配置DCMTK 3.6.0開發庫的Visual Studio 2013(VS 2013)。搭建過程如下:

2.1.1 準備工作

(1) 首先下載DCMTK 3.6.0源碼,并根據工程的運行庫屬性MT(Multi-threaded)或MD(Multi-threaded DLL)類型下載源碼編譯用的支持庫。文中用的是MD類型的支持庫。

(2) 下載并安裝跨平臺編譯工具CMake,用于將DCMTK源碼在自定義配置下生成VS 2013工程。文中用的CMake版本為3.3.1。

(3) 為避免2.1.3(1)中由于支持庫編譯器版本較老而出現關于“SAFESEH image”的錯誤,在一個現有的VS 2013工程下,將默認用戶屬性頁Microsoft.Cpp.Win32.user中linker/advanced/Image has Safe Exception Handlers選項設為No (/SAFESEH:NO)[7]。

2.1.2 CMake編譯生成VS工程

(1) 將源碼文件里CMakeLists.txt(CMake默認配置文件)中的“/MT”替換為“/MD”,“/MTd”替換為“/MDd”[8]。

(2) 打開CMake程序,“where is the source code”選擇到源碼路徑,“where to build the binaries”選擇到存放生成工程的文件路徑。

(3) 在“Configure”里配置相應的編譯器,等待初次配置完成后,在紅色的配置區勾選上編譯使用的支持庫及庫文件路徑,如圖3所示。

(4) 再次點擊“Configure”,等待配置完成,點擊“Generate”即生成相應的VS 2013工程。

圖3 CMake中配置支持庫

2.1.3 VS編譯生成開發庫

(1) 打開上述生成文件里的VS工程DCMTK.sln,然后選擇“ALL_BUILD”子工程并編譯,成功后選擇“INSTALL”子工程并編譯,則會生成DICONDE開發所需的include、lib、bin等開發庫文件(生成默認路徑為C:Program FilesDCMTK)。

(2) 補充zlib庫文件。由于zlib庫文件是成功編譯DCMTK工程必須的文件,而上述生成的lib文件里沒有此庫文件,故要補充。將zlib-1.2.5支持庫文件里的zlib_d.lib或zlib_o.lib(_d和_o分別對應Debug和Release模式)復制到(1)中生成的lib文件夾下即可。

2.1.4 為新工程配置開發庫

新建VS工程,在工程屬性頁下VC++ Directories里的Include Directories 和 Library Directories 欄添加生成開發庫里的include、lib文件的路徑。在Linker/Input里的Additional Dependencies欄添加依賴項:wscok32.lib、netapi32.lib、ofstd.lib、oflog.lib、dcmdata.lib、zlib_d.lib、dcmimgle.lib(Debug模式)。

2.2 實現步驟

(1) 實例化操作文件的變量

DCMTK開發庫中處理DICONDE文件格式(含元信息)的類是DcmFileFormat,由其可方便獲得處理文件中元信息部分的類DcmMetaInfo和數據集部分的類DcmDataset,進而借助相關成員函數寫入相應的數據元素。關鍵代碼如下:

DcmFileFormat fileformat;

DcmMetaInfo*metainfo=fileformat.getMetaInfo();

DcmDataset*dataset=fileformat.getDataset()。

(2) 寫元信息

寫元信息主要是指定介質存儲SOP類和傳輸語法。例子的目的是存儲用于呈現的數字X射線圖像,因此介質存儲SOP類選擇用于呈現的數字X射線圖像存儲SOP類。

傳輸語法標志了數據集編碼方式的不同。DICONDE標準支持多種編碼方式,包括壓縮和未壓縮兩類。未壓縮編碼常用的有三種:隱式 VR小端(默認)、顯式VR小端和顯式VR 大端[9]。元信息中的數據元素編碼不受傳輸語法的影響,始終為顯式VR小端。

圖4 顯式VR和隱式VR下的數據元素

顯式VR和隱式VR下不同的數據元素如圖4所示(圖中單位為字節),可以看出隱式VR下數據元素的VR將被省略,而顯式VR下數據元素中必須有VR,用以顯式說明數據的類型。大端、小端指的是數字存儲時的字節順序,不同的計算機存放多字節值的順序不同,有些情況下在起始地址存放低位字節(小端),另外一些情況下則存放高位字節(大端)。例如十進制數65280小端存儲的十六進制形式為0x00FF,而大端存儲的十六進制形式為0xFF00。

不同的傳輸語法生成的DICONDE文件數據元素的結構有差異,讀取DICONDE文件時自然也存在差異。編碼方式是隱式VR時,需要通過數據字典來獲得該標簽對應數據元素的值類型;當編碼方式是顯示 VR時,可以直接讀取標簽后的2 字節數據,該數據就是VR?;贒CMTK開發庫,數據元素的寫和讀只需指定好標簽和要寫入的值或存讀取數據的變量即可,較簡便。文章傳輸語法使用默認的傳輸語法——隱式VR小端類型。

關鍵代碼如下:

metainfo->putAndInsertString(DCM_Media StorageSOPClassUID,UID_DigitalXRayImage StorageForPresentation);∥指定介質存儲SOP類UID

與表達性問卷(production questionnaires)相比,多項選擇問卷降低了任務難度,減少了被試的認知負擔,因為被試僅需衡量一組數量非常有限的選項,從中選擇一個,不需展開沒邊際的記憶搜索以生成一個合適的話語(Kasper,2000:330-331)。

metainfo->putAndInsertString(DCM_Transfer SyntaxUID,UID_LittleEndianImplicitTransfer Syntax); //默認的傳輸語法

函數中的參數均是宏定義,第一個參數(以DCM開頭)指明了要寫入數據元素的標簽號,第二個參數(以UID開頭)則唯一地標識相關內容。如DCM_TransferSyntaxUID等價于DcmTagKey(0x0002,0x0010),UID_LittleEndianImplicit TransferSyntax對應的標識為“1.2.840.10008.1.2”。

(3) 寫數據集

寫數據集是構造生成的重點,主要是指定組件、研究、設備等信息模塊及相應的屬性。文章總結了DICONDE文件數據集中常用的重要數據元素(見表1),并對復雜的數據元素作了額外說明。

表1 數據集中常用的重要數據元素

(0008,0005),Specific Character Set :表示文件中所采用的字符集。當該標簽未出現時,缺省字符集ISO-IR6將被使用。為了讓DICONDE文件支持中文,需要將該標簽的值設置為“GB18030”,表示使用GB18030字符集。

(0018,1020),Software Versions :是一個多值數據元素。常用來區分DICONDE文件和DICOM文件及具體版本,如果有其他軟件版本要存儲在該屬性內,此時DICONDE的版本一定要存儲在第一個位置[10]。

(0028,0004),Photometric Interpretation :表示如何根據像素數據來顯示圖像。常用的值有MONOCHROME 1、MONOCHROME 2和RGB。當值為MONOCHROME 1時,表示像素數據是一個灰度圖像,像素數據中最小的值將顯示為白色。當值為MONOCHROME 2時,表示像素數據是一個灰度圖像,像素數據中最小的值將顯示為黑色。當值為RGB時,表示像素數據是一個RGB圖,像素數據中的最小值將顯示為該顏色的最小強度。

(0028,0103),Pixel Representation :表示像素取樣值的數據類型。為0時表示用無符號整數表示像素取樣值點,為1時表示用有符號整數表示像素取樣值點。

dataset->putAndInsertString(DcmTagKey(0x0010, 0x0010),“輪轂輪盤”);∥組件名稱

dataset->putAndInsertString(DcmTagKey(0x0010, 0x0020), "LP20160322-011");∥組件編號

dataset->putAndInsertString(DcmTagKey(0x0010, 0x0030), "20160322");∥生產日期

dataset->putAndInsertString(DcmTagKey(0x0010, 0x2160),"鋁合金");∥材料

dataset->putAndInsertUint8Array(DCM_PixelData, p8, width*height)?!蝡8指向8位無符號整數圖像數據

(4) 生成文件

借助DcmFileFormat類的成員函數saveFile指定好存儲路徑及文件名和編碼方式(傳輸語法),即可方便地生成DICONDE文件。關鍵代碼如下:

fileformat.saveFile(“E:\Test.dcm”,EXS_LittleEndianImplicit)。

2.3 結果及分析

使用PowerDiconde v4.9.1試用版和ISee v 1.11.1對上述生成的DICONDE文件進行讀取測試。PowerDiconde是德國MHGS公司針對材料檢測的檢驗員及工程師等研發的軟件,能對DICONDE文件信息頭和圖像進行瀏覽、編輯和分析[11]。ISee是德國聯邦材料研究和檢測中心研發的射線圖像分析軟件,它不僅是一個強大的看圖軟件,而且更擅長于圖像分析,如各種測量,高位高分辨率圖像的歸檔[12]。

圖5所示為PowerDiconde下讀取的部分信息頭,可以看到標簽號(0010,0010)的數據元素標簽名為“Component Name”,并不是DICOM文件中的“Patient Name”,說明文中生成的確實是DICONDE文件。此外材料名稱(Material Name)屬性的值為“鋁合金”,說明了生成的DICONDE文件使用的是中文字符集。圖6展示了ISee下讀取的圖像數據,其為某輪轂輪盤的數字X射線圖像。

圖5 PowerDiconde下讀取的信息頭(部分)

圖6 ISee下顯示的圖像數據

3 結論

(1) 在分析DICONDE信息模型的基礎上,給出了構造DICONDE的一般流程,實現了對DICONDE文件的宏觀設計。

(2) 以數字X射線圖像存儲系統為例,搭建了基于DCMTK開發庫的開發環境,較簡便地構造生成了DICONDE文件。通過使用專業軟件測試生成的文件,驗證了所采用的基于DCMTK開發庫的方法對DICONDE文件的生成存儲具有一定的實用價值。

[1] 孫朝明. 數字射線成像中原始圖像數據的定義與保存[J]. 無損檢測, 2014, 35(2): 56-59.

[2] ASTM E 2699-11 Standard practice for digital imaging and communication in nondestructive evaluation (DICONDE) for digital radiographic (DR) test methods[S].

[3] DICOM PS 3.3-2016a Information object definitions[S].

[4] 李昌領,張虹. DICOM醫學圖像膠片輸出技術的實現[J]. 計算機工程與設計, 2005, 26(8):2226-2228.

[5] DICOM PS 3.4-2016a Service class specifications[S].

[6] 曹玉磊. DICOM標準研究與圖像處理工具的實現[D]. 西安: 西安電子科技大學, 2007.

[7] Stack Overflow. Error lnk2026: module unsafe for safeseh image[EB/OL].[2013-02-5].http:∥stackoverflst.com/questions/14710577/error-lnk2026-module-unsafe-for-safeseh-image.

[8] OFFIS DICOM Team. FAQ #26: Compilation of DCMTK-based program fails w/ LNK2005[EB/OL].[2004-11-09].http:∥forum.dcmtk.org/viewtopic.php?t=35#p39.

[9] DICOM PS 3.5-2016a Data structures and encoding[S].

[10] ASTM E 2339-10 Standard practice for digital imaging and communication in nondestructive evaluation (DICONDE)[S].

[11] MHGS Enterprise. PowerDiconde[EB/OL].[2016-12-21].http:∥diconde.mhgsoft.de/powerdiconde.php.

[12] BAM. ISee[EB/OL].[2014-08-31].http:∥www.dir.bam.de/ic/.

The Construction and Generation of DICONDE File Based on DCMTK

LI Zhi-peng1, WANG Ming-quan1,2, ZHANG Jun-sheng1,2

(1.School of Information and Communication Engineering, North University of China, Taiyuan 030051, China; 2.Key Laboratory of Instrumentation Science & Dynamic Measurement, Ministry of Education, North University of China, Taiyuan 030051, China)

DICONDE as an international standard for digital imaging and communications in Nondestructive Evaluation, the construction and generation of its file is basis of generalizing the standard and the relative research was carried out based on DCMTK. Firstly, based on careful analysis of the information model of DICONDE, the constructing procedure of DICONDE was given. Then, taking the storage system of digital X-ray image as example, the developing environment based on DCMTK was set up and the detailed developing procedure was given. At last, the generated files were tested by professional software. The result showed that the generated files could be identified as DICONDE file, and the image and other information in the files were read correctly. In addtion, it also supported Chinese. Besides, the way based on DCMTK was easier to develop and had some practical value.

DICONDE; Construction and generation; DCMTK; Image storage system

2016-07-11

國家重大儀器專項資助項目(2013YQ240803);山西省科技攻關資助項目(20140321010-02);中北大學研究生科技基金資助課題(20151238)

李志鵬(1991-),男,碩士研究生,主要研究方向為無損檢測DR軟件系統,圖像處理。

李志鵬,E-mail: 969011231@qq.com。

10.11973/wsjc201704010

TP391.41;TG115.28

A

1000-6656(2017)04-0049-05

猜你喜歡
服務信息
服務在身邊 健康每一天
今日農業(2019年14期)2019-09-18 01:21:54
服務在身邊 健康每一天
今日農業(2019年12期)2019-08-15 00:56:32
服務在身邊 健康每一天
今日農業(2019年10期)2019-01-04 04:28:15
服務在身邊 健康每一天
今日農業(2019年15期)2019-01-03 12:11:33
服務在身邊 健康每一天
今日農業(2019年16期)2019-01-03 11:39:20
招行30年:從“滿意服務”到“感動服務”
商周刊(2017年9期)2017-08-22 02:57:56
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 国产乱人伦AV在线A| 国产一级小视频| 午夜性刺激在线观看免费| 精品久久久无码专区中文字幕| 88av在线| 在线精品欧美日韩| 日韩高清在线观看不卡一区二区 | 国产精品jizz在线观看软件| av天堂最新版在线| 四虎免费视频网站| 中文无码精品a∨在线观看| 久久永久精品免费视频| 国产打屁股免费区网站| 在线看国产精品| 热这里只有精品国产热门精品| 成人免费一级片| 欧美在线天堂| 丰满人妻久久中文字幕| 在线看片免费人成视久网下载| 亚洲日本韩在线观看| 亚洲日韩精品欧美中文字幕| 精品伊人久久久久7777人| 人人看人人鲁狠狠高清| 免费观看成人久久网免费观看| 乱系列中文字幕在线视频| 成人在线第一页| 久久香蕉国产线看观看式| 一区二区欧美日韩高清免费 | 97se亚洲| 亚亚洲乱码一二三四区| 国产精品午夜福利麻豆| 成年看免费观看视频拍拍| 2020亚洲精品无码| 中国毛片网| 日韩欧美国产精品| 国产91高跟丝袜| 中国一级特黄大片在线观看| 日本欧美成人免费| 国产在线日本| 亚洲午夜18| 国产网友愉拍精品视频| 激情乱人伦| 六月婷婷综合| 乱色熟女综合一区二区| 国产自无码视频在线观看| 人妻丝袜无码视频| 国产亚洲成AⅤ人片在线观看| 欧美国产日本高清不卡| 国产精品视频白浆免费视频| 久久国产精品国产自线拍| 国产Av无码精品色午夜| 91视频99| 国产成人免费观看在线视频| 香蕉精品在线| 国产00高中生在线播放| 777午夜精品电影免费看| 国产视频只有无码精品| 波多野结衣爽到高潮漏水大喷| 国产成人精品高清在线| 久久免费成人| 国产欧美日本在线观看| AV无码无在线观看免费| 麻豆国产在线不卡一区二区| 五月婷婷亚洲综合| 国产精品13页| 97亚洲色综久久精品| 天天综合网色| 欧美在线免费| 97视频免费看| 亚洲人成日本在线观看| 午夜国产精品视频| 欧美激情福利| 在线播放91| 天天躁夜夜躁狠狠躁躁88| 久久久久久久蜜桃| 国产成人亚洲精品无码电影| 色综合天天娱乐综合网| 青青青国产视频| 好吊色国产欧美日韩免费观看| 99久久国产精品无码| 四虎影视无码永久免费观看| 亚洲有无码中文网|