2016-09-25 4 views
2

Я пытался получить пиксельные значения файла dicom в python, используя библиотеку dicom.python dicom - получение значения пикселя из файла dicom

Но он возвращает только массив с нулями.

Мой код был так:

import dicom 

import numpy 

ds=pydicom.read_file("sample.dcm") 

print(ds.pixel_array) 

и результаты является

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
..., 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0]] 

Есть ли у вас какие-либо идеи, как получить значения пикселей?

Большое спасибо.

Andras

ответ

1

Код в виде написанного должен работать. Возможно, что начало и конец массива - это действительно нули.

Обычно имеет смысл взглянуть на что-то посредине изображения.

т.д .:

midrow = ds.Rows // 2 
midcol = ds.Columns // 2 
print(ds.pixel_array[midrow-20:midrow+20, midcol-20:midcol+20]) 

Если это действительно нули всюду, то, что является либо истинным образом или какое-то ошибка. Возможно, чтение с помощью dicom viewer может помочь, если это не было проверено.

-1
import dicom 
import dicom_numpy 


dataset = dicom.read_file('sample.dcm') 
pixels, ijk_to_xyz = dicom_numpy.combine_slices([dataset]) 

Здесь pixels будет содержать правильно масштабированные значения пикселов, и ijk_to_xyz является аффинным 4x4 матрицы отображения индексов для пациента DICOM системы координат.

Этот фрагмент кода использует dicom-numpy, абстракцию более высокого уровня, построенную на вершине pydicom.

Он обрабатывает наиболее распространенный случай использования при извлечении значений пикселей из набора DICOM файлов:

  • Объединяя несколько фрагментов из серии DICOM (вы можете не заботиться об этой функции)
  • Применение RescaleSlope и RescaleIntercept атрибутов, если они есть.
  • Выведение расположение значений пикселей в 3D-пространстве с использованием ImageOrientationPatient и ImagePositionPatient

Мы используем его на всех наших проектах, где мы должны извлечь данные изображения из DICOM файлов в ndarray NumPy.

Смежные вопросы