//Evaluo la segmentacion con las medidas RandIndex, VI and NMI y dejo los resultados en el prob. Evaluo contra el mejor ground-truth y el promedio contra todos. private void EvaluateMatrixSegmentation(Segmentation segm) { RandIndexSegSim rand = new RandIndexSegSim(); NMISegSim nmi = new NMISegSim(); VISegSim vi = new VISegSim(); //Calcular el rand double min = double.MaxValue; double ave = 0; double aux = 0; for (int i = 0; i < this.prob.GroundTruths.Count; i++) { aux = 1 - rand.Process(segm, this.prob.GroundTruths[i]); if (aux < min) { min = aux; } ave += aux; } ave = ave / this.prob.GroundTruths.Count; this.prob.Best_RandEvaluation = min; this.prob.Ave_RandEvaluation = ave; //Calcular NMI min = double.MaxValue; ave = 0; aux = 0; for (int i = 0; i < this.prob.GroundTruths.Count; i++) { aux = 1 - nmi.Process(segm, this.prob.GroundTruths[i]); if (aux < min) { min = aux; } ave += aux; } ave = ave / this.prob.GroundTruths.Count; this.prob.Best_NMIEvaluation = min; this.prob.Ave_NMIEvaluation = ave; //Calcular VI min = double.MaxValue; ave = 0; aux = 0; for (int i = 0; i < this.prob.GroundTruths.Count; i++) { aux = vi.Process(segm, this.prob.GroundTruths[i]); if (aux < min) { min = aux; } ave += aux; } ave = ave / this.prob.GroundTruths.Count; this.prob.Best_VIEvaluation = min; this.prob.Ave_VIEvaluation = ave; }
//Evaluo la segmentacion con las medidas RandIndex, VI and NMI y dejo los resultados en el prob. Evaluo contra el mejor ground-truth y el promedio contra todos. private void EvaluateMatrixSegmentation(Segmentation segm) { RandIndexSegSim rand = new RandIndexSegSim(); NMISegSim nmi = new NMISegSim(); VISegSim vi = new VISegSim(); //Calcular el rand double min = double.MaxValue; double ave = 0; double aux = 0; for (int i = 0; i < this.prob.GroundTruths.Count; i++) { aux = 1 - rand.Process(segm, this.prob.GroundTruths[i]); if (aux < min) min = aux; ave += aux; } ave = ave / this.prob.GroundTruths.Count; this.prob.Best_RandEvaluation = min; this.prob.Ave_RandEvaluation = ave; //Calcular NMI min = double.MaxValue; ave = 0; aux = 0; for (int i = 0; i < this.prob.GroundTruths.Count; i++) { aux = 1 - nmi.Process(segm, this.prob.GroundTruths[i]); if (aux < min) min = aux; ave += aux; } ave = ave / this.prob.GroundTruths.Count; this.prob.Best_NMIEvaluation = min; this.prob.Ave_NMIEvaluation = ave; //Calcular VI min = double.MaxValue; ave = 0; aux = 0; for (int i = 0; i < this.prob.GroundTruths.Count; i++) { aux = vi.Process(segm, this.prob.GroundTruths[i]); if (aux < min) min = aux; ave += aux; } ave = ave / this.prob.GroundTruths.Count; this.prob.Best_VIEvaluation = min; this.prob.Ave_VIEvaluation = ave; }