[cv] filters as templates-normxcorr2(template,img)

来源:互联网 发布:sql中like用法 编辑:程序博客网 时间:2024/06/05 11:49

introduction

images are not just functions (intensity).
it also contains location properties.

1D correlation

1d-correlation
the filter is normalized and then is used to compute cross -correlation.
why the peak value is at index 60?
because positve value in signal [50,70] multiply positive value in filter, and negative value in signal [50,70] multiply negative value in filter. At last, we sum them up.

cross-correlation in matlab

%% matlab cross-correlationfruit = rgb2gray(imread('../pics/fruit.png'));apple = rgb2gray(imread('../pics/apple.png'));% imshowpair(fruit,apple, 'montage');c = normxcorr2(apple, fruit);figure;surf(c);shading flat;

fruit-apple.png
result.png

% Find template 1D% Function definition must be the very first piece of code here!function index = find_template_1D(t, s)    c = normxcorr2(t,s);    [~,index] = max(c);    index = index -size(t,2) + 1;endpkg load image; % after define function% Test code:s = [-1 0 0 1 1 1 0 -1 -1 0 1 0 0 -1];t = [1 1 0];disp('Signal:'), disp([1:size(s, 2); s]);disp('Template:'), disp([1:size(t, 2); t]);index = find_template_1D(t, s);disp('Index:'), disp(index);

template matching

template-matching.png

% Find template 2D% NOTE: Function definition must be the very first piece of code here!function [yIndex xIndex] = find_template_2D(template, img)    % TODO: Find template in img and return [y x] location    % NOTE: Turn off all output from inside the function before submitting!    c = normxcorr2(template, img);    [~,idx] = max(c(:));    [yIndex, xIndex] = ind2sub(size(c), idx);    xIndex = xIndex - size(template,2) + 1;    yIndex = yIndex - size(template,1) + 1;endfunctionpkg load image; % AFTER function definition% Test code:tablet = imread('tablet.png');imshow(tablet);glyph = tablet(75:165, 150:185);imshow(glyph);[y x] = find_template_2D(glyph, tablet);% y row number % x column numberdisp([y x]); % should be the top-left corner of template in tabletcolormap('gray'),imagesc(tablet);hold on;plot(x,y,'r+','markersize',16);hold on;

tablet-result.png
good4template.png
but we have more powerful tools to detection face.
non-identical-template

0 0
原创粉丝点击