normxcorr2

Нормированная 2-D перекрестная корреляция

Синтаксис

Описание

пример

C = normxcorr2(template,A) вычисляет нормированную перекрестную корреляцию матриц template и A. Получившаяся матрица C содержит коэффициенты корреляции.

Примеры

свернуть все

Прочтите два изображения в рабочую область и преобразуйте их в полутоновые для использования с normxcorr2. Отображение изображений один за другим.

onion = im2gray(imread('onion.png'));
peppers = im2gray(imread('peppers.png'));
montage({peppers,onion})

Figure contains an axes. The axes contains an object of type image.

Выполните перекрестную корреляцию и отобразите результат как поверхность.

c = normxcorr2(onion,peppers);
surf(c)
shading flat

Figure contains an axes. The axes contains an object of type surface.

Найдите пик в перекрестной корреляции.

[ypeak,xpeak] = find(c==max(c(:)));

Учитывайте заполнение, которое normxcorr2 добавляет.

yoffSet = ypeak-size(onion,1);
xoffSet = xpeak-size(onion,2);

Отображение совпадающей области при помощи drawrectangle функция. Аргумент в виде пары имя-значение 'Position' задает верхнюю левую координату, ширину и высоту информация только для чтения в качестве вектора с 4 элементами [xmin,ymin,width,height]. Задайте грань информация только для чтения как полностью прозрачную.

imshow(peppers)
drawrectangle(gca,'Position',[xoffSet,yoffSet,size(onion,2),size(onion,1)], ...
    'FaceAlpha',0);

Figure contains an axes. The axes contains 2 objects of type image, images.roi.rectangle.

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

свернуть все

Входной шаблон, заданный как числовая матрица. Значения template не могут быть одинаковыми.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Входное изображение, заданное как числовое изображение. A должен быть больше матрицы template чтобы нормализация была значимой.

Нормированная перекрестная корреляция является неопределенной операцией в областях, где A имеет нулевое отклонение по всей длине шаблона. В этих областях normxcorr2 Присвоения коэффициенты корреляции нуля к выходу C.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

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

свернуть все

Коэффициенты корреляции, возвращенные как числовая матрица со значениями в области значений [-1, 1].

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

Алгоритмы

normxcorr2 использует следующую общую процедуру [1], [2]:

  1. Вычислите перекрестную корреляцию в пространственном или частотный диапазон координатах в зависимости от размера изображений.

  2. Вычислите локальные суммы путем предварительного вычисления текущих сумм [1].

  3. Используйте локальные суммы для нормализации перекрестной корреляции, чтобы получить коэффициенты корреляции.

Реализация тесно соответствует формуле из [1]:

γ(u,v)=x,y[f(x,y)f¯u,v][t(xu,yv)t¯]{x,y[f(x,y)f¯u,v]2x,y[t(xu,yv)t¯]2}0.5

где

  • f является изображением.

  • t¯ является средним значением шаблона

  • f¯u,v является средним f(x,y) в области под шаблоном.

Ссылки

[2] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Volume II, Addison-Wesley, 1992, pp. 316-317.

Расширенные возможности

См. также

|

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