| 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] |