Пример #1
0
        public static Bitmap MostrarAcms(  )
        {
            double porcentaje = 0;
            double u          = (porcentaje / 100) * MaximoMascaraMatriz(PictureAnalizer.AcumuladorGeneral);

            Bitmap m = PictureAnalizer.DibujarNegra(PictureAnalizer.AcumuladorGeneral.Dims.Width, PictureAnalizer.AcumuladorGeneral.Dims.Height);

            for (int i = 0; i < PictureAnalizer.AcumuladorGeneral.Dims.Height; i++)
            {
                for (int j = 0; j < PictureAnalizer.AcumuladorGeneral.Dims.Width; j++)
                {
                    int c = (int)PictureAnalizer.AcumuladorGeneral.MascaraNumerica[j, i];
                    if (c >= u)
                    {
                        c = PictureAnalizer.NormalizarPixel(c);
                        m.SetPixel(j, i, Color.FromArgb(c, c, c));
                    }
                    else
                    {
                        m.SetPixel(j, i, Color.Black);
                    }
                }
            }
            return(m);
        }
Пример #2
0
        // subdividir la imagen
        public static Bitmap[,] DividirImagen(Bitmap Img_ImgOriginal, int divNum)
        {
            // generar una matriz para guardar cada casilla
            Bitmap[,] MatrizImg = new Bitmap[divNum, divNum];

            // dividir las dimenciones de la imagen
            int h, w;

            h = (int)Math.Round((double)Img_ImgOriginal.Height / divNum, 0);
            w = (int)Math.Round((double)Img_ImgOriginal.Width / divNum, 0);



            for (int i = 0; i < divNum; i++)
            {
                for (int j = 0; j < divNum; j++)
                {
                    MatrizImg[j, i] = new Bitmap(w, h);

                    for (int y = i * h, s = 0; y < (h - 1) * (i + 1); y++, s++)
                    {
                        for (int x = j * w, n = 0; x < (w - 1) * (j + 1); x++, n++)
                        {
                            int c = PictureAnalizer.PixelColor2Gray(Img_ImgOriginal.GetPixel(x, y));
                            MatrizImg[j, i].SetPixel(n, s, Color.FromArgb(c, c, c));
                        }
                    }
                }
            }

            return(MatrizImg);
        }
Пример #3
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);
        }
Пример #4
0
        // cerradura de una imagen
        private void button6_Click(object sender, EventArgs e)
        {
            int color = (int)Selector_Brillo.Value;

            PictureAnalizer.ImagenEntrada = PictureAnalizer.Cerradura(PictureAnalizer.ImagenEntrada, conseguirMascara(Txt_Otros), color);
            ImagenEntrada.Image           = PictureAnalizer.ImagenEntrada;
        }
Пример #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);
        }
Пример #6
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);
        }
Пример #7
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);
        }
Пример #8
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;
        }
Пример #9
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;
        }
Пример #10
0
        public static double [] CalcularCaracteristicasTextura(Bitmap Im_ent)
        {
            Dictionary <int, double>[] hsr = PictureAnalizer.HistogramasSumaDiferencia(Im_ent);

            double[] op = PictureAnalizer.CaracteristicasTextura(hsr[0], hsr[1]);

            return(op);
        }
Пример #11
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();
        }
Пример #12
0
        // otsu automatico
        private void button1_Click(object sender, EventArgs e)
        {
            int[]    h  = PictureAnalizer.Histograma((Bitmap)ImagenEntrada.Image);
            double[] hn = PictureAnalizer.HistogramaNormal((Bitmap)ImagenEntrada.Image);
            int      t  = PictureAnalizer.Otsu(hn);

            MessageBox.Show("", t.ToString());
            ImagenEntrada.Image = PictureAnalizer.Umbralizar((Bitmap)ImagenEntrada.Image, t);
        }
Пример #13
0
        public static double [] HistogramaNormal(Bitmap ImagenColor)
        {
            int[]     h        = PictureAnalizer.Histograma(ImagenColor);
            double [] HistNorm = new double[256];
            for (int i = 0; i < 256; i++)
            {
                HistNorm[i] = h[i] / ((double)ImagenColor.Width * ImagenColor.Height);
            }

            return(HistNorm);
        }
Пример #14
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);
        }
Пример #15
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);
        }
Пример #16
0
        public static int [] HistogramaAcumulado(Bitmap input)
        {
            int [] h = PictureAnalizer.Histograma(input);

            int[] Hacum = new int[256];

            for (int i = 1; i < 256; i++)
            {
                Hacum[i] = Hacum[i - 1] + h[i];
            }

            return(Hacum);
        }
Пример #17
0
        private void otsuToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Analizador.SetImagenSalida((Bitmap)ImagenEntrada.Image);
            // 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);
            MessageBox.Show("Umbral Optimo " + t.ToString(), "Umbral optimo");
        }
Пример #18
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);
            }
        }
Пример #19
0
        public static Bitmap ImagenColor2Gray(Bitmap ImagenColor)
        {
            Bitmap ImagenGray = new Bitmap(ImagenColor.Width, ImagenColor.Height);

            for (int i = 0; i < ImagenColor.Height; i++)
            {
                for (int j = 0; j < ImagenColor.Width; j++)
                {
                    int c = PictureAnalizer.PixelColor2Gray(ImagenColor.GetPixel(j, i));
                    ImagenGray.SetPixel(j, i, Color.FromArgb(c, c, c));
                }
            }
            return(ImagenGray);
        }
Пример #20
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);
        }
Пример #21
0
        public static int [] Histograma(Bitmap ImagenEntradaGray)
        {
            int[] hist = new int[256];

            for (int i = 0; i < ImagenEntradaGray.Height; i++)
            {
                for (int j = 0; j < ImagenEntradaGray.Width; j++)
                {
                    int color = PictureAnalizer.PixelColor2Gray(ImagenEntradaGray.GetPixel(j, i));
                    hist[color] += 1;
                }
            }

            return(hist);
        }
Пример #22
0
        private void button19_Click(object sender, EventArgs e)
        {
            Dictionary <int, double>[] Hsr = PictureAnalizer.HistogramasSumaDiferencia(PictureAnalizer.ImagenEntrada);

            PictureAnalizer.HNormSumasDifecs = Hsr;

            Bitmap[] img_Text = PictureAnalizer.ImagenDeTextura(PictureAnalizer.ImagenEntrada, PictureAnalizer.HNormSumasDifecs);

            pc_S1.Image = img_Text[0];
            pc_s2.Image = img_Text[1];
            pc_s3.Image = img_Text[2];
            pc_s4.Image = img_Text[3];
            pc_s5.Image = img_Text[4];
            pc_s6.Image = img_Text[5];
        }
Пример #23
0
        private void button18_Click(object sender, EventArgs e)
        {
            Dictionary <int, double>[] Hsr = PictureAnalizer.HistogramasSumaDiferencia(PictureAnalizer.ImagenEntrada);
            // media, varianza, homogen, energia, entropia, contraste
            double[] Carc = PictureAnalizer.CaracteristicasTextura(Hsr[0], Hsr[1]);

            lbl_Textr.Text = "";

            lbl_Textr.Text = " Media: " + Math.Round(Carc[0]) + "\n" + " Varianza: " + Math.Round(Carc[1]) + "\n" + " Homogeneidad: " + Math.Round(Carc[2]) + "\n"
                             + " Energia: " + Math.Round(Carc[3]) + "\n" + " Entropia: " + Math.Round(Carc[4]) + "\n" + " Contraste: " + Math.Round(Carc[5]) + "\n";

            PictureAnalizer.HNormSumasDifecs = Hsr;

            int c = 0;
        }
Пример #24
0
        private void ToolButCargar_Click(object sender, EventArgs e)
        {
            // cargar una imagen
            OpenFileDialog f = new OpenFileDialog();

            f.ShowDialog();
            f.OpenFile();
            string rutaImagenEntrada = f.FileName;

            // fijar imagen de entrada y de salida(en escala de grices)
            Analizador.SetImagenEntrada(PictureAnalizer.ImagenColor2Gray((Bitmap)(Image.FromFile(rutaImagenEntrada))));


            // fijar imaenes en la gui
            ImagenEntrada.Image = PictureAnalizer.ImagenEntrada;
        }
Пример #25
0
        public static Bitmap CambiarBrillo(Bitmap ImagenSinBrillo, double brillo)
        {
            Bitmap n = PictureAnalizer.DibujarNegra(ImagenSinBrillo.Width, ImagenSinBrillo.Height);

            for (int i = 0; i < n.Height; i++)
            {
                for (int j = 0; j < n.Width; j++)
                {
                    Color c      = ImagenSinBrillo.GetPixel(j, i);
                    int   ViejoC = PictureAnalizer.PixelColor2Gray(c);
                    int   NuevoC = PictureAnalizer.NormalizarPixel(ViejoC + Convert.ToInt32(brillo));
                    n.SetPixel(j, i, Color.FromArgb(NuevoC, NuevoC, NuevoC));
                }
            }

            return(n);
        }
Пример #26
0
        public static Bitmap DibujarCuadradoEn(int DimX, int DimY, int dimX, int dimY, Point inicio, Color c)
        {
            Bitmap img = PictureAnalizer.DibujarNegra(DimX, DimY);

            for (int i = inicio.Y; i < dimY; i++)
            {
                for (int j = inicio.X; j < dimX; j++)
                {
                    if (i < img.Height && j < img.Width)
                    {
                        img.SetPixel(j, i, c);
                    }
                }
            }

            return(img);
        }
Пример #27
0
        private void combinarQrsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // poner los pixeles de la imagen obtenida en rojo
            for (int i = 0; i < PictureAnalizer.ImagenEntrada.Height; i++)
            {
                for (int j = 0; j < PictureAnalizer.ImagenEntrada.Width; j++)
                {
                    int c = PictureAnalizer.PixelColor2Gray(PictureAnalizer.ImagenEntrada.GetPixel(j, i));
                    if (c == 0)
                    {
                        ImgOriginal.SetPixel(j, i, Color.Red);
                    }
                }
            }

            ImagenEntrada.Image = ImgOriginal;
        }
Пример #28
0
        public static Bitmap MoverInvertido(Bitmap imgEntrada, int ColorOrigen)
        {
            Bitmap imgExt = new Bitmap(imgEntrada.Width, imgEntrada.Height);

            for (int i = 0; i < imgEntrada.Height; i++)
            {
                for (int j = 0; j < imgEntrada.Width; j++)
                {
                    int c = PictureAnalizer.PixelColor2Gray(ImagenEntrada.GetPixel(j, i));
                    if (c == ColorOrigen)
                    {
                        imgExt.SetPixel(j, i, Color.FromArgb(c, c, c));
                    }
                }
            }
            return(imgExt);
        }
Пример #29
0
        public static List <Point> PuntosInteres(Bitmap ImagenEntrada, int c)
        {
            List <Point> lisp = new List <Point>();

            for (int i = 0; i < ImagenEntrada.Height; i++)
            {
                for (int j = 0; j < ImagenEntrada.Width; j++)
                {
                    int C = PictureAnalizer.PixelColor2Gray(ImagenEntrada.GetPixel(j, i));
                    if (c == C)
                    {
                        Point p = new Point(j, i);
                        lisp.Add(p);
                    }
                }
            }
            return(lisp);
        }
Пример #30
0
        public static Bitmap ResaltarLineas(Bitmap Img_Entrada)
        {
            Bitmap imgLines = PictureAnalizer.DibujarNegra(Img_Entrada.Width, Img_Entrada.Height);

            for (int i = 0; i < Img_Entrada.Height; i++)
            {
                for (int j = 0; j < Img_Entrada.Width; j++)
                {
                    bool x = false, y = false;
                    int  c = PictureAnalizer.PixelColor2Gray(Img_Entrada.GetPixel(j, i));

                    if (c > 0)
                    {
                        int cYan, cYPs, cXan, cXPs;
                        if (i - 1 > 0 && i + 1 < Img_Entrada.Height)
                        {
                            cYan = PictureAnalizer.PixelColor2Gray(Img_Entrada.GetPixel(j, i - 1));
                            cYPs = PictureAnalizer.PixelColor2Gray(Img_Entrada.GetPixel(j, i + 1));
                            if (cYan > 0 && cYPs > 0)
                            {
                                y = true;
                            }
                        }

                        if (j - 1 > 0 && j + 1 < Img_Entrada.Width)
                        {
                            cXan = PictureAnalizer.PixelColor2Gray(Img_Entrada.GetPixel(j - 1, i));
                            cXPs = PictureAnalizer.PixelColor2Gray(Img_Entrada.GetPixel(j + 1, i));
                            if (cXan > 0 && cXPs > 0)
                            {
                                x = true;
                            }
                        }

                        if (x && y)
                        {
                            imgLines.SetPixel(j, i, Color.White);
                        }
                    }
                }
            }

            return(imgLines);
        }