Given an m x m image I and a smaller n x n image P, the computation of an (m-n+1) x (m-n+1) matrix C where C(i, j) is of the form C(i,j)=Sigma(k=0)(n-1)Sigma(k'=0)(n-1)f(I(i+k,j+k'), P(k,k')), 0= or <i, j= or <m-n for some function f, is often used in template matching. Frequent choices for the function f are f(x,y)=(x-y)(2) and f(x,y)=/m-y/. For the case when f(x,y)=(x-y)(2), it is well known that C is computable in O(m(2) log n) time. For the case f(x,y)=/-y/, on the other hand, the brute force O((m-n+1)(2)n(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/square root log n}m(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(2) log n) time, the other in O(m(2)n square root log n) time. We also give a simple Monte Carlo algorithm that runs in O(m(2) log n) time and gives unbiased estimates of C.
No takes yet. Share an insight, caveat, or question.
Mikhail J. Atallah (2001) studied this question.
Synapse has enriched 5 related papers. Consider them for comparative context: