imregdemons

Оцените поле смещения, которое выравнивает два 2D или 3-D изображения

Синтаксис

[D,moving_reg] = imregdemons(moving,fixed)
[D,moving_reg] = imregdemons(moving,fixed,N)
[D,moving_reg] = imregdemons(___,Name,Value)

Описание

пример

[D,moving_reg] = imregdemons(moving,fixed) оценивает поле D смещения, которое выравнивает изображение, которое будет указано, moving, со ссылочным изображением, fixed. Векторы смещения в каждом пиксельном местоположении сопоставляют местоположения от сетки fixed изображений до соответствующего местоположения в изображении moving. moving_reg является деформированной версией изображения moving, которое деформировано согласно полю D смещения и передискретизировало линейную интерполяцию использования.

Опционально можно оценить поле смещения с помощью графического процессора (требует Parallel Computing Toolbox™). Для получения дополнительной информации смотрите Обработку изображений на графическом процессоре.

[D,moving_reg] = imregdemons(moving,fixed,N) задает количество итераций, которые будут вычислены. Эта функция не использует критерий сходимости и поэтому, как всегда гарантируют, запустится для заданного или количества по умолчанию итераций.

пример

[D,moving_reg] = imregdemons(___,Name,Value) указывает движущееся изображение с помощью пар "имя-значение", чтобы управлять аспектами вычисления веса.

Примеры

свернуть все

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

Считайте два изображения в рабочую область.

fixed  = imread('hands1.jpg');
moving = imread('hands2.jpg');

Преобразуйте изображения в шкалу полутонов для обработки.

fixed  = rgb2gray(fixed);
moving = rgb2gray(moving);

Наблюдайте начальное неточное совмещение. Пальцы находятся в различных положениях.

imshowpair(fixed,moving,'montage')

Наложите два изображения, чтобы дать возможность видеть, где изображения отличаются. Различия подсвечены в зеленом и пурпурном цвете.

imshowpair(fixed,moving)

Правильные различия в освещении между moving и изображениями fixed с помощью соответствия гистограммы. Это - общий шаг предварительной обработки.

moving = imhistmatch(moving,fixed);

Оцените, что преобразование должно было принести два изображения в выравнивание.

[~,movingReg] = imregdemons(moving,fixed,[500 400 200],...
    'AccumulatedFieldSmoothing',1.3);

Отобразите результаты регистрации. В первой фигуре изображения наложены, чтобы показать выравнивание.

imshowpair(fixed,movingReg)

imshowpair(fixed,movingReg,'montage')

Выполните нетвердую регистрацию на графическом процессоре.

Считайте изображения в рабочую область.

fixed  = imread('hands1.jpg');
moving = imread('hands2.jpg');

Наблюдайте начальное неточное совмещение. (Пальцы находятся в различных положениях.)

figure
imshowpair(fixed,moving,'montage')
figure
imshowpair(fixed,moving)

Создайте gpuArray s и преобразуйте изображения в шкалу полутонов.

fixedGPU  = gpuArray(fixed);
movingGPU = gpuArray(moving);
 
fixedGPU  = rgb2gray(fixedGPU);
movingGPU = rgb2gray(movingGPU);

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

fixedHist = imhist(fixedGPU);
movingGPU = histeq(movingGPU,fixedHist);

Выполните регистрацию.

[~,movingReg] = imregdemons(movingGPU,fixedGPU,[500 400 200],'AccumulatedFieldSmoothing',1.3);

Возвратите зарегистрированное изображение центральному процессору.

 movingReg = gather(movingReg);

Просмотрите результаты.

figure
imshowpair(fixed,movingReg)
figure
imshowpair(fixed,movingReg,'montage')

Входные параметры

свернуть все

Отобразите, чтобы быть указанными, заданными как 2D или 3-D полутоновое изображение.

Чтобы выполнить вычисление с помощью графического процессора, задайте moving как gpuArray, который содержит 2D или 3-D полутоновое изображение.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Ссылочное изображение в целевой ориентации, заданной как 2D или 3-D полутоновое изображение.

Чтобы выполнить вычисление с помощью графического процессора, задайте fixed как gpuArray, который содержит 2D или 3-D полутоновое изображение.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Количество итераций, заданных как положительный целочисленный скаляр или вектор.

Когда вы задаете вектор, N является количеством итераций на уровень пирамиды (уровень разрешения). Например, если существует 3 уровня пирамиды, то можно задать векторный [100,50,25], где imregdemons выполняет 100 итераций на самом низком уровне разрешения, 50 итераций на следующем уровне пирамиды и 25 итераций на последнем уровне итерации — уровень с полным разрешением. Поскольку требуется меньше времени, чтобы обработать более низкие уровни разрешения, запуская больше итераций в низком разрешении, и меньше итераций в более высоких разрешениях пирамиды может помочь производительности.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: [D,movingReg] = imregdemons(moving,fixed,[500 400 200],'AccumulatedFieldSmoothing',1.5);

Сглаживание примененного в каждой итерации, заданной как пара, разделенная запятой, состоящая из 'AccumulatedFieldSmoothing' и числового значения. Этот параметр управляет объемом подобной диффузии регуляризации. imregdemons применяет стандартное отклонение Гауссова сглаживания, чтобы упорядочить накопленное поле в каждой итерации. Большие значения приводят к более сглаженным выходным полям смещения. Меньшие значения приводят к более локализованной деформации в выходном поле смещения. Значения обычно находятся в области значений [0.5, 3.0]. Когда вы задаете несколько PyramidLevels, стандартное отклонение, используемое в Гауссовом сглаживании, остается то же самое на каждом уровне пирамиды.

Типы данных: double

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

Типы данных: double

Отобразите waitbar, чтобы указать на прогресс, заданный как пара, разделенная запятой, состоящая из 'DisplayWaitbar' и значения true или false. Когда установлено в true, imregdemons отображает waitbar, чтобы указать на прогресс для продолжительных операций. Чтобы препятствовать тому, чтобы imregdemons отобразил waitbar, установите DisplayWaitbar на false.

Примечание

Параметр 'DisplayWaitbar' не поддержан на графическом процессоре.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

Выходные аргументы

свернуть все

Поле Displacement, заданное как числовой массив. Значения смещения находятся в модулях пикселей.

  • Если fixed является 2D полутоновым изображением размера m-by-n, то полевым массивом смещения является m-by-n-by-2. D(:,:,1) содержит смещения вдоль x - ось и D(:,:,2) содержат смещения вдоль y - ось.

  • Если fixed является 3-D полутоновым изображением размера m-by-n-by-p, то полевым массивом смещения является m-by-n-by-p-by-3. D(:,:,:,1) содержит смещения вдоль x - ось, D(:,:,:,2) содержит смещения вдоль y - ось. и D(:,:,:,3) содержит смещения вдоль z - ось.

Если поле смещения вычисляется с помощью графического процессора, то D возвращен как gpuArray, содержащий числовой массив.

Типы данных: double

Зарегистрированное изображение, возвращенное как 2D или 3-D полутоновое изображение, деформированное согласно полю D смещения и передискретизируемой линейной интерполяции использования.

Если поле смещения вычисляется с помощью графического процессора, то moving_reg возвращен как gpuArray, содержащий 2D или 3-D полутоновое изображение.

Советы

  • Чтобы преобразовать изображение с помощью поля D смещения, используйте imwarp.

Ссылки

[1] Thirion, J.-P. "Отобразите соответствие как диффузионный процесс: аналогия с демонами Максвелла". Медицинский Анализ изображения. Издание 2, Номер 3, 1998, стр 243–260.

[2] Vercauteren, T., Кс. Пеннек, А. Перчант, Н. Аяч, "Диффеоморфные Демоны: Эффективная Непараметрическая Регистрация Изображений", NeuroImage. Издание 45, Номер 1, Приложение 1, март 2009, стр 61–72.

Расширенные возможности

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

Приложения

Функции

Введенный в R2014b