Correção de inclinação no processamento de imagem usando C#

A correção de distorção no processamento de imagens é uma tarefa de otimização de imagens. Na visão computacional, precisamos posicionar corretamente nossas câmeras e sensores, mas isso geralmente leva a grandes distorções. Da mesma forma, ao digitalizar com scanners, às vezes o alinhamento é quase impossível. Devido a isso, as imagens e fotografias digitalizadas têm uma ligeira inclinação (inclinação). Neste artigo, aprenderemos como realizar a correção de distorção no processamento de imagens usando C#.

Os seguintes tópicos serão abordados neste artigo:

  1. API de processamento de imagem de correção de inclinação C#
  2. Detectar ângulo de inclinação da imagem
  3. Correção Automática de Inclinação
  4. Correção de inclinação automática com filtro de pré-processamento
  5. Reconhecer texto de imagem com correção automática de inclinação
  6. Correção de inclinação manual
  7. Correção de inclinação manual com filtro de pré-processamento

API de processamento de imagem de correção de inclinação C#

Para correções de inclinação, usaremos a API Aspose.OCR for .NET. A API permite realizar OCR em imagens digitalizadas, fotos de smartphones, capturas de tela, áreas de uma imagem e PDFs digitalizados. Ele permite salvar os resultados de texto reconhecidos em formatos de documentos populares.

Por favor, faça o download da DLL da API ou instale-a usando NuGet.

PM> Install-Package Aspose.OCR

Detectar ângulo de inclinação da imagem em C#

A API fornece o método CalculateSkew(string) que calcula o ângulo de inclinação da imagem de origem fornecida. Podemos detectar facilmente o ângulo de inclinação de uma imagem de texto seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Chame o método CalculateSkew(). Ele usa o caminho da imagem como um argumento.
  3. Finalmente, mostre o ângulo de inclinação calculado.

O código de exemplo a seguir mostra como calcular o ângulo de inclinação de uma imagem em C#.

// Este exemplo de código demonstra como calcular o ângulo de inclinação de uma imagem.
// Crie uma instância do AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Calcular ângulo de inclinação
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// Mostrar ângulo
Console.WriteLine($"Skew angle: {skew:N1}°");
Detectar ângulo de inclinação da imagem em C#

A imagem de origem.

Skew angle: 5.8°

Correção automática de inclinação em C#

Para correção automática de inclinação, podemos habilitar a propriedade RecognitionSettings.AutoSkew nas configurações de reconhecimento seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe RecognitionSettings.
  3. Em seguida, defina a propriedade AutoSkew como true.
  4. Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
  5. Por fim, mostre o texto reconhecido.

O código de exemplo a seguir mostra como aplicar a correção automática de inclinação em C#.

// Este exemplo de código demonstra como aplicar a correção automática de inclinação.
// Crie uma instância do AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Ative a correção automática nas configurações de reconhecimento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

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

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

Correção automática de inclinação com filtro de pré-processamento em C#

Alternativamente, podemos aplicar o filtro de pré-processamento AutoSkew para correção automática de inclinação e salvar a imagem corrigida seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe PreprocessingFilter.
  3. Em seguida, adicione o filtro AutoSkew().
  4. Depois disso, chame o método PreprocessImage() para aplicar o filtro na imagem de origem.
  5. Por fim, salve a imagem corrigida.

O código de exemplo a seguir mostra como aplicar a correção automática de inclinação com filtro de pré-processamento em C#.

// Este exemplo de código demonstra como aplicar a correção automática de inclinação usando o filtro de pré-processamento e salvar a imagem corrigida.
// Crie uma instância do AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Adicionar filtro de alinhamento
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Salvar imagem pré-processada em arquivo
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);
    }
}
Correção automática de inclinação com filtro em C#

Correção de inclinação automática com filtro em C#.

Reconhecer texto de imagem com correção automática de inclinação em C#

Podemos aplicar o filtro de pré-processamento AutoSkew e reconhecer o texto da imagem seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe PreprocessingFilter.
  3. Em seguida, adicione o filtro AutoSkew().
  4. Enquanto isso, crie uma instância da classe RecognitionSettings.
  5. Em seguida, atribua filtros à propriedade PreprocessingFilters.
  6. Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
  7. Por fim, mostre o texto reconhecido.

O código de exemplo a seguir mostra como aplicar a correção automática de inclinação e reconhecer o texto em C#.

// Este exemplo de código demonstra como aplicar a correção automática de inclinação usando o filtro de pré-processamento e reconhecer a imagem.
// Crie uma instância do AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Adicionar filtro de alinhamento
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Anexar filtros de pré-processamento às configurações de reconhecimento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

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

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

Correção de inclinação manual em C#

Para correção manual de inclinação, podemos definir o ângulo de inclinação manualmente especificando a propriedade SkewAngle nas configurações de reconhecimento seguindo as etapas abaixo:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe RecognitionSettings.
  3. Em seguida, defina a propriedade SkewAngle.
  4. Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
  5. Por fim, mostre o texto reconhecido.

O código de exemplo a seguir mostra como aplicar a correção manual de inclinação em C#.

// Este exemplo de código demonstra como aplicar a correção manual de inclinação.
// Crie uma instância do AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Defina manualmente o ângulo de inclinação
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

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

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

Correção de inclinação manual com filtro de pré-processamento em C#

Também podemos definir o ângulo de inclinação manualmente girando a imagem para o grau especificado usando o filtro de pré-processamento Rotate.

Siga as etapas abaixo para aplicar manualmente a correção de inclinação:

  1. Primeiramente, crie uma instância da classe AsposeOCR.
  2. Em seguida, inicialize um objeto da classe PreprocessingFilter.
  3. Em seguida, adicione o filtro Rotate().
  4. Enquanto isso, crie uma instância da classe RecognitionSettings.
  5. Em seguida, atribua filtros à propriedade PreprocessingFilters.
  6. Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
  7. Por fim, mostre o texto reconhecido.

O código de exemplo a seguir mostra como aplicar a correção manual de inclinação com filtro de pré-processamento em C#.

// Este exemplo de código demonstra como aplicar a correção manual de inclinação e reconhecer o texto da imagem.
// Crie uma instância do AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Girar a imagem 90 graus no sentido anti-horário
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// Salvar imagem pré-processada em arquivo para fins de depuração
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);
    }
}

// Anexar filtros de pré-processamento às configurações de reconhecimento
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

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

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

Obtenha uma licença de avaliação gratuita

Você pode obter uma licença temporária gratuita para experimentar o Aspose.OCR para .NET sem limitações de avaliação.

Conclusão

Neste artigo, aprendemos como:

  • realizar OCR e reconhecer texto em imagens;
  • aplicar filtros e processar imagens;
  • usar configurações de reconhecimento;
  • salve as imagens corrigidas usando C#.

Além da correção de distorção no processamento de imagens usando C#, você pode aprender mais sobre Aspose.OCR para .NET API usando a documentação. Em caso de qualquer ambiguidade, sinta-se à vontade para nos contatar em nosso fórum de suporte gratuito.

Veja também