Укажите многомодальные изображения MRI

Этот пример показывает, как можно использовать imregister, чтобы автоматически выровнять два магнитных резонанса (MRI) изображения к общей системе координат с помощью основанной на интенсивности регистрации изображений. В отличие от некоторых других методов, это не находит функции или использует контрольные точки. Основанная на интенсивности регистрация является часто подходящей для медицинского и удаленно обнаруженного формирования изображений.

Шаг 1: загрузите изображения

Этот пример использует два изображения MRI колена. Фиксированное изображение является двойным изображением вращения, в то время как движущееся изображение является двойным изображением вращения с восстановлением инверсии. Два стреловидных среза были получены одновременно, но немного неровно.

fixed = dicomread('knee1.dcm');
moving = dicomread('knee2.dcm');

Функция imshowpair полезна, чтобы визуализировать изображения во время каждой части процесса регистрации. Используйте его, чтобы видеть два изображения индивидуально способом монтажа или отобразить их сложенный, чтобы показать объем неверной регистрации.

imshowpair(moving,fixed,'montage')
title('Unregistered')

В перекрывающемся изображении от imshowpair серые области соответствуют областям, которые имеют подобную интенсивность, в то время как пурпурные и зеленые зоны показывают места, где одно изображение более ярко, чем другой. В некоторых парах изображений зеленые и пурпурные области не всегда указывают на неверную регистрацию, но в этом примере это просто в использовании информация о цвете, чтобы видеть, где они делают.

imshowpair(moving,fixed)
title('Unregistered')

Шаг 2: Настройте Первичную регистрацию

Функция imregconfig дает возможность выбирать правильный оптимизатор и метрическую настройку, чтобы использовать с imregister. Эти два изображения имеют различные дистрибутивы интенсивности, который предлагает многомодальную настройку.

[optimizer,metric] = imregconfig('multimodal');

Искажение между двумя изображениями включает масштабирование, вращение, и (возможно) сдвиньте. Используйте аффинное преобразование, чтобы указать изображения.

Очень, очень редко, что imregister выровняет изображения отлично с настройками по умолчанию. Тем не менее, использование их является полезным способом решить который свойства настроиться сначала.

movingRegisteredDefault = imregister(moving,fixed,'affine',optimizer,metric);

imshowpair(movingRegisteredDefault,fixed)
title('A: Default Registration')

Шаг 3: улучшите регистрацию

Первичная регистрация не очень хороша. Существуют все еще значительные области плохого выравнивания, особенно вдоль правого края. Попытайтесь улучшить регистрацию путем корректировки оптимизатора и метрических свойств настройки.

Оптимизатор и метрические переменные являются объектами, свойства которых управляют регистрацией.

disp(optimizer)
  registration.optimizer.OnePlusOneEvolutionary

  Properties:
         GrowthFactor: 1.050000e+00
              Epsilon: 1.500000e-06
        InitialRadius: 6.250000e-03
    MaximumIterations: 100
disp(metric)
  registration.metric.MattesMutualInformation

  Properties:
    NumberOfSpatialSamples: 500
     NumberOfHistogramBins: 50
              UseAllPixels: 1

Свойство InitialRadius оптимизатора управляет начальным размером шага, используемым в пространстве параметров, чтобы совершенствовать геометрическое преобразование. Когда многомодальные регистрационные проблемы не сходятся с параметрами по умолчанию, InitialRadius является хорошим первым параметром, который настроит. Запустите путем сокращения значения по умолчанию InitialRadius масштабным коэффициентом 3,5.

optimizer.InitialRadius = optimizer.InitialRadius/3.5;

movingRegisteredAdjustedInitialRadius = imregister(moving,fixed,'affine',optimizer,metric);

imshowpair(movingRegisteredAdjustedInitialRadius,fixed)
title('B: Adjusted InitialRadius')

Корректировка InitialRadius оказала позитивное влияние. Существует значимое улучшение выравнивания изображений на верхних и правых краях.

Свойство MaximumIterations оптимизатора управляет максимальным количеством итераций, которые оптимизатору позволят взять. Увеличение MaximumIterations позволяет регистрационному поиску запускаться дольше и потенциально находить лучшие регистрационные результаты. Регистрация продолжает улучшаться, если InitialRadius от последнего шага используется с большим количеством итераций?

optimizer.MaximumIterations = 300;
movingRegisteredAdjustedInitialRadius300 = imregister(moving,fixed,'affine',optimizer,metric);

imshowpair(movingRegisteredAdjustedInitialRadius300,fixed)
title('C: Adjusted InitialRadius, MaximumIterations = 300')

Дальнейшее совершенствование регистрации было достигнуто путем многократного использования оптимизатора InitialRadius, сходящего с предыдущей регистрации и позволяющего оптимизатор взять большое количество итераций.

Для получения дополнительной информации о многомодальном оптимизаторе и метрических параметрах, которые могут быть настроены, смотрите страницы с описанием для оптимизатора OnePlusOneEvolutionary и метрики MattesMutualInformation.

Шаг 4: используйте начальные условия, чтобы улучшить регистрацию

Основанная на оптимизации регистрация работает лучше всего, когда хорошее начальное условие может быть дано для регистрации, которая связывает перемещение и зафиксированные изображения. Полезный метод для получения улучшенных регистрационных результатов должен запуститься с более простых типов преобразования как 'rigid', и затем использовать получившееся преобразование в качестве начального условия для более сложных типов преобразования как 'affine'.

Функциональный imregtform использует тот же алгоритм в качестве imregister, но возвращает объект геометрического преобразования, как выведено вместо зарегистрированного выходного изображения. Используйте imregtform, чтобы получить начальную оценку преобразования на основе модели 'similarity' (перевод, вращение и шкала).

Предыдущие регистрационные результаты показали улучшение после изменения свойств MaximumIterations и InitialRadius оптимизатора. Сохраните эти настройки оптимизатора при использовании начальных условий при попытке совершенствовать регистрацию далее.

tformSimilarity = imregtform(moving,fixed,'similarity',optimizer,metric);

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

Rfixed = imref2d(size(fixed));

Используйте imwarp, чтобы применить геометрическое преобразование вывод от imregtform до движущегося изображения, чтобы выровнять его с фиксированным изображением. Используйте опцию 'OutputView' в imwarp, чтобы задать мировые пределы, и разрешение вывода передискретизировало изображение. При определении Rfixed, когда 'OutputView' обеспечивает передискретизируемое движущееся изображение, чтобы иметь то же разрешение и мировые пределы как фиксированное изображение.

movingRegisteredRigid = imwarp(moving,tformSimilarity,'OutputView',Rfixed);

imshowpair(movingRegisteredRigid, fixed)
title('D: Registration Based on Similarity Transformation Model')

Свойство 'T' выходного геометрического преобразования задает матрицу преобразования, которая сопоставляет точки в перемещении в соответствующие точки в фиксированном.

tformSimilarity.T
ans = 3×3

    1.0331   -0.1110         0
    0.1110    1.0331         0
  -51.1491    6.9891    1.0000

Используйте Имя/Значение 'InitialTransformation' в imregister, чтобы совершенствовать эту регистрацию при помощи модели преобразования 'affine' с результатами 'similarity', используемыми в качестве начального условия для геометрического преобразования. Эта усовершенствованная оценка для регистрации включает возможность сдвига.

movingRegisteredAffineWithIC = imregister(moving,fixed,'affine',optimizer,metric,...
    'InitialTransformation',tformSimilarity);

imshowpair(movingRegisteredAffineWithIC,fixed)
title('E: Registration from Affine Model Based on Similarity Initial Condition')

Используя 'InitialTransformation', чтобы уточнить результат 'similarity' imregtform с полной аффинной моделью также привел к хорошему регистрационному результату.

Шаг 5: Решение, Когда Хватит

Сравнивая результаты выполнения imregister с различными настройками и начальными условиями, становится очевидно, что существует большое количество входных параметров, которые могут отличаться по imregister, каждый из которых может привести к различным регистрационным результатам.

Может быть трудно количественно сравнить регистрационные результаты, потому что нет никакой метрики качества, которая точно описывает выравнивание двух изображений. Часто, регистрационные результаты должны быть оценены качественно путем визуализации результатов. В результатах выше, регистрационные результаты в C) и E) являются и очень хорошими и являются трудными сказать независимо визуально.

Шаг 6: альтернативная визуализация

Часто как качество многомодальной регистрации улучшаются, становится более трудным судить качество регистрации визуально. Это вызвано тем, что различия в интенсивности могут затенить области неточного совмещения. Иногда переключение на различный режим отображения для imshowpair представляет скрытые детали. (Это не всегда имеет место.)

Смотрите также

| | | | | | |