Beispiel #1
0
        public List <RobustnessTestResult> Test(string imagePath, string text, IEncoder encoder)
        {
            var results        = new List <RobustnessTestResult>();
            var emptyContainer = LoadImage(imagePath);
            var fullContainer  = encoder.Encode(text, emptyContainer);
            var untransformedContainerErrorRate = errorEstimator.EstimateBitErrorRate(text, fullContainer, encoder);

            for (var angle = 0; angle <= 0; angle++)
            {
                for (var scale = 1.0f; scale >= 1f; scale -= 0.1f)
                {
                    for (var cropPercent = 0; cropPercent <= 20; cropPercent += 4)
                    {
                        var parameters = new ProcessingParameters()
                        {
                            RotationAngle = angle,
                            ScaleX        = scale,
                            ScaleY        = scale,
                            CropPercentX  = cropPercent,
                            CropPercentY  = cropPercent
                        };
                        var result = RunSingleTest(imagePath, fullContainer, text, encoder, parameters);
                        result.ErrorRate = untransformedContainerErrorRate;
                        results.Add(result);
                    }
                }
            }
            return(results);
        }
Beispiel #2
0
 private Task <double> CalculatePerr(string text, Bitmap emptyContainer, int delta, double alpha)
 {
     return(Task.Factory.StartNew(() =>
     {
         var kutter = new KutterEncoder(delta, alpha);
         var fullContainer = kutter.Encode(text, emptyContainer);
         var estimator = new HammingDistanceCalculator();
         return estimator.EstimateBitErrorRate(text, fullContainer, kutter);
     }));
 }