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++; } } } }
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); }