Korekce zkosení při zpracování obrazu pomocí C#

Korekce zešikmení při zpracování obrazu je úkolem optimalizace obrazu. V počítačovém vidění potřebujeme správně umístit naše kamery a senzory, ale to často vede k velkým zkreslením. Podobně při skenování pomocí skenerů je někdy zarovnání téměř nemožné. Kvůli tomu mají naskenované obrázky a fotografie mírné zkosení (naklonění). V tomto článku se naučíme, jak provést korekci zešikmení při zpracování obrazu pomocí C#.

Tento článek bude obsahovat následující témata:

  1. C# rozhraní API pro korekci zkreslení obrazu
  2. Detekce úhlu zkosení obrázku
  3. Automatická korekce zkosení
  4. Automatická korekce zkosení s filtrem předběžného zpracování
  5. Rozpoznat text obrázku s automatickou korekcí zkosení
  6. Ruční korekce zkosení
  7. Ruční korekce zkosení s filtrem předběžného zpracování

C# API pro zpracování obrazu pro korekci zkosení

Pro opravy zešikmení budeme používat API Aspose.OCR for .NET. Rozhraní API umožňuje provádět OCR na naskenovaných obrázcích, fotografiích smartphonu, snímcích obrazovky, oblastech obrázku a naskenovaných souborech PDF. Umožňuje uložit výsledky rozpoznaného textu v oblíbených formátech dokumentů.

Prosím buď stáhněte si DLL API, nebo jej nainstalujte pomocí NuGet.

PM> Install-Package Aspose.OCR

Detekce úhlu zkosení obrázku v C#

API poskytuje metodu CalculateSkew(string), která vypočítá úhel zkosení poskytnutého zdrojového obrázku. Úhel zkosení textového obrázku můžeme snadno zjistit podle následujících kroků:

  1. Nejprve vytvořte instanci třídy AsposeOCR.
  2. Zavolejte metodu CalculateSkew(). Jako argument bere cestu obrazu.
  3. Nakonec ukažte vypočítaný úhel zkosení.

Následující ukázkový kód ukazuje, jak vypočítat úhel zkosení obrázku v C#.

// Tento příklad kódu ukazuje, jak vypočítat úhel zkosení obrázku.
// Vytvořte instanci AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Vypočítejte úhel zkosení
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// Zobrazit úhel
Console.WriteLine($"Skew angle: {skew:N1}°");
Detekce úhlu zkosení obrázku v C#

Zdrojový obrázek.

Skew angle: 5.8°

Automatická korekce zkosení v C#

Pro automatickou korekci zkosení můžeme povolit vlastnost RecognitionSettings.AutoSkew v nastavení rozpoznávání podle následujících kroků:

  1. Nejprve vytvořte instanci třídy AsposeOCR.
  2. Dále inicializujte objekt třídy RecognitionSettings.
  3. Potom nastavte vlastnost AutoSkew na hodnotu true.
  4. Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
  5. Nakonec zobrazte rozpoznaný text.

Následující ukázkový kód ukazuje, jak použít automatickou korekci zkosení v C#.

// Tento příklad kódu ukazuje, jak použít automatickou korekci zkosení.
// Vytvořte instanci AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Povolte automatické vyrovnání v nastavení rozpoznávání
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// Rozpoznat obrázek
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Zobrazit rozpoznaný text
Console.WriteLine(result.RecognitionText);

Automatická korekce zkosení s filtrem předběžného zpracování v C#

Alternativně můžeme použít filtr předběžného zpracování AutoSkew pro automatickou korekci zešikmení a uložit opravený snímek podle následujících kroků:

  1. Nejprve vytvořte instanci třídy AsposeOCR.
  2. Dále inicializujte objekt třídy PreprocessingFilter.
  3. Potom přidejte filtr AutoSkew().
  4. Poté zavolejte metodu PreprocessImage() a aplikujte filtr na zdrojový obrázek.
  5. Nakonec opravený obrázek uložte.

Následující ukázkový kód ukazuje, jak použít automatickou korekci zkosení s filtrem předběžného zpracování v C#.

// Tento příklad kódu ukazuje, jak použít automatickou korekci zkosení pomocí filtru předběžného zpracování a uložit opravený obrázek.
// Vytvořte instanci AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Přidejte filtr vyrovnání sklonu
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Uložte předzpracovaný obrázek do souboru
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);
    }
}
Automatická korekce zkosení s filtrem v C#

Automatická korekce zkosení s filtrem v C#.

Rozpoznejte text obrázku pomocí automatické korekce zkosení v C#

Můžeme použít filtr předběžného zpracování AutoSkew a rozpoznat text obrázku podle následujících kroků:

  1. Nejprve vytvořte instanci třídy AsposeOCR.
  2. Dále inicializujte objekt třídy PreprocessingFilter.
  3. Potom přidejte filtr AutoSkew().
  4. Mezitím vytvořte instanci třídy RecognitionSettings.
  5. Dále přiřaďte filtry vlastnosti PreprocessingFilters.
  6. Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
  7. Nakonec zobrazte rozpoznaný text.

Následující ukázkový kód ukazuje, jak použít automatickou korekci zkosení a rozpoznat text v C#.

// Tento příklad kódu ukazuje, jak použít automatickou korekci zkosení pomocí filtru předběžného zpracování a rozpoznat obrázek.
// Vytvořte instanci AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Přidejte filtr vyrovnání sklonu
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Připojte filtry předběžného zpracování k nastavení rozpoznávání
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Rozpoznat obrázek
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Ukázat výsledky
Console.WriteLine(result.RecognitionText);

Ruční korekce zkosení v C#

Pro ruční korekci zkosení můžeme úhel zkosení definovat ručně zadáním vlastnosti Úhel zkosení v nastavení rozpoznávání podle následujících kroků:

  1. Nejprve vytvořte instanci třídy AsposeOCR.
  2. Dále inicializujte objekt třídy RecognitionSettings.
  3. Potom nastavte vlastnost SkewAngle.
  4. Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
  5. Nakonec zobrazte rozpoznaný text.

Následující ukázkový kód ukazuje, jak použít ruční korekci zkosení v C#.

// Tento příklad kódu ukazuje, jak použít ruční korekci zkosení.
// Vytvořte instanci AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Ručně nastavte úhel zkosení
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// Rozpoznat obrázek
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Zobrazit výsledky
Console.WriteLine(result.RecognitionText);

Ruční korekce zkosení s filtrem předběžného zpracování v C#

Úhel zkosení můžeme také definovat ručně otočením obrázku o zadaný stupeň pomocí filtru předběžného zpracování Rotate.

Chcete-li ručně použít korekci zkosení, postupujte podle níže uvedených kroků:

  1. Nejprve vytvořte instanci třídy AsposeOCR.
  2. Dále inicializujte objekt třídy PreprocessingFilter.
  3. Potom přidejte filtr Rotate().
  4. Mezitím vytvořte instanci třídy RecognitionSettings.
  5. Dále přiřaďte filtry vlastnosti PreprocessingFilters.
  6. Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
  7. Nakonec zobrazte rozpoznaný text.

Následující ukázkový kód ukazuje, jak použít ruční korekci zkosení s filtrem předběžného zpracování v C#.

// Tento příklad kódu ukazuje, jak použít ruční korekci zkosení a rozpoznat text obrázku.
// Vytvořte instanci AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Otočte obrázek o 90 stupňů proti směru hodinových ručiček
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// Uložte předzpracovaný obrázek do souboru pro účely ladě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);
    }
}

// Připojte filtry předběžného zpracování k nastavení rozpoznávání
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Rozpoznat obrázek
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Ukázat výsledky
Console.WriteLine(result.RecognitionText);

Získejte bezplatnou zkušební licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet Aspose.OCR pro .NET bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak:

  • provádět OCR a rozpoznávat text na obrázcích;
  • používat filtry a zpracovávat obrázky;
  • používat nastavení rozpoznávání;
  • uložit opravené obrázky pomocí C#.

Kromě korekce zkosení při zpracování obrazu pomocí C# se můžete dozvědět více o Aspose.OCR pro .NET API pomocí dokumentace. V případě jakýchkoliv nejasností nás prosím neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také