在R中看不到dicom图像

时间:2014-09-05 13:14:44

标签: r dicom

我正在尝试阅读并查看dicom文件。我安装了包'oro.dicom',并且能够使用:

读取文件
library(oro.dicom)
abdo <- readDICOMFile("image0.dcm")

extractHeader(abdo$hdr, "Rows")
[1] 2014

extractHeader(abdo$hdr, "Columns")
[1] 2014

extractHeader(abdo$hdr, "Manufacturer", numeric=FALSE)
[1] "...IT Radiology"

但是,我无法看到图像:

image(t(abdo$img), col=grey(0:64/64), axes=FALSE, xlab="", ylab="")
Error in t.default(abdo$img) : argument is not a matrix

结构命令显示如下:

str(abdo$img)
int [1:2014, 1:2014, 1:3] 110 51 99 113 52 101 111 53 102 110 ...

以下作品和图形框会显示,但它只是一个没有任何X光图像的空盒子:

image(t(abdo$img[[1]]), col=grey(0:64/64), axes=FALSE, xlab="", ylab="")

为什么它不起作用,我该如何纠正?谢谢你的帮助。

编辑:使用CR-MONO1-10-chest.dcm(http://www.barre.nom.fr/medical/samples/files/CR-MONO1-10-chest.gz)即使在阅读时我也会听到以下错误:

abdo <- readDICOMFile("CR-MONO1-10-chest.dcm")
Error in readDICOMFile("CR-MONO1-10-chest.dcm") : DICM != DICM

使用rasterImage后面是错误:

rasterImage(as.raster(matrix(abdo[[1:3]])))
Error in rasterImage(as.raster(matrix(abdo[[1:3]]))) : 
  argument "xleft" is missing, with no default

以下是更接近但仍然不起作用:

>      rasterImage(abdo$img, 100, 400, 150, 450)
Error in rgb(t(x[, , 1]), t(x[, , 2]), t(x[, , 3]), maxColorValue = max) : 
  color intensity -30, not in [0,1]

>      rasterImage(abdo$img, 100, 400, 150, 450, interpolate=F)
Error in rgb(t(x[, , 1]), t(x[, , 2]), t(x[, , 3]), maxColorValue = max) : 
  color intensity -30, not in [0,1]
> 

1 个答案:

答案 0 :(得分:1)

此答案仅对开源文件CR-MONO1-10-chest.dcm(http://www.barre.nom.fr/medical/samples/files/CR-MONO1-10-chest.gz)有效。我相信这个文件不是有效的DICOM文件。根据DICOM标准第10部分第7.1节(可在http://dicom.nema.org获得),应该有(a)长度为128字节的文件预采样和(b)四字节DICOM前缀“DICM”。 CR-MONO1-10-chest.dcm开始在第一对字节中提供信息。

我已将参数skipFirst128 = TRUE添加到readDICOMFile(),这将在下一版 oro.dicom 中提供。因此,可以使用

读取文件
abdo <- readDICOMFile("CR-MONO1-10-chest.dcm", skipFirst128=FALSE, DICM=FALSE)
image(t(abdo$img), col=grey(0:64/64), axes=FALSE, xlab="", ylab="")

请注意,该文件是在大约20年前创建的,我希望最近生成的文件不会出现此问题。感谢您将此错误引起我的注意。我一直在寻找破坏我的代码的DICOM文件,以便改进它。