Что может быть причиной того, что dicom-файл этого обычного рентгеновского снимка строится неправильно:
Используемый алгоритм следующий:
Исходная матрица изображения 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