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:
- API de processamento de imagem de correção de inclinação C#
- Detectar ângulo de inclinação da imagem
- Correção Automática de Inclinação
- Correção de inclinação automática com filtro de pré-processamento
- Reconhecer texto de imagem com correção automática de inclinação
- Correção de inclinação manual
- 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:
- Primeiramente, crie uma instância da classe AsposeOCR.
- Chame o método CalculateSkew(). Ele usa o caminho da imagem como um argumento.
- 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}°");
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:
- Primeiramente, crie uma instância da classe AsposeOCR.
- Em seguida, inicialize um objeto da classe RecognitionSettings.
- Em seguida, defina a propriedade AutoSkew como true.
- Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
- 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:
- Primeiramente, crie uma instância da classe AsposeOCR.
- Em seguida, inicialize um objeto da classe PreprocessingFilter.
- Em seguida, adicione o filtro AutoSkew().
- Depois disso, chame o método PreprocessImage() para aplicar o filtro na imagem de origem.
- 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);
}
}
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:
- Primeiramente, crie uma instância da classe AsposeOCR.
- Em seguida, inicialize um objeto da classe PreprocessingFilter.
- Em seguida, adicione o filtro AutoSkew().
- Enquanto isso, crie uma instância da classe RecognitionSettings.
- Em seguida, atribua filtros à propriedade PreprocessingFilters.
- Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
- 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:
- Primeiramente, crie uma instância da classe AsposeOCR.
- Em seguida, inicialize um objeto da classe RecognitionSettings.
- Em seguida, defina a propriedade SkewAngle.
- Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
- 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:
- Primeiramente, crie uma instância da classe AsposeOCR.
- Em seguida, inicialize um objeto da classe PreprocessingFilter.
- Em seguida, adicione o filtro Rotate().
- Enquanto isso, crie uma instância da classe RecognitionSettings.
- Em seguida, atribua filtros à propriedade PreprocessingFilters.
- Depois disso, chame o método RecognizeImage() com a imagem de origem e o objeto RecognitionSettings.
- 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.