我正在尝试阅读并查看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]
>
答案 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文件,以便改进它。