cpcorr

Настройте местоположения точек управления с помощью перекрестной корреляции

Описание

пример

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,moving,fixed) регулирует положение движущихся управляющих точек, movingPoints, относительно фиксированных контрольных точек, fixedPoints, используя нормированную перекрестную корреляцию между движущимся изображением moving и фиксированное изображение fixed. cpcorr функция возвращает скорректированные скользящие контрольные точки в movingPointsAdjusted.

Примеры

свернуть все

Считайте два изображения в рабочую область.

moving = imread('onion.png');
fixed = imread('peppers.png');

Задайте наборы контрольных точек для обоих изображений.

movingPoints = [118 42;99 87];
fixedPoints = [190 114;171 165];

Отображение изображений и отображение контрольных точек в белом цвете.

figure; imshow(fixed)
hold on
plot(fixedPoints(:,1),fixedPoints(:,2),'xw') 
title('fixed')

Figure contains an axes. The axes with title fixed contains 2 objects of type image, line.

figure; imshow(moving)
hold on
plot(movingPoints(:,1),movingPoints(:,2),'xw') 
title('moving')

Figure contains an axes. The axes with title moving contains 2 objects of type image, line.

Наблюдайте небольшие ошибки в положении движущихся точек.

Отрегулируйте движущиеся контрольные точки с помощью перекрестной корреляции.

movingPointsAdjusted = cpcorr(movingPoints,fixedPoints,...
                              moving(:,:,1),fixed(:,:,1))
movingPointsAdjusted = 2×2

  115.9000   39.1000
   97.0000   89.9000

Отобразите скорректированные подвижные точки желтым цветом. По сравнению с исходными движущимися точками (в белом цвете) скорректированные точки более точно совпадают с положениями фиксированных точек.

plot(movingPointsAdjusted(:,1),movingPointsAdjusted(:,2),'xy')      

Figure contains an axes. The axes with title moving contains 3 objects of type image, line.

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

свернуть все

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

Пример: [127 93; 74 59]

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

Координаты контрольных точек в опорном изображении, заданные как матрица p -by-2. Эти два столбца представляют x - и y - координаты управляющих точек, соответственно, в внутренней системе координат изображения.

Пример: [323 195; 269 161]

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

Изображение, которое будет зарегистрировано, заданное как числовой массив.

Ссылка на изображение в целевой ориентации, заданная как числовой массив.

Выходные аргументы

свернуть все

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

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

Совет

  • The moving и fixed изображения должны иметь ту же шкалу для cpcorr быть эффективным.

  • Если cpcorr не может коррелировать пару контрольных точек, movingPointsAdjusted содержит те же координаты, что и movingPoints для этой пары.

  • cpcorr невозможно настроить точку, если происходит какое-либо из следующих условий:

    • точки находятся слишком близко к ребру любого изображения

    • области изображений вокруг точек содержат Inf или NaN

    • область вокруг точки в движущемся изображении имеет нулевое стандартное отклонение

    • области изображений вокруг точек плохо коррелируют

Алгоритмы

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

Представлено до R2006a