public static async Task RunBenchmark(int deltaN, int max) { int currentSize = deltaN; var encoder = new ConvolutionalEncoder(); var decoder = new ConvolutionalDecoder(); var noisyChannel = new NoisyChannel(0.01); while (currentSize <= max) { var bmp = new Bitmap(currentSize, currentSize); var bytes = BitmapHelper.GetColorBytes(bmp); var watch = System.Diagnostics.Stopwatch.StartNew(); var resultWithEncoding = await MessageController.SendBytes( bytes, noisyChannel, encoder, decoder); watch.Stop(); Console.WriteLine($"{currentSize},{watch.Elapsed}"); currentSize += deltaN; } }
private async void VectorSubmit_Click(object sender, EventArgs e) { var vectorText = VectorInput.Text; string channelNoiseText = ChannelNoiseInput.Text; if (!double.TryParse(channelNoiseText.Replace(',', '.'), out var noise) || noise < 0 || noise > 1) { MessageBox.Show("Noise must be a number between 0 and 1."); return; } var channel = new NoisyChannel(errorChance: noise); var encodedResult = await MessageController.EncodeAndSendVector(vectorText, new ConvolutionalEncoder(), channel); DisplayEncodedVector(encodedResult); }
private async void uploadImageButton_Click(object sender, EventArgs e) { encodingResultPanel.Controls.Clear(); encodingResultPanel.Controls.Add(UIHelper.CreateLabelWithText("Loading images... Please wait.")); var dialog = new OpenFileDialog { ShowHelp = true, Filter = "Image Files(*.jpeg;*.bmp;*.png;*.jpg)|*.jpeg;*.bmp;*.png;*.jpg" }; var Response = dialog.ShowDialog(); if (Response != DialogResult.OK) { return; } var channelNoiseText = ChannelNoiseInput.Text; if (!double.TryParse(channelNoiseText.Replace(',', '.'), out var noise) || noise < 0 || noise > 1) { MessageBox.Show("Noise must be a number between 0 and 1."); return; } var channel = new NoisyChannel(noise); var originalImage = new Bitmap(dialog.FileName); var scaledImage = BitmapHelper.ScaleBitmap(originalImage, desiredWidth: 200); var imageBytes = BitmapHelper.GetColorBytes(scaledImage); var unencodedResult = await MessageController.SendBytes(imageBytes, channel); var encodedResult = await MessageController.SendBytes( imageBytes, channel, new ConvolutionalEncoder(), new ConvolutionalDecoder()); DisplayImageResult(scaledImage, unencodedResult, encodedResult); }
public static async Task RunBenchmark(double errorDelta, double expectedErrorCorrectionRate) { var bmp = new Bitmap(100, 100); var bytes = BitmapHelper.GetColorBytes(bmp); double averageErrorCorrectionPercentage = 100; double currentErrorChance = 0; var encoder = new ConvolutionalEncoder(); var decoder = new ConvolutionalDecoder(); do { var noisyChannel = new NoisyChannel(currentErrorChance); double sum = 0; for (int i = 0; i < 10; i++) { var resultWithoutEncoding = await MessageController.SendBytes( bytes, noisyChannel ); var resultWithEncoding = await MessageController.SendBytes( bytes, new NoisyChannel(currentErrorChance), encoder, decoder); var Percentage = MathHelper.CalculatePercentageWithPrecision( resultWithEncoding.Errors, resultWithoutEncoding.Errors, 2); sum += Percentage; } averageErrorCorrectionPercentage = sum / 10; Console.WriteLine($"{currentErrorChance},{averageErrorCorrectionPercentage:F2}"); currentErrorChance += errorDelta; } while(averageErrorCorrectionPercentage >= expectedErrorCorrectionRate); }
private async void TextSubmit_Click(object sender, EventArgs e) { var initialText = TextInput.Text; string channelNoiseText = ChannelNoiseInput.Text; if (!double.TryParse(channelNoiseText.Replace(',', '.'), out var noise) || noise < 0 || noise > 1) { MessageBox.Show("Noise must be a number between 0 and 1."); return; } var channel = new NoisyChannel(errorChance: noise); var unencodedResult = await MessageController.SendText(initialText, channel); var encodedResult = await MessageController.SendText( initialText, channel, new ConvolutionalEncoder(), new ConvolutionalDecoder()); DisplayTextResult(initialText, unencodedResult, encodedResult); }