def find_merge_error(self, image, prob, segmentation, label): ''' Find a merge error in a segment. This generates 50 borders within the segment and ranks them using the CNN. Returns The corrected segment. and Rank (1-p) for the found merge error. 1 If confident .. 0 If uncertain or -1 If there was a problem. ''' # create binary mask binary = Util.threshold(segmentation, label) # here potential boundaries are generated and ranked by the CNN results = Legacy.fix_single_merge(self._cnn, image, prob, binary, N=50, erode=True, invert=True, dilate=True, border_seeds=True, oversampling=False) if len(results) > 0: # sort the prediction/border tuples (prediction, border)-tupels sorted_pred = sorted(results, key=lambda x: x[0]) lowest_rank = sorted_pred[0][0] border = sorted_pred[0][1] corrected = Legacy.correct_merge(segmentation, label, border) return corrected, 1. - lowest_rank else: return -1