mirror of
https://github.com/qurator-spk/eynollah.git
synced 2026-01-29 13:46:58 +01:00
mapregion is added to labels
This commit is contained in:
parent
c8240905a8
commit
30f39e7383
2 changed files with 70 additions and 4 deletions
|
|
@ -474,7 +474,7 @@ def visualize_layout_segmentation(xml_file, dir_xml, dir_out, dir_imgs):
|
||||||
img_file_name_with_format = find_format_of_given_filename_in_dir(dir_imgs, f_name)
|
img_file_name_with_format = find_format_of_given_filename_in_dir(dir_imgs, f_name)
|
||||||
img = cv2.imread(os.path.join(dir_imgs, img_file_name_with_format))
|
img = cv2.imread(os.path.join(dir_imgs, img_file_name_with_format))
|
||||||
|
|
||||||
co_text, co_graphic, co_sep, co_img, co_table, co_noise, y_len, x_len = get_layout_contours_for_visualization(xml_file)
|
co_text, co_graphic, co_sep, co_img, co_table, co_map, co_noise, y_len, x_len = get_layout_contours_for_visualization(xml_file)
|
||||||
|
|
||||||
|
|
||||||
added_image = visualize_image_from_contours_layout(co_text['paragraph'], co_text['header']+co_text['heading'], co_text['drop-capital'], co_sep, co_img, co_text['marginalia'], co_table, img)
|
added_image = visualize_image_from_contours_layout(co_text['paragraph'], co_text['header']+co_text['heading'], co_text['drop-capital'], co_sep, co_img, co_text['marginalia'], co_table, img)
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ with warnings.catch_warnings():
|
||||||
warnings.simplefilter("ignore")
|
warnings.simplefilter("ignore")
|
||||||
|
|
||||||
|
|
||||||
def visualize_image_from_contours_layout(co_par, co_header, co_drop, co_sep, co_image, co_marginal, co_table, img):
|
def visualize_image_from_contours_layout(co_par, co_header, co_drop, co_sep, co_image, co_marginal, co_table, co_map, img):
|
||||||
alpha = 0.5
|
alpha = 0.5
|
||||||
|
|
||||||
blank_image = np.ones( (img.shape[:]), dtype=np.uint8) * 255
|
blank_image = np.ones( (img.shape[:]), dtype=np.uint8) * 255
|
||||||
|
|
@ -28,6 +28,7 @@ def visualize_image_from_contours_layout(co_par, co_header, co_drop, co_sep, co_
|
||||||
col_sep = (255, 0, 0)
|
col_sep = (255, 0, 0)
|
||||||
col_marginal = (106, 90, 205)
|
col_marginal = (106, 90, 205)
|
||||||
col_table = (0, 90, 205)
|
col_table = (0, 90, 205)
|
||||||
|
col_map = (90, 90, 205)
|
||||||
|
|
||||||
if len(co_image)>0:
|
if len(co_image)>0:
|
||||||
cv2.drawContours(blank_image, co_image, -1, col_image, thickness=cv2.FILLED) # Fill the contour
|
cv2.drawContours(blank_image, co_image, -1, col_image, thickness=cv2.FILLED) # Fill the contour
|
||||||
|
|
@ -52,6 +53,9 @@ def visualize_image_from_contours_layout(co_par, co_header, co_drop, co_sep, co_
|
||||||
|
|
||||||
if len(co_table)>0:
|
if len(co_table)>0:
|
||||||
cv2.drawContours(blank_image, co_table, -1, col_table, thickness=cv2.FILLED) # Fill the contour
|
cv2.drawContours(blank_image, co_table, -1, col_table, thickness=cv2.FILLED) # Fill the contour
|
||||||
|
|
||||||
|
if len(co_map)>0:
|
||||||
|
cv2.drawContours(blank_image, co_map, -1, col_map, thickness=cv2.FILLED) # Fill the contour
|
||||||
|
|
||||||
img_final =cv2.cvtColor(blank_image, cv2.COLOR_BGR2RGB)
|
img_final =cv2.cvtColor(blank_image, cv2.COLOR_BGR2RGB)
|
||||||
|
|
||||||
|
|
@ -380,6 +384,7 @@ def get_layout_contours_for_visualization(xml_file):
|
||||||
co_sep=[]
|
co_sep=[]
|
||||||
co_img=[]
|
co_img=[]
|
||||||
co_table=[]
|
co_table=[]
|
||||||
|
co_map=[]
|
||||||
co_noise=[]
|
co_noise=[]
|
||||||
|
|
||||||
types_text = []
|
types_text = []
|
||||||
|
|
@ -596,6 +601,31 @@ def get_layout_contours_for_visualization(xml_file):
|
||||||
elif vv.tag!=link+'Point' and sumi>=1:
|
elif vv.tag!=link+'Point' and sumi>=1:
|
||||||
break
|
break
|
||||||
co_table.append(np.array(c_t_in))
|
co_table.append(np.array(c_t_in))
|
||||||
|
|
||||||
|
if tag.endswith('}MapRegion') or tag.endswith('}mapregion'):
|
||||||
|
#print('sth')
|
||||||
|
for nn in root1.iter(tag):
|
||||||
|
c_t_in=[]
|
||||||
|
sumi=0
|
||||||
|
for vv in nn.iter():
|
||||||
|
# check the format of coords
|
||||||
|
if vv.tag==link+'Coords':
|
||||||
|
coords=bool(vv.attrib)
|
||||||
|
if coords:
|
||||||
|
p_h=vv.attrib['points'].split(' ')
|
||||||
|
c_t_in.append( np.array( [ [ int(x.split(',')[0]) , int(x.split(',')[1]) ] for x in p_h] ) )
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if vv.tag==link+'Point':
|
||||||
|
c_t_in.append([ int(float(vv.attrib['x'])) , int(float(vv.attrib['y'])) ])
|
||||||
|
sumi+=1
|
||||||
|
#print(vv.tag,'in')
|
||||||
|
elif vv.tag!=link+'Point' and sumi>=1:
|
||||||
|
break
|
||||||
|
co_map.append(np.array(c_t_in))
|
||||||
|
|
||||||
|
|
||||||
if tag.endswith('}NoiseRegion') or tag.endswith('}noiseregion'):
|
if tag.endswith('}NoiseRegion') or tag.endswith('}noiseregion'):
|
||||||
|
|
@ -622,7 +652,7 @@ def get_layout_contours_for_visualization(xml_file):
|
||||||
elif vv.tag!=link+'Point' and sumi>=1:
|
elif vv.tag!=link+'Point' and sumi>=1:
|
||||||
break
|
break
|
||||||
co_noise.append(np.array(c_t_in))
|
co_noise.append(np.array(c_t_in))
|
||||||
return co_text, co_graphic, co_sep, co_img, co_table, co_noise, y_len, x_len
|
return co_text, co_graphic, co_sep, co_img, co_table, co_map, co_noise, y_len, x_len
|
||||||
|
|
||||||
def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_file, config_params, printspace, dir_images, dir_out_images):
|
def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_file, config_params, printspace, dir_images, dir_out_images):
|
||||||
"""
|
"""
|
||||||
|
|
@ -841,7 +871,7 @@ def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_
|
||||||
types_graphic_label = list(types_graphic_dict.values())
|
types_graphic_label = list(types_graphic_dict.values())
|
||||||
|
|
||||||
|
|
||||||
labels_rgb_color = [ (0,0,0), (255,0,0), (255,125,0), (255,0,125), (125,255,125), (125,125,0), (0,125,255), (0,125,0), (125,125,125), (255,0,255), (125,0,125), (0,255,0),(0,0,255), (0,255,255), (255,125,125), (0,125,125), (0,255,125), (255,125,255), (125,255,0)]
|
labels_rgb_color = [ (0,0,0), (255,0,0), (255,125,0), (255,0,125), (125,255,125), (125,125,0), (0,125,255), (0,125,0), (125,125,125), (255,0,255), (125,0,125), (0,255,0),(0,0,255), (0,255,255), (255,125,125), (0,125,125), (0,255,125), (255,125,255), (125,255,0), (125,255,255)]
|
||||||
|
|
||||||
|
|
||||||
region_tags=np.unique([x for x in alltags if x.endswith('Region')])
|
region_tags=np.unique([x for x in alltags if x.endswith('Region')])
|
||||||
|
|
@ -852,6 +882,7 @@ def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_
|
||||||
co_sep=[]
|
co_sep=[]
|
||||||
co_img=[]
|
co_img=[]
|
||||||
co_table=[]
|
co_table=[]
|
||||||
|
co_map=[]
|
||||||
co_noise=[]
|
co_noise=[]
|
||||||
|
|
||||||
for tag in region_tags:
|
for tag in region_tags:
|
||||||
|
|
@ -1062,6 +1093,32 @@ def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_
|
||||||
elif vv.tag!=link+'Point' and sumi>=1:
|
elif vv.tag!=link+'Point' and sumi>=1:
|
||||||
break
|
break
|
||||||
co_table.append(np.array(c_t_in))
|
co_table.append(np.array(c_t_in))
|
||||||
|
|
||||||
|
if 'mapregion' in keys:
|
||||||
|
if tag.endswith('}MapRegion') or tag.endswith('}mapregion'):
|
||||||
|
#print('sth')
|
||||||
|
for nn in root1.iter(tag):
|
||||||
|
c_t_in=[]
|
||||||
|
sumi=0
|
||||||
|
for vv in nn.iter():
|
||||||
|
# check the format of coords
|
||||||
|
if vv.tag==link+'Coords':
|
||||||
|
coords=bool(vv.attrib)
|
||||||
|
if coords:
|
||||||
|
p_h=vv.attrib['points'].split(' ')
|
||||||
|
c_t_in.append( np.array( [ [ int(x.split(',')[0]) , int(x.split(',')[1]) ] for x in p_h] ) )
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if vv.tag==link+'Point':
|
||||||
|
c_t_in.append([ int(float(vv.attrib['x'])) , int(float(vv.attrib['y'])) ])
|
||||||
|
sumi+=1
|
||||||
|
#print(vv.tag,'in')
|
||||||
|
elif vv.tag!=link+'Point' and sumi>=1:
|
||||||
|
break
|
||||||
|
co_map.append(np.array(c_t_in))
|
||||||
|
|
||||||
if 'noiseregion' in keys:
|
if 'noiseregion' in keys:
|
||||||
if tag.endswith('}NoiseRegion') or tag.endswith('}noiseregion'):
|
if tag.endswith('}NoiseRegion') or tag.endswith('}noiseregion'):
|
||||||
|
|
@ -1135,6 +1192,10 @@ def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_
|
||||||
erosion_rate = 0#2
|
erosion_rate = 0#2
|
||||||
dilation_rate = 3#4
|
dilation_rate = 3#4
|
||||||
co_table, img_boundary = update_region_contours(co_table, img_boundary, erosion_rate, dilation_rate, y_len, x_len )
|
co_table, img_boundary = update_region_contours(co_table, img_boundary, erosion_rate, dilation_rate, y_len, x_len )
|
||||||
|
if "mapregion" in elements_with_artificial_class:
|
||||||
|
erosion_rate = 0#2
|
||||||
|
dilation_rate = 3#4
|
||||||
|
co_map, img_boundary = update_region_contours(co_map, img_boundary, erosion_rate, dilation_rate, y_len, x_len )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1160,6 +1221,8 @@ def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_
|
||||||
img_poly=cv2.fillPoly(img, pts =co_img, color=labels_rgb_color[ config_params['imageregion']])
|
img_poly=cv2.fillPoly(img, pts =co_img, color=labels_rgb_color[ config_params['imageregion']])
|
||||||
if 'tableregion' in keys:
|
if 'tableregion' in keys:
|
||||||
img_poly=cv2.fillPoly(img, pts =co_table, color=labels_rgb_color[ config_params['tableregion']])
|
img_poly=cv2.fillPoly(img, pts =co_table, color=labels_rgb_color[ config_params['tableregion']])
|
||||||
|
if 'mapregion' in keys:
|
||||||
|
img_poly=cv2.fillPoly(img, pts =co_map, color=labels_rgb_color[ config_params['mapregion']])
|
||||||
if 'noiseregion' in keys:
|
if 'noiseregion' in keys:
|
||||||
img_poly=cv2.fillPoly(img, pts =co_noise, color=labels_rgb_color[ config_params['noiseregion']])
|
img_poly=cv2.fillPoly(img, pts =co_noise, color=labels_rgb_color[ config_params['noiseregion']])
|
||||||
|
|
||||||
|
|
@ -1220,6 +1283,9 @@ def get_images_of_ground_truth(gt_list, dir_in, output_dir, output_type, config_
|
||||||
if 'tableregion' in keys:
|
if 'tableregion' in keys:
|
||||||
color_label = config_params['tableregion']
|
color_label = config_params['tableregion']
|
||||||
img_poly=cv2.fillPoly(img, pts =co_table, color=(color_label,color_label,color_label))
|
img_poly=cv2.fillPoly(img, pts =co_table, color=(color_label,color_label,color_label))
|
||||||
|
if 'mapregion' in keys:
|
||||||
|
color_label = config_params['mapregion']
|
||||||
|
img_poly=cv2.fillPoly(img, pts =co_map, color=(color_label,color_label,color_label))
|
||||||
if 'noiseregion' in keys:
|
if 'noiseregion' in keys:
|
||||||
color_label = config_params['noiseregion']
|
color_label = config_params['noiseregion']
|
||||||
img_poly=cv2.fillPoly(img, pts =co_noise, color=(color_label,color_label,color_label))
|
img_poly=cv2.fillPoly(img, pts =co_noise, color=(color_label,color_label,color_label))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue