images_count = pixel.value[2] # Generate sky-region-binary-image beta1 = 0.75 beta2 = 0.5 resultPic = ImageProcess.getSkyRegionMask(pixel.value[0], pixel.value[1], images_count * beta1, images_count * beta2) # Erode the sky-region-binary-image and mark three largest (if any) contour area. kernel = np.ones((5, 5), np.uint8) mask, cnts_new = ImageProcess.markDisjointSkyRegion(resultPic, kernel) # If detect more than one disjoint contour area, calculate correlation coefficient of each area. contour_num = len(cnts_new) if contour_num > 1: mask_b = sc.broadcast(mask) images_coefficient = images_d2.flatMap(lambda x: ImageProcess.get_R_Minus_B_Value(x[1], mask_b.value)) coef_list = images_coefficient.groupByKey().mapValues(list).take(3) print (coef_list) ImageProcess.disjointRegionProcess(coef_list, contour_num, mask) # Get Final Sky Region Mask final_sky_region_mask = ImageProcess.generateFinalSkyRegion(mask, kernel, contour_num) cv2.imshow('final_sky_region', final_sky_region_mask) cv2.waitKey(0) sky_region_mask = sc.broadcast(final_sky_region_mask)