В этом примере показано, как вы можете использовать imregister
автоматическое выравнивание двух магнитно-резонансных (МРТ) изображений к общей системе координат с помощью регистрации изображений на основе интенсивности. В отличие от некоторых других методов, подход не находит функций или не использует контрольные точки. Регистрация на основе интенсивности часто хорошо подходит для медицинских и дистанционно измеренных изображений.
Этот пример использует два изображений МРТ колена. Фиксированное изображение является спин-эхо-изображением, в то время как движущееся изображение является спин-эхо-изображением с восстановлением инверсии. Два сагиттальных среза были получены одновременно, но немного не совпадают.
fixed = dicomread('knee1.dcm'); moving = dicomread('knee2.dcm');
The imshowpair
функция полезна для визуализации изображений во время каждой части процесса регистрации. Используйте его, чтобы увидеть два изображения по отдельности в режиме монтажа или отобразить их в стопке, чтобы показать количество неправильного регистрации.
imshowpair(moving,fixed,'montage') title('Unregistered')
На перекрывающемся изображении из imshowpair
серые области соответствуют областям, которые имеют сходную интенсивность, в то время как пурпурные и зеленые зоны показывают места, где одно изображение ярче другого. В некоторых парах изображений зеленые и пурпурные области не всегда указывают на неправильную регистрацию, но в этом примере легко использовать информацию о цвете, чтобы увидеть, где они делают.
imshowpair(moving,fixed)
title('Unregistered')
The 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
The 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')
The 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')
The '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
раскрывает скрытые детали. (Это не всегда так.)
imref2d
| imregconfig
| imregister
| imwarp
| MattesMutualInformation
| MeanSquares
| OnePlusOneEvolutionary
| RegularStepGradientDescent