示例#1
0
        private void Menu_histogram_Click(object sender, EventArgs e)
        {
            HistogramViewer.Show(imageObj);

            /* histogram = new HistogramForm(grayArray, bitmap.Width, bitmap.Height);
             * histogram.Show();*/
        }
示例#2
0
 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
             }
         }
     }
 }
示例#3
0
文件: Form1.cs 项目: xiaodelea/Emgucv
        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);
            }
        }
示例#4
0
        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
        }
示例#5
0
        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;
        }
示例#7
0
文件: Form1.cs 项目: xiaodelea/Emgucv
        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);
            }
        }
示例#8
0
文件: Form1.cs 项目: xiaodelea/Emgucv
        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);
            }
        }