rfra = (rmax) + (cc[rmax+1,cmax] -cc[rmax-1,cmax])/denom denom = 2.*(2.*cc.max() - cc[rmax,cmax+1] - cc[rmax, cmax-1]) cfra = (cmax) + (cc[rmax,cmax+1] -cc[rmax,cmax-1])/denom rmax = rfra cmax = cfra return np.array([rmax - d0n.shape[0]/2. , cmax - d0n.shape[1]/2.]) ###################################################### if __name__ == "__main__": from idlpy import IDL import numpy as np import time a = np.random.rand(1024) b = np.random.rand(1024) print "IDL 1d SHC return: ",IDL.shc(a,b) print "Python 1d SHC numpy return:", shc_numpy(a,b) print "Python 1d SHC opencv return:", shc_opencv(a,b) aa = np.random.rand(1248,4238) aa[10:20,20:45] = 100. bb = np.random.rand(1248,4238) bb[15:25,21:46] = 100. print "IDL 2D SHC return:",IDL.shc(aa,bb) print "Python 2D SHC numpy return:",shc_numpy(aa,bb) print "Python 2D SHC opencv return:",shc_opencv(aa,bb) start = time.time() shc_numpy(aa,bb) end = time.time() print("numpy time:",end - start) start = time.time() shc_opencv(aa,bb)