import numpy as np def mean(input_masks): zeros = np.zeros_like(input_masks[0]).astype(np.float64) float_mask = sum(input_masks, zeros) / len(input_masks) return float_mask.astype(np.uint8) def intersection(input_masks): m = np.copy(input_masks[0]) mmean = mean(input_masks) m[mmean < 255.] = 0. m[mmean == 255.] = 255. return m def majority(input_masks): m = np.copy(input_masks[0]) mmean = mean(input_masks) m[mmean < 127] = 0 m[mmean > 127] = 255 return m MEAN = "mean" INTERSECTION = "intersection" MAJORITY = "majority" consensus_methods = {} consensus_methods[MEAN] = mean consensus_methods[INTERSECTION] = intersection consensus_methods[MAJORITY] = majority def get_consensus(consensus_name): return consensus_methods[consensus_name]