การแก้ไขภาพเอียงในการประมวลผลภาพโดยใช้ C#

การแก้ไขความเอียงในการประมวลผลภาพเป็นงานของการเพิ่มประสิทธิภาพภาพ ในการมองเห็นด้วยคอมพิวเตอร์ เราจำเป็นต้องวางตำแหน่งกล้องและเซ็นเซอร์ของเราให้ถูกต้อง แต่สิ่งนี้มักจะนำไปสู่การบิดเบือนอย่างมาก ในทำนองเดียวกัน เมื่อสแกนด้วยสแกนเนอร์ บางครั้งการจัดตำแหน่งแทบจะเป็นไปไม่ได้เลย ด้วยเหตุนี้ รูปภาพและภาพถ่ายที่สแกนจึงมีความเอียงเล็กน้อย (เอียง) ในบทความนี้ เราจะมาเรียนรู้วิธีการแก้ไขความเอียงในการประมวลผลภาพโดยใช้ C#

หัวข้อต่อไปนี้จะครอบคลุมในบทความนี้:

  1. API การประมวลผลภาพแก้ไขการเอียง C#
  2. ตรวจจับมุมเอียงของภาพ
  3. แก้ไขความเอียงอัตโนมัติ
  4. การแก้ไขความเอียงอัตโนมัติด้วยตัวกรองการประมวลผลล่วงหน้า
  5. จดจำข้อความรูปภาพด้วยการแก้ไขความเอียงอัตโนมัติ
  6. การแก้ไขความเอียงแบบแมนนวล
  7. การแก้ไขความเอียงแบบแมนนวลด้วยตัวกรองการประมวลผลล่วงหน้า

API การประมวลผลภาพแก้ไขการเอียง C#

สำหรับการแก้ไขความเอียง เราจะใช้ API Aspose.OCR for .NET API อนุญาตให้ดำเนินการ OCR กับรูปภาพที่สแกน ภาพถ่ายจากสมาร์ทโฟน ภาพหน้าจอ พื้นที่ของรูปภาพ และ PDF ที่สแกน ช่วยให้สามารถบันทึกผลลัพธ์ข้อความที่รู้จักใน รูปแบบเอกสารยอดนิยม

โปรด ดาวน์โหลด DLL ของ API หรือติดตั้งโดยใช้ 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 เป็นจริง
  4. หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
  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. หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
  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. หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
  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. หลังจากนั้น ให้เรียกใช้เมธอด RecognizeImage() ด้วยอิมเมจต้นฉบับและออบเจกต์ RecognitionSettings
  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 โดยใช้ เอกสารประกอบ ในกรณีที่มีความคลุมเครือ โปรดติดต่อเราได้ที่ ฟอรัมสนับสนุนฟรี

ดูสิ่งนี้ด้วย