Пример #1
0
        private void AgregarBoton_Click(object sender, EventArgs e)
        {
            EnvoltorioFiltro ef = null;

            if (MedianaRadio.Checked)
            {
                ef = new EnvoltorioFiltro(EnvoltorioFiltro.Tipo.Mediana, 0);
            }
            else if (MediaRadio.Checked)
            {
                int param = MediaBarra.Value * 2 + 3;
                ef = new EnvoltorioFiltro(EnvoltorioFiltro.Tipo.Media, param);
            }
            else if (FourierRadio.Checked)
            {
                int param = 0;

                switch (FourierBarra.Value)
                {
                case 0:
                    param = 256 / 6;
                    break;

                case 1:
                    param = 256 / 5;
                    break;

                case 2:
                    param = 256 / 3;
                    break;
                }

                ef = new EnvoltorioFiltro(EnvoltorioFiltro.Tipo.Fourier, param);
            }

            ListaFiltros.Items.Add(ef);

            ListaFiltros.SelectedIndex = ListaFiltros.Items.Count - 1;
        }
Пример #2
0
        private void RBackWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            EnvoltorioFiltro[] filtros = new EnvoltorioFiltro[ListaFiltros.Items.Count];
            ListaFiltros.Items.CopyTo(filtros, 0);

            int numPasosFiltro = 0;

            foreach (EnvoltorioFiltro ev in filtros)
            {
                if (ev.TipoFiltro == EnvoltorioFiltro.Tipo.Fourier)
                {
                    numPasosFiltro += 3;
                }
                else
                {
                    numPasosFiltro++;
                }
            }

            int numPasos = 1 + 4 + numPasosFiltro;

            if (noRamas)
            {
                numPasos += 2;
            }

            int progreso = 100 / numPasos;

            int i = 0;

            RPasos          = new Bitmap[numPasos];
            RTxtDescripcion = new string[numPasos];

            Realce r = new Realce(RImagen);

            RPasos[i] = RImagen;

            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Original, 0);
            i++;
            RBackWorker.ReportProgress(progreso);

            RPasos[i]          = r.ReescaladoBicubico(512, 512);
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Reescalado, 0);
            i++;
            RBackWorker.ReportProgress(progreso);

            RPasos[i]          = r.EscalaGrises();
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.EscalaGrises, 0);
            i++;
            RBackWorker.ReportProgress(progreso);

            foreach (EnvoltorioFiltro filtro in filtros)
            {
                switch (filtro.TipoFiltro)
                {
                case EnvoltorioFiltro.Tipo.Mediana:
                    RPasos[i]          = r.FiltroMediana();
                    RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroMediana, 0);
                    i++;
                    RBackWorker.ReportProgress(progreso);
                    break;

                case EnvoltorioFiltro.Tipo.Media:
                    RPasos[i]          = r.FiltroMedia(filtro.Parametro);
                    RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroMedia,
                                                             filtro.Parametro);
                    i++;
                    RBackWorker.ReportProgress(progreso);
                    break;

                case EnvoltorioFiltro.Tipo.Fourier:
                    RPasos[i]          = r.ImagenCompleja();
                    RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroFourierTransformada, 0);
                    i++;
                    RBackWorker.ReportProgress(progreso);
                    RPasos[i]          = r.FiltroPasoBajo(filtro.Parametro);
                    RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroFourierPasoBajo, filtro.Parametro);
                    i++;
                    RBackWorker.ReportProgress(progreso);
                    RPasos[i]          = r.ImagenNormal();
                    RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroFourierInversa, 0);
                    i++;
                    RBackWorker.ReportProgress(progreso);
                    break;
                }
            }

            RPasos[i]          = r.BinarizacionIterativa();
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Binarizacion, r.umbral);
            i++;
            RBackWorker.ReportProgress(progreso);

            if (noRamas)
            {
                RPasos[i]          = r.FiltroMediana();
                RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroMedianaNoRamas, 0);
                i++;
                RBackWorker.ReportProgress(progreso);

                RPasos[i]          = r.BinarizacionIterativa();
                RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Binarizacion, r.umbral);
                i++;
                RBackWorker.ReportProgress(progreso);
            }

            RPasos[i]          = r.Adelgazar();
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Adelgazamiento, 0);
            RBackWorker.ReportProgress(progreso);
        }
Пример #3
0
        private void AgregarBoton_Click(object sender, EventArgs e)
        {
            EnvoltorioFiltro ef = null;

            if (MedianaRadio.Checked)
                ef = new EnvoltorioFiltro(EnvoltorioFiltro.Tipo.Mediana, 0);
            else if (MediaRadio.Checked)
            {
                int param = MediaBarra.Value * 2 + 3;
                ef = new EnvoltorioFiltro(EnvoltorioFiltro.Tipo.Media, param);
            }
            else if (FourierRadio.Checked)
            {
                int param = 0;

                switch (FourierBarra.Value)
                {
                    case 0:
                        param = 256 / 6;
                        break;
                    case 1:
                        param = 256 / 5;
                        break;
                    case 2:
                        param = 256 / 3;
                        break;
                }

                ef = new EnvoltorioFiltro(EnvoltorioFiltro.Tipo.Fourier, param);
            }

            ListaFiltros.Items.Add(ef);

            ListaFiltros.SelectedIndex = ListaFiltros.Items.Count - 1;
        }
Пример #4
0
        private void RBackWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            EnvoltorioFiltro[] filtros = new EnvoltorioFiltro[ListaFiltros.Items.Count];
            ListaFiltros.Items.CopyTo(filtros, 0);

            int numPasosFiltro = 0;

            foreach (EnvoltorioFiltro ev in filtros)
            {
                if (ev.TipoFiltro == EnvoltorioFiltro.Tipo.Fourier)
                    numPasosFiltro += 3;
                else
                    numPasosFiltro++;
            }

            int numPasos = 1 + 4 + numPasosFiltro;

            if (noRamas)
                numPasos += 2;

            int progreso = 100 / numPasos;

            int i = 0;

            RPasos = new Bitmap[numPasos];
            RTxtDescripcion = new string[numPasos];

            Realce r = new Realce(RImagen);

            RPasos[i] = RImagen;

            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Original, 0);
            i++;
            RBackWorker.ReportProgress(progreso);

            RPasos[i] = r.ReescaladoBicubico(512, 512);
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Reescalado, 0);
            i++;
            RBackWorker.ReportProgress(progreso);

            RPasos[i] = r.EscalaGrises();
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.EscalaGrises, 0);
            i++;
            RBackWorker.ReportProgress(progreso);

            foreach (EnvoltorioFiltro filtro in filtros)
            {
                switch (filtro.TipoFiltro)
                {
                    case EnvoltorioFiltro.Tipo.Mediana:
                        RPasos[i] = r.FiltroMediana();
                        RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroMediana, 0);
                        i++;
                        RBackWorker.ReportProgress(progreso);
                        break;
                    case EnvoltorioFiltro.Tipo.Media:
                        RPasos[i] = r.FiltroMedia(filtro.Parametro);
                        RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroMedia,
                                                                        filtro.Parametro);
                        i++;
                        RBackWorker.ReportProgress(progreso);
                        break;
                    case EnvoltorioFiltro.Tipo.Fourier:
                        RPasos[i] = r.ImagenCompleja();
                        RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroFourierTransformada, 0);
                        i++;
                        RBackWorker.ReportProgress(progreso);
                        RPasos[i] = r.FiltroPasoBajo(filtro.Parametro);
                        RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroFourierPasoBajo, filtro.Parametro);
                        i++;
                        RBackWorker.ReportProgress(progreso);
                        RPasos[i] = r.ImagenNormal();
                        RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroFourierInversa, 0);
                        i++;
                        RBackWorker.ReportProgress(progreso);
                        break;
                }
            }

            RPasos[i] = r.BinarizacionIterativa();
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Binarizacion, r.umbral);
            i++;
            RBackWorker.ReportProgress(progreso);

            if (noRamas)
            {
                RPasos[i] = r.FiltroMediana();
                RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.FiltroMedianaNoRamas,0);
                i++;
                RBackWorker.ReportProgress(progreso);

                RPasos[i] = r.BinarizacionIterativa();
                RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Binarizacion, r.umbral);
                i++;
                RBackWorker.ReportProgress(progreso);
            }

            RPasos[i] = r.Adelgazar();
            RTxtDescripcion[i] = RObtenerDescripcion(RTipoDescripcion.Adelgazamiento, 0);
            RBackWorker.ReportProgress(progreso);
        }