exponenta event banner

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

Совет

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

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

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

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

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

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

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

Алгоритмы

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

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