exponenta event banner

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 указывает верхнюю левую координату, ширину и высоту ROI в качестве 4-элементного вектора [xmin,ymin,width,height]. Укажите грань 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 (x u, y v) t _] {∑x,y[f (x, y) −f¯u,v]2∑x,y[t (x − u, y − v) − t _] 2} 0,5

где

  • f - изображение.

  • t - среднее значение шаблона

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

Ссылки

[2] Харалик, Роберт М. и Линда Г. Шапиро, Computer and Robot Vision, Volume II, Addison-Wesley, 1992, pp. 316-317.

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

См. также

|

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