Chỉnh sửa Skew trong Xử lý Hình ảnh bằng C#

Chỉnh sửa xiên trong xử lý hình ảnh là một nhiệm vụ tối ưu hóa hình ảnh. Trong thị giác máy tính, chúng ta cần định vị chính xác các camera và cảm biến của mình, nhưng điều này thường dẫn đến sự biến dạng lớn. Tương tự, khi quét bằng máy quét, đôi khi việc căn chỉnh là gần như không thể. Do đó, ảnh quét và ảnh chụp có độ lệch (độ nghiêng) nhẹ. Trong bài viết này, chúng ta sẽ học cách thực hiện chỉnh sửa độ lệch trong xử lý ảnh bằng C#.

Các chủ đề sau sẽ được đề cập trong bài viết này:

  1. API xử lý hình ảnh sửa lỗi C#
  2. Phát hiện góc nghiêng của hình ảnh
  3. Tự động sửa lỗi xiên
  4. Tự động sửa lỗi xiên với bộ lọc tiền xử lý
  5. Nhận dạng văn bản hình ảnh với sửa lỗi xiên tự động
  6. Chỉnh sửa xiên bằng tay
  7. Chỉnh sửa xiên bằng tay với bộ lọc tiền xử lý

API xử lý hình ảnh sửa lỗi C#

Để sửa sai, chúng tôi sẽ sử dụng API Aspose.OCR cho .NET. API cho phép thực hiện OCR trên hình ảnh được quét, ảnh điện thoại thông minh, ảnh chụp màn hình, các khu vực của hình ảnh và các tệp PDF được quét. Nó cho phép lưu các kết quả văn bản được nhận dạng ở các định dạng tài liệu phổ biến.

Vui lòng tải xuống DLL của API hoặc cài đặt nó bằng NuGet.

PM> Install-Package Aspose.OCR

Phát hiện góc nghiêng của hình ảnh trong C#

API cung cấp phương thức CalculatedSkew (string) để tính toán góc xiên của hình ảnh nguồn được cung cấp. Chúng tôi có thể dễ dàng phát hiện góc lệch của hình ảnh văn bản bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
  2. Gọi phương thức CalculSkew(). Nó lấy đường dẫn hình ảnh làm đối số.
  3. Cuối cùng, hiển thị góc xiên được tính toán.

Đoạn mã mẫu sau đây cho thấy cách tính góc xiên của hình ảnh trong C#.

// Ví dụ mã này trình bày cách tính góc xiên của hình ảnh.
// Tạo một phiên bản của AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Tính góc xiên
float skew = recognitionEngine.CalculateSkew("C:\\Files\\OCR\\source.png");

// Hiển thị góc
Console.WriteLine($"Skew angle: {skew:N1}°");
Phát hiện góc nghiêng của hình ảnh trong C#

Hình ảnh nguồn.

Skew angle: 5.8°

Tự động sửa lỗi xiên trong C#

Để tự động sửa độ lệch, chúng tôi có thể bật thuộc tính RecognitionSettings.AutoSkew trong cài đặt nhận dạng bằng cách làm theo các bước được đưa ra bên dưới:

  1. Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
  2. Tiếp theo, khởi tạo một đối tượng của lớp RecognitionSettings.
  3. Sau đó, đặt thuộc tính AutoSkew thành true.
  4. Sau đó, gọi phương thức RecognizeImage() với ảnh nguồn và đối tượng RecognitionSettings.
  5. Cuối cùng, hiển thị văn bản được nhận dạng.

Đoạn mã mẫu sau đây cho thấy cách áp dụng tính năng tự động sửa độ lệch trong C#.

// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch tự động.
// Tạo một phiên bản của AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Bật deskew tự động trong cài đặt nhận dạng
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.AutoSkew = true;

// Nhận dạng hình ảnh
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Hiển thị văn bản được nhận dạng
Console.WriteLine(result.RecognitionText);

Tự động sửa lỗi xiên với Bộ lọc tiền xử lý trong C#

Ngoài ra, chúng tôi có thể áp dụng bộ lọc xử lý trước AutoSkew để tự động sửa độ lệch và lưu hình ảnh đã sửa bằng cách làm theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
  2. Tiếp theo, khởi tạo một đối tượng của lớp PreprocessingFilter.
  3. Sau đó, thêm bộ lọc AutoSkew().
  4. Sau đó, gọi phương thức PreprocessImage() để áp dụng bộ lọc trên ảnh nguồn.
  5. Cuối cùng, lưu hình ảnh đã chỉnh sửa.

Mã mẫu sau đây cho thấy cách áp dụng tính năng tự động sửa độ lệch với bộ lọc tiền xử lý trong C#.

// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch tự động bằng cách sử dụng bộ lọc tiền xử lý và lưu hình ảnh đã chỉnh sửa.
// Tạo một phiên bản của AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Thêm bộ lọc deskew
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Lưu hình ảnh đã xử lý trước vào tệp
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);
    }
}
Tự động sửa lỗi xiên với bộ lọc trong C#

Tự động sửa lỗi xiên với bộ lọc trong C#.

Nhận dạng văn bản hình ảnh với tính năng Tự động sửa lỗi xiên trong C#

Chúng tôi có thể áp dụng bộ lọc tiền xử lý AutoSkew và nhận dạng văn bản hình ảnh bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
  2. Tiếp theo, khởi tạo một đối tượng của lớp PreprocessingFilter.
  3. Sau đó, thêm bộ lọc AutoSkew().
  4. Trong khi đó, hãy tạo một thể hiện của lớp RecognitionSettings.
  5. Tiếp theo, gán bộ lọc cho thuộc tính PreprocessingFilters.
  6. Sau đó, gọi phương thức RecognizeImage() với ảnh nguồn và đối tượng RecognitionSettings.
  7. Cuối cùng, hiển thị văn bản được nhận dạng.

Đoạn mã mẫu sau đây cho thấy cách áp dụng tính năng tự động sửa độ lệch và nhận dạng văn bản trong C#.

// Ví dụ mã này trình bày cách áp dụng tính năng tự động sửa độ lệch bằng cách sử dụng bộ lọc tiền xử lý và nhận dạng hình ảnh.
// Tạo một phiên bản của AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Thêm bộ lọc deskew
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.AutoSkew());

// Nối các bộ lọc tiền xử lý vào cài đặt nhận dạng
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Nhận dạng hình ảnh
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Hiển thị kết quả
Console.WriteLine(result.RecognitionText);

Chỉnh sửa Skew thủ công trong C#

Đối với hiệu chỉnh độ lệch thủ công, chúng tôi có thể xác định góc xiên theo cách thủ công bằng cách chỉ định thuộc tính SkewAngle trong cài đặt nhận dạng bằng cách thực hiện theo các bước dưới đây:

  1. Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
  2. Tiếp theo, khởi tạo một đối tượng của lớp RecognitionSettings.
  3. Sau đó, đặt thuộc tính SkewAngle.
  4. Sau đó, gọi phương thức RecognizeImage() với ảnh nguồn và đối tượng RecognitionSettings.
  5. Cuối cùng, hiển thị văn bản được nhận dạng.

Mã mẫu sau đây cho thấy cách áp dụng hiệu chỉnh độ lệch thủ công trong C#.

// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch thủ công.
// Tạo một phiên bản của AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Đặt góc xiên theo cách thủ công
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.SkewAngle = 6;

// Nhận dạng hình ảnh
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Hiển thị kết quả
Console.WriteLine(result.RecognitionText);

Chỉnh sửa Skew thủ công với Bộ lọc tiền xử lý trong C#

Chúng tôi cũng có thể xác định góc xiên theo cách thủ công bằng cách xoay hình ảnh đến mức được chỉ định bằng cách sử dụng bộ lọc tiền xử lý Rotate.

Vui lòng làm theo các bước được cung cấp bên dưới để áp dụng thủ công hiệu chỉnh độ lệch:

  1. Đầu tiên, tạo một thể hiện của lớp AsposeOCR.
  2. Tiếp theo, khởi tạo một đối tượng của lớp PreprocessingFilter.
  3. Sau đó, thêm bộ lọc Rotate().
  4. Trong khi đó, hãy tạo một thể hiện của lớp RecognitionSettings.
  5. Tiếp theo, gán bộ lọc cho thuộc tính PreprocessingFilters.
  6. Sau đó, gọi phương thức RecognizeImage() với ảnh nguồn và đối tượng RecognitionSettings.
  7. Cuối cùng, hiển thị văn bản được nhận dạng.

Mã mẫu sau đây cho thấy cách áp dụng hiệu chỉnh độ lệch thủ công với bộ lọc tiền xử lý trong C#.

// Ví dụ mã này trình bày cách áp dụng hiệu chỉnh độ lệch thủ công và nhận dạng văn bản hình ảnh.
// Tạo một phiên bản của AsposeOcr
AsposeOcr recognitionEngine = new AsposeOcr();

// Xoay hình ảnh 90 độ ngược chiều kim đồng hồ
Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter filters = new Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter();
filters.Add(Aspose.OCR.Models.PreprocessingFilters.PreprocessingFilter.Rotate(-90));

// Lưu hình ảnh được xử lý trước vào tệp cho mục đích gỡ lỗi
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);
    }
}

// Nối các bộ lọc tiền xử lý vào cài đặt nhận dạng
RecognitionSettings recognitionSettings = new RecognitionSettings();
recognitionSettings.PreprocessingFilters = filters;

// Nhận dạng hình ảnh
RecognitionResult result = recognitionEngine.RecognizeImage("C:\\Files\\OCR\\source.png", recognitionSettings);

// Hiển thị kết quả
Console.WriteLine(result.RecognitionText);

Nhận Giấy phép Đánh giá Miễn phí

Bạn có thể nhận giấy phép tạm thời miễn phí để dùng thử Aspose.OCR cho .NET mà không có giới hạn đánh giá.

Sự kết luận

Trong bài viết này, chúng tôi đã học cách:

  • thực hiện OCR và nhận dạng văn bản trên hình ảnh;
  • áp dụng bộ lọc và xử lý hình ảnh;
  • sử dụng cài đặt nhận dạng;
  • lưu các hình ảnh đã sửa bằng C#.

Bên cạnh việc sửa sai lệch trong xử lý ảnh bằng C#, bạn có thể tìm hiểu thêm về Aspose.OCR cho .NET API bằng cách sử dụng tài liệu. Trong trường hợp có bất kỳ sự mơ hồ nào, vui lòng liên hệ với chúng tôi trên diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm