Example #1
0
  def testNormalizedCorrelationHorzShift2D_SameArray_AllAlgorithms(self):    
    nrow = 251
    ncol = 250
    maxLag = 3
    nloop = 4
    x1 = rand(ncol, nrow)
    x2 = deepcopy(x1)

    t1a = timeit.time.clock()
    for loop in xrange(0, nloop):
      arrayA = normalizedCorrelationHorzShift2D(x1, x2, maxLag, Algorithm.BRUTE_FORCE)
    t2a = timeit.time.clock()
    
    t1b = timeit.time.clock()
    for loop in xrange(0, nloop):
      arrayB = normalizedCorrelationHorzShift2D(x1, x2, maxLag, Algorithm.INNER_1D)
    t2b = timeit.time.clock()

    t1c = timeit.time.clock()
    for loop in xrange(0, nloop):
      arrayC = normalizedCorrelationHorzShift2D(x1, x2, maxLag, Algorithm.INNER_2D)
    t2c = timeit.time.clock()
    
    timeA = (t2a - t1a)
    timeB = (t2b - t1b)
    timeC = (t2c - t1c)
    
    print("\ntestSame_NormalizedCorrelationHorzShift2D")
    print("  Algorithm.BRUTE_FORCE -- time; %.6f sec -- ratio; %12.6f" % (timeA, (timeA / timeA)))
    print("  Algorithm.INNER_1D    -- time; %.6f sec -- ratio; %12.6f" % (timeB, (timeA / timeB)))
    print("  Algorithm.INNER_2D    -- time; %.6f sec -- ratio; %12.6f" % (timeC, (timeA / timeC)))

    print
    for shift in range(-maxLag, maxLag+1):
        print("shift,A,B,C; %+3d %+12.6f %+12.6f %+12.6f" % (shift, arrayA[shift + maxLag], arrayB[shift + maxLag], arrayC[shift + maxLag]))
    assert arrayA[maxLag] == 1
    assert arrayB[maxLag] == 1
    assert arrayC[maxLag] == 1
    arrayA = list(arrayA)
    arrayB = list(arrayB)
    arrayC = list(arrayC)
    maxIndexA = arrayA.index(max(arrayA)) - maxLag
    maxIndexB = arrayB.index(max(arrayB)) - maxLag
    maxIndexC = arrayC.index(max(arrayC)) - maxLag

    print
    print("Index of maximum A,B,C", maxIndexA, maxIndexB, maxIndexC)
    print("Correlation at maximum A,B,C", 
          arrayA[maxIndexA + maxLag], arrayB[maxIndexB + maxLag], arrayC[maxIndexC + maxLag])
Example #2
0
  def testNormalizedCorrelationHorzShift2D_ShiftedArray(self):
    nrow = 400
    ncol = 300
    maxLag = 5
    
    for shift in range(-maxLag, (maxLag + 1)):
      x1 = numpy.zeros((ncol, nrow))
      x2 = numpy.zeros((ncol, nrow))
      for krow in range(0, nrow):
        for kcol in range(0, ncol):
          x2[kcol,krow] = krow
          if (krow + shift) >= 0 and (krow + shift) < nrow:
            x1[kcol,krow + shift] = krow
      t1 = timeit.time.clock()
      array = normalizedCorrelationHorzShift2D(x1, x2, maxLag, Algorithm.INNER_2D)
      t2 = timeit.time.clock()
      print("\ntestShift_NormalizedCorrelationHorzShift2D -- time; %.6f sec" % (t2 - t1))
#       for kshift in range(-maxLag, maxLag+1):
#           print("kshift,corr; %+3d %+12.6f" % (kshift, array[kshift + maxLag]))
      array = list(array)
      maxIndex = array.index(max(array)) - maxLag
      print("Index of maximum ", maxIndex)
      print("shift", shift)        
      assert maxIndex == shift
Example #3
0
# im0_small = im0_small[200:500,0:800]
# im1_small = im1_small[200:500,0:800]

# find the means of the images
mean0 = np.mean(im0_small)
mean1 = np.mean(im1_small)
print("mean1,mean2; %+12.4f %+12.4f" % (mean0, mean1))

# subtract the means from the small images
im0_small -= mean0
im1_small -= mean1

maxLag = 40
# estimate the horizontal shift for the 2D images
array = normalizedCorrelationHorzShift2D(im0_small, im1_small, maxLag)
for shift in range(-maxLag, maxLag + 1):
    print("shift,corr; %+3d %+12.6f" % (shift, array[shift + maxLag]))

array = list(array)
maxIndex = array.index(max(array)) - maxLag
print("Index of maximum ", maxIndex)

# exit()

# plot them
image = [array]
# plt.subplot(1,3,1)
# plt.imshow(image, cmap = "binary", interpolation='nearest')
plt.subplot(1, 2, 1)
plt.imshow(im0_small, cmap="binary", interpolation="nearest")
Example #4
0
# im0_small = im0_small[200:500,0:800]
# im1_small = im1_small[200:500,0:800]

#find the means of the images
mean0 = np.mean(im0_small)
mean1 = np.mean(im1_small)
print("mean1,mean2; %+12.4f %+12.4f" % (mean0, mean1))

#subtract the means from the small images
im0_small -= mean0
im1_small -= mean1

maxLag = 40
# estimate the horizontal shift for the 2D images
array = normalizedCorrelationHorzShift2D(im0_small, im1_small, maxLag)
for shift in range(-maxLag, maxLag + 1):
    print("shift,corr; %+3d %+12.6f" % (shift, array[shift + maxLag]))

array = list(array)
maxIndex = array.index(max(array)) - maxLag
print("Index of maximum ", maxIndex)

# exit()

#plot them
image = [array]
# plt.subplot(1,3,1)
# plt.imshow(image, cmap = "binary", interpolation='nearest')
plt.subplot(1, 2, 1)
plt.imshow(im0_small, cmap="binary", interpolation='nearest')