/// <summary> /// Only for debug / evaluation use. /// </summary> /// <param name="fixedMask"></param> /// <param name="movingMask"></param> private void CalculateMetrics(sitk.Image fixedMask, sitk.Image movingMask) { if (fixedMask != null && movingMask != null) { sitk.LabelOverlapMeasuresImageFilter overlapFilter = VisualizationEvaluationUtils.GetOverlapImageFilter(fixedMask, movingMask); if (overlapFilter != null) { double diceCoef = overlapFilter.GetDiceCoefficient(); double falseNegative = overlapFilter.GetFalseNegativeError(); double falsePositive = overlapFilter.GetFalsePositiveError(); double jaccard = overlapFilter.GetJaccardCoefficient(); double meanOverlap = overlapFilter.GetMeanOverlap(); double unionOverlap = overlapFilter.GetUnionOverlap(); string dice = diceCoef.ToString("0.##"); string jacc = jaccard.ToString("0.##"); string negPos = string.Format("{0} / {1}", falseNegative.ToString("0.##"), falsePositive.ToString("0.##")); Console.WriteLine("### Metrics ###"); Console.WriteLine("Dice: " + dice); Console.WriteLine("Jaccard: " + jacc); Console.WriteLine("False negative / false positive: " + negPos); } } }
private static sitk.LabelOverlapMeasuresImageFilter GetOverlapImageFilter(string mask01iFn, string mask02iFn) { sitk.LabelOverlapMeasuresImageFilter overlapFilter; sitk.Image sImg01 = ReadWriteUtils.ReadITKImageFromFile(mask01iFn); sitk.Image sImg02 = ReadWriteUtils.ReadITKImageFromFile(mask02iFn); overlapFilter = VisualizationEvaluationUtils.GetOverlapImageFilter(sImg01, sImg02); sImg01.Dispose(); sImg02.Dispose(); return(overlapFilter); }