Example #1
0
        public static Bitmap TransHough(Bitmap Ent_Img, Bitmap s, Mascara Min_x, Mascara Min_y, int TetaDe, int TetaHasta, int numLineas)
        {
            // detectar bordes en la imagen
            // Bitmap Hough_Im = DetectarBordes(Min_x, Min_y, 0);

            // umbraliza la imagen
            // Hough_Im = Umbralizar(Hough_Im, Otsu(HistogramaNormal(Hough_Im)));

            Bitmap Hough_Im = new Image <Gray, byte>(Ent_Img).Canny(100, 50).ToBitmap();

            // crear el acumulador
            double pMaximo   = Math.Sqrt(Math.Pow(Hough_Im.Width, 2) + Math.Pow(Hough_Im.Height, 2));
            double RangoPeee = Math.Round(Math.Sqrt(Math.Pow(Hough_Im.Width, 2) + Math.Pow(Hough_Im.Height, 2)));
            double RangoTeta = Math.Abs(TetaDe) + TetaHasta;
            double conversor = Math.PI / 180;

            Mascara Acumulador = new Mascara(new Size((int)RangoPeee, (int)RangoTeta));


            // realizar transformacion lineal para cada pixel
            for (int i = 0; i < Hough_Im.Height; i++)
            {
                for (int j = 0; j < Hough_Im.Width; j++)
                {
                    // iterar para todo el rango de angulos
                    for (int iTeta = TetaDe; iTeta < RangoTeta; iTeta++)
                    {
                        if (PictureAnalizer.PixelColor2Gray(Hough_Im.GetPixel(j, i)) > 0)
                        {
                            int PeeI = (Convert.ToInt32(Math.Round(j * Math.Cos(conversor * iTeta) + i * Math.Sin(conversor * iTeta))));
                            Acumulador.MascaraNumerica[Math.Abs(PeeI), Math.Abs(iTeta)] += 1;
                        }
                    }
                }
            }

            PictureAnalizer.AcumuladorGeneral = CopiarMatriz(Acumulador);

            Bitmap v = new Bitmap(Hough_Im);

            for (int ss = 0; ss < numLineas; ss++)
            {
                Point Pmax = MatrizMaxPosicion(Acumulador);
                for (int i = 0; i < Hough_Im.Height; i++)
                {
                    for (int j = 0; j < Hough_Im.Width; j++)
                    {
                        long ys = Convert.ToInt64(Math.Round((Pmax.X / Math.Sin(conversor * Pmax.Y)) - (((j * Math.Cos(conversor * Pmax.Y)) / Math.Sin(conversor * Pmax.Y)))));
                        if (ys == i)
                        {
                            v.SetPixel(j, i, Color.Red);
                        }
                    }
                }
            }



            return(v);
        }
Example #2
0
        static Point  MatrizMaxPosicion(Mascara Ent_Mascara)
        {
            Point pmax = new Point();

            double[] arr = new double[(int)Ent_Mascara.Dims.Width * Ent_Mascara.Dims.Height];

            int k = 0;

            for (int i = 0; i < Ent_Mascara.Dims.Height; i++)
            {
                for (int j = 0; j < Ent_Mascara.Dims.Width; j++)
                {
                    arr[k] = Ent_Mascara.MascaraNumerica[j, i];
                    k++;
                }
            }

            double max = arr.Max();

            for (int i = 0; i < Ent_Mascara.Dims.Height; i++)
            {
                for (int j = 0; j < Ent_Mascara.Dims.Width; j++)
                {
                    if (Ent_Mascara.MascaraNumerica[j, i] == max)
                    {
                        pmax.X = j;
                        pmax.Y = i;

                        Ent_Mascara.MascaraNumerica[j, i] = -10;
                    }
                }
            }

            return(pmax);
        }
Example #3
0
        private void DetectarBorde_Click(object sender, EventArgs e)
        {
            this.MascaraGenerica1 = conseguirMascara(MascaraTextX);
            this.MascaraGenerica2 = conseguirMascara(MascataTxtY);

            int c = 0;

            if (ImagenEnXOpt.Checked)
            {
                c = 1;
            }
            else
            if (ImagenEnY.Checked)
            {
                c = -1;
            }
            else
            if (ImagenEnZOpt.Checked)
            {
                c = 0;
            }


            this.ImagenEntrada.Image = (Image)PictureAnalizer.DetectarBordes(MascaraGenerica1, MascaraGenerica2, c, (Bitmap)ImagenEntrada.Image);
        }
Example #4
0
        public static Bitmap DetectarBordes(Mascara mascaraEntradaX, Mascara mascaraEntradaY, int tipo, Bitmap img)
        {
            Bitmap mResultadoX = PictureAnalizer.DibujarNegra(img.Width, img.Height);
            Bitmap mResultadoY = PictureAnalizer.DibujarNegra(img.Width, img.Height);

            Bitmap mResultadoGradZ = PictureAnalizer.DibujarNegra(img.Width, img.Height);

            for (int i = 0; i < img.Height; i++)
            {
                for (int j = 0; j < img.Width; j++)
                {
                    int x = 0, y = 0, z = 0;

                    y = PictureAnalizer.ValorMascara(j, i, new Mascara(mascaraEntradaY.MascaraNumerica, mascaraEntradaY.Dims, mascaraEntradaY.Centro), img, mResultadoY);
                    mResultadoY.SetPixel(j, i, Color.FromArgb(y, y, y));

                    x = PictureAnalizer.ValorMascara(j, i, new Mascara(mascaraEntradaX.MascaraNumerica, mascaraEntradaX.Dims, mascaraEntradaX.Centro), img, mResultadoX);
                    mResultadoX.SetPixel(j, i, Color.FromArgb(x, x, x));

                    z = PictureAnalizer.NormalizarPixel(Math.Abs(x) + Math.Abs(y));
                    mResultadoGradZ.SetPixel(j, i, Color.FromArgb(z, z, z));
                }
            }

            switch (tipo)
            {
            case -1: return(mResultadoY);

            case  1: return(mResultadoX);

            case  0: return(mResultadoGradZ);
            }

            return(mResultadoGradZ);
        }
Example #5
0
        // se supone una mascara de tipod cuadrada
        public static Bitmap CortarMascaraSobreImagen(Mascara Masc_Ent, Bitmap Img_Ent, Point Pnt_Orgn)
        {
            // crear una subimagen del tamaƱo de la mascara, dimenciones cuadradas
            Bitmap sbImg = PictureAnalizer.DibujarNegra(Masc_Ent.Dims.Height, Masc_Ent.Dims.Height);

            // recorrer la matriz
            int Pinicio = ((Masc_Ent.Dims.Height - 1) / 2) - (Masc_Ent.Dims.Height - 1) + Pnt_Orgn.X;
            int Pfinal  = (Masc_Ent.Dims.Height);

            int k = 0;

            while (Pinicio <= 0)
            {
                Pinicio = ((Masc_Ent.Dims.Height - 1) / 2) - (Masc_Ent.Dims.Height - 1) + Pnt_Orgn.X + k;
                k++;
            }

            Mascara m = new Mascara(new Size(3, 3));

            for (int i = Pinicio, s = 0; i < Pfinal; i++, s++)
            {
                for (int j = Pinicio, z = 0; j < Pfinal; j++, z++)
                {
                    // verificar que los indices no superen los limites de la imagen
                    if (Pnt_Orgn.X + j < Img_Ent.Width && Pnt_Orgn.Y + i < Img_Ent.Height && Pnt_Orgn.X + j > 0 && Pnt_Orgn.Y + i > 0)
                    {
                        int PxiOrigen = PictureAnalizer.PixelColor2Gray(Img_Ent.GetPixel(Pnt_Orgn.X + j, Pnt_Orgn.Y + i));
                        sbImg.SetPixel(z, s, Color.FromArgb(PxiOrigen, PxiOrigen, PxiOrigen));
                        m.MascaraNumerica[j, i] = 1;
                    }
                }
            }

            return(sbImg);
        }
Example #6
0
        // objetner los caracteres de la mascara de entrada y contarlos
        private void CalcularMascara_Click(object sender, EventArgs e)
        {
            this.MascaraGenerica1 = conseguirMascara(this.TextMascara);

            PictureAnalizer.ImagenEntrada = PictureAnalizer.SuavisarImagen(this.MascaraGenerica1, (Bitmap)ImagenEntrada.Image);

            ImagenEntrada.Image = PictureAnalizer.ImagenEntrada;
        }
Example #7
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;
        }
Example #8
0
        private void button12_Click(object sender, EventArgs e)
        {
            Mascara Mx = conseguirMascara(hTxtX);
            Mascara MY = conseguirMascara(hTxtY);

            Bitmap s = PictureAnalizer.DibujarNegra(PictureAnalizer.ImagenEntrada.Width, PictureAnalizer.ImagenEntrada.Height);
            //  ImagenEntrada.Image = (Image)PictureAnalizer.TransHough(PictureAnalizer.ImagenEntrada,s,Mx,MY,(int)tetade.Value, (int) tetaHasta.Value);
            //  this.Pb_Sinus.Image = (Image)PictureAnalizer.MostrarAcms();
        }
Example #9
0
        public static Bitmap []  ImagenDeTextura(Bitmap Im_Ent, Dictionary <int, double>[] hrs)
        {
            // conseguir los maximos de las sumas y diferencias
            double MaxSuma  = PictureAnalizer.MaximoHasha(hrs[0]);
            double MaxResta = PictureAnalizer.MaximoHasha(hrs[1]);
            double MaxGenrl = 0;

            if (MaxSuma > MaxResta)
            {
                MaxGenrl = MaxSuma;
            }
            else
            {
                MaxGenrl = MaxResta;
            }

            // crear vector de imagenes de textura
            Bitmap[] VectImgTxt = new Bitmap[6];

            // inicar las imagenes
            for (int i = 0; i < 6; i++)
            {
                VectImgTxt[i] = PictureAnalizer.DibujarNegra(Im_Ent.Width, Im_Ent.Height);
            }

            // crear una mascara para representar la subventana
            Mascara Mx = new Mascara(new Size(3, 3));

            // recorrer la imagen
            for (int i = 0; i < Im_Ent.Height; i++)
            {
                for (int j = 0; j < Im_Ent.Width; j++)
                {
                    // conseguir pixel
                    int Pi = PictureAnalizer.PixelColor2Gray(Im_Ent.GetPixel(j, i));


                    // cortar contenido de la imagen origina con la mascara
                    Bitmap subImg = PictureAnalizer.CortarMascaraSobreImagen(Mx, Im_Ent, new Point(j, i));

                    // calcular las caracteristicas de textura de la subimagen
                    double[] op = PictureAnalizer.CalcularCaracteristicasTextura(Im_Ent);

                    // asignar operaciones a la imagen
                    for (int k = 0; k < 6; k++)
                    {
                        int trnas = (int)Math.Round((op[i] * 255) / MaxGenrl);
                        VectImgTxt[i].SetPixel(j, i, Color.FromArgb(trnas, trnas, trnas));
                    }
                }
            }
            return(VectImgTxt);
        }
Example #10
0
        public static Bitmap ErocionarImagen(Bitmap ImagenNoDilatada, Mascara EEstructurante, int ColorPixel)
        {
            Bitmap       ImagenErocionada = PictureAnalizer.DibujarNegra(ImagenNoDilatada.Width, ImagenNoDilatada.Height);
            List <Point> listaPuntos      = PictureAnalizer.PuntosInteres(ImagenNoDilatada, ColorPixel);

            foreach (Point p in listaPuntos)
            {
                PictureAnalizer.CortarMascarEn(p.X, p.Y, EEstructurante, ImagenErocionada, ImagenNoDilatada);
            }

            return(ImagenErocionada);
        }
Example #11
0
 public static void CopiarMascaraEn(int posX, int posY, Mascara Eestruct, Bitmap ImagenDilatada)
 {
     for (int iMzk = 0, iImg = posY - ((Eestruct.Dims.Height - 1) / 2); iMzk < Eestruct.Dims.Height; iMzk++, iImg++)
     {
         for (int jMzk = 0, jImg = posX - ((Eestruct.Dims.Width - 1) / 2); jMzk < Eestruct.Dims.Width; jMzk++, jImg++)
         {
             if (iImg < ImagenDilatada.Height && jImg < ImagenDilatada.Width)
             {
                 ImagenDilatada.SetPixel(Math.Abs(jImg), Math.Abs(iImg), Color.White);
             }
         }
     }
 }
Example #12
0
        public static Bitmap SuavisarImagen(Mascara mascaraEntrada, Bitmap Img_Entrada)
        {
            Bitmap mResultado = PictureAnalizer.DibujarNegra(Img_Entrada.Width, Img_Entrada.Height);

            for (int i = 0; i < mResultado.Height; i++)
            {
                for (int j = 0; j < mResultado.Width; j++)
                {
                    PictureAnalizer.FiltrarEn(j, i, new Mascara(mascaraEntrada.MascaraNumerica, mascaraEntrada.Dims, mascaraEntrada.Centro), Img_Entrada, mResultado);
                }
            }

            return(mResultado);
        }
Example #13
0
        public Mascara conseguirMascara(TextBox TextoOrigen)
        {
            string[] f = TextoOrigen.Text.Split('\r', '\n');
            string[] c = f[0].Replace('\r', '#').Split(' ');

            int filas = TextoOrigen.Text.Split('\n').Length;
            int clmns = this.restarDelimitadores("#", c);

            string[] n = new string[filas * clmns];
            double[,] val = new double[filas, clmns];

            int i = 0;

            foreach (string s in f)
            {
                if (s != "")
                {
                    string[] k = s.Split(' ');

                    for (int j = 0; j < k.Length; j++)
                    {
                        n[i] = k[j];
                        i++;
                    }
                }
            }

            int o = 0;

            for (int z = 0; z < filas; z++)
            {
                for (int j = 0; j < clmns; j++)
                {
                    val[j, z] = Convert.ToDouble(n[o]);
                    o++;
                }
            }


            Mascara m = new Mascara(val, new Size(filas, clmns), new Point(1, 1));


            return(m);
        }
Example #14
0
        static int MaximoMascaraMatriz(Mascara Ent_Mascara)
        {
            double[] arr = new double[(int)Ent_Mascara.Dims.Width * Ent_Mascara.Dims.Height];

            int k = 0;

            for (int i = 0; i < Ent_Mascara.Dims.Height; i++)
            {
                for (int j = 0; j < Ent_Mascara.Dims.Width; j++)
                {
                    arr[k] = Ent_Mascara.MascaraNumerica[j, i];
                    k++;
                }
            }

            double max = arr.Max();

            return((int)max);
        }
Example #15
0
        public static void CortarMascarEn(int posX, int posY, Mascara Eestruct, Bitmap ImagenDilatada, Bitmap ImagenOriginal)
        {
            int dim = 0;

            for (int iMzk = 0, iImg = posY - ((Eestruct.Dims.Height - 1) / 2); iMzk < Eestruct.Dims.Height; iMzk++, iImg++)
            {
                for (int jMzk = 0, jImg = posX - ((Eestruct.Dims.Width - 1) / 2); jMzk < Eestruct.Dims.Width; jMzk++, jImg++)
                {
                    if (iImg < ImagenOriginal.Height && jImg < ImagenOriginal.Width)
                    {
                        int c = PixelColor2Gray(ImagenOriginal.GetPixel(Math.Abs(jImg), Math.Abs(iImg)));

                        if (c == 255)
                        {
                            dim++;
                        }
                    }
                }
            }
            if (dim == (Eestruct.Dims.Width * Eestruct.Dims.Width))
            {
                ImagenDilatada.SetPixel(posX, posY, Color.White);
            }
        }
Example #16
0
        public static void FiltrarEn(int posX, int posY, Mascara MascaraFiltro, Bitmap ImageSinFiltro, Bitmap ImagenFiltrada)
        {
            double[] prom = new double[MascaraFiltro.Dims.Width * MascaraFiltro.Dims.Height];

            int    k = 0;
            double p = 0;

            for (int iMzk = 0, iImg = posY - ((MascaraFiltro.Dims.Height - 1) / 2); iMzk < MascaraFiltro.Dims.Height; iMzk++, iImg++)
            {
                for (int jMzk = 0, jImg = posX - ((MascaraFiltro.Dims.Width - 1) / 2); jMzk < MascaraFiltro.Dims.Width; jMzk++, jImg++)
                {
                    if ((iImg < ImageSinFiltro.Height && jImg < ImageSinFiltro.Width) && (iImg >= 0 && jImg >= 0))
                    {
                        int    c  = PictureAnalizer.PixelColor2Gray(ImageSinFiltro.GetPixel(jImg, iImg));
                        double cm = MascaraFiltro.MascaraNumerica[jMzk, iMzk];
                        MascaraFiltro.MascaraNumerica[jMzk, iMzk] = c * cm;
                        prom[k] = MascaraFiltro.MascaraNumerica[jMzk, iMzk];
                        p      += prom[k];
                    }
                }
            }

            int t = (int)p / prom.Length;

            if (t < 0)
            {
                t = Math.Abs(t);
            }
            else
            if (t > 255)
            {
                t = 255;
            }

            ImagenFiltrada.SetPixel(posX, posY, Color.FromArgb(t, t, t));
        }
Example #17
0
        public static int ValorMascara(int posX, int posY, Mascara MascaraFiltro, Bitmap ImageSinFiltro, Bitmap ImagenFiltrada)
        {
            double[] prom = new double[MascaraFiltro.Dims.Width * MascaraFiltro.Dims.Height];

            int    k = 0;
            double p = 0;

            for (int iMzk = 0, iImg = posY - ((MascaraFiltro.Dims.Height - 1) / 2); iMzk < MascaraFiltro.Dims.Height; iMzk++, iImg++)
            {
                for (int jMzk = 0, jImg = posX - ((MascaraFiltro.Dims.Width - 1) / 2); jMzk < MascaraFiltro.Dims.Width; jMzk++, jImg++)
                {
                    if ((iImg < ImageSinFiltro.Height && jImg < ImageSinFiltro.Width) && (iImg >= 0 && jImg >= 0))
                    {
                        int    c  = PictureAnalizer.PixelColor2Gray(ImageSinFiltro.GetPixel(jImg, iImg));
                        double cm = MascaraFiltro.MascaraNumerica[jMzk, iMzk];
                        MascaraFiltro.MascaraNumerica[jMzk, iMzk] = c * cm;
                        prom[k] = MascaraFiltro.MascaraNumerica[jMzk, iMzk];
                        p      += prom[k];
                    }
                }
            }

            int t = (int)p;

            if (t > 255)
            {
                t = 225;
            }
            else
            if (t < 0)
            {
                t = 0;
            }

            return(t);
        }
Example #18
0
        private void button26_Click(object sender, EventArgs e)
        {
            string[] nombres = { "Vacio", "Torres", "Caballos", "Alfiles", "Reinas", "Reyes", "Peones" };

            //ActivationNetwork rna = EntrenarRNA();

            // rna.Save("save1.rna");
            // para cada imagen en la direccion de entrenamiento
            DirectoryInfo sc = new DirectoryInfo(rutaEjemplos);

            FileInfo[] s = sc.GetFiles();
            Bitmap[,] Matzs = null;
            double[][] Carz = new double[8 * 8][];
            double[]   Obj  =
            {
                1, 2, 3, 4, 5, 3, 2, 1,
                6, 6, 6, 6, 6, 6, 6, 6,
                0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0,
                0, 0, 0, 0, 0, 0, 0, 0,
                6, 6, 6, 6, 6, 6, 6, 6,
                1, 2, 3, 4, 5, 3, 2, 1,
            };

            for (int k = 0; k < 64; k++)
            {
                Carz[k] = new double[6];
            }

            int b = 0;

            foreach (FileInfo imgEjemp in s)
            {
                ImagenEntrada.Image           = PictureAnalizer.ImagenColor2Gray((Bitmap)Image.FromFile(imgEjemp.FullName));
                PictureAnalizer.ImagenEntrada = (Bitmap)ImagenEntrada.Image;

                Mascara mX = new Mascara(Mascara.PRDF_Opdr_LPcX, new Size(3, 3), new Point(1, 1));
                Mascara mY = new Mascara(Mascara.PRDF_Opdr_LpcY, new Size(3, 3), new Point(1, 1));

                ImagenEntrada.Image = PictureAnalizer.DetectarBordes(mX, mY, 0, (Bitmap)ImagenEntrada.Image);
                ImagenEntrada.Image.Save(@"C:\Users\frodo\Desktop\ejemplos - copia\" + "imgBorde" + b.ToString() + ".jpeg");
                b++;


                Matzs = PictureAnalizer.DividirImagen((Bitmap)ImagenEntrada.Image, 8);
                ImagenEntrada.Refresh();
                System.Threading.Thread.Sleep(1000);


                int n = 0;
                for (int i = 0; i < 8; i++)
                {
                    for (int j = 0; j < 8; j++)
                    {
                        Bitmap im = Matzs[j, i];
                        ImagenEntrada.Image = im;
                        int           p      = (int)Obj[n];
                        string        dir    = "Piesas/" + nombres[p] + "/";
                        DirectoryInfo dest   = new DirectoryInfo(dir);
                        FileInfo[]    infDir = dest.GetFiles();
                        switch (p)
                        {
                        case 0: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;

                        case 1: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;

                        case 2: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;

                        case 3: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;

                        case 4: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;

                        case 5: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;

                        case 6: im.Save(dir + nombres[p] + infDir.Length + ".jpeg"); break;
                        }

                        Carz[n] = PictureAnalizer.CalcularCaracteristicasTextura(im);


                        for (int v = 0; v < Carz[n].Length; v++)
                        {
                            Console.WriteLine(Carz[n][v]);
                        }



                        ImagenEntrada.Refresh();
                        System.Threading.Thread.Sleep(100);
                        n++;
                    }
                }
            }



            List <Bitmap[]>   ListaEntradas = new List <Bitmap[]>();
            List <double[][]> ListaCarz     = new List <double[][]>();
            double            carTota       = 0;

            for (int k = 0; k < 7; k++)
            {
                ListaEntradas.Add(new Bitmap[1]);
                ListaCarz.Add(new double[6][]);
            }


            string[] rutasInternas = Directory.GetDirectories("Piesas/");
            for (int i = 0; i < rutasInternas.Length; i++)
            {
                string        ruta      = rutasInternas[i];
                string[]      rutaSgmnt = ruta.Split('/');
                int           indx      = Array.IndexOf(nombres.ToArray(), rutaSgmnt[1]);
                DirectoryInfo infDir    = new DirectoryInfo(ruta);
                FileInfo[]    infFile   = infDir.GetFiles("*.jpeg", SearchOption.AllDirectories);
                Bitmap[]      imgArr    = new Bitmap[infFile.Length];
                double[][]    carArr    = new double[infFile.Length][];
                carTota += infFile.Length;

                for (int j = 0; j < imgArr.Length; j++)
                {
                    imgArr[j] = (Bitmap)Image.FromFile(infFile[j].FullName);
                    carArr[j] = PictureAnalizer.CalcularCaracteristicasTextura(imgArr[j]);
                }

                ListaEntradas[indx] = imgArr;
                ListaCarz[indx]     = carArr;
            }

            double[][] lSalidas = new double[(int)carTota][];

            // { "Vacio", "Torres", "Caballos","Alfiles", "Reinas", "Reyes", "Peones" };


            int c = 2;

            double[][] MatEntr = new double[(int)carTota][];
            int        t       = 0;
            int        pi      = 0;

            foreach (double[][] Mat in ListaCarz)
            {
                foreach (double[] vector in Mat)
                {
                    MatEntr[t] = vector;

                    switch (pi)
                    {
                    case 0: lSalidas[t] = new double[] { 0, 0, 0, 0 }; break;

                    case 1: lSalidas[t] = new double[] { 0, 0, 0, 1 }; break;

                    case 2: lSalidas[t] = new double[] { 0, 0, 1, 0 }; break;

                    case 3: lSalidas[t] = new double[] { 0, 0, 1, 1 }; break;

                    case 4: lSalidas[t] = new double[] { 0, 1, 0, 0 }; break;

                    case 5: lSalidas[t] = new double[] { 0, 1, 0, 1 }; break;

                    case 6: lSalidas[t] = new double[] { 0, 1, 1, 0 }; break;
                    }

                    t++;
                }
                pi++;
            }

            ActivationNetwork rna = null;

            if (!Directory.Exists("rnsa.rna"))
            {
                rna = CrearRNA(MatEntr, lSalidas);
                rna.Save("rnsa.rna");
            }
            else
            {
                rna = (ActivationNetwork)Network.Load("rnsa.rna");
            }

            Bitmap [] ns = ListaEntradas[0];
            foreach (Bitmap x in ns)
            {
                double [] text = rna.Compute(PictureAnalizer.CalcularCaracteristicasTextura(x));



                int l = 0;
                for (int f = 0; f < text.Length; f++)
                {
                    if (text[f] == 1)
                    {
                        l += (int)Math.Pow(2, f);
                    }
                }
                Console.Write(l + " ");
            }



            // generar arbol
            nodo r = new nodo(8, "s");

            arbol a1 = new arbol();

            r.tablero = a1.TabEjemplo;
            a1.raiz   = r;

            arbol a2 = new arbol();

            r.tablero = a2.TabEjemplo;
            a2.raiz   = r;
            imprimirTablero(r);

            nodo n1 = a1.generarMovimientos(a1.raiz, arbol.ColorBlanco);

            imprimirTablero(n1);


            for (int i = 0; i < 10; i++)
            {
                n1 = a1.generarMovimientos(n1, arbol.ColorBlanco);
                imprimirTablero(n1);

                nodo n2 = a2.generarMovimientos(n1, arbol.ColorNegroo);
                imprimirTablero(n2);

                n1 = n2;
            }
        }
Example #19
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();
        }
Example #20
0
        // jsm22
        private void button23_Click(object sender, EventArgs e)
        {
            Mascara m = new Mascara(Mascara.PRDF_Estr_Bcdd, new Size(3, 3), new Point(1, 1));

            ImagenEntrada.Image = PictureAnalizer.ExtBorde((Bitmap)ImagenEntrada.Image, m);
        }
Example #21
0
        public static Bitmap Apertura(Bitmap ImagenOriginal, Mascara MascaraEnviada, int colorPixel)
        {
            Bitmap im = PictureAnalizer.DilatarImagen(PictureAnalizer.ErocionarImagen(ImagenOriginal, MascaraEnviada, colorPixel), MascaraEnviada, colorPixel);

            return(im);
        }
Example #22
0
        public static Bitmap ExtBorde(Bitmap ImagenOriginal, Mascara MascaraEnviada)
        {
            Bitmap n = PictureAnalizer.DilatarImagen(ImagenOriginal, MascaraEnviada, 255);

            return(PictureAnalizer.Resta(n, ImagenOriginal));
        }
Example #23
0
        public static Mascara CopiarMatriz(Mascara Origen)
        {
            Mascara mn = new Mascara(Origen.MascaraNumerica, Origen.Dims, Origen.Centro);

            return(mn);
        }