使用 C# 進行圖像處理中的傾斜校正

圖像處理中的歪斜校正是圖像優化的一項任務。在計算機視覺中,我們需要正確定位我們的相機和傳感器,但這通常會導致大的失真。同樣,當用掃描儀掃描時,有時幾乎不可能對齊。因此,掃描的圖像和照片會有輕微的歪斜(傾斜)。在本文中,我們將學習如何使用 C# 在圖像處理中執行傾斜校正。

本文應涵蓋以下主題:

  1. C#歪斜校正圖像處理API
  2. 檢測圖像傾斜角度
  3. 自動歪斜校正
  4. 帶預處理過濾器的自動歪斜校正
  5. 使用自動歪斜校正識別圖像文本
  6. 手動歪斜校正
  7. 使用預處理過濾器進行手動歪斜校正

C# 歪斜校正圖像處理 API

對於偏斜校正,我們將使用 Aspose.OCR for .NET API。該 API 允許對掃描圖像、智能手機照片、屏幕截圖、圖像區域和掃描 PDF 執行 OCR。它可以將識別的文本結果保存為流行的文檔格式

下載 API 的 DLL 或使用 NuGet 安裝它。

PM> Install-Package Aspose.OCR

在 C# 中檢測圖像傾斜角度

API 提供了 CalculateSkew(string) 方法來計算提供的源圖像的傾斜角度。我們可以按照下面給出的步驟輕鬆檢測文本圖像的傾斜角度:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 調用 CalculateSkew() 方法。它以圖像路徑作為參數。
  3. 最後,顯示計算出的傾斜角度。

以下示例代碼顯示瞭如何在 C# 中計算圖像的傾斜角度。

// 此代碼示例演示如何計算圖像的傾斜角度。
// 創建 AsposeOcr 的實例
AsposeOcr recognitionEngine = new AsposeOcr();

// 計算傾斜角度
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// 顯示角度
Console.WriteLine($"Skew angle: {skew:N1}°");
在 C# 中檢測圖像傾斜角度

源圖像。

Skew angle: 5.8°

C# 中的自動傾斜校正

對於自動傾斜校正,我們可以按照以下步驟在識別設置中啟用 RecognitionSettings.AutoSkew 屬性:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 RecognitionSettings 類的一個對象。
  3. 然後,將 AutoSkew 屬性設置為 true。
  4. 之後,使用源圖像和 RecognitionSettings 對象調用 RecognizeImage() 方法。
  5. 最後,顯示識別出的文本。

以下示例代碼顯示瞭如何在 C# 中應用自動傾斜校正。

// 此代碼示例演示如何應用自動傾斜校正。
// 創建 AsposeOcr 的實例
AsposeOcr recognitionEngine = new AsposeOcr();

// 在識別設置中啟用自動校正
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// 識別圖像
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 顯示識別的文本
Console.WriteLine(result.RecognitionText);

在 C# 中使用預處理過濾器自動進行傾斜校正

或者,我們可以應用 AutoSkew 預處理過濾器進行自動傾斜校正,並按照以下步驟保存校正後的圖像:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 PreprocessingFilter 類的一個對象。
  3. 然後,添加 AutoSkew() 過濾器。
  4. 之後,調用 PreprocessImage() 方法對源圖像應用濾鏡。
  5. 最後,保存校正後的圖像。

以下示例代碼顯示瞭如何在 C# 中使用預處理過濾器應用自動傾斜校正。

// 此代碼示例演示如何使用預處理過濾器應用自動傾斜校正並保存校正後的圖像。
// 創建 AsposeOcr 的實例
AsposeOcr recognitionEngine = new AsposeOcr();

// 添加去歪斜濾波器
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// 將預處理後的圖像保存到文件
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);
    }
}
在 C# 中使用過濾器進行自動歪斜校正

在 C# 中使用過濾器進行自動傾斜校正。

在 C# 中使用自動傾斜校正識別圖像文本

我們可以按照以下步驟應用 AutoSkew 預處理過濾器並識別圖像文本:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 PreprocessingFilter 類的一個對象。
  3. 然後,添加 AutoSkew() 過濾器。
  4. 同時,創建 RecognitionSettings 類的實例。
  5. 接下來,將過濾器分配給 PreprocessingFilters 屬性。
  6. 之後,使用源圖像和 RecognitionSettings 對象調用 RecognizeImage() 方法。
  7. 最後,顯示識別出的文本。

以下示例代碼顯示瞭如何應用自動傾斜校正和識別 C# 中的文本。

// 此代碼示例演示如何使用預處理過濾器應用自動傾斜校正並識別圖像。
// 創建 AsposeOcr 的實例
AsposeOcr recognitionEngine = new AsposeOcr();

// 添加去歪斜過濾器
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// 將預處理過濾器附加到識別設置
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// 識別圖像
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 顯示結果
Console.WriteLine(result.RecognitionText);

C# 中的手動傾斜校正

對於手動傾斜校正,我們可以按照以下步驟在識別設置中指定 SkewAngle 屬性來手動定義傾斜角度:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 RecognitionSettings 類的一個對象。
  3. 然後,設置 SkewAngle 屬性。
  4. 之後,使用源圖像和 RecognitionSettings 對象調用 RecognizeImage() 方法。
  5. 最後,顯示識別出的文本。

以下示例代碼顯示瞭如何在 C# 中應用手動傾斜校正。

// 此代碼示例演示如何應用手動偏斜校正。
// 創建 AsposeOcr 的實例
AsposeOcr recognitionEngine = new AsposeOcr();

// 手動設置傾斜角度
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// 識別圖像
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 顯示結果
Console.WriteLine(result.RecognitionText);

在 C# 中使用預處理過濾器手動校正偏差

我們還可以通過使用 Rotate 預處理過濾器將圖像旋轉到指定的角度來手動定義傾斜角度。

請按照下面給出的步驟手動應用傾斜校正:

  1. 首先,創建一個 AsposeOCR 類的實例。
  2. 接下來,初始化 PreprocessingFilter 類的一個對象。
  3. 然後,添加 Rotate() 過濾器。
  4. 同時,創建 RecognitionSettings 類的實例。
  5. 接下來,將過濾器分配給 PreprocessingFilters 屬性。
  6. 之後,使用源圖像和 RecognitionSettings 對象調用 RecognizeImage() 方法。
  7. 最後,顯示識別出的文本。

以下示例代碼顯示瞭如何在 C# 中使用預處理過濾器應用手動偏差校正。

// 此代碼示例演示如何應用手動傾斜校正和識別圖像文本。
// 創建 AsposeOcr 的實例
AsposeOcr recognitionEngine = new AsposeOcr();

// 將圖像逆時針旋轉 90 度
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// 將預處理後的圖像保存到文件中以用於調試目的
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);
    }
}

// 將預處理過濾器附加到識別設置
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// 識別圖像
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// 顯示結果
Console.WriteLine(result.RecognitionText);

獲得免費評估許可證

您可以獲得免費的臨時許可證 試用 Aspose.OCR for .NET,沒有評估限制。

結論

在本文中,我們學習瞭如何:

  • 執行 OCR 並識別圖像上的文本;
  • 應用過濾器和處理圖像;
  • 使用識別設置;
  • 使用 C# 保存校正後的圖像。

除了使用 C# 進行圖像處理中的傾斜校正外,您還可以使用 文檔 了解有關 Aspose.OCR for .NET API 的更多信息。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。

也可以看看