Выведите пространственное преобразование из пар контрольной точки
cp2tform
не рекомендуется. Используйте fitgeotrans
вместо этого.
tform = cp2tform(movingPoints,fixedPoints,transformationType)
tform = cp2tform(movingPoints,fixedPoints,'polynomial',degree)
tform = cp2tform(movingPoints,fixedPoints,'lwm',n)
tform = cp2tform(movingPoints,fixedPoints,'piecewise
linear')
[tform,usedMP,usedFP,badMP,badFP] = cp2tform(movingPoints,fixedPoints,'piecewise
linear')
tform = cp2tform(cpstruct,transformationType,___)
[tform,usedMP,usedFP]
= cp2tform(cpstruct,transformationType,___)
выводит пространственное преобразование из пар контрольной точки и возвращает это преобразование как структуру tform
= cp2tform(movingPoints
,fixedPoints
,transformationType
)tform
. Некоторые типы преобразования имеют дополнительные дополнительные параметры, показанные в следующих синтаксисах.
позволяет вам задать порядок полиномов использовать.tform
= cp2tform(movingPoints
,fixedPoints
,'polynomial',degree
)
создает отображение путем выведения полинома при каждом использовании контрольной точки, граничащем с контрольными точками. Отображение в любом местоположении зависит от взвешенного среднего этих полиномов. Можно опционально указать, что число точек, tform
= cp2tform(movingPoints
,fixedPoints
,'lwm',n
)n
, раньше выводило каждый полином. n
самые близкие точки используется, чтобы вывести полином порядка 2 для каждой пары контрольной точки.
создает Триангуляцию Делоне фиксированных контрольных точек и сопоставляет соответствующие движущиеся контрольные точки с фиксированными контрольными точками. Отображение линейно (аффинно) для каждого треугольника и непрерывно через контрольные точки, но не непрерывно дифференцируемо, когда каждый треугольник имеет свое собственное отображение.tform
= cp2tform(movingPoints
,fixedPoints
,'piecewise
linear')
[
возвращает в tform
,usedMP
,usedFP
,badMP
,badFP
] = cp2tform(movingPoints
,fixedPoints
,'piecewise
linear')usedMP
и usedFP
контрольные точки, которые использовались для кусочного линейного преобразования. Этот синтаксис также возвращает в badMP
и badFP
контрольные точки, которые были устранены, потому что они были средними вершинами вырожденного сгиба - по треугольникам.
использует структуру tform
= cp2tform(cpstruct
,transformationType
,___)cpstruct
, чтобы сохранить координаты контрольной точки перемещения и зафиксированных изображений.
[
также возвращает в tform
,usedMP
,usedFP
]
= cp2tform(cpstruct
,transformationType
,___)usedMP
и usedFP
контрольные точки, которые использовались для преобразования. Несопоставленные и предсказанные точки не используются. Смотрите cpstruct2pairs
.
Преобразуйте изображение, используйте функцию cp2tform
, чтобы возвратить преобразование и сравнить угол и шкалу tform
к углу и шкалу исходного преобразования:
I = checkerboard;
J = imrotate(I,30);
fixedPoints = [11 11; 41 71];
movingPoints = [14 44; 70 81];
cpselect(J,I,movingPoints,fixedPoints);
t = cp2tform(movingPoints,fixedPoints,'nonreflective similarity');
Восстановите угол и шкалу путем проверки, как единичный вектор, параллельный x - ось, вращается и расширяется.
u = [0 1]; v = [0 0]; [x, y] = tformfwd(t,u,v); dx = x(2) - x(1); dy = y(2) - y(1); angle = (180/pi) * atan2(dy, dx) scale = 1 / sqrt(dx^2 + dy^2)
Когда transformtype
является 'nonreflective similarity'
, 'similarity'
, 'affine'
, 'projective'
или 'polynomial'
, и movingPoints
и fixedPoints
(или cpstruct
) имеют минимальное количество контрольных точек, необходимых для конкретного преобразования, cp2tform
находит коэффициенты точно.
Если movingPoints
и fixedPoints
имеют больше, чем минимальное количество контрольных точек, решение методом наименьших квадратов найдено. Смотрите mldivide
.
Когда или movingPoints
или fixedPoints
имеют большое смещение относительно их источника (относительно области значений значений, которые это охватывает), cp2tform
переключает точки, чтобы сосредоточить их ограничительную рамку на источнике прежде, чем соответствовать структуре tform
. Это улучшает числовую устойчивость и обработано прозрачно путем переноса сосредоточенного источником tform
в пользовательском tform
, который автоматически применяет и отменяет координатный сдвиг по мере необходимости. В результате fields(T)
может дать различные результаты для различных координатных входных параметров, даже для того же типа преобразования.
[1] Goshtasby, Ardeshir, "Кусочное линейное отображение функционирует для регистрации изображений", Распознавание образов, Издание 19, 1986, стр 459-466.
[2] Goshtasby, Ardeshir, "Регистрация изображений локальными методами приближения", Изображение и Вычисление Видения, Издание 6, 1988, стр 255-261.
cpcorr
| cpselect
| cpstruct2pairs
| imtransform
| tformfwd
| tforminv