mirror of
				https://github.com/qurator-spk/eynollah.git
				synced 2025-10-27 07:44:12 +01:00 
			
		
		
		
	unify find_features_of_contour{,e}s
This commit is contained in:
		
							parent
							
								
									86c809b58f
								
							
						
					
					
						commit
						8796b9daf7
					
				
					 2 changed files with 23 additions and 36 deletions
				
			
		|  | @ -71,6 +71,7 @@ from .utils import ( | ||||||
|     find_num_col_by_vertical_lines, |     find_num_col_by_vertical_lines, | ||||||
|     find_contours_mean_y_diff, |     find_contours_mean_y_diff, | ||||||
|     contours_in_same_horizon, |     contours_in_same_horizon, | ||||||
|  |     find_features_of_contours, | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -5582,34 +5583,6 @@ class eynollah: | ||||||
|                     image_by_region[int(spliter_y[i]) : int(spliter_y[i + 1]), peaks_neg[i][j] - int(1.0 / 20.0 * peaks_neg[i][j]) : peaks_neg[i][j] + int(1.0 / 20.0 * peaks_neg[i][j])][image_by_region[int(spliter_y[i]) : int(spliter_y[i + 1]), peaks_neg[i][j] - int(1.0 / 20.0 * peaks_neg[i][j]) : peaks_neg[i][j] + int(1.0 / 20.0 * peaks_neg[i][j])] == 7] = 0 |                     image_by_region[int(spliter_y[i]) : int(spliter_y[i + 1]), peaks_neg[i][j] - int(1.0 / 20.0 * peaks_neg[i][j]) : peaks_neg[i][j] + int(1.0 / 20.0 * peaks_neg[i][j])][image_by_region[int(spliter_y[i]) : int(spliter_y[i + 1]), peaks_neg[i][j] - int(1.0 / 20.0 * peaks_neg[i][j]) : peaks_neg[i][j] + int(1.0 / 20.0 * peaks_neg[i][j])] == 7] = 0 | ||||||
|         return image_by_region |         return image_by_region | ||||||
| 
 | 
 | ||||||
|     def find_features_of_contoures(self, contours_main): |  | ||||||
| 
 |  | ||||||
|         areas_main = np.array([cv2.contourArea(contours_main[j]) for j in range(len(contours_main))]) |  | ||||||
|         M_main = [cv2.moments(contours_main[j]) for j in range(len(contours_main))] |  | ||||||
|         cx_main = [(M_main[j]["m10"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] |  | ||||||
|         cy_main = [(M_main[j]["m01"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] |  | ||||||
|         x_min_main = np.array([np.min(contours_main[j][:, 0, 0]) for j in range(len(contours_main))]) |  | ||||||
|         x_max_main = np.array([np.max(contours_main[j][:, 0, 0]) for j in range(len(contours_main))]) |  | ||||||
| 
 |  | ||||||
|         y_min_main = np.array([np.min(contours_main[j][:, 0, 1]) for j in range(len(contours_main))]) |  | ||||||
|         y_max_main = np.array([np.max(contours_main[j][:, 0, 1]) for j in range(len(contours_main))]) |  | ||||||
| 
 |  | ||||||
|         return y_min_main, y_max_main |  | ||||||
| 
 |  | ||||||
|     def find_features_of_contours(self, contours_main): |  | ||||||
| 
 |  | ||||||
|         areas_main = np.array([cv2.contourArea(contours_main[j]) for j in range(len(contours_main))]) |  | ||||||
|         M_main = [cv2.moments(contours_main[j]) for j in range(len(contours_main))] |  | ||||||
|         cx_main = [(M_main[j]["m10"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] |  | ||||||
|         cy_main = [(M_main[j]["m01"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] |  | ||||||
|         x_min_main = np.array([np.min(contours_main[j][:, 0, 0]) for j in range(len(contours_main))]) |  | ||||||
|         x_max_main = np.array([np.max(contours_main[j][:, 0, 0]) for j in range(len(contours_main))]) |  | ||||||
| 
 |  | ||||||
|         y_min_main = np.array([np.min(contours_main[j][:, 0, 1]) for j in range(len(contours_main))]) |  | ||||||
|         y_max_main = np.array([np.max(contours_main[j][:, 0, 1]) for j in range(len(contours_main))]) |  | ||||||
| 
 |  | ||||||
|         return y_min_main, y_max_main, areas_main |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
|     def add_tables_heuristic_to_layout(self, image_regions_eraly_p, boxes, slope_mean_hor, spliter_y, peaks_neg_tot, image_revised): |     def add_tables_heuristic_to_layout(self, image_regions_eraly_p, boxes, slope_mean_hor, spliter_y, peaks_neg_tot, image_revised): | ||||||
| 
 | 
 | ||||||
|  | @ -5668,9 +5641,9 @@ class eynollah: | ||||||
| 
 | 
 | ||||||
|                 contours_line, hierachy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) |                 contours_line, hierachy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) | ||||||
| 
 | 
 | ||||||
|                 y_min_main_line, y_max_main_line = self.find_features_of_contoures(contours_line) |                 y_min_main_line, y_max_main_line, _ = find_features_of_contours(contours_line) | ||||||
|                 # _,_,y_min_main_line ,y_max_main_line,x_min_main_line,x_max_main_line=find_new_features_of_contoures(contours_line) |                 # _,_,y_min_main_line ,y_max_main_line,x_min_main_line,x_max_main_line=find_new_features_of_contoures(contours_line) | ||||||
|                 y_min_main_tab, y_max_main_tab = self.find_features_of_contoures(contours_tab) |                 y_min_main_tab, y_max_main_tab, _ = find_features_of_contours(contours_tab) | ||||||
| 
 | 
 | ||||||
|                 cx_tab_m_text, cy_tab_m_text, x_min_tab_m_text, x_max_tab_m_text, y_min_tab_m_text, y_max_tab_m_text = find_new_features_of_contoures(contours_table_m_text) |                 cx_tab_m_text, cy_tab_m_text, x_min_tab_m_text, x_max_tab_m_text, y_min_tab_m_text, y_max_tab_m_text = find_new_features_of_contoures(contours_table_m_text) | ||||||
|                 cx_tabl, cy_tabl, x_min_tabl, x_max_tabl, y_min_tabl, y_max_tabl, _ = find_new_features_of_contoures(contours_tab) |                 cx_tabl, cy_tabl, x_min_tabl, x_max_tabl, y_min_tabl, y_max_tabl, _ = find_new_features_of_contoures(contours_tab) | ||||||
|  | @ -5752,8 +5725,8 @@ class eynollah: | ||||||
|             contours_main_patch_con, hiearchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) |             contours_main_patch_con, hiearchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) | ||||||
|             contours_main_patch_con = return_parent_contours(contours_main_patch_con, hiearchy) |             contours_main_patch_con = return_parent_contours(contours_main_patch_con, hiearchy) | ||||||
| 
 | 
 | ||||||
|             y_patch_head_min, y_patch_head_max, _ = self.find_features_of_contours(contours_head_patch_con) |             y_patch_head_min, y_patch_head_max, _ = find_features_of_contours(contours_head_patch_con) | ||||||
|             y_patch_main_min, y_patch_main_max, _ = self.find_features_of_contours(contours_main_patch_con) |             y_patch_main_min, y_patch_main_max, _ = find_features_of_contours(contours_main_patch_con) | ||||||
| 
 | 
 | ||||||
|             for i in range(len(y_patch_head_min)): |             for i in range(len(y_patch_head_min)): | ||||||
|                 for j in range(len(y_patch_main_min)): |                 for j in range(len(y_patch_main_min)): | ||||||
|  | @ -5784,8 +5757,8 @@ class eynollah: | ||||||
|                         contours_main_patch_con, hiearchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) |                         contours_main_patch_con, hiearchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) | ||||||
|                         contours_main_patch_con = return_parent_contours(contours_main_patch_con, hiearchy) |                         contours_main_patch_con = return_parent_contours(contours_main_patch_con, hiearchy) | ||||||
| 
 | 
 | ||||||
|                         _, _, areas_head = self.find_features_of_contours(contours_head_patch_con) |                         _, _, areas_head = find_features_of_contours(contours_head_patch_con) | ||||||
|                         _, _, areas_main = self.find_features_of_contours(contours_main_patch_con) |                         _, _, areas_main = find_features_of_contours(contours_main_patch_con) | ||||||
| 
 | 
 | ||||||
|                         if np.sum(areas_head) > np.sum(areas_main): |                         if np.sum(areas_head) > np.sum(areas_main): | ||||||
|                             img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0][img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0] == 1] = 2 |                             img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0][img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0] == 1] = 2 | ||||||
|  | @ -5819,8 +5792,8 @@ class eynollah: | ||||||
|                         contours_main_patch_con, hiearchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) |                         contours_main_patch_con, hiearchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) | ||||||
|                         contours_main_patch_con = return_parent_contours(contours_main_patch_con, hiearchy) |                         contours_main_patch_con = return_parent_contours(contours_main_patch_con, hiearchy) | ||||||
| 
 | 
 | ||||||
|                         _, _, areas_head = self.find_features_of_contours(contours_head_patch_con) |                         _, _, areas_head = find_features_of_contours(contours_head_patch_con) | ||||||
|                         _, _, areas_main = self.find_features_of_contours(contours_main_patch_con) |                         _, _, areas_main = find_features_of_contours(contours_main_patch_con) | ||||||
| 
 | 
 | ||||||
|                         if np.sum(areas_head) > np.sum(areas_main): |                         if np.sum(areas_head) > np.sum(areas_main): | ||||||
|                             img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0][img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0] == 1] = 2 |                             img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0][img_revised_tab[y_up:y_down, int(boxes[ind][0]) : int(boxes[ind][1]), 0] == 1] = 2 | ||||||
|  |  | ||||||
|  | @ -2117,3 +2117,17 @@ def find_contours_mean_y_diff(contours_main): | ||||||
|     cy_main = [(M_main[j]["m01"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] |     cy_main = [(M_main[j]["m01"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] | ||||||
|     return np.mean(np.diff(np.sort(np.array(cy_main)))) |     return np.mean(np.diff(np.sort(np.array(cy_main)))) | ||||||
| 
 | 
 | ||||||
|  | def find_features_of_contours(contours_main): | ||||||
|  | 
 | ||||||
|  |     areas_main = np.array([cv2.contourArea(contours_main[j]) for j in range(len(contours_main))]) | ||||||
|  |     M_main = [cv2.moments(contours_main[j]) for j in range(len(contours_main))] | ||||||
|  |     cx_main = [(M_main[j]["m10"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] | ||||||
|  |     cy_main = [(M_main[j]["m01"] / (M_main[j]["m00"] + 1e-32)) for j in range(len(M_main))] | ||||||
|  |     x_min_main = np.array([np.min(contours_main[j][:, 0, 0]) for j in range(len(contours_main))]) | ||||||
|  |     x_max_main = np.array([np.max(contours_main[j][:, 0, 0]) for j in range(len(contours_main))]) | ||||||
|  | 
 | ||||||
|  |     y_min_main = np.array([np.min(contours_main[j][:, 0, 1]) for j in range(len(contours_main))]) | ||||||
|  |     y_max_main = np.array([np.max(contours_main[j][:, 0, 1]) for j in range(len(contours_main))]) | ||||||
|  | 
 | ||||||
|  |     return y_min_main, y_max_main, areas_main | ||||||
|  | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue