PolynomialTransformation2D

2D полиномиальное геометрическое преобразование

Описание

PolynomialTransformation2D объект инкапсулирует 2D полиномиальное геометрическое преобразование.

Создание

Можно создать PolynomialTransformation2D объект с помощью следующих методов:

  • fitgeotrans функция, которая оценивает геометрическое преобразование, которое сопоставляет пары контрольных точек между двумя изображениями.

  • images.geotrans.PolynomialTransformation2D функция описана здесь. Эта функция создает PolynomialTransformation2D объект с помощью координат фиксированных точек и перемещая точки или известные полиномиальные коэффициенты для прямого и обратного преобразования.

Описание

пример

tform = images.geotrans.PolynomialTransformation2D(movingPoints,fixedPoints,degree) создает PolynomialTransformation2D объект и наборы Degree свойство. Функция оценивает полиномиальные коэффициенты A и B из матриц movingPoints и fixedPoints это задает соответствующие контрольные точки в перемещении и зафиксированных изображениях, соответственно.

tform = images.geotrans.PolynomialTransformation2D(a,b) создает PolynomialTransformation2D объект и наборы A и B свойства.

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

развернуть все

x - и y - координаты контрольных точек в движущемся изображении в виде m-by-2 матрица.

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

x - и y - координаты контрольных точек в фиксированном изображении в виде m-by-2 матрица.

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

Свойства

развернуть все

Полиномиальные коэффициенты раньше определяли U в обратном преобразовании в виде n - вектор элемента. Для полиномов степени 2, 3, и 4, n равняется 6, 10, и 15, соответственно.

Квадратичное (степень 2) полиномиальный вектор коэффициентов A упорядочен можно следующим образом:

U = A(1) + A(2).*X + A(3).*Y + A(4).*X.*Y + A(5).*X.^2 + A(6).*Y.^2

Кубическое (степень 3) полиномиальный вектор коэффициентов добавляет эти условия:

... + A(7).*X.^2.*Y + A(8).*X.*Y.^2 + A(9).*X.^3 + A(10).*Y.^3

Биквадратное (степень 4) полиномиальный вектор коэффициентов добавляет эти условия:

... + A(11).*X.^3.*Y + A(12).*X.^2.*Y.^2 + A(12).*X.*Y.^3 + A(14).*X.^3 + A(15).*Y.^4

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

Полиномиальные коэффициенты раньше определяли V в обратном преобразовании в виде n - вектор элемента. Для полиномов степени 2, 3, и 4, n равняется 6, 10, и 15, соответственно.

Квадратичное (степень 2) полиномиальный вектор коэффициентов B упорядочен можно следующим образом:

V = B(1) + B(2).*X + B(3).*Y + B(4).*X.*Y + B(5).*X.^2 + B(6).*Y.^2

Кубическое (степень 3) полиномиальный вектор коэффициентов добавляет эти условия:

... + B(7).*X.^2.*Y + B(8).*X.*Y.^2 + B(9).*X.^3 + B(10).*Y.^3

Биквадратное (степень 4) полиномиальный вектор коэффициентов добавляет эти условия:

... + B(11).*X.^3.*Y + B(12).*X.^2.*Y.^2 + B(12).*X.*Y.^3 + B(14).*X.^3 + B(15).*Y.^4

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

Степень полиномиального преобразования в виде скалярных значений 2, 3, или 4.

Размерность геометрического преобразования для обеих точек ввода и вывода в виде значения 2.

Функции объекта

outputLimitsНайдите выход, пространственные данные пределы вводят пространственные пределы
transformPointsInverseПримените обратное геометрическое преобразование

Примеры

свернуть все

Соответствуйте второму преобразованию полинома степени к набору фиксированных и движущихся контрольных точек, которые на самом деле связаны 2D аффинным преобразованием.

Создайте 2D аффинное преобразование.

theta = 10;
tformAffine = affine2d([cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1]);

Произвольно выберите шесть пар контрольных точек. Второй полином степени требует шести пар контрольных точек.

 fixedPoints = [10 20; 10 5; 2 3; 0 5; -5 3; -10 -20];

Примените прямое геометрическое преобразование, чтобы сопоставить фиксированные точки, чтобы получить эффект фиксированных и перемещающих точек, которые связаны некоторым геометрическим преобразованием.

movingPoints = transformPointsForward(tformAffine,fixedPoints);

Оцените вторую степень PolynomialTransformation2D преобразование, которое соответствует fixedPoints и movingPoints.

tformPolynomial = images.geotrans.PolynomialTransformation2D(movingPoints,fixedPoints,2);

Проверьте припадок PolynomialTransformation2D преобразование в контрольных точках.

movingPointsEstimated = transformPointsInverse(tformPolynomial,fixedPoints);
errorInFit = hypot(movingPointsEstimated(:,1)-movingPoints(:,1),...
                   movingPointsEstimated(:,2)-movingPoints(:,2))

Больше о

развернуть все

Введенный в R2013b