Esempio n. 1
0
        private void REjecutar_Click(object sender, EventArgs e)
        {
            atributos.umbralBinarizacion = (byte)umbralBinarizacion.Value;

            RComenzarEjecucion();
            RBackWorker.RunWorkerAsync();
        }
Esempio n. 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);
        }