From 5b4636717597932745e5d5f1e10e24861e5cfdd4 Mon Sep 17 00:00:00 2001 From: llocarnini Date: Fri, 25 Feb 2022 08:13:47 +0100 Subject: [PATCH] no new changes --- vidocp/table_parsing.py | 93 +++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 55 deletions(-) diff --git a/vidocp/table_parsing.py b/vidocp/table_parsing.py index e05d78e..8d71baf 100644 --- a/vidocp/table_parsing.py +++ b/vidocp/table_parsing.py @@ -24,6 +24,7 @@ def add_external_contours(image, img): return image + # def rotate_line_components(img_bin_h, img_bin_v): # def get_avg_angle(img_bin): # edges = cv2.Canny(img_bin, 50, 150, apertureSize=3) @@ -33,59 +34,43 @@ def add_external_contours(image, img): # for line in lines: # line = line[0] # rho, theta = line -# angles_deg.append(180/np.pi * theta) +# angles_deg.append(180 / np.pi * theta) # # avg_ang_deg = sum(angles_deg) / len(angles_deg) -# return average_angle_in_deg +# return avg_ang_deg +# # avg_ang_h = get_avg_angle(img_bin_h) # avg_ang_v = get_avg_angle(img_bin_v) -# print(average_angle_in_deg, "angle before angle correction") -# # average_angle_in_deg = 90 - average_angle_in_deg -# # print(average_angle_in_deg) -# if average_angle_in_deg == 0.0 or average_angle_in_deg == 90.0: -# print("angle is 0 or 90") -# return img_bin -# elif average_angle_in_deg > 0: #linksrtoation im originalbild -# print("leftrot angle is not 0 or 90") -# average_angle_in_deg = 360 - average_angle_in_deg -# else: -# print("rightrot", average_angle_in_deg) -# print(average_angle_in_deg, "angle for Rotationsmatrix") -# img_bin_rotated = ndimage.rotate(img_bin, average_angle_in_deg, reshape=False) -# show_mpl(img_bin_rotated) +# print(avg_ang_h,avg_ang_v) # -# return img_bin - -# def rotate_line_components(img_bin): -# height, width = img_bin.shape[:2] -# center = (width/2, height/2) -# edges = cv2.Canny(img_bin, 50, 150, apertureSize=3) -# lines = cv2.HoughLines(edges, 1, np.pi / 180, 200) -# angles_deg = [] +# if avg_ang_h > avg_ang_v: # leftrotated scan +# rot_ang_h = 270 + avg_ang_h +# rot_ang_v = avg_ang_v +# elif avg_ang_h < avg_ang_v: # rightrotated scan +# rot_ang_h = 90 - avg_ang_h +# rot_ang_v = avg_ang_v +# print(rot_ang_h, rot_ang_v) +# img_bin_hr = ndimage.rotate(img_bin_h, rot_ang_h, reshape=False) +# img_bin_vr = ndimage.rotate(img_bin_v, rot_ang_v, reshape=False) +# #show_mpl(img_bin_hr) # -# for line in lines: -# line = line[0] -# rho, theta = line -# angles_deg.append(180/np.pi * theta) -# #linksdrehung < 90 rechtsdrehung > 90 -# average_angle_in_deg = sum(angles_deg) / len(angles_deg) -# print(average_angle_in_deg, "angle before angle correction") -# average_angle_in_deg = 90 - average_angle_in_deg -# print(average_angle_in_deg) -# if average_angle_in_deg == 0.0 or average_angle_in_deg == 90.0: -# print("angle is 0 or 90") -# return img_bin -# elif average_angle_in_deg > 0: #linksrtoation im originalbild -# print("leftrot angle is not 0 or 90") -# average_angle_in_deg = 360 - average_angle_in_deg -# else: -# print("rightrot", average_angle_in_deg) -# print(average_angle_in_deg, "angle for Rotationsmatrix") -# img_bin_rotated = ndimage.rotate(img_bin, average_angle_in_deg, reshape=False) -# show_mpl(img_bin_rotated) # -# return img_bin - +# # print(average_angle_in_deg, "angle before angle correction") +# # # average_angle_in_deg = 90 - average_angle_in_deg +# # # print(average_angle_in_deg) +# # if average_angle_in_deg == 0.0 or average_angle_in_deg == 90.0: +# # print("angle is 0 or 90") +# # return img_bin +# # elif average_angle_in_deg > 0: #linksrtoation im originalbild +# # print("leftrot angle is not 0 or 90") +# # average_angle_in_deg = 360 - average_angle_in_deg +# # else: +# # print("rightrot", average_angle_in_deg) +# # print(average_angle_in_deg, "angle for Rotationsmatrix") +# # img_bin_rotated = ndimage.rotate(img_bin, average_angle_in_deg, reshape=False) +# # show_mpl(img_bin_rotated) +# +# return img_bin_hr, img_bin_vr def isolate_vertical_and_horizontal_components(img_bin, bounding_rects): @@ -97,31 +82,29 @@ def isolate_vertical_and_horizontal_components(img_bin, bounding_rects): img_bin_v = cv2.morphologyEx(img_bin, cv2.MORPH_OPEN, kernel_v) show_mpl(img_bin_h | img_bin_v) - # img_bin_h = rotate_line_components(img_bin_h) - # img_bin_v = rotate_line_components(img_bin_v) - #show_mpl(img_bin_h | img_bin_v) + # img_bin_h, img_bin_v = rotate_line_components(img_bin_h,img_bin_v) kernel_h = np.ones((1, 30), np.uint8) kernel_v = np.ones((30, 1), np.uint8) img_bin_h = cv2.dilate(img_bin_h, kernel_h, iterations=2) img_bin_v = cv2.dilate(img_bin_v, kernel_v, iterations=2) - #show_mpl(img_bin_h | img_bin_v) + # show_mpl(img_bin_h | img_bin_v) - #reduced filtersize from 100 to 80 to minimize splitting narrow cells + # reduced filtersize from 100 to 80 to minimize splitting narrow cells img_bin_h = apply_motion_blur(img_bin_h, 90, 0) img_bin_v = apply_motion_blur(img_bin_v, 90, 90) img_bin_final = img_bin_h | img_bin_v - #show_mpl(img_bin_final) + # show_mpl(img_bin_final) - #changed threshold from 110 to 120 to minimize cell splitting + # changed threshold from 110 to 120 to minimize cell splitting th1, img_bin_final = cv2.threshold(img_bin_final, 120, 255, cv2.THRESH_BINARY) img_bin_final = cv2.dilate(img_bin_final, np.ones((1, 1), np.uint8), iterations=1) - #show_mpl(img_bin_final) + # show_mpl(img_bin_final) # problem if layout parser detects too big of a layout box as in VV-748542.pdf p.22 img_bin_final = disconnect_non_existing_cells(img_bin_final, bounding_rects) - #show_mpl(img_bin_final) + # show_mpl(img_bin_final) return img_bin_final