normxcorr2

Нормированная 2D взаимная корреляция

Синтаксис

Описание

пример

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' задает верхнюю левую координату, ширину и высоту ROI как векторный [xmin,ymin,width,height] с 4 элементами. Задайте поверхность ROI как полностью прозрачную.

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, Роберт М., и Линда Г. Шапиро, Компьютер и Видение Робота, Объем II, Аддисон-Уэсли, 1992, стр 316-317.

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

Смотрите также

|

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