В этом примере показано, как можно использовать imregister
автоматически выровнять два магнитных резонанса (MRI) отображает к общей системе координат с помощью основанной на интенсивности регистрации изображений. Этот подход не находит функции или использует контрольные точки. Основанная на интенсивности регистрация является часто подходящей для медицинского и удаленно обнаруженного формирования изображений.
Этот пример использует два изображения MRI колена. Фиксированное изображение является двойным изображением вращения, в то время как движущееся изображение является двойным изображением вращения с восстановлением инверсии. Два стреловидных среза были получены одновременно, но немного неровно.
fixed = dicomread('knee1.dcm'); moving = dicomread('knee2.dcm');
imshowpair
функция полезна, чтобы визуализировать изображения во время каждой части процесса регистрации. Используйте его, чтобы видеть два изображения индивидуально в монтаже или отобразить их перекрывающийся, чтобы показать объем неверной регистрации.
imshowpair(moving,fixed,'montage') title('Unregistered')
В перекрывающемся изображении от imshowpair
, серые области соответствуют областям, которые имеют подобную интенсивность, в то время как пурпурные и зеленые зоны показывают места, где одно изображение более ярко, чем другой. В некоторых парах изображений зеленые и пурпурные области не всегда указывают на неверную регистрацию, но в этом примере это просто в использовании информация о цвете, чтобы видеть, где они делают.
imshowpair(moving,fixed)
title('Unregistered')
imregconfig
функция дает возможность выбирать правильный оптимизатор и метрическую настройку, чтобы использовать с imregister
. Оптимизатор и метрические переменные являются объектами, свойства которых управляют регистрацией. Для получения дополнительной информации смотрите, Создают Оптимизатор и Метрику для Основанной на интенсивности Регистрации Изображений.
Эти два изображения имеют различные распределения интенсивности, который предлагает многомодальную настройку.
[optimizer,metric] = imregconfig('multimodal');
Искажение между двумя изображениями включает масштабирование, вращение, и возможно сдвиньте. Используйте аффинное преобразование, чтобы указать изображения.
movingRegisteredDefault = imregister(moving,fixed,'affine',optimizer,metric);
Отобразите результат. Это очень редко тот imregister
выровняет изображения отлично с настройками по умолчанию. Тем не менее, использование их является полезным способом решить который свойства настроиться сначала.
imshowpair(movingRegisteredDefault,fixed)
title('A: Default Registration')
Первичная регистрация не очень хороша. Существуют все еще значительные области плохого выравнивания, особенно вдоль правого края. Попытайтесь улучшить регистрацию путем корректировки оптимизатора и метрических свойств настройки.
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);
Отобразите результат. Корректировка InitialRadius
оказывает позитивное влияние. Существует значимое улучшение выравнивания изображений на верхних и правых краях.
imshowpair(movingRegisteredAdjustedInitialRadius,fixed)
title('B: Adjusted InitialRadius')
MaximumIterations
свойство оптимизатора управляет максимальным количеством итераций, которые оптимизатору позволят взять. Увеличение MaximumIterations
позволяет регистрационному поиску запускаться дольше и потенциально находить лучшие регистрационные результаты. Делает регистрацию, продолжают улучшаться если InitialRadius
от последнего шага используется с большим количеством итераций?
optimizer.MaximumIterations = 300;
movingRegisteredAdjustedInitialRadius300 = imregister(moving,fixed,'affine',optimizer,metric);
Отобразите результаты. Дальнейшее совершенствование регистрации было достигнуто путем многократного использования InitialRadius
оптимизатор, сходящий с предыдущей регистрации и позволяющий оптимизатор взять большое количество итераций.
imshowpair(movingRegisteredAdjustedInitialRadius300,fixed)
title('C: Adjusted InitialRadius, MaximumIterations = 300')
Основанная на оптимизации регистрация работает лучше всего, когда хорошее начальное условие может быть дано для регистрации, которая связывает перемещение и зафиксированные изображения. Полезный метод для получения улучшенных регистрационных результатов должен запуститься с более простых типов преобразования как '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);
Отобразите результат. Используя 'InitialTransformation'
совершенствовать 'similarity'
результат imregtform
с полной аффинной моделью приводит к хорошему регистрационному результату.
imshowpair(movingRegisteredAffineWithIC,fixed)
title('E: Registration from Affine Model Based on Similarity Initial Condition')
Сравнение результатов выполнения imregister
с различными настройками и начальными условиями, становится очевидно, что существует большое количество входных параметров, которые могут варьироваться по imregister
, каждый из которых может привести к различным регистрационным результатам.
Это может затруднить, чтобы количественно сравнить регистрационные результаты, потому что нет никакой метрики качества, которая точно описывает выравнивание двух изображений. Часто, регистрационные результаты должны быть оценены качественно путем визуализации результатов. В результатах выше, регистрационные результаты в C) и E) и очень хороши и затрудняют, чтобы сказать независимо визуально.
Часто как качество многомодальной регистрации улучшаются, становится более трудным судить качество регистрации визуально. Это вызвано тем, что различия в интенсивности могут затенить области неточного совмещения. Иногда переключаясь на различный режим отображения для imshowpair
отсоединяет скрытые детали. (Это не всегда имеет место.)
imregister
| imregconfig
| imwarp
| imref2d
| OnePlusOneEvolutionary
| MattesMutualInformation
| MeanSquares
| RegularStepGradientDescent