Esempio n. 1
0
        public List <float> porownajHistogramyJeffrey(mHistogram h1, mHistogram h2)
        {
            var   wyniki   = new List <float>();
            float w1       = 0;
            float w2       = 0;
            float w3       = 0;
            int   licznikB = h1.BlueHistQ.Length;
            int   licznikG = h1.GreenHistQ.Length;
            int   licznikR = h1.RedHistQ.Length;

            for (int i = 0; i < licznikB; i++)
            {
                w1 += (float)(Math.Sqrt(Math.Pow(h1.BlueHistQ[i] - h2.BlueHistQ[i], 2)));
            }
            for (int i = 0; i < licznikG; i++)
            {
                w2 += (float)Math.Sqrt(Math.Pow(h1.GreenHistQ[i] - h2.GreenHistQ[i], 2));
            }
            for (int i = 0; i < licznikR; i++)
            {
                w3 += (float)Math.Sqrt(Math.Pow(h1.RedHistQ[i] - h2.RedHistQ[i], 2));
            }

            wyniki.Add(w1);
            wyniki.Add(w2);
            wyniki.Add(w3);
            return(wyniki);
        }
Esempio n. 2
0
        //metody porównywania

        public List <float> porownajHistogramyManhattan(mHistogram h1, mHistogram h2)
        {
            var   wyniki   = new List <float>();
            float w1       = 0;
            float w2       = 0;
            float w3       = 0;
            int   licznikB = h1.BlueHistQ.Length;
            int   licznikG = h1.GreenHistQ.Length;
            int   licznikR = h1.RedHistQ.Length;

            for (int i = 0; i < licznikB; i++)
            {
                w1 += Math.Abs(h1.BlueHistQ[i] - h2.BlueHistQ[i]);
            }
            for (int i = 0; i < licznikG; i++)
            {
                w2 += Math.Abs(h1.GreenHistQ[i] - h2.GreenHistQ[i]);
            }
            for (int i = 0; i < licznikR; i++)
            {
                w3 += Math.Abs(h1.RedHistQ[i] - h2.RedHistQ[i]);
            }

            wyniki.Add(w1);
            wyniki.Add(w2);
            wyniki.Add(w3);
            return(wyniki);
        }
Esempio n. 3
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);
        }
Esempio n. 4
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;
        }