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