Ejemplo n.º 1
0
        static void RunExperimenets(List <ImageArea> areas, Mat.Indexer <Vec3b> indexer, int exp_num = 1)
        {
            Param A_     = DBConnector.GetParam("Больший радиус"),
                  B_     = DBConnector.GetParam("Меньший радиус"),
                  count_ = DBConnector.GetParam("Количество точек");

            A_.Max     = 10;
            B_.Max     = 8;
            count_.Max = 16;

            int test_num = 1;

            foreach (var a in A_.AsEnumerable())
            {
                foreach (var b in B_.AsEnumerable())
                {
                    foreach (var c in count_.AsEnumerable())
                    {
                        Console.WriteLine($"test {test_num}/{A_.count * B_.count * count_.count}");
                        var exp = new Experement()
                        {
                            ExperimentNumber = exp_num, TestNubmer = test_num
                        };
                        DBConnector.CreateItem(exp);
                        DBConnector.CreateList(new List <ExperimentPlan>()
                        {
                            new ExperimentPlan()
                            {
                                ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, CodeParameter = A_.Code, ValueParameter = a
                            },
                            new ExperimentPlan()
                            {
                                ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, CodeParameter = B_.Code, ValueParameter = b
                            },
                            new ExperimentPlan()
                            {
                                ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, CodeParameter = count_.Code, ValueParameter = c
                            },
                        });
                        var results = MakeExperemnt(a, b, c, areas, exp, indexer);
                        DBConnector.CreateList(results);
                        test_num++;
                    }
                }
            }
        }
        void RunExperimenets(List <ImageArea> areas, Mat.Indexer <Vec3b> indexer, int exp_num = 1)
        {
            Param A = new Param()
            {
                Min  = (int)numericUpDownAFrom.Value,
                Max  = (int)numericUpDownATo.Value,
                Step = (int)numericUpDownAStep.Value,
                Code = "1"
            };

            Param B = new Param()
            {
                Min  = (int)numericUpDownBFrom.Value,
                Max  = (int)numericUpDownBTo.Value,
                Step = (int)numericUpDownBStep.Value,
                Code = "2"
            };

            Param PCount = new Param()
            {
                Min  = (int)numericUpDownPFrom.Value,
                Max  = (int)numericUpDownPTo.Value,
                Step = (int)numericUpDownPStep.Value,
                Code = "3"
            };

            this.labelExpNum.Invoke(new Action(() => { labelExpNum.Text = exp_num.ToString(); }));
            int test_num = 1;

            foreach (var a in A.AsEnumerable())
            {
                foreach (var b in B.AsEnumerable())
                {
                    foreach (var c in PCount.AsEnumerable())
                    {
                        this.labelCurrentIteration.Invoke(new Action(() => { labelCurrentIteration.Text = test_num.ToString(); }));
                        var exp = new Experement()
                        {
                            ExperimentNumber = exp_num, TestNubmer = test_num
                        };
                        DBConnector.CreateItem(exp);
                        DBConnector.CreateList(new List <ExperimentPlan>()
                        {
                            new ExperimentPlan()
                            {
                                ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, CodeParameter = A.Code, ValueParameter = a
                            },
                            new ExperimentPlan()
                            {
                                ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, CodeParameter = B.Code, ValueParameter = b
                            },
                            new ExperimentPlan()
                            {
                                ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, CodeParameter = PCount.Code, ValueParameter = c
                            },
                        });
                        var results = ConsoleApp.Program.MakeExperemnt(a, b, c, areas, exp, indexer);
                        DBConnector.CreateList(results);
                        test_num++;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public static List <ExperimentResult> MakeExperemnt(int A, int B, int count, List <ImageArea> areas, Experement exp, Mat.Indexer <Vec3b> indexer)
        {
            Console.WriteLine($"{A} {B} {count}");
            var lbp = new LBPProcessor(A, B, count);

            List <Tuple <RGBHistogramm <uint>, ImageArea> > histogramm_list = new List <Tuple <RGBHistogramm <uint>, ImageArea> >();

            foreach (ImageArea row in areas)
            {
                histogramm_list.Add(new Tuple <RGBHistogramm <uint>, ImageArea>(lbp.CalcHistogramForArea(row.X1, row.Y1, row.h, row.w, indexer), row));
            }

            List <ExperimentResult> results = new List <ExperimentResult>();

            foreach (var histogram in histogramm_list)
            {
                var    hist      = histogram.Item1;
                var    area      = histogram.Item2;
                string defect    = area.IsDefect ? "-" : "";
                var    distanseR = hist.R.Distanse(histogramm_list[1].Item1.R);
                var    distanseG = hist.G.Distanse(histogramm_list[1].Item1.G);
                var    distanseB = hist.B.Distanse(histogramm_list[1].Item1.B);

                var summa = distanseR + distanseG + distanseB;
                results.Add(new ExperimentResult()
                {
                    ExperimentNumber = exp.ExperimentNumber, TestNubmer = exp.TestNubmer, IdArea = area.Id, DefectPower = summa
                });
                //Console.WriteLine($"{area.X1,3}, {area.Y1,3}: {summa,3} {defect,2} {threshold,2}");
            }
            return(results);
        }