Вывод пространственного преобразования из пар управляющих точек
cp2tform не рекомендуется. Использовать fitgeotrans вместо этого.
выводит пространственное преобразование из пар управляющих точек и возвращает это преобразование в виде 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] Гоштасби, Ардешир, «Кусочно-линейные картографические функции для регистрации изображения», Распознавание образов, том 19, 1986, стр. 459-466.
[2] Гоштасби, Ардешир, «Регистрация изображения методами локального приближения», Image and Vision Computing, Vol. 6, 1988, pp. 255-261.
cpcorr | cpselect | cpstruct2pairs | imtransform | tformfwd | tforminv