diff --git a/detect_structures.py b/detect_structures.py index 74c1d18e92a1d562347f8ab9c3f5a4dd68908805..6e11a1eff1503f145221f9764572255abe7b5229 100644 --- a/detect_structures.py +++ b/detect_structures.py @@ -29,7 +29,7 @@ DRAW_FIRST_CONE_LAYER_BRIGTHER = True BISEC_CONE_ANGLE = 50 CORRECTION_ANGLE = 23 OVERLAY_ALPHA = 0.2 -COLORED_CANVAS = False +COLORED_CANVAS = True BISEC_SKIP_LOWER_LEVELS = False DISPLAY_RASTER_ELEMENTS = 500 KMEANS_AREA_MASK_THRESHOLD = 0.08 #max 1.0 (percent of pixels), cur 0.09, sonntag mittag 0.05, #smaller threshold -> more colors, higher threshold -> less colors @@ -150,7 +150,6 @@ for img_name, img_bdcn in (list(zip(images, images_bdcn))[15:16] if SKIP_OPENPOS kmout_mask=cv2.cvtColor(kmout_mask,cv2.COLOR_GRAY2BGR) #change mask to a 3 channel image km_mask_out=cv2.subtract(kmout_mask,kmeans_output) #subtract mask from kmeans result km_mask_out=cv2.subtract(kmout_mask,km_mask_out) - #idea: count how many pixels the white mask has, count how many pixels each color from kmeans result appears in mask -> area > 80% is foreground kmeans_colors, kmeans_counts = np.unique(kmeans_output.reshape(-1, kmeans_output.shape[-1]),axis=0,return_counts=True) @@ -181,6 +180,10 @@ for img_name, img_bdcn in (list(zip(images, images_bdcn))[15:16] if SKIP_OPENPOS cv2.rectangle(kmeans_output, (220,15), (230,25), (int(filtered_km_mask_FG_colors[0][0]),int(filtered_km_mask_FG_colors[0][1]),int(filtered_km_mask_FG_colors[0][2])), -1) cv2.rectangle(kmeans_output, (220,15), (230,25), (255,255,255), 1) + cv2.rectangle(km_mask_out, (0,0), (235,30), (0,0,0), -1) + cv2.putText(km_mask_out, "Foreground colors:", (10,25), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,255,255)) + cv2.rectangle(km_mask_out, (220,15), (230,25), (255,255,255), 1) + # cv2.imwrite(os.path.basename(img_bdcn)+'_km_mask_out_before.jpg',kmeans_output) binary_output = kmeans_output.copy() offset=220; @@ -208,10 +211,12 @@ for img_name, img_bdcn in (list(zip(images, images_bdcn))[15:16] if SKIP_OPENPOS # kmeans_output[((kmeans_output[:,:,0] == color[0]) & (kmeans_output[:,:,1] == color[1]) & (kmeans_output[:,:,2] == color[2]))]=colors_only_BG[0] #search in kmeans_output image for specific color and replace all by first color # km_mask_out[((km_mask_out[:,:,0] == color[0]) & (km_mask_out[:,:,1] == color[1]) & (km_mask_out[:,:,2] == color[2]))]=colors_only_BG[0] #search in binary_output image for specific color and replace all by first color + cv2.imwrite(os.path.basename(img_name)+'_inkm_step5_kmeans_masked.jpg',km_mask_out) cv2.imwrite(os.path.basename(img_name)+'_inkm_step5_kmean_colorreplaced.jpg',kmeans_output) cv2.imwrite(os.path.basename(img_name)+'_inkm_step5_kmean_binarization.jpg',binary_output) + # cv2.imwrite(os.path.basename(img_bdcn)+'_kmeans_output_after.jpg',kmeans_output) # cv2.imwrite(os.path.basename(img_bdcn)+'_km_mask_out.jpg',km_mask_out) # cv2.namedWindow("binary_output", cv2.WINDOW_NORMAL)