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(); }
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(); }