2D и 3-D обзор процесса геометрического преобразования

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

Создайте объект геометрического преобразования

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

Существует несколько способов создать объект геометрического преобразования.

Задайте матрицу преобразования

Если вы знаете матрицу преобразования для геометрического преобразования, вы хотите выполнить, то можно создать affine2d, projective2d или объект геометрического преобразования affine3d непосредственно. Для получения дополнительной информации о создании матрицы преобразования, смотрите Матричное Представление Геометрических преобразований.

Следующий пример задает матрицу преобразования для 2D перевода и создает объект геометрического преобразования affine2d.

xform = [ 1 0 0
          0 1 0
         40 40 1 ];

tform_translate = affine2d(xform);
tform_translate = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

Задайте пользовательскую мудрую точкой функцию отображения

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

Следующий пример задает функцию обратного отображения, которая принимает и возвращает 2D точки в упакованном (x, y) формат. Затем пример создает geometricTransform2d пользовательский объект геометрического преобразования.

inversefn = @(c) [c(:,1)+c(:,2),c(:,1).^2]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1).^2]
tform = geometricTransform2d(inversefn)
tform = 
  geometricTransform2d with properties:

        InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]
        ForwardFcn: []
    Dimensionality: 2

Точно так же следующий пример создает geometricTransform3d пользовательский объект геометрического преобразования использование функции обратного отображения. Пример задает функцию обратного отображения, которая принимает и возвращает 3-D точки в упакованном (x, y, z) формат.

inversefn = @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
inversefn = function_handle with value:
    @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
tform = geometricTransform3d(inversefn)
tform = 

  geometricTransform3d with properties:

        InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]
        ForwardFcn: []
    Dimensionality: 3

Оцените преобразование от пар контрольной точки

Можно создать объект геометрического преобразования путем передачи двух наборов пар контрольной точки к функции fitgeotrans. Функция fitgeotrans автоматически оценивает преобразование от этих точек и возвращает один из объектов геометрического преобразования.

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

Этот пример передает два набора контрольных точек к fitgeotrans, который возвращает объект геометрического преобразования affine2d.

movingPoints = [11 11;21 11; 21 21];
fixedPoints = [51 51;61 51;61 61];

tform_cpp = fitgeotrans(movingPoints,fixedPoints,'affine')
tform_cpp = 

  affine2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

Оцените преобразование Используя оптимизацию подобия

Если у вас есть фиксированное изображение и движущееся изображение, которые немного неправильно выравниваются, то можно использовать функцию imregtform, чтобы оценить аффинное геометрическое преобразование, которое выравнивает изображения. imregtform оптимизирует средних квадратичных или Матовые стекла взаимная информационная метрика подобия двух изображений, с помощью регулярного спуска градиента шага или один плюс один эволюционного оптимизатора. Для получения дополнительной информации смотрите, Создают Оптимизатор и Метрику для Основанной на интенсивности Регистрации Изображений.

Оцените преобразование Используя корреляцию фазы

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

Выполните геометрическое преобразование

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

imwarp использует геометрическое преобразование, чтобы сопоставить координаты в выходном изображении к соответствующим координатам во входном изображении (обратное отображение). Затем imwarp использует отображение координаты, чтобы интерполировать пиксельные значения во входе, отображают и вычисляют значение выходного пикселя.

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

| | | | | |

Связанные примеры

Больше о