private void REjecutar_Click(object sender, EventArgs e) { atributos.umbralBinarizacion = (byte)umbralBinarizacion.Value; RComenzarEjecucion(); RBackWorker.RunWorkerAsync(); }
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); }