コード例 #1
0
def get_image_op(figures, orientation):

    xor = transformation.op_transform(figures[0], figures[1], 'xor')
    xor_similarity = ('xor', algorithm.calc_rms(xor, figures[2]))

    intersect = transformation.op_transform(figures[0], figures[1],
                                            'intersect')
    intersect_similarity = ('intersect',
                            algorithm.calc_rms(intersect, figures[2]))

    subtract = transformation.op_transform(figures[0], figures[1], 'subtract')
    subtract_similarity = ('subtract',
                           algorithm.calc_rms(subtract, figures[2]))

    union = transformation.op_transform(figures[0], figures[1], 'union')
    union_similarity = ('union', algorithm.calc_rms(union, figures[2]))

    modified_subtract = transformation.op_transform(
        figures[0], figures[1], 'modified-subtract-' + orientation)
    modified_subtract_similarity = ('modified-subtract-' + orientation,
                                    algorithm.calc_rms(modified_subtract,
                                                       figures[2]))

    comparisons = [
        xor_similarity, intersect_similarity, union_similarity,
        subtract_similarity, modified_subtract_similarity
    ]
    m = min(comparisons, key=lambda t: t[1])

    return m[0]
コード例 #2
0
def image_op_solver(figures, solutions, problem):
    operation = determine_single_image_op(figures)

    horizontal_tester = transformation.op_transform(figures[6], figures[7],
                                                    operation)
    vertical_tester = transformation.op_transform(figures[2], figures[5],
                                                  operation)

    horizontal_scores = []
    vertical_scores = []

    for i, solution in enumerate(solutions):

        x = algorithm.calc_rms(horizontal_tester, solution)
        horizontal_scores.append((i, x))

    for i, solution in enumerate(solutions):

        x = algorithm.calc_rms(vertical_tester, solution)
        vertical_scores.append((i, x))

    m_horizontal = min(horizontal_scores, key=lambda t: t[1])
    m_vertical = min(vertical_scores, key=lambda t: t[1])

    if m_horizontal[0] == m_vertical[
            0] or operation == 'modified-subtract-horizontal':
        scores = utility.get_score(m_horizontal, problem)
        return scores
    else:
        # need to determine which one to choose ?
        scores = utility.get_score(m_vertical, problem)
        return scores
コード例 #3
0
ファイル: Agent.py プロジェクト: logeyG/7637project
def image_op_solver(figures, solutions, problem):
    operation = determine_single_image_op(figures)

    horizontal_tester = transformation.op_transform(figures[6], figures[7], operation)
    vertical_tester = transformation.op_transform(figures[2], figures[5], operation)

    horizontal_scores = []
    vertical_scores = []

    for i, solution in enumerate(solutions):

        x = algorithm.calc_rms(horizontal_tester, solution)
        horizontal_scores.append( (i, x) )

    for i, solution in enumerate(solutions):

        x = algorithm.calc_rms(vertical_tester, solution)
        vertical_scores.append( (i, x) )

    m_horizontal = min(horizontal_scores, key=lambda t: t[1])
    m_vertical = min(vertical_scores, key=lambda t: t[1])

    if m_horizontal[0] == m_vertical[0] or operation == 'modified-subtract-horizontal':
        scores = utility.get_score(m_horizontal, problem)
        return scores
    else:
        # need to determine which one to choose ?
        scores = utility.get_score(m_vertical, problem)
        return scores
コード例 #4
0
def compare_top_bottom(scores, figures, solutions, problem):

    if not scores:
        scores = [.125, .125, .125, .125, .125, .125, .125, .125]

    g_blobs = algorithm.get_blobs(algorithm.find_regions(figures[6]))
    h_blobs = algorithm.get_blobs(algorithm.find_regions(figures[7]))

    top_g = g_blobs[algorithm.get_top(g_blobs)]
    bottom_h = h_blobs[algorithm.get_bottom(h_blobs)]

    possible_answers = []
    for i, score in enumerate(scores):
        if score != 0.0:
            possible_answers.append((i, solutions[i]))

    comparisons = []
    for answer in possible_answers:

        solution_blobs = algorithm.get_blobs(algorithm.find_regions(answer[1]))
        top_solution = solution_blobs[algorithm.get_top(solution_blobs)]
        bottom_solution = solution_blobs[algorithm.get_bottom(solution_blobs)]

        x = (answer[0], algorithm.calc_rms(top_g, top_solution) +
             algorithm.calc_rms(bottom_h, bottom_solution))
        comparisons.append(x)

    m = min(comparisons, key=lambda t: t[1])

    return m
コード例 #5
0
ファイル: comparison.py プロジェクト: logeyG/7637project
def compare_top_bottom(scores, figures, solutions, problem):

    if not scores:
        scores = [.125, .125, .125, .125, .125, .125, .125, .125]

    g_blobs = algorithm.get_blobs(algorithm.find_regions(figures[6]))
    h_blobs = algorithm.get_blobs(algorithm.find_regions(figures[7]))

    top_g = g_blobs[algorithm.get_top(g_blobs)]
    bottom_h = h_blobs[algorithm.get_bottom(h_blobs)]

    possible_answers = []
    for i, score in enumerate(scores):
        if score != 0.0:
            possible_answers.append( (i, solutions[i]))

    comparisons = []
    for answer in possible_answers:

        solution_blobs = algorithm.get_blobs(algorithm.find_regions(answer[1]))
        top_solution = solution_blobs[algorithm.get_top(solution_blobs)]
        bottom_solution = solution_blobs[algorithm.get_bottom(solution_blobs)]

        x = ( answer[0], algorithm.calc_rms(top_g, top_solution) + algorithm.calc_rms(bottom_h, bottom_solution))
        comparisons.append(x)

    m = min(comparisons, key=lambda t: t[1])

    return m
コード例 #6
0
def compare_union(scores, figures, solutions, problem):

    comparisons = []
    for i, score in enumerate(scores):

        if score != 0.0:

            if problem.problemType == '3x3':
                merged = utility.image_union(figures[5], figures[7])
                solution = Image.open(solutions[i].visualFilename)
                x = (i, algorithm.calc_rms(merged, solution))
            else:
                merged = utility.image_union(figures[1], figures[2])
                solution = Image.open(solutions[i].visualFilename)
                x = (i, algorithm.calc_rms(merged, solution))
            comparisons.append(x)

    m = min(comparisons, key=lambda t: t[1])

    return m
コード例 #7
0
ファイル: comparison.py プロジェクト: logeyG/7637project
def compare_union(scores, figures, solutions, problem):

    comparisons = []
    for i, score in enumerate(scores):

        if score != 0.0:

            if problem.problemType == '3x3':
                merged = utility.image_union(figures[5], figures[7])
                solution = Image.open(solutions[i].visualFilename)
                x = (i, algorithm.calc_rms(merged, solution))
            else:
                merged = utility.image_union(figures[1], figures[2])
                solution = Image.open(solutions[i].visualFilename)
                x = (i, algorithm.calc_rms(merged, solution))
            comparisons.append(x)

    m = min(comparisons, key=lambda t: t[1])

    return m
コード例 #8
0
ファイル: Agent.py プロジェクト: logeyG/7637project
def get_image_op(figures, orientation):

    xor = transformation.op_transform(figures[0], figures[1], 'xor')
    xor_similarity = ('xor', algorithm.calc_rms(xor, figures[2]))

    intersect = transformation.op_transform(figures[0], figures[1], 'intersect')
    intersect_similarity = ('intersect', algorithm.calc_rms(intersect, figures[2]))

    subtract = transformation.op_transform(figures[0], figures[1], 'subtract')
    subtract_similarity = ('subtract', algorithm.calc_rms(subtract, figures[2]))

    union = transformation.op_transform(figures[0], figures[1], 'union')
    union_similarity = ('union', algorithm.calc_rms(union, figures[2]))

    modified_subtract = transformation.op_transform(figures[0], figures[1], 'modified-subtract-' + orientation)
    modified_subtract_similarity = ('modified-subtract-' + orientation, algorithm.calc_rms(modified_subtract, figures[2]))

    comparisons = [xor_similarity, intersect_similarity, union_similarity, subtract_similarity, modified_subtract_similarity]
    m = min(comparisons, key=lambda t: t[1])

    return m[0]
コード例 #9
0
def compare_diagonal(scores, figures, solutions, problem):

    if not scores:
        scores = [.125, .125, .125, .125, .125, .125, .125, .125]

    possible_answers = []
    for i, score in enumerate(scores):
        if score != 0.0:
            possible_answers.append((i, solutions[i]))

    comparisons = []
    for answer in possible_answers:
        x = (answer[0], algorithm.calc_rms(figures[4], answer[1]))
        comparisons.append(x)

    m = min(comparisons, key=lambda t: t[1])

    return m
コード例 #10
0
ファイル: comparison.py プロジェクト: logeyG/7637project
def compare_diagonal(scores, figures, solutions, problem):

    if not scores:
        scores = [.125, .125, .125, .125, .125, .125, .125, .125]

    possible_answers = []
    for i, score in enumerate(scores):
        if score != 0.0:
            possible_answers.append( (i, solutions[i]))

    comparisons = []
    for answer in possible_answers:
        x = ( answer[0], algorithm.calc_rms(figures[4], answer[1]))
        comparisons.append(x)

    m = min(comparisons, key=lambda t: t[1])

    return m
コード例 #11
0
ファイル: transformation.py プロジェクト: logeyG/7637project
def equality(source, compare):

    if round(algorithm.calc_rms(source, compare), 0) < 970.0:
        return True
    else:
        return False