private void ThreadFunctions() { lock (LockThread) { ImageRecognitionOptimized.ConvertPixelArrayToBynarMatrix(SpritePixels, ContrastValue, GammaCorrectionValue, MedianGroupPixel, BynarizationThreshold); EdgeCalculation.CalcualteBorders(ImageRecognitionOptimized.GetMatrix(), ImageRecognitionOptimized.GetWidth(), ImageRecognitionOptimized.GetHeight()); if (RecognizePlateCode) { LocalizePlate.InitializePlateLocalizationParameters(EdgeCalculation.GetContour(), ImageRecognitionOptimized.GetMatrix(), DimensionOfPlateCharX_Min_Max, DimensionOfPlateCharY_Min_Max); LocalizePlate.LocalizePlateString(); if (ApplyPlateCodeSlantCorrection) { LocalizePlate.SlantCorrection(SlantThreshold); } #region DRAWING_FUNCTIONS LocalizePlate.DrawContour(); LocalizePlate.DrawArrangedPossiblePlate(); #endregion if (ExtractPlateString) { LocalizePlate.CalculateStringAccuracy(); } } SpritePixels = ImageRecognitionOptimized.ConvertBynariMatrixToPixelArray(); finished = true; } }