Example #1
0
        private Bitmap ResminHistograminiCiz(Bitmap bmp)
        {
            ArrayList DiziPiksel   = new ArrayList();
            int       OrtalamaRenk = 0;
            Color     OkunanRenk;
            int       R = 0, G = 0, B = 0;
            Bitmap    GirisResmi;

            GirisResmi = bmp;
            int ResimGenisligi  = GirisResmi.Width;
            int ResimYuksekligi = GirisResmi.Height;
            int i = 0;

            for (int x = 0; x < GirisResmi.Width; x++)
            {
                for (int y = 0; y < GirisResmi.Height; y++)
                {
                    OkunanRenk   = GirisResmi.GetPixel(x, y);
                    OrtalamaRenk = (int)(OkunanRenk.R + OkunanRenk.G + OkunanRenk.B) / 3; //Griton resimde üç kanal

                    DiziPiksel.Add(OrtalamaRenk);
                }
            }
            int[] DiziPikselSayilari = new int[256];
            for (int r = 0; r < 255; r++)
            {
                int PikselSayisi = 0;
                for (int s = 0; s < DiziPiksel.Count; s++)
                {
                    if (r == Convert.ToInt16(DiziPiksel[s]))
                    {
                        PikselSayisi++;
                    }
                }
                DiziPikselSayilari[r] = PikselSayisi;
            }

            int RenkMaksPikselSayisi = 0;

            for (int k = 0; k <= 255; k++)
            {
                listBox1.Items.Add("Renk:" + k + "=" + DiziPikselSayilari[k]);
                if (DiziPikselSayilari[k] > RenkMaksPikselSayisi)
                {
                    RenkMaksPikselSayisi = DiziPikselSayilari[k];
                }
            }

            Graphics CizimAlani;
            Pen      Kalem1 = new Pen(System.Drawing.Color.Yellow, 1);
            Pen      Kalem2 = new Pen(System.Drawing.Color.Red, 1);

            CizimAlani = pictureBox2.CreateGraphics();
            pictureBox2.Refresh();
            int    GrafikYuksekligi = 400;
            double OlcekY = RenkMaksPikselSayisi / GrafikYuksekligi, OlcekX = 1.6;

            for (int x = 0; x <= 255; x++)
            {
                CizimAlani.DrawLine(Kalem1, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX),
                                    (GrafikYuksekligi - (int)(DiziPikselSayilari[x] / OlcekY)));
                if (x % 50 == 0)
                {
                    CizimAlani.DrawLine(Kalem2, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), 0);
                }
            }
            return(bmp);
        }
Example #2
0
        public void ResminHistograminiCiz()
        {
            pictureBox2.Height = pictureBox1.Height * Convert.ToInt32(3);
            pictureBox2.Width  = pictureBox1.Width * Convert.ToInt32(3);

            ArrayList DiziPiksel = new ArrayList();


            Color OkunanRenk;

            int ResimGenisligi  = bmp.Width; //GirisResmi global tanımlandı.
            int ResimYuksekligi = bmp.Height;

            for (int x = 0; x < bmp.Width; x++)
            {
                for (int y = 0; y < bmp.Height; y++)
                {
                    OkunanRenk = bmp.GetPixel(x, y);
                    //OrtalamaRenk = (int)(OkunanRenk.R + OkunanRenk.G + OkunanRenk.B) / 3; //Griton resimde üç kanal rengi aynı değere sahiptir.

                    DiziPiksel.Add(OkunanRenk.R); //Gri resim olduğu için tek kanalı okuması yeterli olacaktır.
                }
            }

            int[] DiziPikselSayilari = new int[256];
            for (int r = 0; r < 255; r++) //256 tane renk tonu için dönecek.
            {
                int PikselSayisi = 0;
                for (int s = 0; s < DiziPiksel.Count; s++) //resimdeki piksel sayısınca dönecek.
                {
                    if (r == Convert.ToInt16(DiziPiksel[s]))
                    {
                        PikselSayisi++;
                    }
                }
                DiziPikselSayilari[r] = PikselSayisi;
            }

            //Değerleri listbox'a ekliyor.
            int RenkMaksPikselSayisi = 0; //Grafikte y eksenini ölçeklerken kullanılacak.

            for (int k = 0; k <= 255; k++)
            {
                listBox1.Items.Add("Renk:" + k + "=" + DiziPikselSayilari[k]);

                if (DiziPikselSayilari[k] > RenkMaksPikselSayisi)
                {
                    RenkMaksPikselSayisi = DiziPikselSayilari[k];
                }
            }

            //Grafiği çiziyor.
            Graphics CizimAlani;
            Pen      Kalem1 = new Pen(System.Drawing.Color.Blue, 1);
            Pen      Kalem2 = new Pen(System.Drawing.Color.Red, 1);

            CizimAlani = pictureBox2.CreateGraphics();

            pictureBox2.Refresh();
            int    GrafikYuksekligi = 450;
            double OlcekY = RenkMaksPikselSayisi / GrafikYuksekligi, OlcekX = 1.6;

            for (int x = 0; x <= 255; x++)
            {
                CizimAlani.DrawLine(Kalem1, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), (GrafikYuksekligi - (int)(DiziPikselSayilari[x] / OlcekY)));
                if (x % 50 == 0)
                {
                    CizimAlani.DrawLine(Kalem2, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), 0);
                }
            }
            textBox1.Text = "Maks.Piks=" + RenkMaksPikselSayisi.ToString();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            pBislenmisresim.Image     = null;
            pBislenmisresim.BackColor = Color.Black;
            ArrayList DiziPiksel   = new ArrayList();
            int       OrtalamaRenk = 0;
            Color     OkunanRenk;
            Bitmap    GirisResmi = new Bitmap(pBoriginalresim.Image);

            for (int x = 0; x < GirisResmi.Width; x++)
            {
                for (int y = 0; y < GirisResmi.Height; y++)
                {
                    OkunanRenk   = GirisResmi.GetPixel(x, y);
                    OrtalamaRenk = (int)(OkunanRenk.R + OkunanRenk.G + OkunanRenk.B) / 3; //Griton resimde üç kanal rengi aynı değere sahiptir.
                    DiziPiksel.Add(OrtalamaRenk);                                         //Resimdeki tüm noktaları diziye atıyor.
                }
            }
            int[] DiziPikselSayilari = new int[256];
            for (int r = 0; r < 255; r++)     //256 tane renk tonu için dönecek.
            {
                int PikselSayisi = 0;
                for (int s = 0; s < DiziPiksel.Count; s++)     //resimdeki piksel sayısınca dönecek.
                {
                    if (r == Convert.ToInt16(DiziPiksel[s]))
                    {
                        PikselSayisi++;
                    }
                }
                DiziPikselSayilari[r] = PikselSayisi;
            }
            int RenkMaksPikselSayisi = 0;     //Grafikte y eksenini ölçeklerken kullanılacak.

            for (int k = 0; k <= 255; k++)
            {
                listBox1.Items.Add("Renk:" + k + "=" + DiziPikselSayilari[k]);
                if (DiziPikselSayilari[k] > RenkMaksPikselSayisi)
                {
                    RenkMaksPikselSayisi = DiziPikselSayilari[k];
                }
            }
            Graphics CizimAlani;
            Pen      Kalem1 = new Pen(System.Drawing.Color.Yellow, 1);
            Pen      Kalem2 = new Pen(System.Drawing.Color.Red, 1);

            CizimAlani = pBislenmisresim.CreateGraphics();
            pBislenmisresim.Refresh();
            int    GrafikYuksekligi = 400;
            double OlcekY = RenkMaksPikselSayisi / GrafikYuksekligi, OlcekX = 1.6;

            for (int x = 0; x <= 255; x++)
            {
                CizimAlani.DrawLine(Kalem1, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX),
                                    (GrafikYuksekligi - (int)(DiziPikselSayilari[x] / OlcekY)));
                if (x % 50 == 0)
                {
                    CizimAlani.DrawLine(Kalem2, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), 0);
                }
            }
            textBox1.Text = "Maks.Piks=" + RenkMaksPikselSayisi.ToString();
        }
Example #4
0
        private void hesaplama_Click(object sender, EventArgs e)
        {
            try
            {
                pictureBox2.Image = null;

                input_img = this.getPic();

                Bitmap griton = this.griton(input_img);
                pictureBox1.Image = griton;

                width  = griton.Width;
                height = griton.Height;

                for (int x = 0; x < input_img.Width; x++)
                {
                    for (int y = 0; y < input_img.Height; y++)
                    {
                        input_clr = input_img.GetPixel(x, y);

                        pikseller.Add(input_clr.R);
                    }
                }


                for (int r = 0; r < 255; r++)
                {
                    int PikselSayisi = 0;
                    for (int s = 0; s < pikseller.Count; s++)
                    {
                        if (r == Convert.ToInt16(pikseller[s]))
                        {
                            PikselSayisi++;
                        }
                    }
                    numberP[r] = PikselSayisi;
                }

                int maxP = 0;
                for (int k = 0; k <= 255; k++)
                {
                    if (numberP[k] > maxP)
                    {
                        maxP = numberP[k];
                    }
                }

                Graphics CizimAlani;
                Pen      Kalem1 = new Pen(System.Drawing.Color.Blue, 1);
                Pen      Kalem2 = new Pen(System.Drawing.Color.Red, 1);
                CizimAlani = pictureBox2.CreateGraphics();

                pictureBox2.Refresh();
                int    GrafikYuksekligi = pictureBox2.Height;
                double OlcekY = maxP / GrafikYuksekligi, OlcekX = 1.6;
                for (int x = 0; x <= 255; x++)
                {
                    CizimAlani.DrawLine(Kalem1, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), (GrafikYuksekligi - (int)(numberP[x] / OlcekY)));
                    if (x % 50 == 0)
                    {
                        CizimAlani.DrawLine(Kalem2, (int)(20 + x * OlcekX), GrafikYuksekligi, (int)(20 + x * OlcekX), 0);
                    }
                }
            }
            catch
            {
                MessageBox.Show("Lütfen Fotoğraf Seçiniz veya Girdiğiniz Değerleri Kontrol Ediniz!");
            }
        }