예제 #1
0
def calc_rms(im1, im2):

    # http://effbot.org/zone/pil-comparing-images.htm#rms
    # calculate the root-mean-square difference between two images
    source, compare = utility.open_image(im1, im2)

    "Calculate the root-mean-square difference between two images"
    diff = ImageChops.difference(source, compare)
    h = diff.histogram()
    sq = (value * (idx**2) for idx, value in enumerate(h))
    sum_of_squares = sum(sq)
    rms = math.sqrt(sum_of_squares / float(source.size[0] * source.size[1]))
    return round(rms, 0)
예제 #2
0
def ncc(im1, im2):

    n = 33856
    image, template = utility.open_image(im1, im2)

    np_image = numpy.asarray(image.getdata())
    np_template = numpy.asarray(template.getdata())

    image_mean = np_image.mean()
    image_std = np_image.std()

    template_mean = np_template.mean()
    template_std = np_template.std()

    s = sum(  ( image_mean / image_std ) * ( template_mean / template_std)  )
    x = 1 / n * s

    return x
예제 #3
0
def op_transform(im1, im2, operation):

    source, compare = utility.open_image(im1, im2)

    if operation == 'xor':
        x = algorithm.xor(source, compare)
        return x
    elif operation == 'union':
        x = ImageChops.multiply(source, compare)
        return x
    elif operation == 'subtract':
        x = algorithm.subtract(source, compare)
        return x
    elif operation == 'intersect':
        x = algorithm.intersect(source, compare)
        return x
    elif operation == 'modified-subtract-horizontal':
        x = algorithm.modified_subtract(source, compare, 'horizontal')
        return x
    elif operation == 'modified-subtract-vertical':
        x = algorithm.modified_subtract(source, compare, 'vertical')
        return x
예제 #4
0
def image_difference(im1, im2):

    source, compare = utility.open_image(im1, im2)
    return ImageChops.difference(source, compare).getbbox()