我有一个 DICOM RT Dose 文件,我想用一个新的来更改原始的 pixel_array。问题是,当我给某个像素赋予新值时,它会在过程中的某个地方随机变化。下面给出了交换的代码块。我一次交换一个像素只是为了检查问题出在哪里,所以我知道它可以做得更快:
print pixel_arrayFLK[86][85][78]
print dosem.pixel_array[86][85][78]
for a in range(zBinsTPS):
for b in range(yBinsTPS):
for c in range(xBinsTPS):
dosem.pixel_array[a][b][c] = pixel_arrayFLK[a][b][c]
if a == 86 and b == 85 and c == 78:
print dosem.pixel_array[a][b][c]
print pixel_arrayFLK[a][b][c]
原始的pixel_array 是dosem.pixel_array,而新的pixel_array 是pixel_arrayFLK。作为发生的事情的一个例子:
pixel_arrayFLK[86][85][78] 的值为 65813。原来的 dosem.pixel_array[86][85][78] 的值为 62947。交换之后 pixel_arrayFLK[86][85][78] 仍然有值 65813 而 dosem.pixel_array[86][85][78] 现在突然变为 277。
打印功能产生:
65813
62947
277
65813
但是,如果我将 pixel_arrayFLK 的所有值除以 2,则交换工作正常。我真的不明白发生了什么。它可能与 DICOM 文件中的数据类型有关吗?DICOM 中包含的更多信息:
(0028, 0002) Samples per Pixel US: 1
(0028, 0004) Photometric Interpretation CS: 'MONOCHROME2'
(0028, 0100) Bits Allocated US: 16
(0028, 0101) Bits Stored US: 16
(0028, 0102) High Bit US: 15
(0028, 0103) Pixel Representation US: 0
(7fe0, 0010) Pixel Data OW or OB: Array of 6750000 bytes
我有另一个 DICOM 文件,其中分配的位 = 32,存储的位 = 32 和高位 = 31。这个文件中的 pixel_array 交换看起来很好。