2014-09-06 150 views
0

打開DICOM文件我嘗試使用下面的代碼中的R DICOM文件:錯誤而R中

library(oro.dicom) 
dcmobject <- readDICOMFile(filename) 

某些文件正確地打開,我可以顯示它們。但是,某些文件給不同類型的錯誤:

第一個錯誤:對於一些人,我得到的錯誤:

Error in file(con, "rb") : cannot open the connection 

二錯誤:在其他國家,我得到下面的錯誤與DICOM文件:http://www.barre.nom.fr/medical/samples/files/OT-MONO2-8-hip.gz

Error in readDICOMFile(filename) : DICM != DICM 

第三個錯誤:此文件提供了以下錯誤:http://www.barre.nom.fr/medical/samples/files/CT-MONO2-16-chest.gz

Error in parsePixelData(fraw[(132 + dcm$data.seek + 1):fsize], hdr, endian, : 
    Number of bytes in PixelData not specified 

第四錯誤:一個DICOM文件提供了以下錯誤:

Error in rawToChar(fraw[129:132]) : embedded nul in string: '\0\0\b' 

我怎樣才能擺脫這些錯誤,並顯示在R這些圖片?

編輯:

此示例文件給出了錯誤 '在字符串中嵌入NUL ...': http://www.barre.nom.fr/medical/samples/files/CT-MONO2-12-lomb-an2.gz

> jj = readDICOMFile("CT-MONO2-12-lomb-an2.dcm") 
Error in rawToChar(fraw[129:132]) : embedded nul in string: '3\0\020' 
+0

我已經下載了兩個gzip文件(我假設的DICOM),並且很可能會在週末期間看看它們。 – 2014-09-16 21:31:43

+0

好聽的來自oro.dicom的開發者。這是一個很棒的軟件包,但可能會有一些問題。 – rnso 2014-09-17 02:11:49

回答

1

有四種不同的錯誤,在此票強調:

  1. Error in file(con, "rb") : cannot open the connection

這與oro.dicom不存在問題,只是文件路徑和/或名稱被錯誤指定。

  • Error in readDICOMFile(filename) : DICM != DICM
  • 的文件不是有效的DICOM文件。也就是說,DICOM標準第10部分的7.1節(可在http://dicom.nema.org處指定)應該有(a)長度爲128個字節的文件前綴和(b)在一個開頭的四字節DICOM前綴「DICM」 DICOM文件。文件OT-MONO2-8-hip不符合此標準。人們可以進一步使用debug=TRUE輸入參數

    > dcm <- readDICOMFile("OT-MONO2-8-hip.dcm", debug=TRUE) 
    # First 128 bytes of DICOM header = 
        [1] 08 00 00 00 04 00 00 00 b0 00 00 00 08 00 08 00 2e 00 00 00 4f 52 49 47 49 4e 41 4c 5c 53 45 
    [32] 43 4f 4e 44 41 52 59 5c 4f 54 48 45 52 5c 41 52 43 5c 44 49 43 4f 4d 5c 56 41 4c 49 44 41 54 
    [63] 49 4f 4e 20 08 00 16 00 1a 00 00 00 31 2e 32 2e 38 34 30 2e 31 30 30 30 38 2e 35 2e 31 2e 34 
    [94] 2e 31 2e 31 2e 37 00 08 00 18 00 1a 00 00 00 31 2e 33 2e 34 36 2e 36 37 30 35 38 39 2e 31 37 
    [125] 2e 31 2e 37 
    Error in readDICOMFile("OT-MONO2-8-hip.dcm", debug = TRUE) : DICM != DICM 
    

    顯而易見的是,在第一128個字節包含信息調查這個問題。現在可以使用該參數skipFirst128=FALSEDICM=FALSE開始從文件的開頭讀出信息

    dcm <- readDICOMFile("OT-MONO2-8-hip.dcm", skipFirst128=FALSE, DICM=FALSE) 
    image(t(dcm$img), col=grey(0:64/64), axes=FALSE, xlab="", ylab="") 
    

    OT-MONO2-8-hip

    3.
    Error in parsePixelData(fraw[(132 + dcm$data.seek + 1):fsize], hdr, endian, : 
        Number of bytes in PixelData not specified 
    

    的文件CT-MONO2-16-chest.dcm使用JPEG壓縮編碼。 R包oro。dicom不支持壓縮。

  • Error in rawToChar(fraw[129:132]) : embedded nul in string: '\0\0\b'
  • 我不得不推測,由於文件不可用於直接詢問。此問題與作爲DICOM標準一部分的「DICM」字符檢查有關。如果失敗,那麼可以假定該文件不是有效的DICM文件。我會考慮在未來的版本oro.dicom中提供更多的信息。

    編輯:謝謝你提供一個鏈接到適當的文件。該文件處於「ARC-NEMA 2」格式。 R包oro.dicom尚未設計爲讀取此類文件。我修改了代碼以改善錯誤跟蹤。

    +0

    感謝您澄清大多數問題。示例dicom文件的鏈接提供了錯誤'嵌入的字符串中的nul ..'已添加到上述問題的編輯中。 – rnso 2014-09-20 05:04:27

    +0

    我已經更新了答案,以包含對此特定文件的響應。請注意,該文件不是有效的DICOM文件。 – 2014-09-20 11:44:44

    +0

    感謝您解決所有問題。 – rnso 2014-09-20 15:52:45