Esempio n. 1
0
def form_4i():

    # define former
    former = omrlib.Former()

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=20,
                          detect_mark_horizon_window=20,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=100)

    # define image clip setting
    former.set_clip(do_clip=True,
                    clip_left=0,
                    clip_right=0,
                    clip_top=330,
                    clip_bottom=650)

    # define location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define image files list
    former.get_file_list(
        path=local_path + 'omrimage4/',
        substr_list='I318'  # assign substr in path to filter
    )

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=6,
                           col_number=31,
                           valid_area_row_start=1,
                           valid_area_row_end=5,
                           valid_area_col_start=3,
                           valid_area_col_end=30,
                           location_row_no=6,
                           location_col_no=31)

    # define code cluster, contianing many areas
    # _group: (min_no, max_no), _coord: (left_col, top_row)
    cluster_group = [(1 + 5 * j, 5 + 5 * j) for j in range(5)]
    cluster_coord = [(1, 3 + 6 * j) for j in range(5)]
    for gno, loc in zip(cluster_group, cluster_coord):
        former.set_area(
            area_group=gno,  # area group from min=a to max=b (a, b)
            area_coord=loc,  # area location left_top = (row, col)
            area_direction=
            'v',  # area direction V:top to bottom, H:left to right
            group_direction=
            'h',  # group direction 'V','v': up to down, 'H','h': left to right
            group_code='ABCD',  # group code for painting block
            group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
        )

    return former
Esempio n. 2
0
def form_22():

    # define former
    former = omrlib.Former()

    # define image file
    former.get_file_list(
        path=local_path + 'omrimage2/',
        substr_list='OMR01.jpg'  # assign substr in filename+pathstr
    )

    # define mark location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=6,
                           col_number=31,
                           valid_area_row_start=1,
                           valid_area_row_end=5,
                           valid_area_col_start=1,
                           valid_area_col_end=30,
                           location_row_no=6,
                           location_col_no=31)

    # define cluster
    # _group: (min_no, max_no), _coord: (left_col, top_row)
    cluster_group = [(1, 5), (6, 10), (11, 15), (16, 20), (21, 25)]
    cluster_coord = [(1, 2), (1, 8), (1, 14), (1, 20), (1, 26)]
    for gno, loc in zip(cluster_group, cluster_coord):
        former.set_area(
            area_group=gno,  # area group from min=a to max=b (a, b)
            area_coord=loc,  # area location left_top = (row, col)
            area_direction=
            'v',  # area direction V:top to bottom, H:left to right
            group_direction=
            'h',  # group direction 'V','v': up to down, 'H','h': left to right
            group_code='ABCD',  # group code for painting block
            group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
        )

    # define image clip setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=20,
                          detect_mark_horizon_window=20,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=100)

    return former
Esempio n. 3
0
def form_497():
    former = omrlib.Former()

    # clip image setting
    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)

    former.get_file_list(path='d:/work/data/y18/497/726121/',
                         substr_list='jpg')

    # check mark setting
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)

    former.set_mark_format(row_number=45,
                           col_number=38,
                           valid_area_row_start=12,
                           valid_area_row_end=44,
                           valid_area_col_start=2,
                           valid_area_col_end=38,
                           location_row_no=45,
                           location_col_no=1)

    # define area
    former.set_area(
        area_group=(1, 15),  # area group from min=a to max=b (a, b)
        area_coord=(12, 24),  # area location left_top = (row, col)
        area_direction='h',  # area direction V:top to bottom, H:left to right
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code set for encoding
        group_mode='D'  # 'M':multi_choice, 'S':single_choice
    )

    # define cluster
    # group for each area: (min_no, max_no)
    cluster_group = [(101 + j * 5, 105 + j * 5) for j in range(6)]
    # location for each area: (left_col, top_row)
    cluster_coord = [(39, 4 + j * 6) for j in range(6)]
    for group_scope, loc_coord in zip(cluster_group, cluster_coord):
        former.set_area(
            area_group=group_scope,  # area group from min=a to max=b (a, b)
            area_coord=loc_coord,  # area location left_top = (row, col)
            area_direction=
            'v',  # area direction V:top to bottom, H:left to right
            group_direction='h',  # group direction from left to right
            group_code='ABCD',  # group code set for encoding
            group_mode='S' if loc_coord[1] < 28 else
            'M'  # 'M':multi_choice, 'S':single_choice
        )

    return former
Esempio n. 4
0
def form_201():
    former = omrlib.Former()

    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)

    former.get_file_list(path='d:/work/data/y18/201/783240/',
                         substr_list='jpg')

    # check mark setting
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)

    former.set_mark_format(row_number=55,
                           col_number=38,
                           valid_area_row_start=1,
                           valid_area_row_end=54,
                           valid_area_col_start=4,
                           valid_area_col_end=38,
                           location_row_no=55,
                           location_col_no=1)

    # define area
    former.set_area(
        area_group=(1, 15),  # area group from min=a to max=b (a, b)
        area_coord=(14, 24),  # area location left_top = (row, col)
        area_direction='h',  # area direction V:top to bottom, H:left to right
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code set for encoding
        group_mode='D'  # 'M':multi_choice, 'S':single_choice
    )

    # define cluster
    # group for each area: (min_no, max_no)
    cluster_group = [(101 + i * 10, 110 + i * 10)
                     for i in range(4)] + [(141, 145)]
    # location for each area: (left_col, top_row)
    cluster_coord = [(44, 4), (44, 10), (44, 18), (44, 24), (44, 31)]
    for group_scope, loc_coord in zip(cluster_group, cluster_coord):
        former.set_area(
            area_group=group_scope,  # area group from min=a to max=b (a, b)
            area_coord=loc_coord,  # area location left_top = (row, col)
            area_direction=
            'v',  # area direction V:top to bottom, H:left to right
            group_direction='h',  # group direction from left to right
            group_code='ABCD'
            if loc_coord[1] < 31 else 'ABCDEFG',  # group code set for encoding
            group_mode='S'  # 'M':multi_choice, 'S':single_choice
        )

    return former
Esempio n. 5
0
def form_109():
    former = omrlib.Former()

    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/109/', substr_list='jpg')
    # check mark setting
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    former.set_mark_format(row_number=61,
                           col_number=38,
                           valid_area_row_start=2,
                           valid_area_row_end=61,
                           valid_area_col_start=4,
                           valid_area_col_end=38,
                           location_row_no=61,
                           location_col_no=1)
    # define group_area, including mulit_groups
    former.set_area(
        area_group=(1, 15),  # group no from a to b (a, b)
        area_coord=(14, 24),  # group_area left_top_location = (row, col)
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D'  # if <bool> else 'M'
    )
    # define cluster_area_group_code
    #   group no list: (min_no, max_no)
    cluster_area_group = [(101 + 5 * n, 105 + 5 * n) for n in range(11)]
    #   area lt_corner: (left_col, top_row)
    cluster_area_coord = []
    # 4 clusters
    for i in range(4):
        # 3 areas
        cluster_area_coord += [(43, 5 + i * 9)]
        cluster_area_coord += [(49, 5 + i * 9)]
        if i < 3:
            cluster_area_coord += [(55, 5 + i * 9)]
    for group_scope, loc_coord in zip(cluster_area_group, cluster_area_coord):
        former.set_area(
            area_group=group_scope,
            area_coord=loc_coord,
            area_direction='v',  # area from top down to bottom
            group_direction='h',  # group direction from left to right
            group_code='ABCDE',  # group code for painting point
            group_mode='S'  # if group_min2max[0] in range(, ) else 'M','D'
        )
    return former
Esempio n. 6
0
def form_1():
    # define former
    former = omrlib.Former()

    # define image file
    former.get_file_list(
        path=local_path + 'omrimage1/',
        substr_list='jpg'  # assign substr in filename+pathstr
    )

    # define mark location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=14,
                           col_number=37,
                           valid_area_row_start=1,
                           valid_area_row_end=10,
                           valid_area_col_start=23,
                           valid_area_col_end=36,
                           location_row_no=14,
                           location_col_no=37)

    # define area
    former.set_area(
        area_group=(1, 14),  # area group from min=a to max=b (a, b)
        area_coord=(1, 23),  # area location left_top = (row, col)
        area_direction='h',  # area direction V:top to bottom, H:left to right
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting block
        group_mode='D'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define image clip setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=20,
                          detect_mark_horizon_window=20,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=100)

    return former
Esempio n. 7
0
def form_101():
    former = omrlib.Former()

    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/101/783240/',
                         substr_list='jpg')
    # check mark setting
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    former.set_mark_format(row_number=50,
                           col_number=38,
                           valid_area_row_start=2,
                           valid_area_row_end=50,
                           valid_area_col_start=2,
                           valid_area_col_end=38,
                           location_row_no=1,
                           location_col_no=1)
    # define group_area, including mulit_groups
    former.set_area(
        area_group=(1, 15),  # group no from a to b (a, b)
        area_coord=(12, 24),  # group_area left_top_location = (row, col)
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D'  # if <bool> else 'M'
    )
    # define cluster_area_group_code
    #   group no list: (min_no, max_no)
    cluster_area_group = [(101, 106), (107, 112), (113, 118), (119, 124),
                          (125, 130), (131, 133)]
    #   area lt_corner: (left_col, top_row)
    cluster_area_coord = [(42, 4 + i * 6) for i in range(6)]
    for group_scope, loc_coord in zip(cluster_area_group, cluster_area_coord):
        former.set_area(
            area_group=group_scope,
            area_coord=loc_coord,
            area_direction='v',  # area from top down to bottom
            group_direction='h',  # group direction from left to right
            group_code='ABCD',  # group code for painting point
            group_mode='S' if group_scope[0] < 113 else
            'M'  # if group_min2max[0] in range(, ) else 'M','D'
        )
    return former
Esempio n. 8
0
def form_414_omr01():
    former = omrlib.Former()
    # clip image setting
    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/414', substr_list='jpg')
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    for f in former.form['image_file_list']:
        if 'Omr02' in f:
            former.form['image_file_list'].remove(f)
    former.set_mark_format(row_number=45,
                           col_number=38,
                           valid_area_row_start=12,
                           valid_area_row_end=44,
                           valid_area_col_start=2,
                           valid_area_col_end=38,
                           location_row_no=45,
                           location_col_no=1)
    # define group_area, including mulit_groups
    former.set_area(
        area_group=(1, 15),
        area_coord=(12, 24),
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D')
    # define area_cluster, including multi group_areas
    cluster_area_group = [(101 + i * 3, 103 + i * 3)
                          for i in range(5)]  # group no: (min, max)
    cluster_area_coord = [(41, 5 + i * 7) for i in range(5)
                          ]  # area coord: (left col no, top row no)
    for group_min2max, area_coord in zip(cluster_area_group,
                                         cluster_area_coord):
        former.set_area(
            area_group=(group_min2max[0], group_min2max[1]),
            area_coord=area_coord,
            area_direction='v',  # area from top down to bottom
            group_direction='h',  # group direction from left to right
            group_code='ABCD'  # group code for painting point
        )
    return former
Esempio n. 9
0
def form_204():
    former = omrlib.Former()

    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)

    former.get_file_list(path='d:/work/data/y18/204/', substr_list='jpg')

    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)

    former.set_mark_format(row_number=55,
                           col_number=38,
                           valid_area_row_start=13,
                           valid_area_row_end=53,
                           valid_area_col_start=4,
                           valid_area_col_end=38,
                           location_row_no=55,
                           location_col_no=1)

    former.set_area(area_group=(1, 15),
                    area_coord=(14, 24),
                    area_direction='h',
                    group_direction='V',
                    group_code='0123456789',
                    group_mode='D')
    for i, col in enumerate([4, 10, 18, 24]):
        former.set_area(area_group=(101 + i * 10, 110 + i * 10),
                        area_coord=(44, col),
                        area_direction='v',
                        group_direction='h',
                        group_code='ABCD')
    former.set_area(area_group=(156, 160),
                    area_coord=(44, 31),
                    area_direction='v',
                    group_direction='h',
                    group_code='ABCDEFG')

    return former
Esempio n. 10
0
def form_408():
    former = omrlib.Former()
    # clip image setting
    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/408', substr_list='jpg')
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    former.set_mark_format(row_number=50,
                           col_number=38,
                           valid_area_row_start=12,
                           valid_area_row_end=49,
                           valid_area_col_start=7,
                           valid_area_col_end=38,
                           location_row_no=50,
                           location_col_no=1)
    # define group_area, including mulit_groups
    former.set_area(
        area_group=(1, 15),
        area_coord=(12, 24),
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D')
    # define area_cluster, including multi group_areas
    cluster_area_group = [(101 + i * 10, 110 + i * 10)
                          for i in range(4)]  # group no: (min, max)
    cluster_area_coord = [(39, 7 + i * 8) for i in range(4)
                          ]  # area coord: (left col no, top row no)
    for group_min2max, area_coord in zip(cluster_area_group,
                                         cluster_area_coord):
        former.set_area(
            area_group=group_min2max,
            area_coord=area_coord,
            area_direction='v',  # area from top down to bottom
            group_direction='h',  # group direction from left to right
            group_code='ABCD',  # group code for painting point
            group_mode='S')
    return former
Esempio n. 11
0
def form_314():
    former = omrlib.Former()

    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/314/723084/',
                         substr_list='jpg')
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    former.set_mark_format(row_number=44,
                           col_number=26,
                           valid_area_row_start=13,
                           valid_area_row_end=43,
                           valid_area_col_start=2,
                           valid_area_col_end=26,
                           location_row_no=44,
                           location_col_no=1)
    # define a group_area for mulit_groups
    former.set_area(
        area_group=(1, 15),
        area_coord=(13, 12),
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D')
    # define some group_areas (define multi group_area)
    g_area_lefttop_coord = [(41, 4), (42, 4)]
    g_area_no_min_max = [(101, 104), (105, 108)]
    for coord, gno in zip(g_area_lefttop_coord, g_area_no_min_max):
        # group: group_no = gno[0] to gno[1], left_top = coord
        former.set_area(
            area_group=(gno[0], gno[1]),
            area_coord=coord,
            area_direction='h',  # area from top down to bottom
            group_direction='h',  # group direction from left to right
            group_code='ABCD'  # group code for painting point
        )
    return former
Esempio n. 12
0
def form_315():
    former = omrlib.Former()
    # clip image setting
    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/315/738111/',
                         substr_list='jpg')
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    former.set_mark_format(row_number=56,
                           col_number=26,
                           valid_area_row_start=2,
                           valid_area_row_end=55,
                           valid_area_col_start=2,
                           valid_area_col_end=26,
                           location_row_no=1,
                           location_col_no=1)
    # define a group_area for mulit_groups
    former.set_area(
        area_group=(1, 15),
        area_coord=(13, 12),
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D')
    # define area_cluster: many group_areas
    g_area_lefttop_coord = [(44, 5), (44, 13), (44, 21)]
    g_area_no_min_max = [(101, 110), (111, 120), (121, 130)]
    for coord, gno in zip(g_area_lefttop_coord, g_area_no_min_max):
        # group: group_no = gno[0] to gno[1], left_top = coord
        former.set_area(
            area_group=(gno[0], gno[1]),
            area_coord=coord,
            area_direction='v',  # area from top down to bottom
            group_direction='h',  # group direction from left to right
            group_code='ABCD'  # group code for painting point
        )
    return former
Esempio n. 13
0
def form_397():
    former = omrlib.Former()
    # clip image setting
    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)
    former.get_file_list(path='d:/work/data/y18/397', substr_list='jpg')
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)
    former.set_mark_format(row_number=45,
                           col_number=38,
                           valid_area_row_start=12,
                           valid_area_row_end=44,
                           valid_area_col_start=2,
                           valid_area_col_end=38,
                           location_row_no=45,
                           location_col_no=1)
    # define group_area, including mulit_groups
    former.set_area(
        area_group=(1, 15),
        area_coord=(12, 24),
        area_direction='h',  # area from top down to bottom
        group_direction='v',  # group direction from left to right
        group_code='0123456789',  # group code for painting point
        group_mode='D')
    # define area_cluster, including multi group_areas
    cluster_area_group = [(101 + i * 5, 105 + i * 5) for i in range(6)]
    cluster_area_coord = [(39, 4 + i * 6) for i in range(6)]
    for group_min2max, area_coord in zip(cluster_area_group,
                                         cluster_area_coord):
        # group: group_no = g[0] to g[1], area left_top = coord
        former.set_area(
            area_group=(group_min2max[0], group_min2max[1]),
            area_coord=area_coord,
            area_direction='v',  # area from top down to bottom
            group_direction='h',
            group_code='ABCD',  # group code for painting point
            group_mode='S' if group_min2max[0] < 121 else 'M')
    return former
Esempio n. 14
0
def form_21():

    former = omrlib.Former()

    former.get_file_list(path=local_path + 'omrimage2/',
                         substr_list='omr01.jpg')

    # clip image setting
    former.set_clip(do_clip=True,
                    clip_left=0,
                    clip_right=35,
                    clip_top=0,
                    clip_bottom=90)

    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    former.set_mark_format(row_number=11,
                           col_number=20,
                           valid_area_row_start=1,
                           valid_area_row_end=10,
                           valid_area_col_start=1,
                           valid_area_col_end=19,
                           location_row_no=11,
                           location_col_no=20)
    # define area_cluster, including multi group_areas
    # group2 = {i + j * 5: [(i, 2 + j * 6), 4, 'H', 'ABCD', 'S'] for i in range(1, 6)
    cluster_area_group = [(1, 19)]  # group no list: (min, max)
    cluster_area_coord = [(1, 1)]
    for group_min2max, area_coord in zip(cluster_area_group,
                                         cluster_area_coord):
        former.set_area(
            area_group=group_min2max,
            area_coord=area_coord,
            area_direction='h',  # area from top down to bottom
            group_direction='v',  # group direction from left to right
            group_code='0123456789',  # group code for painting point
            group_mode='D'  # if group_min2max[0] in range(, ) else 'M'
        )
    return former
Esempio n. 15
0
def form_203():
    former = omrlib.Former()
    former.get_file_list(path='d:/work/data/y18/203/', substr_list='jpg')
    # clip image setting
    former.set_clip(do_clip=False,
                    clip_left=0,
                    clip_right=0,
                    clip_top=0,
                    clip_bottom=0)

    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(False)

    former.set_mark_format(row_number=51,
                           col_number=38,
                           valid_area_row_start=13,
                           valid_area_row_end=50,
                           valid_area_col_start=5,
                           valid_area_col_end=38,
                           location_row_no=51,
                           location_col_no=1)
    former.set_area(area_group=(1, 15),
                    area_coord=(13, 24),
                    area_direction='h',
                    group_direction='V',
                    group_code='0123456789',
                    group_mode='D')
    col_pos = [5, 14, 23, 32]
    for no, col in enumerate(col_pos):
        former.set_area(area_group=(101 + 10 * no, 110 + 10 * no),
                        area_coord=(40, col),
                        area_direction='v',
                        group_direction='h',
                        group_code='ABCD',
                        group_mode='S')
    return former
Esempio n. 16
0
def form_0():

    # define former
    former = omrlib.Former()

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=15,
                          detect_mark_horizon_window=12,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=20)

    # define image clip setting
    former.set_clip(do_clip=True,
                    clip_left=0,
                    clip_right=0,
                    clip_top=150,
                    clip_bottom=0)

    # define location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define image files list
    former.get_file_list(
        path=local_path + 'omrimage0/',
        substr_list='jpg'  # assign substr in path to filter
    )

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=11,
                           col_number=31,
                           valid_area_row_start=1,
                           valid_area_row_end=10,
                           valid_area_col_start=1,
                           valid_area_col_end=30,
                           location_row_no=11,
                           location_col_no=31)

    # define cluster
    former.set_cluster(
        cluster_group_list=[(1 + j * 5, 5 + j * 5) for j in range(5)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(1, 3 + 6 * j)
                            for j in range(5)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster
    former.set_cluster(
        cluster_group_list=[(26 + j * 5, 30 + j * 5) for j in range(5)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(6, 3 + 6 * j)
                            for j in range(5)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define score_dict
    # {group:{code:score,}}
    former.set_score(do_score=True,
                     score_dict={
                         1: {
                             'D': 1.5,
                             'A': 2,
                             'C': 0.5
                         },
                         2: {
                             'A': 3
                         },
                         3: {
                             'B': 1
                         },
                         4: {
                             'B': 2
                         },
                         5: {
                             'C': 1
                         }
                     })

    return former
Esempio n. 17
0
def form_6():

    # define former
    former = omrlib.Former()

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=20,
                          detect_mark_horizon_window=20,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=100)

    # define image clip setting
    former.set_clip(do_clip=True,
                    clip_left=0,
                    clip_right=20,
                    clip_top=330,
                    clip_bottom=0)

    # define location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define image files list
    former.get_file_list(
        path=local_path + 'omrimage6/',
        substr_list='S86'  # assign substr in path to filter
    )

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=40,
                           col_number=26,
                           valid_area_row_start=1,
                           valid_area_row_end=39,
                           valid_area_col_start=1,
                           valid_area_col_end=25,
                           location_row_no=40,
                           location_col_no=26)

    # define cluster1
    former.set_cluster(
        cluster_group_list=[(1 + 5 * j, 5 + 5 * j) for j in range(4)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(2, 3 + 6 * j)
                            for j in range(4)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='M'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster2
    former.set_cluster(
        cluster_group_list=[(21 + 5 * j, 25 + 5 * j) for j in range(4)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(7, 3 + 6 * j)
                            for j in range(4)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='M'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster3
    former.set_cluster(
        cluster_group_list=[(41 + 5 * j, 45 + 5 * j) for j in range(4)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(12, 3 + 6 * j)
                            for j in range(4)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='M'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster4
    former.set_cluster(
        cluster_group_list=[(61 + 5 * j, 65 + 5 * j) for j in range(4)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(17, 3 + 6 * j)
                            for j in range(4)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster5
    former.set_cluster(
        cluster_group_list=[(81, 84)],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(22, 3)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster6
    former.set_cluster(
        cluster_group_list=[(85 + 5 * j, 89 + 5 * j) for j in range(4)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(26, 3 + 6 * j)
                            for j in range(4)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster7
    former.set_cluster(
        cluster_group_list=[(105, 108)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(31, 3)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster8
    former.set_cluster(
        cluster_group_list=[(109 + 5 * j, 113 + 5 * j) for j in range(2)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(35, 3 + 9 * j)
                            for j in range(2)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='M'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster9
    former.set_cluster(
        cluster_group_list=[(119, 120)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(35, 21)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCDE',  # group code for painting block
        group_mode='M'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define score_dict
    # {group:{code:score,}}
    former.set_score(do_score=True,
                     score_dict={
                         1: {
                             'A': 1
                         },
                         2: {
                             'c': 1
                         },
                         3: {
                             'D': 1
                         },
                         4: {
                             'e': 1
                         },
                         5: {
                             'c': 1
                         },
                         6: {
                             'A': 1
                         },
                         7: {
                             'B': 1
                         },
                         8: {
                             'e': 1
                         },
                         9: {
                             'D': 1
                         },
                         10: {
                             'e': 10
                         },
                     })
    return former
Esempio n. 18
0
def form_7():

    # define former
    former = omrlib.Former()

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=15,
                          detect_mark_horizon_window=12,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=20)

    # define image clip setting
    former.set_clip(do_clip=True,
                    clip_left=0,
                    clip_right=0,
                    clip_top=130,
                    clip_bottom=0)

    # define location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define image files list
    former.get_file_list(
        path='d:/study/dataset/omrimage7/',
        substr_list='jpg'  # assign substr in path to filter
    )

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=16,
                           col_number=31,
                           valid_area_row_start=1,
                           valid_area_row_end=15,
                           valid_area_col_start=1,
                           valid_area_col_end=30,
                           location_row_no=16,
                           location_col_no=31)

    # define cluster1
    former.set_cluster(
        cluster_group_list=[(1 + j * 5, 5 + j * 5) for j in range(5)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(1, 3 + j * 6)
                            for j in range(5)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster2
    former.set_cluster(
        cluster_group_list=[(26 + j * 5, 30 + j * 5) for j in range(5)
                            ],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(6, 3 + j * 6)
                            for j in range(5)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define cluster3
    former.set_cluster(
        cluster_group_list=[(51, 55)],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(11, 3)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define code area, containing many groups
    former.set_area(
        area_group=(56, 60),  # area group from min=a to max=b (a, b)
        area_coord=(11, 9),  # area location left_top = (row, col)
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction='h',  # group direction from left to right
        group_code='ABCDEFGH',  # group code for painting block
        group_mode=
        'D'  # group mode 'M': multi_choice, 'S': single_choice, 'D':digit
    )

    # define score_dict
    # {group:{code:score,}}
    former.set_score(do_score=False,
                     score_dict={
                         1: {
                             'A': 1
                         },
                         2: {
                             'A': 1
                         },
                         3: {
                             'A': 1
                         },
                         4: {
                             'A': 1
                         },
                         5: {
                             'A': 1
                         }
                     })

    return former
Esempio n. 19
0
def form_ws_dell():
    # define former
    former = openomr.Former()

    # define model parameters
    former.set_model_para(
        valid_painting_gray_threshold=35,
        valid_peak_min_width=3,
        valid_peak_min_max_width_ratio=5,
        detect_mark_vertical_window=15,
        detect_mark_horizon_window=12,
        detect_mark_step_length=5,
        detect_mark_max_stepnum=20
    )

    # define image clip setting
    former.set_clip(
        do_clip=True,
        clip_left=0,
        clip_right=720,
        clip_top=300,
        clip_bottom=530
    )

    # define location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define image files list
    former.get_file_list(
        path='d:/work/data/g17/ws/',
        substr_list='jpg'  # assign substr in path to filter
    )

    # define mark format: row/column number, valid area, location
    former.set_mark_format(
        row_number=6,
        col_number=26,
        valid_area_row_start=1,
        valid_area_row_end=5,
        valid_area_col_start=1,
        valid_area_col_end=25,
        location_row_no=6,
        location_col_no=26
    )

    # define cluster
    former.set_cluster(
        cluster_group_list=[(1, 5), (6, 10)],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(1, 3), (1, 9)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction='h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define score_dict
    # {group:{code:score,}}
    former.set_score(
        do_score=False,
        score_dict={
            1: {'A': 1},
            2: {'B': 1},
            3: {'C': 1},
            4: {'D': 1},
            5: {'A': 2},
        }
    )

    return former
Esempio n. 20
0
def form_8():

    # define former
    former = omrlib.Former()

    # define model parameters
    former.set_model_para(valid_painting_gray_threshold=35,
                          valid_peak_min_width=3,
                          valid_peak_min_max_width_ratio=5,
                          detect_mark_vertical_window=15,
                          detect_mark_horizon_window=12,
                          detect_mark_step_length=5,
                          detect_mark_max_stepnum=20)

    # define image clip setting
    '''
    former.set_clip(
        do_clip=True,
        clip_left=60,
        clip_right=800,
        clip_top=330,
        clip_bottom=630
        )
    '''
    former.set_clip_box(do_clip=True,
                        clip_box_left=45,
                        clip_box_right=850,
                        clip_box_top=330,
                        clip_box_bottom=500)

    # define location for checking mark
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)

    # define image files list
    former.get_file_list(
        path=local_path + '/omrimage8',  # 'd:/study/dataset/omrimage8/',
        substr_list='_01'  # assign substr in path to filter
    )

    # define mark format: row/column number, valid area, location
    former.set_mark_format(row_number=6,
                           col_number=31,
                           valid_area_row_start=1,
                           valid_area_row_end=5,
                           valid_area_col_start=3,
                           valid_area_col_end=30,
                           location_row_no=6,
                           location_col_no=31)

    # define cluster
    former.set_cluster(
        cluster_group_list=[(1, 5), (6, 10),
                            (11, 12)],  # group scope (min_no, max_no) per area
        cluster_coord_list=[(1, 3 + 6 * j)
                            for j in range(3)],  # left_top coord per area
        area_direction='v',  # area direction V:top to bottom, H:left to right
        group_direction=
        'h',  # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',  # group code for painting block
        group_mode='S'  # group mode 'M': multi_choice, 'S': single_choice
    )

    # define score_dict
    # {group:{code:score,}}
    former.set_score(do_score=False,
                     score_dict={
                         1: {
                             'A': 1
                         },
                         2: {
                             'A': 1
                         },
                         3: {
                             'A': 1
                         },
                         4: {
                             'A': 1
                         },
                         5: {
                             'A': 1
                         },
                         6: {
                             'A': 1
                         },
                         7: {
                             'A': 1
                         },
                         8: {
                             'A': 1
                         },
                         9: {
                             'A': 1
                         },
                         10: {
                             'A': 1
                         }
                     })

    return former
Esempio n. 21
0
def form_xxx():
    
    # define former
    former = openomr.Former()
    
    # define model parameters
    former.set_model_para(
        valid_painting_gray_threshold=35,
        valid_peak_min_width=3,
        valid_peak_min_max_width_ratio=5,
        detect_mark_vertical_window=15,
        detect_mark_horizon_window=12,
        detect_mark_step_length=5,
        detect_mark_max_stepnum=20
        )
    
    # define image clip setting
    #     left_top_coner: left(x,  column), top(y, row), 
    # right_bottom_coner: right(x, column), bottom(y, row)
    former.set_clip_box(
        do_clip=True,
        clip_box_left=0,
        clip_box_top=300,
        clip_box_right=760,
        clip_box_bottom=490
        )

    # define location for checking mark 
    former.set_check_mark_from_bottom(True)
    former.set_check_mark_from_right(True)
    
    # define image files list
    former.get_file_list(
        path='f:/studies/data/data/wss/', 
        substr_list='jpg'    # assign substr in path to filter
        )
    
    # define mark format: row/column number[1-n], valid area[1-n], location[1-n]
    former.set_mark_format(
        row_number=6,
        col_number=26,
        valid_area_row_start=1,
        valid_area_row_end=5,
        valid_area_col_start=1,
        valid_area_col_end=25,
        location_row_no=6,
        location_col_no=26
        )
    
    # define code area, containing many groups
    former.set_area(
        area_group=(1, 15),         # area group from min=a to max=b (a, b)
        area_coord=(10, 20),        # area location left_top = (row, col)
        area_direction='h',         # area direction V:top to bottom, H:left to right
        group_direction='v',        # group direction from left to right
        group_code='0123456789',    # group code for painting block
        group_mode='D'              # group mode 'M': multi_choice, 'S': single_choice, 'D':digit
        )
    
    # define cluster
    former.set_cluster(
        cluster_group_list=[(100, 105), (106, 110)],    # group scope (min_no, max_no) per area
        cluster_coord_list=[(1, 3), (1, 9)],            # left_top coord per area
        area_direction='v',      # area direction V:top to bottom, H:left to right
        group_direction='h',     # group direction 'V','v': up to down, 'H','h': left to right
        group_code='ABCD',       # group code for painting block
        group_mode='S'           # group mode 'M': multi_choice, 'S': single_choice
        )
    
    # define score_dict
    # {group:{code:score,}}
    former.set_score(
        do_score=False,
        score_dict={
            1: {'A': 1},
            2: {'A': 1},
            3: {'A': 1},
            4: {'A': 1},
            5: {'A': 1},
        }
    )
    
    return former