Ejemplo n.º 1
0
        private Fitnessvalues DifferenceMethod()
        {
            Lvalueavg = Math.Abs(Lcleanvalueavg - Ladvvalueavg);
            //   Lvalueavg = 1 / Lvalueavg;


            double distance           = 0.0;
            double distancepercentage = 0.0;

            if (cleanupperrange > adversupperrange && cleanlowerrange > adversupperrange)
            {
                distance           = cleanlowerrange - adversupperrange;
                distancepercentage = distance / cleanlowerrange;
                distance           = distance * distance;
            }
            else if (adversupperrange > cleanupperrange && adverselowerrange > cleanupperrange)
            {
                distance           = adverselowerrange - cleanupperrange;
                distancepercentage = distance / adverselowerrange;
                distance           = distance * distance;
            }
            else
            {
                distance           = Math.Abs(adversupperrange + adverselowerrange - cleanupperrange - cleanlowerrange);
                distancepercentage = distance / adversupperrange;
            }
            // diff = distance;


            double lbp_distance = 0.0;

            if (lbp_cleanupperrange > lbp_adversupperrange && lbp_cleanlowerrange > lbp_adversupperrange)
            {
                lbp_distance = lbp_cleanlowerrange - lbp_adversupperrange;
                lbp_distance = lbp_distance * lbp_distance;
            }
            else if (lbp_adversupperrange > lbp_cleanupperrange && lbp_adverselowerrange > lbp_cleanupperrange)
            {
                lbp_distance = lbp_adverselowerrange - lbp_cleanupperrange;
                lbp_distance = lbp_distance * lbp_distance;
            }
            else
            {
                lbp_distance = Math.Abs(lbp_adversupperrange + lbp_adverselowerrange - lbp_cleanupperrange - lbp_cleanlowerrange);
            }


            Accord.Math.Distances.Euclidean euclidean = new Accord.Math.Distances.Euclidean();

            var p = Array.ConvertAll <int, double>(adv_histogram.ToArray(), x => (double)x / (double)adv_histogram.Max);
            var q = Array.ConvertAll <int, double>(clean_histogram.ToArray(), x => (double)x / (double)clean_histogram.Max);

            //   foreach(var b in q)
            //      Console.Write(b + "");
            var plist = p.ToList();
            var qlist = q.ToList();

            double ecu_distance  = euclidean.Distance(p, q);
            double crossentropyp = CEL.Crossentropy(plist, plist);
            double crossentropyq = CEL.Crossentropy(qlist, qlist);
            double crossentropy  = CEL.Crossentropy(plist, qlist);
            //   Console.WriteLine(sta + " crossentropy " + crossentropyp + " " + crossentropyq + " " + crossentropy);
            // var adv_normal = new NormalDistribution(mean: plist.Average(), stdDev: plist.StdDev);
            //   var clean_normal = new NormalDistribution(mean: clean_histogram.Mean, stdDev: clean_histogram.StdDev);
            double crossentropyppde = CEL.CrossentropyPDE(plist, plist);
            double crossentropyqpde = CEL.CrossentropyPDE(qlist, qlist);
            double crossentropypde  = CEL.CrossentropyPDE(qlist, plist);;
            //     Console.WriteLine(sta + " crossentropypde " + crossentropyppde + " " + crossentropyqpde + " " + crossentropypde);
            double deltax = 0 - lbp_distance;// point1[0];
            double deltay = 0 - distance;
            double deltaz = 0 - ecu_distance;

            diff = (double)Math.Sqrt(
                (deltax * deltax) +
                (deltay * deltay) +
                (deltaz * deltaz));
            //  Console.WriteLine(sta+ " fitness " + diff+"-"+ ecu_distance + "-"+ lbp_distance);


            euc_cleanupperrange = clean_histogram.Mean + clean_histogram.StdDev;
            euc_cleanlowerrange = clean_histogram.Mean - clean_histogram.StdDev;

            string sa = sta + ", LVALUE, " + Lvalueavg + " fitness ," + diff + "," + ecu_distance + "," + lbp_distance + " ," + crossentropy + " ," + crossentropypde;
            //  if (!MainGA.recodedfilters.Contains(sta + "," + diff + "," + cleanupperrange + "," + cleanlowerrange + "," + lbp_cleanupperrange + "," + lbp_cleanlowerrange + "," + euc_cleanupperrange + "," + euc_cleanlowerrange));
            //   MainGA.recodedfilters.Add(sta + "," + diff + "," + cleanupperrange + "," + cleanlowerrange + "," + lbp_cleanupperrange + "," + lbp_cleanlowerrange + "," + euc_cleanupperrange + "," + euc_cleanlowerrange);


            Fitnessvalues fitnessvalues = new Fitnessvalues();

            fitnessvalues.Individual        = sta;
            fitnessvalues.Histogramdistance = diff;
            fitnessvalues.Cleanupperrange   = cleanupperrange;
            fitnessvalues.Lowerupperrange   = cleanlowerrange;

            fitnessvalues.Lbp_distance        = lbp_distance;
            fitnessvalues.Lbp_cleanupperrange = lbp_cleanupperrange;
            fitnessvalues.Lbp_lowerupperrange = lbp_cleanlowerrange;

            fitnessvalues.Ecu_distance        = Math.Abs(ecu_distance);
            fitnessvalues.Ecu_histogram_clean = clean_histogram;
            fitnessvalues.Ecu_histogram_adv   = adv_histogram;

            fitnessvalues.Lvalue = Lvalueavg;

            fitnessvalues.Crossentropy       = crossentropy;
            fitnessvalues.Crossentropy_clean = crossentropyq;
            fitnessvalues.Crossentropy_adv   = crossentropyp;

            fitnessvalues.Crossentropy_PDE       = crossentropypde;
            fitnessvalues.Crossentropy_PDE_clean = crossentropyqpde;
            fitnessvalues.Crossentropy_PDE_adv   = Math.Abs(crossentropyppde);

            MainGA.fitness.Add(fitnessvalues);

            return(fitnessvalues);
        }
Ejemplo n.º 2
0
        private void runonadverseonthread()
        {
            ObservableCollection <double> means    = new ObservableCollection <double>();
            ObservableCollection <double> lbpmeans = new ObservableCollection <double>();
            ObservableCollection <double> L        = new ObservableCollection <double>();

            Accord.Statistics.Visualizations.Histogram histogram = null;
            //List<double> stddeva = new List<double>();
            count = 0;

            string[] file = Directory.GetFiles(Form1.adverse);
            if (imagetotal > file.Length)
            {
                imagetotal = file.Length;
            }
            var T1 = Task.Run(() => {
                for (int i = 0; i < threadcount * 1; i++)
                {
                    //  Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T2 = Task.Run(() => {
                for (int i = threadcount * 1; i < threadcount * 2; i++)
                {
                    //  Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T3 = Task.Run(() => {
                for (int i = threadcount * 2; i < threadcount * 3; i++)
                {
                    // Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T4 = Task.Run(() => {
                for (int i = threadcount * 3; i <= threadcount * 4; i++)
                {
                    // Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T5 = Task.Run(() => {
                for (int i = threadcount * 4; i < threadcount * 5; i++)
                {
                    //  Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T6 = Task.Run(() => {
                for (int i = threadcount * 5; i < threadcount * 6; i++)
                {
                    // Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T7 = Task.Run(() => {
                for (int i = threadcount * 6; i < threadcount * 7; i++)
                {
                    // Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });
            var T8 = Task.Run(() => {
                for (int i = threadcount * 7; i < file.Length; i++)
                {
                    // Form1.textlist.Add("adverse count  " + i);
                    if (i >= imagetotal)
                    {
                        break;
                    }
                    rettype rt = runalgo(file[i]);
                    means.Add(rt.histoavg);
                    lbpmeans.Add(rt.lbpavg);
                    if (histogram == null)
                    {
                        histogram = rt.histogram;
                    }
                    else
                    {
                        histogram.Add(rt.histogram);
                    }
                    L.Add(CEL.Lcalculate(0, rt.histogram));
                }
            });

            T1.Wait();
            T2.Wait();
            T3.Wait();
            T4.Wait();
            T5.Wait();
            T6.Wait();
            T7.Wait();
            T8.Wait();
            // Form1.textlist.Add("total sample processed " + means.Count());
            double std = StandardDeviation(means.ToList(), 0, means.Count());
            double avg = means.Average();

            adversupperrange  = std + avg;
            adverselowerrange = Math.Abs(avg - std);

            std = StandardDeviation(lbpmeans.ToList(), 0, lbpmeans.Count());
            avg = means.Average();
            lbp_adversupperrange  = std + avg;
            lbp_adverselowerrange = Math.Abs(avg - std);
            //   Form1.textlist.Add(sta+" adversupperrange " + adversupperrange + " adverselowerrange " + adverselowerrange);
            adv_histogram = histogram;
            Ladvvalueavg  = L.Average();
            Lvaluesum     = Lvaluesum + L.Sum();
        }