Ejemplo n.º 1
0
        //Métodos para cerrar las imágenes de los forms
        public void ImagenCerrada()
        {
            estadoImagen = EstadoImagen.nula;

            guardarToolStripMenuItem.Enabled     = false;
            guardarImagenToolStripButton.Enabled = false;

            preprocesadoToolStripMenuItem.Enabled = false;
            escalarToolStripButton.Enabled        = false;
            escaladoToolStripMenuItem.Enabled     = false;
            umbralizarToolStripButton.Enabled     = false;
            umbralizarToolStripMenuItem.Enabled   = false;
            enderezarToolStripButton.Enabled      = false;
            enderezarToolStripMenuItem.Enabled    = false;

            if (!correcionSlopeToolStripButton.Enabled && !correcionSlantToolStripButton.Enabled && !palabrasToolStripButton.Enabled && !caracteresToolStripButton.Enabled && !esqueletoToolStripButton.Enabled)
            {
                segmentaciónToolStripMenuItem.Enabled       = false;
                manualSegmentacionToolStripMenuItem.Enabled = false;
            }

            lineasToolStripButton.Enabled                   = false;
            lineasToolStripMenuItem.Enabled                 = false;
            semiautomaticoToolStripMenuItem.Enabled         = false;
            automaticoSegmentacionToolStripMenuItem.Enabled = false;
        }
Ejemplo n.º 2
0
        //Métodos Segmentado Semiautomático
        private void semiautomaticoToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (textoSegmentado != null)
            {
                textoSegmentado.LiberarTextoManejado();
            }

            textoSegmentado = textoActual.Copia();

            deshabilitarMenus("Segmentado semiautomático");

            conometro.Start();

            //Segmentación líneas
            textoSegmentado.SegmentacionLineas(perfilActual.segmentacion.interlineadoMedio, perfilActual.segmentacion.incrementoMinimoLineas);
            estadoImagenSegmentada = EstadoImagen.lineasSegmentadas;

            ArreglarLineasForm arreglar = new ArreglarLineasForm(this);

            arreglar.ShowDialog();

            if (estadoImagenSegmentada != EstadoImagen.nula)
            {
                imagenSegmentada.habilitarBotonCerrar(false);
            }

            segmentadoSemiautomaticoBackgroundWorker.RunWorkerAsync();
        }
Ejemplo n.º 3
0
        //Métodos auxiliares para escanear
        bool IMessageFilter.PreFilterMessage(ref Message m)
        {
            TwainCommand orden = escaner.RecibirMensaje(ref m);

            if (orden == TwainCommand.Not)
            {
                return(false);
            }

            switch (orden)
            {
            case TwainCommand.CloseRequest:
            {
                Terminar();
                escaner.CerrarConexion();
                break;
            }

            case TwainCommand.CloseOk:
            {
                Terminar();
                escaner.CerrarConexion();
                break;
            }

            case TwainCommand.DeviceEvent:
            {
                break;
            }

            case TwainCommand.TransferReady:
            {
                ArrayList imagenes = escaner.TransferirImagenes();
                Terminar();
                escaner.CerrarConexion();

                for (int i = 0; i < imagenes.Count; i++)
                {
                    //byte []nuevaImagen;
                    IntPtr imagen = (IntPtr)imagenes[i];

                    //Arreglar
                    textoActual = new TextoManejado(GlobalLock(imagen));

                    textoActual = textoActual.Copia();

                    GlobalFree(imagen);

                    estadoImagen = EstadoImagen.nula;

                    CargarImagen();
                }
                break;
            }
            }

            return(true);
        }
Ejemplo n.º 4
0
        private void abrirFileDialog_FileOk(object sender, CancelEventArgs e)
        {
            if (abrirFileDialog.FileNames.Length > 0)//Se ha seleccionado un archivo
            {
                textoActual.LiberarTextoManejado();

                textoActual.Cargar(abrirFileDialog.FileName);

                estadoImagen = EstadoImagen.nula;

                CargarImagen();
            }
        }
Ejemplo n.º 5
0
        private void segmentadoAutomaticoBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            conometro.Start();

            //Segmentación líneas
            textoSegmentado.SegmentacionLineas(perfilActual.segmentacion.interlineadoMedio, perfilActual.segmentacion.incrementoMinimoLineas);
            estadoImagenSegmentada = EstadoImagen.lineasSegmentadas;

            //Correción Slope
            if (perfilActual.segmentacion.corregirSlope)
            {
                textoSegmentado.CorregirSlope(perfilActual.segmentacion.distanciaMinimaSlope);
            }

            //Correción Slant
            if (perfilActual.segmentacion.corregirSlant)
            {
                textoSegmentado.CorregirSlant(perfilActual.segmentacion.distanciaMinimaSlant);
            }

            //Segmentado Palabras
            textoSegmentado.SegmentacionPalabras(perfilActual.segmentacion.espaciadoMedio, false);

            estadoImagenSegmentada = EstadoImagen.palabrasSegmentadas;

            //Segmentado Caracteres y Esqueleto
            if (perfilActual.segmentacion.precaracteres)
            {
                if (perfilActual.segmentacion.calcularEsqueleto)
                {
                    textoSegmentado.Esqueleto();
                }

                textoSegmentado.SegmentacionCaracteres(perfilActual.segmentacion.grosorMedioTrazo, perfilActual.segmentacion.incrementoMinimoCaracteres, false);
            }
            else
            {
                textoSegmentado.SegmentacionCaracteres(perfilActual.segmentacion.grosorMedioTrazo, perfilActual.segmentacion.incrementoMinimoCaracteres, false);

                if (perfilActual.segmentacion.calcularEsqueleto)
                {
                    textoSegmentado.Esqueleto();
                }
            }

            estadoImagenSegmentada = EstadoImagen.caracteresSegmentados;

            conometro.Stop();
        }
Ejemplo n.º 6
0
        private void preprocesadoBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            conometro.Start();

            if (perfilActual.preprocesado.redimensionarImagen)
            {
                double factorAlto  = 1.0;
                double factorAncho = 1.0;

                if (perfilActual.preprocesado.mantenerProporcion)
                {
                    if (perfilActual.preprocesado.cambiarAlto)
                    {
                        factorAlto  = ((double)perfilActual.preprocesado.pixelesAlto) / textoActual.GetAlto();
                        factorAncho = textoActual.GetAncho() * factorAlto / textoActual.GetAlto();
                    }
                    else
                    if (perfilActual.preprocesado.cambiarAncho)
                    {
                        factorAncho = ((double)perfilActual.preprocesado.pixelesAncho) / textoActual.GetAncho();
                        factorAlto  = textoActual.GetAlto() * factorAncho / textoActual.GetAncho();
                    }
                }
                else
                {
                    if (perfilActual.preprocesado.cambiarAlto)
                    {
                        factorAlto = ((double)perfilActual.preprocesado.pixelesAlto) / textoActual.GetAlto();
                    }

                    if (perfilActual.preprocesado.cambiarAncho)
                    {
                        factorAncho = ((double)perfilActual.preprocesado.pixelesAncho) / textoActual.GetAncho();
                    }
                }

                textoActual.Escalacion(factorAncho, factorAlto);
            }

            textoActual.Umbralizar(perfilActual.preprocesado.umbral);
            estadoImagen = EstadoImagen.umbralizada;

            if (perfilActual.preprocesado.enderezadoAutomatico)
            {
                textoActual.Enderezar();
            }

            conometro.Stop();
        }
Ejemplo n.º 7
0
        //Métodos

        //Constructor
        public PrincipalForm()
        {
            InitializeComponent();

            //Inicializaciones
            textoActual  = new TextoManejado();
            estadoImagen = EstadoImagen.nula;

            textoSegmentado = new TextoManejado();

            escaner = new ConexionEscaner(this.Handle);

            if (!escaner.Inicializar())
            {
                twainToolStripMenuItem.Enabled = false;
                twainToolStripButton.Enabled   = false;
            }

            imagenPreprocesada = new ImagenActualForm(Etapa.preprocesado);
            imagenSegmentada   = new ImagenActualForm(Etapa.segmentacion);

            conometro = new Stopwatch();

            perfilesLabel.Text = "Perfil actual:";
            TransparencyKey    = Color.Red;

            tareaToolStripStatusLabel.Alignment = ToolStripItemAlignment.Right;
            barraEstadoProgressBar.Alignment    = ToolStripItemAlignment.Right;

            CargarConfiguracion();

            ActualizarPerfiles();

            perfilesComboBox.SelectedItem = configuracionGeneral.perfilInicial;

            CargarPerfil();

            if (perfilActual.general.iniciarMaximizado)
            {
                WindowState = FormWindowState.Maximized;
            }
        }
Ejemplo n.º 8
0
        public void CerrarImagenSegmentada()
        {
            estadoImagenSegmentada = EstadoImagen.nula;

            if (!lineasToolStripButton.Enabled)
            {
                segmentaciónToolStripMenuItem.Enabled = false;
            }

            correcionSlopeToolStripButton.Enabled   = false;
            correcionSlopeToolStripMenuItem.Enabled = false;
            correcionSlantToolStripButton.Enabled   = false;
            correcionSlantToolStripMenuItem.Enabled = false;
            palabrasToolStripButton.Enabled         = false;
            palabrasToolStripMenuItem.Enabled       = false;
            caracteresToolStripButton.Enabled       = false;
            caracteresToolStripMenuItem.Enabled     = false;
            esqueletoToolStripButton.Enabled        = false;
            esqueletoToolStripMenuItem.Enabled      = false;

            reconocimientoToolStripMenuItem.Enabled = false;
            reconocimientoToolStripButton.Enabled   = false;
            ManualToolStripMenuItem.Enabled         = false;
        }
Ejemplo n.º 9
0
        //Métodos para cargar imágenes en el form
        public void CargarImagen()
        {
            IntPtr ptrDIB;      //Puntero al DIB
            IntPtr ptrMapaBits; //Puntero al mapa de bits en sí (nos saltamos el bitmapinfoheader y la paleta, si la hay)

            unsafe              //Zona no segura (transformación de punteros C++ a C#)
            {
                ptrDIB = (IntPtr)textoActual.GetDIB();

                ptrMapaBits = (IntPtr)textoActual.GetMapaBits();
            }

            //Cargamos la imagen en un Form hijo
            if (imagenPreprocesada.IsDisposed)
            {
                imagenPreprocesada = new ImagenActualForm(Etapa.preprocesado);
            }
            imagenPreprocesada.CargarImagen(BitmapFromDIB(ptrDIB, ptrMapaBits));
            imagenPreprocesada.MdiParent = this;//Indicamos que PrincipalForm es el padre del formulario
            imagenPreprocesada.Show();


            //Habilitado y deshabilitado de menús
            if (estadoImagen == EstadoImagen.nula)
            {
                estadoImagen = EstadoImagen.cargada;

                guardarToolStripMenuItem.Enabled     = true;
                guardarImagenToolStripButton.Enabled = true;

                preprocesadoToolStripMenuItem.Enabled       = false;
                manualPreprocesadoToolStripMenuItem.Enabled = false;
                escalarToolStripButton.Enabled                  = false;
                escaladoToolStripMenuItem.Enabled               = false;
                umbralizarToolStripButton.Enabled               = false;
                umbralizarToolStripMenuItem.Enabled             = false;
                enderezarToolStripButton.Enabled                = false;
                enderezarToolStripMenuItem.Enabled              = false;
                automaticoPreprocesadoToolStripMenuItem.Enabled = false;

                lineasToolStripButton.Enabled                   = false;
                lineasToolStripMenuItem.Enabled                 = false;
                semiautomaticoToolStripMenuItem.Enabled         = false;
                automaticoSegmentacionToolStripMenuItem.Enabled = false;

                if (textoActual.GetProfundidad() == 8 || textoActual.GetProfundidad() == 24)
                {
                    preprocesadoToolStripMenuItem.Enabled       = true;
                    manualPreprocesadoToolStripMenuItem.Enabled = true;
                    escalarToolStripButton.Enabled                  = true;
                    escaladoToolStripMenuItem.Enabled               = true;
                    umbralizarToolStripButton.Enabled               = true;
                    umbralizarToolStripMenuItem.Enabled             = true;
                    enderezarToolStripButton.Enabled                = true;
                    enderezarToolStripMenuItem.Enabled              = true;
                    automaticoPreprocesadoToolStripMenuItem.Enabled = true;

                    if (textoActual.EstaUmbralizado())
                    {
                        estadoImagen = EstadoImagen.umbralizada;

                        umbralizarToolStripButton.Enabled   = false;
                        umbralizarToolStripMenuItem.Enabled = false;

                        segmentaciónToolStripMenuItem.Enabled       = true;
                        manualSegmentacionToolStripMenuItem.Enabled = true;
                        lineasToolStripButton.Enabled                   = true;
                        lineasToolStripMenuItem.Enabled                 = true;
                        semiautomaticoToolStripMenuItem.Enabled         = true;
                        automaticoSegmentacionToolStripMenuItem.Enabled = true;
                    }
                }
            }
            else
            {
                if (estadoImagen == EstadoImagen.umbralizada)
                {
                    umbralizarToolStripButton.Enabled   = false;
                    umbralizarToolStripMenuItem.Enabled = false;

                    segmentaciónToolStripMenuItem.Enabled       = true;
                    manualSegmentacionToolStripMenuItem.Enabled = true;
                    lineasToolStripButton.Enabled                   = true;
                    lineasToolStripMenuItem.Enabled                 = true;
                    semiautomaticoToolStripMenuItem.Enabled         = true;
                    automaticoSegmentacionToolStripMenuItem.Enabled = true;
                }
            }
        }