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:
- C# rozhraní API pro korekci zkreslení obrazu
- Detekce úhlu zkosení obrázku
- Automatická korekce zkosení
- Automatická korekce zkosení s filtrem předběžného zpracování
- Rozpoznat text obrázku s automatickou korekcí zkosení
- Ruční korekce zkosení
- 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ů:
- Nejprve vytvořte instanci třídy AsposeOCR.
- Zavolejte metodu CalculateSkew(). Jako argument bere cestu obrazu.
- 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}°");
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ů:
- Nejprve vytvořte instanci třídy AsposeOCR.
- Dále inicializujte objekt třídy RecognitionSettings.
- Potom nastavte vlastnost AutoSkew na hodnotu true.
- Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
- 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ů:
- Nejprve vytvořte instanci třídy AsposeOCR.
- Dále inicializujte objekt třídy PreprocessingFilter.
- Potom přidejte filtr AutoSkew().
- Poté zavolejte metodu PreprocessImage() a aplikujte filtr na zdrojový obrázek.
- 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);
}
}
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ů:
- Nejprve vytvořte instanci třídy AsposeOCR.
- Dále inicializujte objekt třídy PreprocessingFilter.
- Potom přidejte filtr AutoSkew().
- Mezitím vytvořte instanci třídy RecognitionSettings.
- Dále přiřaďte filtry vlastnosti PreprocessingFilters.
- Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
- 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ů:
- Nejprve vytvořte instanci třídy AsposeOCR.
- Dále inicializujte objekt třídy RecognitionSettings.
- Potom nastavte vlastnost SkewAngle.
- Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
- 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ů:
- Nejprve vytvořte instanci třídy AsposeOCR.
- Dále inicializujte objekt třídy PreprocessingFilter.
- Potom přidejte filtr Rotate().
- Mezitím vytvořte instanci třídy RecognitionSettings.
- Dále přiřaďte filtry vlastnosti PreprocessingFilters.
- Poté zavolejte metodu RecognizeImage() se zdrojovým obrázkem a objektem RecognitionSettings.
- 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.