Ejemplo n.º 1
0
        public SynthImageView(SynthImage synthImage)
        {
            InitializeComponent();
            if (synthImage.GetType() == typeof(NDVI))
            {
                Title  = "NDVI";
                layers = new Layer[2] {
                    null, null
                };
                BandAButton.Content    = "NIR";
                BandGButton.Visibility = Visibility.Hidden;
                BandBButton.Visibility = Visibility.Hidden;
                CoeffName.Visibility   = Visibility.Hidden;
                CoeffValue.Visibility  = Visibility.Hidden;
            }
            else if (synthImage.GetType() == typeof(IPVI))
            {
                Title  = "IPVI";
                layers = new Layer[2] {
                    null, null
                };
                BandAButton.Content    = "NIR";
                BandGButton.Visibility = Visibility.Hidden;
                BandBButton.Visibility = Visibility.Hidden;
                CoeffName.Visibility   = Visibility.Hidden;
                CoeffValue.Visibility  = Visibility.Hidden;
            }
            else if (synthImage.GetType() == typeof(SAVI))
            {
                Title  = "SAVI";
                layers = new Layer[2] {
                    null, null
                };
                BandAButton.Content    = "NIR";
                BandGButton.Visibility = Visibility.Hidden;
                BandBButton.Visibility = Visibility.Hidden;
                CoeffName.Text         = "L";
            }
            else if (synthImage.GetType() == typeof(MSAVI))
            {
                Title  = "MSAVI";
                layers = new Layer[2] {
                    null, null
                };
                BandAButton.Content    = "NIR";
                BandGButton.Visibility = Visibility.Hidden;
                BandBButton.Visibility = Visibility.Hidden;
                CoeffName.Visibility   = Visibility.Hidden;
                CoeffValue.Visibility  = Visibility.Hidden;
            }
            else if (synthImage.GetType() == typeof(GEMI))
            {
                Title  = "GEMI";
                layers = new Layer[2] {
                    null, null
                };
                BandAButton.Content    = "NIR";
                BandGButton.Visibility = Visibility.Hidden;
                BandBButton.Visibility = Visibility.Hidden;
                CoeffName.Visibility   = Visibility.Hidden;
                CoeffValue.Visibility  = Visibility.Hidden;
            }
            else if (synthImage.GetType() == typeof(ARVI))
            {
                Title  = "SAVI";
                layers = new Layer[3] {
                    null, null, null
                };
                BandAButton.Content    = "NIR";
                BandBButton.Visibility = Visibility.Hidden;
                BandGButton.Content    = "B";
                BandGButton.Background = new SolidColorBrush(Color.FromRgb(128, 124, 218));
                CoeffName.Text         = "a";
            }
            else if (synthImage.GetType() == typeof(BlendChanel))
            {
                Title  = "Смешивание каналов";
                layers = new Layer[3] {
                    null, null, null
                };
                BandBButton.Visibility     = Visibility.Hidden;
                CoeffName.Visibility       = Visibility.Hidden;
                CoeffValue.Visibility      = Visibility.Hidden;
                SaveResButton.Visibility   = Visibility.Hidden;
                PaletteComboBox.Visibility = Visibility.Hidden;

                BandAButton.Content    = "R";
                BandAButton.Background = new SolidColorBrush(Color.FromRgb(218, 124, 124));
                BandRButton.Content    = "G";
                BandRButton.Background = new SolidColorBrush(Color.FromRgb(145, 218, 124));
                BandGButton.Content    = "B";
                BandGButton.Background = new SolidColorBrush(Color.FromRgb(128, 124, 218));
                CoeffName.Text         = "a";
            }
            else
            {
                MessageBox.Show("Произошла внуренняя ошибка", "Ошибка", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                this.Close();
            }

            defaultName[0] = BandAButton.Content.ToString();
            defaultName[1] = BandRButton.Content.ToString();
            defaultName[2] = BandGButton.Content.ToString();
            defaultName[3] = BandBButton.Content.ToString();

            ListBoxLayers.ItemsSource   = LayerManager.instance.layers;
            ListBoxLayers.SelectedIndex = LayerManager.instance.SelectImage;
            this.synthImage             = synthImage;
        }
Ejemplo n.º 2
0
        private async void CalculateButtonClick(object sender, RoutedEventArgs e)
        {
            // Проерка коэффцициентов
            double coef = 0;

            try
            {
                coef = Convert.ToDouble(CoeffValue.Text.Replace(".", ","));
            }
            catch
            {
                MessageBox.Show("Не правильно введен коэффициент", "Ошибка",
                                MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (synthImage.GetType() == typeof(SAVI))
            {
                if (coef < 0 || coef > 1)
                {
                    MessageBox.Show("Выберите L = [0; 1]", "Ошибка",
                                    MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else
                {
                    synthImage.SetCoeff(coef);
                }
            }
            if (synthImage.GetType() == typeof(ARVI))
            {
                if (coef < 0 || coef > 1)
                {
                    MessageBox.Show("Выберите a = [0; 1]", "Ошибка",
                                    MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
                else
                {
                    synthImage.SetCoeff(coef);
                }
            }

            // Проверка на выбор каналов
            for (int i = 0; i < layers.Length; i++)
            {
                if (layers[i] == null)
                {
                    MessageBox.Show("Необходимо выбрать изображения", "Ошибка",
                                    MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }

            Palette palette = (Palette)PaletteComboBox.SelectedIndex;

            try
            {
                CorrectProgressBar.IsIndeterminate = true;
                image = await Controller.SynthImageTask(synthImage, layers, palette);

                MainImage.Source = image;
            }
            catch (OperationCanceledException)
            {
                image = null;
                MessageBox.Show("Произошла внуренняя ошибка. Код ошибки 1", "Ошибка", MessageBoxButton.OK,
                                MessageBoxImage.Error);
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
            CorrectProgressBar.IsIndeterminate = false;
        }