Как работать с отрицательными значениями пикселей в изображениях, загруженных с помощью simpleITK

Я работал с изображениями сканирования DICOM CT. Я использовал simleITK для чтения изображений в массив numpy. Но значения пикселей изображения являются отрицательными значениями с плавающей запятой, как показано на изображении, а dtype каждого пикселя - float32. Как преобразовать значения этих пикселей, чтобы иметь возможность обучать модель TensorFlow 3D CNN?

# Read the .nii image containing the volume with SimpleITK:
sitk_obj = sitk.ReadImage(filename)

# and access the numpy array:
image = sitk.GetArrayFromImage(sitk_obj)

отрицательные значения пикселей отрицательные значения пикселей

Читаемые изображения имеют разные формы, как я могу изменить их размер до определенной постоянной формы изображения? (Как показано на изображении ниже)

различные формы изображений


person Sai Teja    schedule 17.01.2021    source источник


Ответы (1)


Если вы используете функцию RescaleIntensity SimpleITK, вы можете масштабировать значения пикселей в любой требуемый диапазон. Вот документы для этой функции:

https://simpleitk.org/doxygen/latest/html/namespaceitk_1_1simple.html#af34ebbd0c41ae0d0a7a152ac1382bac6

Чтобы изменить размер изображений, вы можете использовать ResampleImageFilter SimpleITK. Вот документы для этого класса:

https://simpleitk.org/doxygen/latest/html/classitk_1_1simpletml / >

В следующем ответе StackOverflow показано, как создать эталонное изображение, на которое вы передискретизируете свое изображение:

https://stackoverflow.com/a/48065819/3712577

И этот Github Gist, как преобразовать несколько изображений в одно и то же эталонное изображение:

https://gist.github.com/zivy/79d7ee0490faee1156c1277a78e4a4c4

Обратите внимание, что SimpleITK рассматривает изображения как объекты в физическом пространстве. Поэтому, если исходные точки изображения, направления и расстояния между пикселями не совпадают, вы не получите ожидаемого результата.

person Dave Chen    schedule 19.01.2021