2014-09-13 110 views
1

可能是什么,这通常X射线的DICOM文件在搞砸方式得到绘制的原因:可能是什么不好的DICOM图像绘图的原因

enter image description here

使用的算法是如下:

原始图像矩阵是3D:

int [1:2014, 1:2014, 1:3] 110 51 99 113 52 101 111 53 102 110 ... 

该RGB转换由式为灰度:

gray = 0.3*mat[,,1] + 0.59*mat[,,2] + 0.11*mat[,,3] ; 

,然后将其指定颜色绘制后:

grey(0:64/64) 

哪里可能是错误?

我使用oro.dicom包中的R与功能:

jj = readDICOMFile(fname, endian = "little", flipud = TRUE, DICM = TRUE, skipSequence = FALSE, pixelData = TRUE, warn = -1, debug = FALSE) 

,它返回一个矩阵JJ $ IMG,其结构是:

int [1:2014, 1:2014, 1:3] 110 51.... 

我然后将其转换为灰色和绘制它。如果是rgba,矩阵应该是2014 * 2014 * 4而不是* 3。 dicom图像的标题提到“PhotometricInterpretation”为“RGB”。标题还提到了2014年的行和列。难道是与位问题:leadtools.com/sdk/medical/dicom-spec17.htm

编辑:位分配是8,存储位是8和highBit是7

以下是链接样品dicom图像,它有类似的图像矩阵,并给出类似的错误:http://www.barre.nom.fr/medical/samples/files/US-RGB-8-esopecho.gz

+2

看起来像一个箭步问题给我。就像你正在索引假设RGB和它的RGBA或沿着这些线的东西。 – Jim 2014-09-13 03:51:30

+0

分配的位数是8,存储的位数是8,highBit是7.这有帮助吗? – rnso 2014-09-13 03:54:36

+0

如何将rgba转换为灰度?我无法立即在网上找到它。 – rnso 2014-09-13 03:57:18

回答

3

readDICOMFile可能有一个错误。您可以修复由重新排列图像阵列:

jj = readDICOMFile(fname, flipud = FALSE, DICM = TRUE, skipSequence = FALSE, pixelData = TRUE, warn = -1, debug = FALSE) 
img <- jj$img # extract image part 
img <- aperm(array(c(aperm(img, c(2, 1, 3))), c(3, 256, 120)), c(3, 2, 1)) # rearrange dimension 
img <- img[120:1,,] # flip ud 
grid::grid.raster(scales::rescale(img)) 

enter image description here


UPDATE

readDICOMFile有另一个错误。这是你想要的。 你可能会更好地报告这个,但对oro.dicom的作者。

img <- jj$img # extract image part 
img <- aperm(array(c(aperm(img, c(2, 1, 3))), c(3, 256, 120)), c(3, 2, 1)) # rearrange dimension 

# conversion b/w unsigned and signed 
img <- ifelse(img > 0, img, 256+img) 

# window-ing 
wc <- 127 
ww <- 255 

ymin <- 0 
ymax <- 1 

img2 <- ifelse(img <= wc - 0.5 - (ww-1)/2, ymin, 
       ifelse(img > wc - 0.5 + (ww-1)/2, ymax, 
         ((img - (wc - 0.5))/(ww - 1) + 0.5) * (ymax - ymin) + ymin 
        )) 

grid::grid.raster(img2) 

enter image description here

+0

如果你也可以解释你的代码在做什么,这将会很有帮助。 – rnso 2014-09-16 01:27:18

+0

是的,它的工作原理。但是,由于窗口宽度/中心/色调差异,图像看起来与原始图像非常不同。我们如何调整这些以使它看起来像原始的(我在上面的问题中发布)。 – rnso 2014-09-16 01:44:27

+0

该图像的窗口中心和宽度分别为127和256。 (并且不需要翻转) – rnso 2014-09-16 01:52:25

相关问题