• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Java的DICOM文件格式轉(zhuǎn)換與信息提取

      2014-08-11 14:48:04李仕紅韓中保
      醫(yī)療裝備 2014年4期
      關(guān)鍵詞:格式文件插件灰度

      李 偉,李仕紅,韓中保

      (鹽城衛(wèi)生職業(yè)技術(shù)學(xué)院,江蘇鹽城224006)

      基于Java的DICOM文件格式轉(zhuǎn)換與信息提取

      李 偉,李仕紅,韓中保

      (鹽城衛(wèi)生職業(yè)技術(shù)學(xué)院,江蘇鹽城224006)

      在普通計(jì)算機(jī)上對(duì)DICOM格式文件圖像信息的顯示及相關(guān)臨床信息的讀取至今仍然是一個(gè)問(wèn)題,我們研究了使用較為流行Java語(yǔ)言對(duì)這種標(biāo)準(zhǔn)醫(yī)學(xué)影像文件進(jìn)行處理的一些方法。包括對(duì)原始的圖像進(jìn)行有損和無(wú)損的轉(zhuǎn)換,以及對(duì)存儲(chǔ)在文件中的其它臨床數(shù)據(jù)進(jìn)行提取、修改。

      Java;DICOM;圖像處理;JPEG

      1 簡(jiǎn)介

      DICOM作為醫(yī)學(xué)數(shù)字成像和通信的標(biāo)準(zhǔn),詳細(xì)定義了醫(yī)學(xué)影像文件及其相關(guān)信息的組成格式和交換方法。利用這個(gè)標(biāo)準(zhǔn),人們可以在影像設(shè)備上建立一個(gè)接口來(lái)完成影像數(shù)據(jù)的輸入/輸出工作。然而DICOM格式是針對(duì)醫(yī)療設(shè)備特有的格式,普通的個(gè)人計(jì)算機(jī)對(duì)其支持非常有限?;诖?,我們探索了利用Java語(yǔ)言來(lái)對(duì)DICOM格式文件的像素及其他信息的進(jìn)行獲取和修改的方法

      2 工具

      由于Java具有良好的可移植性,我們選擇用它作為對(duì)DICOM原始文件進(jìn)行處理編程語(yǔ)言。對(duì)于Java來(lái)說(shuō),目前已經(jīng)有較為成熟的插件可供使用,其中也包括一些比較好的開源項(xiàng)目如Dcm4che等,他們大都符合DICOM的標(biāo)準(zhǔn)。利用現(xiàn)成的插件可以顯著地減少我們?cè)跁r(shí)間、精力上的投入,而且使程序更具健壯性和可移植性。

      我們選擇使用的是DICOM Image I/O Plug-in,這是一個(gè)適用于Java語(yǔ)言的DICOM格式文件的處理插件。它提供了DICOM到Java之間的一個(gè)接口。換句話說(shuō), DICOM Image I/O Plug-in擴(kuò)充了JAVA的API,使得Java幾乎能像處理普通圖像那樣去處理DICOM文件。DICOM Image I/O Plug-in插件不但可以讀取并修改本地DICOM文件(或文件集),也支持通過(guò)網(wǎng)絡(luò)訪問(wèn)遠(yuǎn)程服務(wù)器或數(shù)據(jù)庫(kù)中的文件和數(shù)據(jù)。

      3 實(shí)現(xiàn)

      3.1 獲取單個(gè)DICOM文件的圖像信息

      我們可以直接將一個(gè)DICOM格式文件(此處為image.dcm)創(chuàng)建為Java中的BufferedImage對(duì)象:

      BufferedImage image = getIO.read(

      new File("image.dcm"));

      在后續(xù)的代碼中我們可以像操縱普通的圖像對(duì)象那樣來(lái)對(duì)DICOM文件進(jìn)行直接操作,如我們可以通過(guò)getWidth(),getHeight()方法獲得圖像的高度、寬度,以及復(fù)制指定區(qū)域(感興趣區(qū))的數(shù)據(jù)進(jìn)行再處理等等。更進(jìn)一步地,我們可以從創(chuàng)建的BufferedImage對(duì)象所實(shí)現(xiàn)的接口獲取相關(guān)圖像的原始信息,因而可以在像素級(jí)別上對(duì)圖像進(jìn)行處理。由于很多DICOM文件的灰度空間為12位甚至是16位,如果格式轉(zhuǎn)換后再進(jìn)行圖像處理,那么圖像的失真更大。所以較好的辦法就是先處理再進(jìn)行格式的轉(zhuǎn)換。把圖像創(chuàng)建為BufferedImage可以將像素的損失最小化。

      3.2 讀取DICOM文件,并抽取相關(guān)臨床信息

      DICOM文件中包含了大量的臨床信息,這對(duì)疾病的診斷、療效的評(píng)估都相當(dāng)重要,因而對(duì)這些數(shù)據(jù)獲取的重要性也是顯而易見(jiàn)的。

      在從一個(gè)DICOM標(biāo)準(zhǔn)格式文件中讀取屬性這前我們需要?jiǎng)?chuàng)建一個(gè)DICOM元數(shù)據(jù)(Metadata)對(duì)象用于存儲(chǔ)在文件中的所有屬性,此外還需要一個(gè)迭代器(Iterator)來(lái)遍歷取得的結(jié)果。

      //創(chuàng)建一個(gè)DicomMetadate(Dicom元數(shù)據(jù))對(duì)象

      DicomMetadata dmdata =

      reader.getDicomMetadata();

      //獲得元數(shù)據(jù)中病人ID信息,并保存到一個(gè)String對(duì)象中

      String patient_id =

      dmd.getAttributeString(Tag.PatientID);

      在本例中,我們僅用一個(gè)String對(duì)象來(lái)顯示其PatientID信息,其它屬性都可以利用上述方法來(lái)獲得,在此不一一列舉。我們?cè)诰唧w的實(shí)現(xiàn)中獲得的部分?jǐn)?shù)據(jù)如下所示:

      DICOM標(biāo)準(zhǔn)包含了大量的字典,DICOM Image I/O Plug-in支持其中的絕大部分內(nèi)容,滿足要求。

      3.3 將信息寫入到DICOM文件

      除了讀取信息外,也可以把指定的屬性值寫入到文件中,過(guò)程與讀取是類似的,現(xiàn)僅列出關(guān)鍵的寫入部分代碼:

      //設(shè)置指定的PatientID(12345)屬性

      dmd.setAttribute(Tag.PatientID, 12345);

      //寫入到一個(gè)DICOM文件

      File file = new File("image.dcm");

      writer.setOutput(new FileImageOutputStream(file));

      writer.write(dmd, new IIOImage(image, null, null), null);

      在上述程序中,為了寫入DICOM屬性,首先創(chuàng)建一個(gè)DicomMetadata()對(duì)象,然后利用setAttribute()方法來(lái)重新設(shè)置病人的PatientID屬性為12345,對(duì)于不同的數(shù)據(jù)元素所使用的語(yǔ)句略有差別,具體可參考文檔。在接下來(lái)的代碼中,我們將修改后的內(nèi)容重新寫入到一個(gè)新的標(biāo)準(zhǔn)DICOM格式文件。

      3.4 對(duì)文件進(jìn)行格式轉(zhuǎn)換

      對(duì)于影像診斷來(lái)說(shuō),文件的像素信息是最為重要的部分。DICOM文件格式顯然不利于隨時(shí)隨地的查閱、參考以及同行之間的交流。更進(jìn)一步地,有時(shí)需要對(duì)圖像進(jìn)行一些簡(jiǎn)單的處理,如銳化、對(duì)比度的調(diào)節(jié)等等。這時(shí)就有必要把DICOM文件中的圖像信息提取出來(lái),保存為一種比較易于訪問(wèn)的格式。DICOM Image I/O Plug-in支持將DICOM文件保存為當(dāng)前最為流行的JPEG格式。此外,如果對(duì)圖像的質(zhì)量有比較高的要求的話,我們可以考慮使用JPEG2000格式,在此處我們僅舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明一下寫入的過(guò)程:

      // 應(yīng)用灰度變換

      BufferedImage bi = dmd.apply Grayscale Transformations(bi_stored, i);

      BufferedImage bi_out = new BufferedImage(bi.getWidth(),

      bi.getHeight(), BufferedImage.TYPE_3BYTE_BGR);

      bi_out.createGraphics().drawImage(bi, 0, 0, null);

      // 保存圖像

      File f_out = new File("i"+i+".jpg");

      f_out.delete();

      ImageIO.write(bi_out, "jpeg", f_out);

      如前所述,DICOM標(biāo)準(zhǔn)建議的圖像灰度為12以上,即大于4096個(gè)量級(jí),這需要專業(yè)的醫(yī)用顯示器才能完整地顯示。但很多時(shí)候由于條件的限制我們所用到的大多都是8位的一般民用顯示器,而且超過(guò)8位(256級(jí))灰度人眼就已經(jīng)不太容易分辨出來(lái)。

      4 結(jié)論

      醫(yī)學(xué)圖像的處理是比較一個(gè)熱門的話題。然而如前文所述,由于醫(yī)學(xué)圖像文件灰度的特殊性,其轉(zhuǎn)換為常見(jiàn)圖像格式時(shí)必然會(huì)帶來(lái)信息的丟失。如果能在原始數(shù)據(jù)直接進(jìn)行高級(jí)的圖像處理,那么程序會(huì)有更加廣泛的應(yīng)用,這也是我們下一步要努力的目標(biāo)。

      [1]DICOM官方文檔, http://medical.nema.org/

      [2] Cay S. Horstmann, Gary Cornell著,葉乃文等譯, Java核心技術(shù)(第8版). 機(jī)械工業(yè)出版社-2008

      [3] DICOM Image I/O Plug-in官方文檔, http://imaging.apteryx.fr/dicom

      [4] Java Image I/O API Guide, http://www.oracle.com

      [5] Oleg S. Pianykh著, Digital Imaging and Communications in Medicine. Springer-Verlag Berlin and Heidelberg-2008

      [6] Wilhelm Burger等著,黃華譯, 數(shù)字圖像處理-Java語(yǔ)言算法描述. 清華大學(xué)出版社-2010

      [7] 梁云, 宋鴻陟等. DICOM醫(yī)學(xué)圖像數(shù)據(jù)轉(zhuǎn)換算法研究, 現(xiàn)代計(jì)算機(jī)(專業(yè)版), 2008-04: 42-44

      2013-11-23

      TH772+.2

      B

      1002-2376(2014)04-0015-02

      猜你喜歡
      格式文件插件灰度
      采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過(guò)濾技術(shù)
      基于灰度拉伸的圖像水位識(shí)別方法研究
      自編插件完善App Inventor與樂(lè)高機(jī)器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      使用“格式文件”將徠卡儀器數(shù)據(jù)導(dǎo)出成cass 格式的方法
      基于最大加權(quán)投影求解的彩色圖像灰度化對(duì)比度保留算法
      基于灰度線性建模的亞像素圖像抖動(dòng)量計(jì)算
      編寫徠卡TS02型全站儀格式文件的方法探索
      MapWindowGIS插件機(jī)制及應(yīng)用
      回歸基礎(chǔ) 到底什么是RAW格式文件?
      基于Revit MEP的插件制作探討
      临夏县| 全州县| 沛县| 彭泽县| 庆元县| 乐平市| 三原县| 大宁县| 荆门市| 宜良县| 青铜峡市| 南靖县| 兴城市| 青河县| 额尔古纳市| 乐都县| 中西区| 自贡市| 宁国市| 澜沧| 江孜县| 新竹市| 祁东县| 琼海市| 神池县| 确山县| 襄城县| 佛冈县| 庆元县| 泗阳县| 甘德县| 襄樊市| 保山市| 昌图县| 五大连池市| 桦川县| 突泉县| 新民市| 拉孜县| 卓尼县| 连南|