예제 #1
0
        // erocionar imagen
        private void button2_Click(object sender, EventArgs e)
        {
            Mascara m     = conseguirMascara(Txt_Otros);
            int     color = (int)Selector_Brillo.Value;

            PictureAnalizer.ImagenEntrada = PictureAnalizer.ErocionarImagen(PictureAnalizer.ImagenEntrada, m, color);
            ImagenEntrada.Image           = PictureAnalizer.ImagenEntrada;
        }
예제 #2
0
        // probar todas las imagenes de una carpeta
        private void desdeCarpetaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog c = new FolderBrowserDialog();

            c.ShowDialog();

            string rutaCarpetaTest = c.SelectedPath;

            // buscar todos lo archivos de imagen en el directorio
            DirectoryInfo dirs = new DirectoryInfo(rutaCarpetaTest);

            // recorrer cada archivo en el directorio
            int b = 0;

            foreach (var im in dirs.GetFiles("*.jpg", SearchOption.AllDirectories))
            {
                Bitmap imEnt = new Bitmap(im.FullName);

                Analizador.SetImagenEntrada(imEnt);
                Analizador.SetImagenSalida(PictureAnalizer.ImagenColor2Gray(imEnt));

                ImagenEntrada.Image = PictureAnalizer.ImagenEntrada;
                ImagenSalida.Image  = PictureAnalizer.ImagenEntrada;
                ImagenEntrada.Refresh();
                ImagenSalida.Refresh();
                System.Threading.Thread.Sleep(100);

                // crear un histograma
                int[]    h  = PictureAnalizer.Histograma(PictureAnalizer.ImagenEntrada);
                double[] hn = PictureAnalizer.HistogramaNormal(PictureAnalizer.ImagenEntrada);

                // realizar una umbralizacion
                int t = PictureAnalizer.Otsu(hn);
                this.ImagenSalida.Image = PictureAnalizer.Umbralizar(PictureAnalizer.ImagenEntrada, t);
                imEnt = (Bitmap)this.ImagenSalida.Image;
                //PictureAnalizer.GuardarImagenSalida((Bitmap) PictureAnalizer.ImagenEntrada, this.RutaGuardado + "\\OtsuEntrada" + b.ToString()  + im.Name );

                PictureAnalizer.GuardarImagenSalida((Bitmap)this.ImagenSalida.Image, this.RutaGuardado + "\\OtsuSalida" + b.ToString() + im.Name);
                PictureAnalizer.GuardarImagenSalida(PictureAnalizer.DilatarImagen(imEnt, this.MascaraActual, 255), this.RutaGuardado + "\\SalidaDilatada" + b.ToString() + im.Name);
                PictureAnalizer.GuardarImagenSalida(PictureAnalizer.ErocionarImagen(imEnt, this.MascaraActual, 255), this.RutaGuardado + "\\SalidaErocionada" + b.ToString() + im.Name);
                // PictureAnalizer.GuardarImagenSalida( PictureAnalizer.Cerradura(imEnt, this.MascaraActual), this.RutaGuardado + "\\SalidaCerradura" + b.ToString() + im.Name);
                //  PictureAnalizer.GuardarImagenSalida( PictureAnalizer.Apertura(imEnt, this.MascaraActual), this.RutaGuardado + "\\SalidaApertura" + b.ToString() + im.Name);
                PictureAnalizer.GuardarImagenSalida(PictureAnalizer.ExtBorde(imEnt, this.MascaraActual), this.RutaGuardado + "\\SalidaBorde" + b.ToString() + im.Name);

                b++;
                ImagenSalida.Refresh();

                System.Threading.Thread.Sleep(100);
            }
        }
예제 #3
0
 private void erocionarToolStripMenuItem_Click(object sender, EventArgs e)
 {
     this.ImagenSalida.Image = PictureAnalizer.ErocionarImagen((Bitmap)ImagenSalida.Image, this.MascaraActual, 255);
 }
예제 #4
0
        private void button24_Click(object sender, EventArgs e)
        {
            /**** 1 - humbralizar ******/
            Bitmap img_Exm_Ent = (Bitmap)ImagenEntrada.Image;
            Bitmap Org         = (Bitmap)ImagenEntrada.Image;

            // conseguir histogramas para umbralizar
            int []   h      = PictureAnalizer.Histograma(img_Exm_Ent);
            double[] hn     = PictureAnalizer.HistogramaNormal(img_Exm_Ent);
            int      umbral = PictureAnalizer.Otsu(hn);

            Bitmap img_Exm = PictureAnalizer.Umbralizar(img_Exm_Ent, umbral);

            PictureAnalizer.ImagenEntrada = img_Exm;
            ImagenEntrada.Image           = img_Exm;
            ImagenEntrada.Image.Save("ImgHumbralizada.jpeg");
            ImagenEntrada.Refresh();


            /**** 2 - erocionar la imagen ******/
            Mascara ee = new Mascara(Mascara.PRDF_Estr_Bcdd, new Size(3, 3), new Point(1, 1));
            Bitmap  cv = PictureAnalizer.ErocionarImagen(img_Exm, ee, 255);

            img_Exm = PictureAnalizer.ErocionarImagen(img_Exm, ee, 255);


            Bitmap cn = img_Exm;

            PictureAnalizer.ImagenEntrada = img_Exm;
            ImagenEntrada.Image           = img_Exm;
            ImagenEntrada.Image.Save("ImgErocionada.jpeg");
            ImagenEntrada.Refresh();


            Mascara es = new Mascara(Mascara.PRDF_Estr_Cruz, new Size(3, 3), new Point(1, 1));

            img_Exm = PictureAnalizer.DilatarImagen(img_Exm, es, 255);
            PictureAnalizer.ImagenEntrada = img_Exm;
            ImagenEntrada.Image           = img_Exm;
            ImagenEntrada.Image.Save("ImgDilatada.jpeg");
            ImagenEntrada.Refresh();

            Bitmap sa = PictureAnalizer.DibujarNegra(cn.Width, cn.Height);

            for (int i = 0; i < cn.Height; i++)
            {
                for (int j = 0; j < cn.Width; j++)
                {
                    int cOr = PictureAnalizer.PixelColor2Gray(img_Exm.GetPixel(j, i));

                    if (cOr == 255)
                    {
                        int cON = PictureAnalizer.PixelColor2Gray(cv.GetPixel(j, i));
                        sa.SetPixel(j, i, Color.FromArgb(cON, cON, cON));
                    }
                }
            }

            ImagenEntrada.Image = sa;
            Bitmap sae = PictureAnalizer.DibujarNegra(cn.Width, cn.Height);

            for (int i = 0; i < cn.Height; i++)
            {
                for (int j = 0; j < cn.Width; j++)
                {
                    int cOr = PictureAnalizer.PixelColor2Gray(sa.GetPixel(j, i));

                    if (cOr > 0)
                    {
                        int cON = PictureAnalizer.PixelColor2Gray(Org.GetPixel(j, i));
                        sae.SetPixel(j, i, Color.FromArgb(cON, cON, cON));
                    }
                }
            }

            ImagenEntrada.Image = sae;
            ImagenEntrada.Image.Save("ImgCombinada.jpeg");
            ImagenEntrada.Refresh();
        }
예제 #5
0
        public static Bitmap Apertura(Bitmap ImagenOriginal, Mascara MascaraEnviada, int colorPixel)
        {
            Bitmap im = PictureAnalizer.DilatarImagen(PictureAnalizer.ErocionarImagen(ImagenOriginal, MascaraEnviada, colorPixel), MascaraEnviada, colorPixel);

            return(im);
        }