private void Menu_histogram_Click(object sender, EventArgs e) { HistogramViewer.Show(imageObj); /* histogram = new HistogramForm(grayArray, bitmap.Width, bitmap.Height); * histogram.Show();*/ }
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) { if (windowService != null) { if (objectProvider != null) { try { DenseHistogram hist = objectProvider.GetObject() as DenseHistogram; if (hist != null) { using (HistogramViewer viewer = new HistogramViewer()) { viewer.HistogramCtrl.AddHistogram("Histogram", Color.Black, hist, 256, new float[] { 0, 255 }); viewer.HistogramCtrl.Refresh(); windowService.ShowDialog(viewer); } } } catch (Exception ex) { //TODO } } } }
private void calculateToolStripMenuItem_Click(object sender, EventArgs e) { try { if (pictureBox1.Image == null) { return; } var img = new Bitmap(pictureBox1.Image) .ToImage <Gray, byte>(); Mat hist = new Mat(); float[] ranges = new float[] { 0, 256 }; int[] channel = { 0 }; int[] histSize = { 256 }; VectorOfMat ms = new VectorOfMat(); ms.Push(img); CvInvoke.CalcHist(ms, channel, null, hist, histSize, ranges, false); HistogramViewer viewer = new HistogramViewer(); viewer.Text = "Image Histogram"; viewer.ShowIcon = false; viewer.HistogramCtrl.AddHistogram("Image Histogram", Color.Blue, hist, 256, ranges); viewer.HistogramCtrl.Refresh(); viewer.Show(); //pictureBox1.Image = CreateGraph(hist).GetImage(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void button1_Click(object sender, EventArgs e) { //从文件中读取图像 var mat = new Mat("lena.jpg"); imageBox1.Image = mat; //1.HistogramBox histogramBox1.GenerateHistograms(mat, 32); histogramBox1.Refresh(); histogramBox1.Show(); //2.使用HistogramViewer HistogramViewer.Show(mat, 32); //image[0] 顯示Blue,bin = 32 }
protected override void Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider) { DenseHistogram hist = objectProvider.GetObject() as DenseHistogram; if (hist.Dimension > 1) { MessageBox.Show("Only 1-D histogram visualization is supported"); return; } if (hist != null) { using (HistogramViewer viewer = new HistogramViewer()) { viewer.HistogramCtrl.AddHistogram("Histogram", System.Drawing.Color.Black, hist); viewer.HistogramCtrl.Refresh(); windowService.ShowDialog(viewer); } } }
void histoG(Image <Gray, byte> img, Image <Bgr, byte> img2) { DenseHistogram Histo = new DenseHistogram(256, new RangeF(0, 255)); float[] grayHist = new float[256]; Histo.Calculate(new Image <Gray, byte>[] { img }, true, null); Histo.MatND.ManagedArray.CopyTo(grayHist, 0); DenseHistogram Histo_temp = new DenseHistogram(256, new RangeF(0, 255)); float[,] colorHist = new float[3, 256]; float[] tempHist = new float[256]; Image <Gray, Byte>[] images = img2.Split(); Histo_temp.Calculate(new Image <Gray, byte>[] { images[0] }, true, null); Histo_temp.MatND.ManagedArray.CopyTo(tempHist, 0); for (int m = 0; m < 256; m++) { colorHist[0, m] = tempHist[m]; } Histo_temp.Calculate(new Image <Gray, byte>[] { images[1] }, true, null); Histo_temp.MatND.ManagedArray.CopyTo(tempHist, 0); for (int m = 0; m < 256; m++) { colorHist[1, m] = tempHist[m]; } Histo_temp.Calculate(new Image <Gray, byte>[] { images[2] }, true, null); Histo_temp.MatND.ManagedArray.CopyTo(tempHist, 0); for (int m = 0; m < 256; m++) { colorHist[2, m] = tempHist[m]; } HistogramViewer.Show(Histo, "histo"); HistogramViewer.Show(img2, 256); float meangray = 0, meanR = 0, meanG = 0, meanB = 0; int totalgray = 0, totalR = 0, totalG = 0, totalB = 0; for (int m = 0; m < 255; m++) { meangray = meangray + grayHist[m] * m; totalgray = totalgray + (int)grayHist[m]; meanB = meanB + colorHist[0, m] * m; totalB = totalB + (int)colorHist[0, m]; meanG = meanG + colorHist[1, m] * m; totalG = totalG + (int)colorHist[1, m]; meanR = meanR + colorHist[2, m] * m; totalR = totalR + (int)colorHist[2, m]; } meangray = meangray / totalgray; meanB = meanB / totalB; meanG = meanG / totalG; meanR = meanR / totalR; richTextBox5.Text = "mean gray=" + meangray + "\nmean blue=" + meanB + "\nmean Green=" + meanG + "\nmean Red=" + meanR; }
private void backProjectionToolStripMenuItem_Click(object sender, EventArgs e) { try { if (pictureBox1.Image == null) { return; } var img = new Bitmap(pictureBox1.Image) .ToImage <Gray, byte>(); Image <Gray, byte> img1 = null; OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() == DialogResult.OK) { img1 = new Image <Gray, byte>(dialog.FileName); } Mat hist = new Mat(); Mat hist1 = new Mat(); float[] ranges = new float[] { 0, 256 }; int[] channel = { 0 }; int[] histSize = { 256 }; VectorOfMat ms = new VectorOfMat(); ms.Push(img); VectorOfMat ms1 = new VectorOfMat(); ms1.Push(img1); CvInvoke.CalcHist(ms, channel, null, hist, histSize, ranges, false); CvInvoke.CalcHist(ms1, channel, null, hist1, histSize, ranges, false); CvInvoke.Normalize(hist, hist); CvInvoke.Normalize(hist1, hist1); Mat proj = new Mat(); CvInvoke.CalcBackProject(ms, channel, hist, proj, ranges); HistogramViewer viewer = new HistogramViewer(); viewer.Text = "Image Histogram"; viewer.ShowIcon = false; viewer.HistogramCtrl.AddHistogram("Image1 Histogram", Color.Blue, hist, 256, ranges); viewer.HistogramCtrl.Refresh(); viewer.Show(); HistogramViewer viewer1 = new HistogramViewer(); viewer1.Text = "Image Histogram"; viewer1.ShowIcon = false; viewer1.HistogramCtrl.AddHistogram("Image2 Histogram", Color.Blue, hist1, 256, ranges); viewer1.HistogramCtrl.Refresh(); viewer1.Show(); pictureBox1.Image = proj.ToBitmap(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
private void compareToolStripMenuItem_Click(object sender, EventArgs e) { try { if (pictureBox1.Image == null) { return; } var img = new Bitmap(pictureBox1.Image) .ToImage <Gray, byte>(); Image <Gray, byte> img1 = null; OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() == DialogResult.OK) { img1 = new Image <Gray, byte>(dialog.FileName); } Mat hist = new Mat(); Mat hist1 = new Mat(); float[] ranges = new float[] { 0, 256 }; int[] channel = { 0 }; int[] histSize = { 256 }; VectorOfMat ms = new VectorOfMat(); ms.Push(img); VectorOfMat ms1 = new VectorOfMat(); ms1.Push(img1); CvInvoke.CalcHist(ms, channel, null, hist, histSize, ranges, false); CvInvoke.CalcHist(ms1, channel, null, hist1, histSize, ranges, false); CvInvoke.Normalize(hist, hist); CvInvoke.Normalize(hist1, hist1); HistogramViewer viewer = new HistogramViewer(); viewer.Text = "Image Histogram"; viewer.ShowIcon = false; viewer.HistogramCtrl.AddHistogram("Image1 Histogram", Color.Blue, hist, 256, ranges); viewer.HistogramCtrl.Refresh(); viewer.Show(); HistogramViewer viewer1 = new HistogramViewer(); viewer1.Text = "Image Histogram"; viewer1.ShowIcon = false; viewer1.HistogramCtrl.AddHistogram("Image2 Histogram", Color.Blue, hist1, 256, ranges); viewer1.HistogramCtrl.Refresh(); viewer1.Show(); var result1 = CvInvoke.CompareHist(hist, hist, Emgu.CV.CvEnum.HistogramCompMethod.Correl); var result2 = CvInvoke.CompareHist(hist1, hist1, Emgu.CV.CvEnum.HistogramCompMethod.Correl); var result3 = CvInvoke.CompareHist(hist, hist1, Emgu.CV.CvEnum.HistogramCompMethod.Correl); lblBGR.Text = "Hist vs Hist = " + result1.ToString() + "\n" + "Hist1 vs Hist1 = " + result2.ToString() + "\n" + "Hist vs Hist1 = " + result3.ToString() + "\n"; //pictureBox1.Image = CreateGraph(hist).GetImage(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }