我在閱讀並查看dicom文件。我安裝包「oro.dicom」,並能讀取該文件:在R中看不到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]
>
看起來你有一個3D數組,而'image()'需要一個2D數組。這就像他們的第三維分別具有RGB層的數據。你可以用'rgb'在第三維上摺疊。但是,如果你提供了一個[可重現的例子],這將更容易幫助你(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。我的計算機上沒有太多'dcm'文件,我也不確定您使用'readDICOMFile'的哪個庫。 – MrFlick 2014-09-05 13:19:23
@MrFlick是正確的。相反,嘗試使用'rasterImage',它可以愉快地抓取圖像數組的所有三層。 – 2014-09-05 13:20:34
感謝您的關注。在http://www.barre.nom.fr/medical/samples/files/CR-MONO1-10-chest.gz上可以找到一個簡單的小Dicom圖像(胸部X光片)。我也會測試這張圖片,並用這張圖片發佈錯誤。代碼是我上面發佈的所有內容。使用相同的圖像,它將變得像一個可重複的例子。 – rnso 2014-09-05 13:26:21