exponenta event banner
Обзор

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

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

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

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

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

Определение матрицы преобразования

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

В следующем примере определяется матрица преобразования для преобразования 2-D и создается 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

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

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

Следующий пример задает функцию обратного отображения, которая принимает и возвращает точки 2-D в упакованном формате (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: [function_handle]
        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: [function_handle]
        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 использует отображение координат для интерполяции значений пикселей во входном изображении и вычисления выходного значения пикселей.

См. также

| | | | | | | |

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

Подробнее