2016-05-13 44 views
0

元のpixel_arrayを新しいものに変更したいDICOM RT Doseファイルがあります。問題は、特定のピクセルに新しい値を与えると、プロセスのどこかでランダムに変化するということです。交換のためのコードのブロックを以下に示します。私は、問題がどこにあるかだけをチェックする時の為替1つのピクセルを行うので、私はそれをはるかに高速に行うことができます知っている:DICOM RT Doseファイルのpixel_arrayの交換 - 値の変更 - pydicom

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_arrayFLKです。

pixel_arrayFLK [86] [85] [78]の値は65813です。元のdosem.pixel_array [86] [85] [78]の値は62947です。交換後pixel_arrayFLK [

しかしながら
65813 
62947 
277 
65813 

:dosem.pixel_array [突然86] [85] [78]は、今277

プリント機能が降伏値を有するのに対し、86] [85] [78]は依然として値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交換は一見正常に動作しますストアド。

答えて

1

それを実演しました。ビットが16であるため、最大値は65536であり、65813はこの値を277で上書きします。したがって、0から始まります。

関連する問題