Я использую dcmtk для чтения изображений dicom, и у меня есть следующий атрибут с новыми образцами:
(0028,0004) Photometric Interpretation: MONOCHROME2
(0028,0010) Rows: 512
(0028,0011) Columns: 512
(0028,0030) Pixel Spacing: 0.4688\0.4688
(0028,0100) Bits Allocated: 16
(0028,0101) Bits Stored: 16
(0028,0102) High Bit: 15
(0028,0103) Pixel Representation: 1
(0028,0106) Smallest Image Pixel Value: 0
(0028,0107) Largest Image Pixel Value: 2732
(0028,1050) Window Center: 1366
(0028,1051) Window Width: 2732
Я использую getOutputData(16) для чтения данных int16_t. Это меня удивило, потому что значения отрицательны около -1 * (2 ^ 16), и когда я вычел значения на 2 ^ 15, все кажется в порядке, и я могу видеть изображения! :-(
Теперь у меня два вопроса:
- Почему я должен вычесть значение 2 ^ 15, и все будет в порядке? На изображении нет значения заполнения!
- В документе getOutputData говорится о отображаемых пиксельных данных всегда без подписи.. Что это означает, когда данные моего изображения подписаны, потому что атрибут (0028,0103) говорит мне об этом? Если этот метод не подходит, могу ли я получить реальные данные с помощью dcmtk?
getOutputData
возвращаетvoid *
и (как вы сами упомянули) согласно документации выходные данные всегда беззнаковые. Так не следует ли вместо этого преобразовать выходные данные вuint16
? - person Anders Gustafsson   schedule 29.05.2013