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)