Corrección de sesgo en el procesamiento de imágenes usando C#

La corrección de sesgos en el procesamiento de imágenes es una tarea de optimización de imágenes. En la visión por computadora, necesitamos colocar correctamente nuestras cámaras y sensores, pero esto a menudo conduce a grandes distorsiones. De manera similar, al escanear con escáneres, a veces la alineación es casi imposible. Debido a esto, las imágenes escaneadas y las fotografías tienen un ligero sesgo (inclinación). En este artículo, aprenderemos cómo realizar la corrección de sesgo en el procesamiento de imágenes usando C#.

En este artículo se tratarán los siguientes temas:

  1. API de procesamiento de imágenes de corrección de inclinación de C#
  2. Detectar ángulo de inclinación de la imagen
  3. Corrección automática de inclinación
  4. Corrección automática de desviación con filtro de preprocesamiento
  5. Reconocer texto de imagen con corrección automática de inclinación
  6. Corrección de desviación manual
  7. Corrección de desviación manual con filtro de preprocesamiento

API de procesamiento de imágenes de corrección de inclinación de C#

Para las correcciones de sesgo, utilizaremos la API Aspose.OCR para .NET. La API permite realizar OCR en imágenes escaneadas, fotos de teléfonos inteligentes, capturas de pantalla, áreas de una imagen y archivos PDF escaneados. Permite guardar los resultados de texto reconocidos en formatos de documentos populares.

Descargue la DLL de la API o instálela mediante NuGet.

PM> Install-Package Aspose.OCR

Detectar el ángulo de inclinación de la imagen en C#

La API proporciona el método CalculateSkew(string) que calcula el ángulo de inclinación de la imagen de origen proporcionada. Podemos detectar fácilmente el ángulo de inclinación de una imagen de texto siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. Llame al método CalculateSkew(). Toma la ruta de la imagen como argumento.
  3. Finalmente, muestre el ángulo de inclinación calculado.

El siguiente código de ejemplo muestra cómo calcular el ángulo de inclinación de una imagen en C#.

// Este ejemplo de código muestra cómo calcular el ángulo de inclinación de una imagen.
// Crear una instancia de AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Calcular ángulo de inclinación
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// Mostrar ángulo
Console.WriteLine($"Skew angle: {skew:N1}°");
Detectar el ángulo de inclinación de la imagen en C#

La imagen de origen.

Skew angle: 5.8°

Corrección automática de sesgos en C#

Para la corrección automática de sesgos, podemos habilitar la propiedad RecognitionSettings.AutoSkew en la configuración de reconocimiento siguiendo los pasos que se indican a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase RecognitionSettings.
  3. Luego, establezca la propiedad AutoSkew en verdadero.
  4. Después de eso, llame al método RecognizeImage() con la imagen de origen y el objeto RecognitionSettings.
  5. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación automática en C#.

// Este ejemplo de código demuestra cómo aplicar la corrección de desviación automática.
// Crear una instancia de AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Habilitar la alineación automática en la configuración de reconocimiento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// Reconocer imagen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Mostrar texto reconocido
Console.WriteLine(result.RecognitionText);

Corrección automática de sesgos con filtro de preprocesamiento en C#

Alternativamente, podemos aplicar el filtro de preprocesamiento AutoSkew para la corrección automática de la inclinación y guardar la imagen corregida siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase PreprocessingFilter.
  3. Luego, agregue el filtro AutoSkew().
  4. Después de eso, llame al método PreprocessImage() para aplicar el filtro en la imagen de origen.
  5. Finalmente, guarde la imagen corregida.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación automática con filtro de preprocesamiento en C#.

// Este ejemplo de código demuestra cómo aplicar la corrección de inclinación automática mediante el filtro de preprocesamiento y guardar la imagen corregida.
// Crear una instancia de AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Agregar filtro de alineación
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Guardar imagen preprocesada en un archivo
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
    using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
    {
        ms.WriteTo(fs);
    }
}
Corrección automática de sesgo con filtro en C#

Corrección automática de sesgos con filtro en C#.

Reconocer el texto de la imagen con la corrección automática de inclinación en C#

Podemos aplicar el filtro de preprocesamiento AutoSkew y reconocer el texto de la imagen siguiendo los pasos que se detallan a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase PreprocessingFilter.
  3. Luego, agregue el filtro AutoSkew().
  4. Mientras tanto, cree una instancia de la clase RecognitionSettings.
  5. A continuación, asigne filtros a la propiedad PreprocessingFilters.
  6. Después de eso, llame al método RecognizeImage() con la imagen de origen y el objeto RecognitionSettings.
  7. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de inclinación automática y reconocer el texto en C#.

// Este ejemplo de código demuestra cómo aplicar la corrección de inclinación automática mediante el filtro de preprocesamiento y reconocer la imagen.
// Crear una instancia de AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Agregar filtro de alineación
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Agregar filtros de preprocesamiento a la configuración de reconocimiento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Reconocer imagen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Mostrar resultados
Console.WriteLine(result.RecognitionText);

Corrección de inclinación manual en C#

Para la corrección de inclinación manual, podemos definir el ángulo de inclinación manualmente especificando la propiedad SkewAngle en la configuración de reconocimiento siguiendo los pasos que se indican a continuación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase RecognitionSettings.
  3. Luego, establezca la propiedad SkewAngle.
  4. Después de eso, llame al método RecognizeImage() con la imagen de origen y el objeto RecognitionSettings.
  5. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación manual en C#.

// Este ejemplo de código demuestra cómo aplicar la corrección de desviación manual.
// Crear una instancia de AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Establecer manualmente el ángulo de inclinación
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// Reconocer imagen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Mostrar resultados
Console.WriteLine(result.RecognitionText);

Corrección de desviación manual con filtro de preprocesamiento en C#

También podemos definir el ángulo de inclinación manualmente rotando la imagen al grado especificado usando el filtro de preprocesamiento Rotate.

Siga los pasos que se indican a continuación para aplicar manualmente la corrección de desviación:

  1. En primer lugar, cree una instancia de la clase AsposeOCR.
  2. A continuación, inicialice un objeto de la clase PreprocessingFilter.
  3. Luego, agregue el filtro Rotate().
  4. Mientras tanto, cree una instancia de la clase RecognitionSettings.
  5. A continuación, asigne filtros a la propiedad PreprocessingFilters.
  6. Después de eso, llame al método RecognizeImage() con la imagen de origen y el objeto RecognitionSettings.
  7. Finalmente, muestra el texto reconocido.

El siguiente código de ejemplo muestra cómo aplicar la corrección de desviación manual con filtro de preprocesamiento en C#.

// Este ejemplo de código demuestra cómo aplicar la corrección de inclinación manual y reconocer el texto de la imagen.
// Crear una instancia de AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Girar la imagen 90 grados en sentido contrario a las agujas del reloj
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// Guarde la imagen preprocesada en un archivo con fines de depuración
using (MemoryStream ms = recognitionEngine.PreprocessImage("C:\\Files\\OCR\\source.png", filters))
{
    using (FileStream fs = new FileStream("C:\\Files\\OCR\\result.png", FileMode.Create, FileAccess.Write))
    {
        ms.WriteTo(fs);
    }
}

// Agregar filtros de preprocesamiento a la configuración de reconocimiento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Reconocer imagen
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Mostrar resultados
Console.WriteLine(result.RecognitionText);

Obtenga una licencia de evaluación gratuita

Puede obtener una licencia temporal gratuita para probar Aspose.OCR para .NET sin limitaciones de evaluación.

Conclusión

En este artículo, hemos aprendido a:

  • realizar OCR y reconocer texto en imágenes;
  • aplicar filtros y procesar imágenes;
  • usar configuraciones de reconocimiento;
  • guarde las imágenes corregidas usando C#.

Además de la corrección de sesgos en el procesamiento de imágenes con C#, puede obtener más información sobre Aspose.OCR para la API de .NET con la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en nuestro foro de soporte gratuito.

Ver también