public Tuple <Bitmap, string> Decode(Bitmap encodedImage, AlgorithmConfiguration configuration) { // Algorithm instances DifferencesExpansionAlgorithm de = new DifferencesExpansionAlgorithm(); HistogramShiftingAlgorithm hs = new HistogramShiftingAlgorithm(); // Algorithm configs DifferenceExpansionBruteForceConfiguration deConfig = new DifferenceExpansionBruteForceConfiguration( new HashSet <EmbeddingChanel>() { EmbeddingChanel.R, EmbeddingChanel.G, EmbeddingChanel.B }, new HashSet <Direction>() { Direction.Horizontal, Direction.Vertical }); HistogramShiftingConfiguration hsConfig = new HistogramShiftingConfiguration(true, new HashSet <EmbeddingChanel>() { EmbeddingChanel.R, EmbeddingChanel.G, EmbeddingChanel.B }); // Decoding var deResult = de.BruteforceDecode(encodedImage, deConfig); if (deResult != null) { return(deResult); } var hsResult = hs.Decode(encodedImage, hsConfig); if (hsResult != null) { return(hsResult); } return(null); }
private void BtnConfigHS_Click(object sender, RoutedEventArgs e) { if (isWatermarkingModeSelected()) { HashSet <EmbeddingChanel> set = new HashSet <EmbeddingChanel>(); set.Add(EmbeddingChanel.R); HistogramShiftingConfiguration config = new HistogramShiftingConfiguration(false, set); var dialogBox = new ConfigurationDialogBox.HistogramShiftingConfiguraitonDialogBox( config.EmbeddingChanels) { Owner = this, }; dialogBox.ShowDialog(); if (dialogBox.DialogResult == true) { if (dialogBox.cbR.IsChecked == true) { HashSet <EmbeddingChanel> embeddingChanels = new HashSet <EmbeddingChanel>(); if (dialogBox.cbR.IsChecked == true) { embeddingChanels.Add(EmbeddingChanel.R); } if (dialogBox.cbG.IsChecked == true) { embeddingChanels.Add(EmbeddingChanel.G); } if (dialogBox.cbB.IsChecked == true) { embeddingChanels.Add(EmbeddingChanel.B); } currentEncodingHsConfiguration = new HistogramShiftingConfiguration(false, embeddingChanels); } } } if (isAnalyzingModeSelected()) { HashSet <EmbeddingChanel> set = new HashSet <EmbeddingChanel>(); set.Add(EmbeddingChanel.R); HistogramShiftingConfiguration config = new HistogramShiftingConfiguration(false, set); var dialogBox = new ConfigurationDialogBox.HistogramShiftingConfiguraitonDecodingDialogBox( config.EmbeddingChanels) { Owner = this, }; dialogBox.ShowDialog(); if (dialogBox.DialogResult == true) { if (dialogBox.cbR.IsChecked == true) { HashSet <EmbeddingChanel> embeddingChanels = new HashSet <EmbeddingChanel>(); if (dialogBox.cbR.IsChecked == true) { embeddingChanels.Add(EmbeddingChanel.R); } if (dialogBox.cbG.IsChecked == true) { embeddingChanels.Add(EmbeddingChanel.G); } if (dialogBox.cbB.IsChecked == true) { embeddingChanels.Add(EmbeddingChanel.B); } currentDecodingHsConfiguration = new HistogramShiftingConfiguration(dialogBox.cbBruteforce.IsChecked == true, embeddingChanels); } } } }