Автор: Александр Лекомцев Редактор: Иван Перминов
Основной источник трехмерных медицинских данных — компьютерная томография (КТ) и магнитно-резонансная томография (МРТ). С помощью этих методов непрерывное человеческое тело оцифровывается в виде дискретного трехмерного тензора размером (ширина x высота x число срезов)
.
Каждая ячейка такого тензора называется вокселем (voxel).
Каждый срез в нашем тензоре представляет собой двумерное изображение. Интенсивность его пикселей показывает, насколько сильно отражаются рентгеновские лучи от этой ткани (КТ) / интенсивность электромагнитного отклика атомов водорода в сильном магнитном поле (МРТ). Грубо говоря, в обоих случаях мы разной интенсивностью “подсвечиваем” разные ткани.
Итак, значение вокселя отражает интенсивность, как в черно-белых двумерных фото.
В КТ интенсивность выражается в Hounsfield units (HU). В эту единицу измерения переводятся результаты измерений всех аппаратов КТ.
В МРТ нет такой же удобной шкалы, поэтому снимок одного человека на аппаратах разных производителей может отличаться. Следовательно, для МРТ нужна либо подходящая нормализация (несколько вариантов), либо данные аппаратов со всех производителей, которые будут на проде.
Рисунок 1. КТ в различных проекциях: трехмерное изображение с тремя ортогональными двумерными проекциями
Рисунок 2. МРТ с подписанными органами
Все измерения в КТ переводятся в Hounsfield units (HU). Они измеряют рентгенопрозрачность — способность материала пропускать рентгеновские лучи. HU привязаны к физическим параметрам:
Рисунок 3. Таблица рентгенопрозрачности (в HU) для человеческого тела
Разные типы тканей имеют разную рентгенпрозрачность. Мы можем выбрать на шкале Хаунсфилда отрезок, в который будут попадать только нужные нам ткани, например, печень можно выделить как np.clip(image, a_min=40, a_max=60)
.
Окно определяется двумя характеристиками — шириной (window width, WW) и центром (window level, WL). Например, код выше можно переписать так:
window_width = 20
window_level = 50
image = np.clip(
image,
a_min=window_level - window_width // 2,
a_max=window_level + window_width // 2,
)