private void btLoadImage_Click(object sender, EventArgs e) // обработки события при нажатии на кнопку "Загрузите изображение" { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Выберете файл изображения."; ofd.Filter = "BMP|*.bmp|Png Images(*.png)|*.png|Jpeg Images(*.jpg)|*.jpg"; //ofd.Filter = "Bitmap Images(*.bmp)|*.bmp|Png Images(*.png)|*.png|Jpeg Images(*.jpg)|*.jpg"; if (ofd.ShowDialog() == DialogResult.OK) { StreamReader streamReader = new StreamReader(ofd.FileName); OriginalBitmap = (Bitmap)Bitmap.FromStream(streamReader.BaseStream); streamReader.Close(); OriginalImage = OriginalBitmap; FileInfo file_info = new FileInfo(ofd.FileName); long lFileSize = file_info.Length / 1023; double SNRF = ExtendedBitmap.SNRF(OriginalBitmap, 50, 70, 50); // Выводим информацию о файле в статус бар toolStripStatusLabel1.Text = ofd.SafeFileName + ", " + lFileSize.ToString() + "КБ, " + OriginalImage.Size.ToString() + "SNRGG=" + SNRF.ToString(); //"0.###E+0" // выводим картинку выбранную картинку на экран pb1.Image = OriginalImage.resizeImage(new Size(191, 150)); // Исходное изображение загружено -> включаем кнопки по обработке изображения btnDOG.Enabled = true; btnSobel.Enabled = true; btnLaplace.Enabled = true; btRunAllFilters.Enabled = true; } }
// Загрузка изображения 2 private void button1_Click(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = "Выберете файл изображения."; ofd.Filter = "BMP|*.bmp|Png Images(*.png)|*.png|Jpeg Images(*.jpg)|*.jpg"; if (ofd.ShowDialog() == DialogResult.OK) { StreamReader streamReader = new StreamReader(ofd.FileName); img2 = (Bitmap)Bitmap.FromStream(streamReader.BaseStream); streamReader.Close(); // картинка загружена b_img2 = true; LoadingImage = b_img1 && b_img2; // выводим картинку выбранную картинку на экран pb2.Image = img2.resizeImage(new Size(395, 395)); SNRF2 = ExtendedBitmap.SNRF(img2); SNRGG2 = ExtendedBitmap.SNRGG(img2); SNRF2label.Text = SNRF2.ToString("F3"); SNRGG2label.Text = SNRGG2.ToString("F3"); // делаем анализ AnalyzeRun(); } }
// Switch channel public void SwitchChannel(int channel) { if ((channel >= 0) && (channel <= 2)) { if (!stat.IsGrayscale) { //histogram.Color = colors[channel]; activeHistogram = (channel == 0) ? stat.Red : (channel == 1) ? stat.Green : stat.Blue; } } else if (channel == 3) { if (stat.IsGrayscale) { //histogram.Color = colors[3]; activeHistogram = stat.Gray; } } if (activeHistogram != null) { //histogram.Values = activeHistogram.Values; // Собираем статистику по изображению int[] yval = activeHistogram.Values; try { // очищаем Сhart для дальшейшей отрисовки foreach (var series in chart1.Series) { series.Points.Clear(); } // Заполняем Chart значениями гистограммы chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Enabled = false; chart1.ChartAreas["ChartArea1"].AxisY.LabelStyle.Enabled = false; for (int i = 0; i < yval.Length; i++) { chart1.Series["Series1"].Points.AddXY(i, yval[i]); } } catch (Exception e) { MessageBox.Show(e.Message); } meanLabel.Text = activeHistogram.Mean.ToString("F2"); // среднее значение stdDevLabel.Text = activeHistogram.StdDev.ToString("F2"); // стандартное отклонение medianLabel.Text = activeHistogram.Median.ToString( ); // медиана minLabel.Text = activeHistogram.Min.ToString( ); // минимальное значение maxLabel.Text = activeHistogram.Max.ToString( ); // максимальное значение double MSE = ExtendedBitmap.SKO(src, Diplom.MainForm.getOriginalBitmap()); MSELabel.Text = MSE.ToString("F3"); double SNR = ExtendedBitmap.SNR(src, Diplom.MainForm.getOriginalBitmap()); SNRlabel.Text = SNR.ToString("F3"); double SNRGG = ExtendedBitmap.SNRGG(src); SNRGGlabel.Text = SNRGG.ToString("F3"); } }
// Расчет и отображение статистики по изображениям private void AnalyzeRun() { // Если загружены обе картинки - расчитываем статистику по каждой и разницу между ними if (LoadingImage) // если обе картинки загружены { SKO = ExtendedBitmap.SKO(img1, img2); if (SKO != -1) { label_SKO.Text = SKO.ToString("F3"); } } }