public override bool Instantiate()
        {
            try
            {
                _logger = LogManager.GetCurrentClassLogger();
                _logger?.Info("--------------------------------------------------------------------------------------------------------------------------------------");

                bool show = false;

                IImageReader imageReader = new Factory_DoubleLight16bitImageReader().Factory(_logger, _width, _height, show);

                IDirectoryReader dirReader = new Factory_DirectoryReader().Factory(_logger, _inputPaths[_pathIndex], "raw", imageReader);

                int histogramRange = 4096;
                IHistogramThresholdCalculator histcalculator = new FactoryHistogramThresholdCalculatorEmgu1().Factory(_logger, histogramRange);

                BeltCoordinates beltCoords = new BeltCoordinates {
                    LeftBeltStart = 425, LeftBeltEnd = 565, RightBeltStart = 1500, RightBeltEnd = 1640
                };
                IImagePreProcessor preProcessor = new FactoryImagePreProcessor().Factory(_logger, histogramRange, _width, _height, histcalculator, show, beltCoords);

                IBorderSearcher borderSearcher = new FactoryBorderSearcherEmgu1().Factory(_logger, 10, _width, _height, show);

                IColumnDataCalculator columnDataCalculator = new FactoryCalculateColumnDataEmgu1().Factory(_logger, _width, _height);

                string       outputFolder = Path.Combine(_inputPaths[_pathIndex], "output");
                IResultSaver saver        = new FactoryCsvColumnResultSaver().Factory(outputFolder, "StatCalc", _logger);


                Dictionary <SearchOrientations, Rectangle> calcareas = new Dictionary <SearchOrientations, Rectangle>();
                calcareas.Add(SearchOrientations.TopToBottom, new Rectangle(1000, 50, 2000, 450));
                calcareas.Add(SearchOrientations.LeftToRight, new Rectangle(50, 1000, 450, 2000));
                calcareas.Add(SearchOrientations.BottomToTop, new Rectangle(1000, _height - 501, 2000, 500));
                calcareas.Add(SearchOrientations.RightToLeft, new Rectangle(_width - 501, 1000, 500, 2000));
                IEdgeLineFinder finder = new FactoryEdgeLineFinderCSharp1().Factory(_logger, _width, _height, calcareas);

                IEdgeLineFitter fitter = new Factory_EdgeLineFitter_Emgu1().Factory(_logger);

                _evaluationProcessor = new EvaluationProcessor1(_logger, dirReader, preProcessor, borderSearcher, columnDataCalculator, saver, finder, fitter);
            }
            catch (Exception ex)
            {
                _logger?.Error($"Exception during MethodManager1 Instantiation: {ex.Message}");
                return(false);
            }

            return(true);
        }
        public override bool Instantiate()
        {
            try
            {
                _logger = LogManager.GetCurrentClassLogger();
                _logger?.Info("--------------------------------------------------------------------------------------------------------------------------------------");

                bool show = true;

                IImageReader imageReader = new FactorySimpleLight8BitImageReader().Factory(_logger, _width, _height, show);

                IDirectoryReader dirReader = new Factory_DirectoryReader().Factory(_logger, _inputPaths[_pathIndex], "raw", imageReader);

                int histogramRange = 256;
                //IHistogramThresholdCalculator histcalculator = new FactoryHistogramThresholdCalculatorCSharp1().Factory(_logger, 256, 40);
                IHistogramThresholdCalculator histcalculator = new FactoryHistogramThresholdCalculatorCSharp1().Factory(_logger, histogramRange, 30);

                BeltCoordinates beltCoords = new BeltCoordinates {
                    LeftBeltStart = 425, LeftBeltEnd = 565, RightBeltStart = 1500, RightBeltEnd = 1640
                };
                IImagePreProcessor preProcessor = new FactoryImagePreProcessor().Factory(_logger, histogramRange, _width, _height, histcalculator, show, beltCoords);

                IBorderSearcher borderSearcher = new FactoryBorderSearcherEmgu2().Factory(_logger, 10, _width, _height, show);

                IColumnDataCalculator columnDataCalculator1 = new FactoryCalculateColumnDataEmgu1().Factory(_logger, _width, _height);
                IColumnDataCalculator columnDataCalculator2 = new FactoryCalculateColumnDataEmgu3().Factory(_logger, _width, _height);

                string       outputFolder = Path.Combine(_inputPaths[_pathIndex], "output");
                IResultSaver saver1       = new FactoryCsvColumnStatisticalResultSaver().Factory(outputFolder, "StatCalc", _logger);
                IResultSaver saver2       = new FactoryCsvColumnResultSaver().Factory(outputFolder, "Mean", _logger);


                IEdgeLineFinder finder = new FactoryEdgeLineFinderEmgu1().Factory(_logger, _width, _height);

                IEdgeLineFitter fitter = new Factory_EdgeLineFitter_Emgu1().Factory(_logger);

                _evaluationProcessor = new EvaluationProcessor3(_logger, dirReader, preProcessor, borderSearcher, columnDataCalculator1, columnDataCalculator2, saver1, saver2, finder);
            }
            catch (Exception ex)
            {
                _logger?.Error($"Exception during MethodManager1 Instantiation: {ex.Message}");
                return(false);
            }

            return(true);
        }