В этом примере показано, как можно использовать 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');
Искажение между двумя изображениями включает масштабирование, вращение, и (возможно) сдвиньте. Используйте аффинное преобразование, чтобы указать изображения.
Это очень, очень редко тот imregister
выровняет изображения отлично с настройками по умолчанию. Тем не менее, использование их является полезным способом решить который свойства настроиться сначала.
movingRegisteredDefault = imregister(moving,fixed,'affine',optimizer,metric); 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); 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
метрика.
Основанная на оптимизации регистрация работает лучше всего, когда хорошее начальное условие может быть дано для регистрации, которая связывает перемещение и зафиксированные изображения. Полезный метод для получения улучшенных регистрационных результатов должен запуститься с более простых типов преобразования как '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
с полной аффинной моделью также привел к хорошему регистрационному результату.
Сравнение результатов выполнения imregister
с различными настройками и начальными условиями, становится очевидно, что существует большое количество входных параметров, которые могут варьироваться по imregister, каждый из которых может привести к различным регистрационным результатам.
Это может затруднить, чтобы количественно сравнить регистрационные результаты, потому что нет никакой метрики качества, которая точно описывает выравнивание двух изображений. Часто, регистрационные результаты должны быть оценены качественно путем визуализации результатов. В результатах выше, регистрационные результаты в C) и E) и очень хороши и затрудняют, чтобы сказать независимо визуально.
Часто как качество многомодальной регистрации улучшаются, становится более трудным судить качество регистрации визуально. Это вызвано тем, что различия в интенсивности могут затенить области неточного совмещения. Иногда переключаясь на различный режим отображения для imshowpair
отсоединяет скрытые детали. (Это не всегда имеет место.)
MattesMutualInformation
| MeanSquares
| OnePlusOneEvolutionary
| RegularStepGradientDescent
| imref2d
| imregconfig
| imregister
| imwarp