Faster image template matching in the sum of the absolute value of differences measure
Mikhail J. Atallah · IEEE Transactions on Image Processing · 2001
Given an m/spl times/m image I and a smaller n/spl times/n image P, the computation of an (m-n+1)/spl times/(m-n+1) matrix C where C(i, j) is of the form C(i,j)=/spl Sigma//sub k=0//sup n-1//spl Sigma//sub k'=0//sup n-1/f(I(i+k,j+k'), P(k,k')), 0/spl les/i, j/spl les/m-n for some function f, is often used in template matching. Frequent choices for the function f are f(x,y)=(x-y)/sup 2/ and f(x,y)=|m-y|. For the case when f(x,y)=(x-y)/sup 2/, it is well known that C is computable in O(m/sup 2/ log n) time. For the case f(x,y)=|-y|, on the other hand, the brute force O((m-n+1)/sup 2/n/sup 2/) time algorithm for computing C seems to be the best known. This paper gives an asymptotically faster algorithm for computing C when f(x,y)=|x-y|, one that runs in time O(min{s,n//spl radic/log n}m/sup 2/ log n) time, where s is the size of the alphabet, i.e., the number of distinct symbols that appear in I and P. This is achieved by combining two algorithms, one of which runs in O(sm/sup 2/ log n) time, the other in O(m/sup 2/n/spl radic/log n) time. We also give a simple Monte Carlo algorithm that runs in O(m/sup 2/ log n) time and gives unbiased estimates of C.