// 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"); } } }