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 использует отображение координаты, чтобы интерполировать пиксельные значения во входе, отображают и вычисляют значение выходного пикселя.

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

| | | | | |

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

Больше о