KMEANS_AREA_MASK_THRESHOLD=0.05#max 1.0 (percent of pixels), cur 0.09
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
# for img_name, img_bdcn in list(zip(images, images_bdcn))[6:7]: #fusswaschung
# Process Image
...
...
@@ -97,6 +99,12 @@ for img_name, img_bdcn in (list(zip(images, images_bdcn))[15:16] if SKIP_OPENPOS
img=datum.cvOutputData
ifINPAINT_AND_KMEANS:
# general idea, people are placed in foreground
# -> inpaint around people to replace color invormation from people with color information from direct environment
# -> kmeans the result to dramatically reduce the amount of colors
# -> check witch colors are now on the position of the people. The colors participating more than 8% are considered as foreground and replaced by color with the most participation in foreground
# -> output this mask if color information with details is needed.
# -> if binary mask is needed we further do some morph filtering to get away small details and blobs
target=cv2.imread(img_name)
#remove cracks and prepare for kmeans
# target = cv2.GaussianBlur(target,(5,5),0) #unsharpen all
...
...
@@ -107,7 +115,8 @@ for img_name, img_bdcn in (list(zip(images, images_bdcn))[15:16] if SKIP_OPENPOS
# target = cv2.bilateralFilter(target,13,90,90) #bring back edges and remove textures
# kmeans_out[((kmeans_out[:,:,0] == color[0]) & (kmeans_out[:,:,1] == color[1]) & (kmeans_out[:,:,2] == color[2]))]=filtered_km_mask_FG_colors[0] #search in kmeans image for specific color and replace all by first color
kmeans_out[((kmeans_out[:,:,0]==color[0])&(kmeans_out[:,:,1]==color[1])&(kmeans_out[:,:,2]==color[2]))]=[255,255,255]#search in kmeans_out image for specific color and replace all by first color
kmeans_temp_save[((kmeans_temp_save[:,:,0]==color[0])&(kmeans_temp_save[:,:,1]==color[1])&(kmeans_temp_save[:,:,2]==color[2]))]=filtered_km_mask_FG_colors[0]#search in kmeans_temp_save 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]))]=filtered_km_mask_FG_colors[0] #search in kmeans_out image for specific color and replace all by first color
kmeans_out[((kmeans_out[:,:,0]==color[0])&(kmeans_out[:,:,1]==color[1])&(kmeans_out[:,:,2]==color[2]))]=[0,0,0]#search in kmeans_out image for specific color and replace all by first color
# kmeans_out[((kmeans_out[:,:,0] == color[0]) & (kmeans_out[:,:,1] == color[1]) & (kmeans_out[:,:,2] == color[2]))]=filtered_km_mask_BG_colors[0] #search in kmeans_out 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]))]=filtered_km_mask_BG_colors[0] #search in kmeans_out image for specific color and replace all by first color
colors_only_BG=kmeans_colors[np.invert(np.isin(kmeans_colors,km_mask_colors).all(axis=1))]#colors in kmean_out wich do not appear in any mask
forcolorincolors_only_BG:
print("colors_only_BG",color)
kmeans_out[((kmeans_out[:,:,0]==color[0])&(kmeans_out[:,:,1]==color[1])&(kmeans_out[:,:,2]==color[2]))]=[0,0,0]#search in kmeans_out image for specific color and replace all by first color
# kmeans_temp_save[((kmeans_temp_save[:,:,0] == color[0]) & (kmeans_temp_save[:,:,1] == color[1]) & (kmeans_temp_save[:,:,2] == color[2]))]=colors_only_BG[0] #search in kmeans_temp_save 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 kmeans_out image for specific color and replace all by first color
# binary_output[((binary_output[:,:,0] == color[0]) & (binary_output[:,:,1] == color[1]) & (binary_output[:,:,2] == color[2]))]=filtered_km_mask_FG_colors[0] #search in kmeans image for specific color and replace all by first color
binary_output[((binary_output[:,:,0]==color[0])&(binary_output[:,:,1]==color[1])&(binary_output[:,:,2]==color[2]))]=[255,255,255]#search in binary_output image for specific color and replace all by first color
kmeans_output[((kmeans_output[:,:,0]==color[0])&(kmeans_output[:,:,1]==color[1])&(kmeans_output[:,:,2]==color[2]))]=filtered_km_mask_FG_colors[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]))]=filtered_km_mask_FG_colors[0] #search in binary_output image for specific color and replace all by first color
binary_output[((binary_output[:,:,0]==color[0])&(binary_output[:,:,1]==color[1])&(binary_output[:,:,2]==color[2]))]=[0,0,0]#search in binary_output image for specific color and replace all by first color
# binary_output[((binary_output[:,:,0] == color[0]) & (binary_output[:,:,1] == color[1]) & (binary_output[:,:,2] == color[2]))]=filtered_km_mask_BG_colors[0] #search in binary_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]))]=filtered_km_mask_BG_colors[0] #search in binary_output image for specific color and replace all by first color
colors_only_BG=kmeans_colors[np.invert(np.isin(kmeans_colors,km_mask_colors).all(axis=1))]#colors in kmean_out wich do not appear in any mask
forcolorincolors_only_BG:
print("colors_only_BG",color)
binary_output[((binary_output[:,:,0]==color[0])&(binary_output[:,:,1]==color[1])&(binary_output[:,:,2]==color[2]))]=[0,0,0]#search in binary_output image for specific color and replace all by first color
# 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