/// <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 void buttonCalcMetrics_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { string key = comboBoxMoving.SelectedValue.ToString(); List <sitk.VectorOfParameterMap> map = registrationParameters.TransformationParameterMap[key]; /*string parametersFilename = registrationParameters.OutputDirectory + "\\1\\TransformParameters.0.txt"; * List<sitk.VectorOfParameterMap> map = new List<sitk.VectorOfParameterMap>(); * map.Add(InvertTransformParameters(parametersFilename));*/ registrationParameters.MovingImagePointSetFilename = filenameMovingPointSet; registrationParameters.FixedImagePointSetFilename = filenameFixedPointSet; string filenameOutputPoints = VisualizationEvaluationUtils.TransfromPointSet(map, registrationParameters); var movingPointsDict = ReadWriteUtils.ReadFixedPointSet(filenameMovingPointSet).Values.ToList(); var transformedPointsDict = ReadWriteUtils.ReadTransformedPointSets(filenameOutputPoints).Values.ToList(); RegistrationError registrationError = VisualizationEvaluationUtils.GetRegistrationError(movingPointsDict, transformedPointsDict); labelMeanDiff.Text = registrationError.MeanRegistrationError.ToString("0.###"); labelStdDev.Text = registrationError.StdDevRegistrationError.ToString("0.###"); labelMax.Text = registrationError.MaximumRegistrationError.ToString("0.###"); } catch (Exception ex) { Console.WriteLine(ex); } Cursor.Current = Cursors.Default; }
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); }
/// <summary> /// Only for debug / evaluation use. /// </summary> /// <param name="pointsetFixed"></param> /// <param name="pointsetMov"></param> private void CalculateTRE(string pointsetFixed, string pointsetMov) { var fixedPointsDict = ReadWriteUtils.ReadFixedPointSet(pointsetFixed).Values.ToList(); var movPointsDict = ReadWriteUtils.ReadFixedPointSet(pointsetMov).Values.ToList(); RegistrationError registrationError = VisualizationEvaluationUtils.GetRegistrationError(fixedPointsDict, movPointsDict); //Console.WriteLine(string.Format("Absolute TRE: {0}", registrationError.AbsoluteRegistrationError)); //Console.WriteLine(string.Format("Max TRE: {0}", registrationError.MaximumRegistrationError)); //Console.WriteLine(string.Format("Mean TRE: {0}", registrationError.MeanRegistrationError)); //Console.WriteLine(string.Format("Std deviation RE: {0}", registrationError.StdDevRegistrationError)); }
private void buttonTransformFixed_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { string key = comboBoxMoving.SelectedValue.ToString(); List <sitk.VectorOfParameterMap> map = registrationParameters.TransformationParameterMap[key]; VisualizationEvaluationUtils.TransfromPointSet(map, filenameFixedPointSet, ApplicationContext.OutputPath); } catch (Exception ex) { Console.WriteLine(ex); } Cursor.Current = Cursors.Default; }
private void buttonDiffImage_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; string fixedImageFilename = registrationParameters.FixedImageFilename; string movingImageFilename = comboBoxMovingImage.SelectedValue.ToString(); // read images var img01 = ReadWriteUtils.ReadITKImageFromFile(fixedImageFilename); var img02 = ReadWriteUtils.ReadITKImageFromFile(movingImageFilename); var difference = VisualizationEvaluationUtils.GetTotalDifferenceImage(img01, img02); ReadWriteUtils.WriteSitkImage(difference, registrationParameters.OutputDirectory + "\\difference.png"); img01.Dispose(); img02.Dispose(); difference.Dispose(); Cursor.Current = Cursors.Default; }
private void buttonCheckerBoard_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; string fixedImageFilename = registrationParameters.FixedImageFilename; string movingImageFilename = comboBoxMovingImage.SelectedValue.ToString(); uint size = (uint)numericUpDownCheckerSize.Value; // read images //var img01 = ReadWriteUtils.ReadITKImageFromFile(fixedImageFilename); //var img02 = ReadWriteUtils.ReadITKImageFromFile(movingImageFilename); var checkerboard = VisualizationEvaluationUtils.GetCheckerBoardV2(fixedImageFilename, movingImageFilename, size); ReadWriteUtils.WriteSitkImage(checkerboard, registrationParameters.OutputDirectory + "\\checkerboard.png"); //img01.Dispose(); //img02.Dispose(); checkerboard.Dispose(); Cursor.Current = Cursors.Default; }