public DifferencesExpansionConfiguraitonDialogBox(DifferencesExpansionConfiguration standardDEConfig, DifferenceExpansionBruteForceConfiguration bruteForceDEConfig, AlgorithmConfiguration currentConfiguration) { InitializeComponent(); if (standardDEConfig != null) { this.threshold = standardDEConfig.Threeshold; tbThreshold.Text = threshold.ToString(); cbEmbeddingDirection.SelectedIndex = (int)standardDEConfig.EmbeddingDirection; cbR.IsChecked = standardDEConfig.EmbeddingChanels.Contains(EmbeddingChanel.R); cbG.IsChecked = standardDEConfig.EmbeddingChanels.Contains(EmbeddingChanel.G); cbB.IsChecked = standardDEConfig.EmbeddingChanels.Contains(EmbeddingChanel.B); ComboBoxItem standardComboBoxItem = new ComboBoxItem(); standardComboBoxItem.Content = "Standard"; standardComboBoxItem.IsSelected = currentConfiguration is DifferencesExpansionConfiguration; cbConfigurationType.Items.Add(standardComboBoxItem); } if (bruteForceDEConfig != null) { cbHorizontal_BF.IsChecked = bruteForceDEConfig.EmbeddingDirections.Contains(Direction.Horizontal); cbVertical_BF.IsChecked = bruteForceDEConfig.EmbeddingDirections.Contains(Direction.Vertical); cbR_BF.IsChecked = bruteForceDEConfig.EmbeddingChanels.Contains(EmbeddingChanel.R); cbG_BF.IsChecked = bruteForceDEConfig.EmbeddingChanels.Contains(EmbeddingChanel.G); cbB_BF.IsChecked = bruteForceDEConfig.EmbeddingChanels.Contains(EmbeddingChanel.B); ComboBoxItem bruteForceItem = new ComboBoxItem(); bruteForceItem.Content = "Brute force"; bruteForceItem.IsSelected = currentConfiguration is DifferenceExpansionBruteForceConfiguration; cbConfigurationType.Items.Add(bruteForceItem); } }
public Bitmap Encode(Bitmap inputImage, string payload, AlgorithmConfiguration configuration) { DifferencesExpansionConfiguration config = (DifferencesExpansionConfiguration)configuration; Bitmap image = new Bitmap(inputImage); // For multiple embedding channels payload to encode is divided into chunks - one for each RGB channel List <string> payloadChunks = GetPayloadChunks(payload, config.EmbeddingChanels); int chunkNumber = 0; foreach (EmbeddingChanel embeddingChanel in Enum.GetValues(typeof(EmbeddingChanel))) { if (config.EmbeddingChanels.Contains(embeddingChanel)) { // Encoding of payload chunk performed for given channel of RGB EncodePayloadIntoImage(image, payloadChunks[chunkNumber++], config.EmbeddingDirection, config.Threeshold, embeddingChanel); } } return(image); }
private void BtnConfigDE_Click(object sender, RoutedEventArgs e) { if (isWatermarkingModeSelected()) { DifferencesExpansionConfiguration config = (DifferencesExpansionConfiguration)standardEncodingDEConfig; var dialogBox = new ConfigurationDialogBox.DifferencesExpansionConfiguraitonDialogBox(config, null, activeEncodingDEConfig) { Owner = this, }; dialogBox.ShowDialog(); AlgorithmConfiguration newConfig = GetConfigurationBasedOnDialogBoxResult(dialogBox); if (newConfig != null) { standardEncodingDEConfig = newConfig; activeEncodingDEConfig = standardEncodingDEConfig; } } if (isAnalyzingModeSelected()) { DifferencesExpansionConfiguration deConfig = (DifferencesExpansionConfiguration)standardDecodingDEConfig; DifferenceExpansionBruteForceConfiguration deBruteForceConfig = (DifferenceExpansionBruteForceConfiguration)bruteForceDecodingDEConfig; var dialogBox = new ConfigurationDialogBox.DifferencesExpansionConfiguraitonDialogBox(deConfig, deBruteForceConfig, activeDecodingDEConfig) { Owner = this, }; dialogBox.ShowDialog(); AlgorithmConfiguration newConfig = GetConfigurationBasedOnDialogBoxResult(dialogBox); if (dialogBox.cbConfigurationType.Text == "Standard" && newConfig != null) { standardDecodingDEConfig = newConfig; activeDecodingDEConfig = standardDecodingDEConfig; } else if (dialogBox.cbConfigurationType.Text == "Brute force" && newConfig != null) { bruteForceDecodingDEConfig = newConfig; activeDecodingDEConfig = bruteForceDecodingDEConfig; } } }
private Tuple <Bitmap, string> Decode(Bitmap image, DifferencesExpansionConfiguration config) { try { List <string> payloadChunks = new List <string>(); foreach (EmbeddingChanel embeddingChanel in Enum.GetValues(typeof(EmbeddingChanel))) { if (config.EmbeddingChanels.Contains(embeddingChanel)) { // For each RGB elected in configuration chunk of embedded payload is retrieved payloadChunks.Add(DecodeImage(image, config.EmbeddingDirection, embeddingChanel)); } } // Payload from all selected channels are concatenated to build whole message string payload = String.Join("", payloadChunks); // Payload and oryginal image are returned return(new Tuple <Bitmap, string>(image, payload)); } catch { } return(null); }