コード例 #1
0
ファイル: ImageForm.cs プロジェクト: jPalazon/AppImagenes
        public void HistogramSpecification(String dir, double[] ho, Bitmap bmpo)
        {
            OpenImage(dir);
            int m = 256;
            double[] po = new double[m];
            double[] pr = new double[m];
            /*
            if ((bmpo.Width != width_) || (bmpo.Height != height_))
            {
                for (int i = 0; i < m; i++)
                {
                    po[i] = ho[i] / (bmpo.Height*bmpo.Width);
                    pr[i] = R_[i] / (width_ * height_);
                }
            }

            for (int i = 1; i < m; i++)
            {
                po[i] = (ho[i] + po[i - 1]) ;
                pr[i] = (R_[i] + pr[i - 1]);
             }
            */
            double n1 = 0; // imagen original
            double n2 = 0; // imagen referencia
            for (int i = 0; i < 256; i++)
            {
                n1 += ho[i];
                n2 += R_[i];
            }
            double c1 = 0;
            double c2 = 0;
            for (int i = 0; i < 256; i++)
            {
                c1 += ho[i];
                c2 += R_[i];
                po[i] = c1 / n1;
                pr[i] = c2 / n2;
            }

            double[] lut = new double[256];
            int j = m - 1;
            for (int i = 0; i <= 255; i++)
            {
                j = m - 1;
                do
                {
                    lut[i] = j;
                    j--;
                } while ((j>=0) && (po[i] <= pr[j]));

            }

            ImageForm SpecificationImage = new ImageForm();
            SpecificationImage.MdiParent = this.MdiParent;
            Bitmap SpecificationBmp= new Bitmap(bmpo);

            for (int x = 0; x < bmpo.Width; x++)
            {
                for (int y = 0; y < bmpo.Height; y++)
                {

                    int temp = (int)lut[bmpo.GetPixel(x, y).R];
                    Color Grey = Color.FromArgb(temp, temp, temp);
                    SpecificationBmp.SetPixel(x, y, Grey);
                }
            }
            SpecificationImage.AssignAtributtes(SpecificationBmp);
            SpecificationImage.Show();
        }
コード例 #2
0
ファイル: ImageForm.cs プロジェクト: jPalazon/AppImagenes
        public void Ecualization()
        {
            double k = (width_ * height_)/256;
            double[] C = new double[256];
            double[] lut = new double[256];
            C[0] = R_[0];
            for (int i = 1; i < 256; i++)
            {
                C[i] = (R_[i] + C[i - 1]);

            }
            for (int i = 0; i <= 255; i++)
            {
                lut[i] = Math.Max(0, (Math.Round(C[i] / k) - 1));

            }

            ImageForm EcualizationImage = new ImageForm();
            EcualizationImage.MdiParent = this.MdiParent;
            Bitmap EcualizationBmp = new Bitmap(picture_);

            for (int x = 0; x < width_; x++)
            {
                for (int y = 0; y < height_; y++)
                {

                    int temp = (int)lut[picture_.GetPixel(x, y).R];
                    Color Grey = Color.FromArgb(temp, temp, temp);
                    EcualizationBmp.SetPixel(x, y, Grey);
                }
            }
            EcualizationImage.AssignAtributtes(EcualizationBmp);
            //SpecificationImage.pictureBox1.Image = (Image)(SpecificationBmp);
            EcualizationImage.Show();
        }