コード例 #1
0
        // odległośći między histogramami(?)
        public List <float> odlegloscMiedzyHistogramami(Image <Bgr, Byte> img1, Image <Bgr, Byte> img2)
        {
            //var img = new Image<Bgr, byte>(@"C:\Users\Mariusz\Desktop\prAG\ucid00443.tif");
            //var img2 = new Image<Bgr, byte>(@"C:\Users\Mariusz\Desktop\prAG\ucid00668.tif");
            var histogram1 = new mHistogram(img1);
            var histogram2 = new mHistogram(img2);

            var          met    = new Metody();
            List <float> wynik  = met.porownajHistogramyManhattan(histogram1, histogram2);
            List <float> wynik2 = met.porownajHistogramyEuklides(histogram1, histogram2);

            var zwroc = new List <float>
            {
                wynik[0],
                wynik[1],
                wynik[2],
                wynik2[0],
                wynik2[1],
                wynik2[2]
            };

            return(zwroc);
        }
コード例 #2
0
        private void porownanieButton_Click(object sender, EventArgs e)
        {
            string zaznaczenie  = pictureList.SelectedItem.ToString();
            string pelnaSciezka = SciezkaFolderZeZdjeciami + zaznaczenie;
            var    img          = new Image <Bgr, byte>(pelnaSciezka);
            var    histogram1   = new mHistogram(img);
            var    met          = new Metody();

            var dInfo = new DirectoryInfo(SciezkaFolderZeZdjeciami);

            FileInfo[] pliki = dInfo.GetFiles();
            //float najmniejszaRoznicaR = 1000000000;
            //float najmniejszaRoznicaG = 1000000000;
            float najmniejszaRoznicaB = 1000000000;
            //mHistogram najR = new mHistogram(img);
            //mHistogram najG = new mHistogram(img);
            var najB = new mHistogram(img);

            foreach (FileInfo plik in pliki)
            {
                //using (
                var img2 = new Image <Bgr, Byte>(plik.FullName);
                //{
                var          histogram2 = new mHistogram(img2);
                List <float> wynik      = met.porownajHistogramyEuklides(histogram1, histogram2);

                float srednia = (wynik[0] + wynik[1] + wynik[2]) / 3;

                if (srednia < najmniejszaRoznicaB)
                {
                    if (plik.FullName != pelnaSciezka)
                    {
                        najmniejszaRoznicaB = srednia;
                        najB = histogram2;
                        labelTestNazwa.Text = plik.FullName;
                    }
                }
                //if (wynik[1] < najmniejszaRoznicaG)
                //{
                //    if (plik.FullName != sciezka)
                //    {
                //        najmniejszaRoznicaG = wynik[1];
                //        najG = histogram2;
                //    }
                //}
                //if (wynik[2] < najmniejszaRoznicaR)
                //{
                //    if (plik.FullName != sciezka)
                //    {
                //        najmniejszaRoznicaR = wynik[2];
                //        najR = histogram2;
                //    }
                //}
                //}
            }

            List <float> odleglosci = met.odlegloscMiedzyHistogramami(img, najB.Obraz);

            labelTest.Text  = "Manhattan R: " + odleglosci[2] + ", G: " + odleglosci[1] + ", B: " + odleglosci[0];
            labelTest2.Text = "Euklides R: " + odleglosci[5] + ", G: " + odleglosci[4] + ", B: " + odleglosci[3];

            pictureBox.Image = img.Bitmap;
            //pictureBoxNajR.Image = najR.Obraz.Bitmap;
            //pictureBoxNajG.Image = najG.Obraz.Bitmap;
            pictureBoxNajB.Image = najB.Obraz.Bitmap;
        }