2014-09-06 47 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