def do_option(self, transmission_array, transmission_array_name, result_queue): if OPTION != Options.GET_HISTOGRAM_WITH_CLOSE_RGB: return haze_arr = option_get_haze_array_with_transmission_name( transmission_array_name) _, alpha, _ = dt.trans_get_alpha_beta(transmission_array_name) pq = queue.PriorityQueue() shape = np.shape(haze_arr) H = shape[0] W = shape[1] expected_number = 0 for h in range(H): for w in range(W): if abs(haze_arr[h][w][0] - haze_arr[h][w][1]) <= constant.OPTIONS_THRESHOLD and abs( haze_arr[h][w][1] - haze_arr[h][w][2]) <= constant.OPTIONS_THRESHOLD and abs( haze_arr[h][w][0] - haze_arr[h][w][2]) \ <= constant.OPTIONS_THRESHOLD: if haze_arr[h][w][0] >= constant.OPTIONS_LOWER_BOUNDARY: # pq.put((haze_arr[h][w][0] + haze_arr[h][w][1] + haze_arr[h][w][2]) / 3) pq.put(haze_arr[h][w][0]) if transmission_array[h][ w] < constant.OPTIONS_TRANSMISSION_THRESHOLD: expected_number += 1 result_queue.put((alpha, pq, expected_number, transmission_array_name))
def do_option(self, transmission_array, transmission_name, result_queue): if OPTION != Options.GET_ESTIMATE_ALPHA: return _, alpha, _ = dt.trans_get_alpha_beta(transmission_name) haze_arr = option_get_haze_array_with_transmission_name( transmission_name) intermediate_map = OptionMapFactory(MAP_OPTION).get_map(haze_arr) # attenuation_depth_map = OptionGetEstimateAlpha.__option_get_depth_color_attenuation(haze_arr) OptionGetEstimateAlpha.__estimate_alpha_with_map( intermediate_map, haze_arr, alpha, result_queue)
def do_option(self, transmission_array, transmission_name, result_queue): if OPTION != Options.DEHAZE_WITH_TRANSMISSION_MAP: return haze_arr = option_get_haze_array_with_transmission_name( transmission_name) # Get alpha from name _, alpha, _ = dt.trans_get_alpha_beta(transmission_name) do.opt_write_result_to_file( do.opt_dehaze_with_alpha_transmission(alpha, transmission_array, haze_arr))
def do_option(self, transmission_array, transmission_array_name, result_queue): if OPTION != Options.GET_TRANSMISSION_HISTOGRAM: return _, alpha, _ = dt.trans_get_alpha_beta(transmission_array_name) shape = np.shape(transmission_array) H = shape[0] W = shape[1] expected_number = 0 pq = queue.PriorityQueue() for h in range(H): for w in range(W): pq.put(transmission_array[h][w]) if transmission_array[h][ w] < constant.OPTIONS_TRANSMISSION_THRESHOLD: expected_number += 1 result_queue.put((alpha, pq, expected_number, transmission_array_name))
def run(self): while True: # Read clear image, result image and their corresponding transmission image. # Get the three corresponding matrices for a single image. result_image_name = self.result_queue.get() if result_image_name is None: RESULT_IMAGE_QUEUE.put(None) self.task_queue.put(None) break result_single_dir = os.path.join(constant. STATS_RESULT_DIR, result_image_name) clear_index = result_image_name[0:constant. STATS_CLEAR_INDEX_BIT] trans_index = result_image_name[0:constant. STATS_TRANS_INDEX_BIT] if clear_index not in constant. STATS_CLEAR_DICTIONARY: raise RuntimeError(result_image_name + ' cannot find corresponding clear image.') clear_single_dir = constant. STATS_CLEAR_DICTIONARY[clear_index] if trans_index not in constant. STATS_TRANSMISSION_DICTIONARY: raise RuntimeError(result_image_name + ' cannot find corresponding transmission image.') transmission_single_dir = constant. STATS_TRANSMISSION_DICTIONARY[trans_index] clear, result, transmission = sta_read_image(clear_single_dir, result_single_dir, transmission_single_dir) [_, filename] = os.path.split(transmission_single_dir) _, alpha, beta = gman_transmission.trans_get_alpha_beta(filename) current_task = ImageTask(clear, result, transmission, alpha, beta) self.task_queue.put(current_task) print('Statistic Producer finish')
def opt_get_alpha(image_index): hazy_image_fullname = CLEAR_IMAGE_DICTIONARY[image_index] _, image_alpha, _ = dt.trans_get_alpha_beta(hazy_image_fullname) return hazy_image_fullname, image_alpha