การแก้ไขหน้ากระดาษที่บิดเบี้ยว (Page Dewarping)
- เข้าหาปัญหาการคลี่ภาพหน้ากระดาษที่ม้วนงอในรูปแบบของปัญหาการหาค่าเหมาะที่สุด
ที่มา
- วิธีแก้ไขความบิดเบี้ยวแบบเดิม เช่น ไลบรารี Leptonica หรือวิธี Coordinate Transform Model (CTM) ใช้แนวทางการแยกปัญหาแบบลำดับชั้น
- แยกข้อความออกเป็นบรรทัด
- หา warping หรือการแปลงพิกัดเพื่อทำให้บรรทัดขนานกันและอยู่ในแนวนอน
- ได้แรงบันดาลใจจากแนวทางที่อิงโมเดลทรงกระบอก 3D ของ CTM จึงสร้างโมเดลเชิงพารามิเตอร์ของตนเองโดยใช้พารามิเตอร์ที่กำหนดรูปร่างของหน้าเอกสาร
- เช่น เวกเตอร์การหมุน/การเลื่อนใน 3D, ความชันของความโค้งของหน้า, ออฟเซ็ตเส้นแนวนอน เป็นต้น
- นิยามเป็นปัญหาการหาค่าเหมาะที่สุด
- ค้นหา keypoint ตามบริเวณข้อความแนวนอนในภาพต้นฉบับ
- เริ่มจากค่าประมาณเริ่มต้น แล้วปรับพารามิเตอร์ของโมเดลให้เหมาะที่สุดเพื่อลด reprojection error ของ keypoint ให้ต่ำที่สุด
ขั้นตอน
- แยกขอบเขตของหน้าเอกสาร
- ตรวจจับเส้นขอบข้อความ
- ใช้การทำไบนารี, การคำนวณเชิงสัณฐานวิทยา และการวิเคราะห์ connected component
- ปรับให้ตรวจจับตารางข้อความแนวตั้งได้ด้วย
- จัดกลุ่มเส้นขอบข้อความเป็นบริเวณแนวนอน
- สุ่มตัวอย่าง keypoint จากบริเวณแนวนอน
- ประมาณค่าพารามิเตอร์เริ่มต้นของโมเดล
- ลด reprojection error ให้ต่ำที่สุดด้วยการหาค่าเหมาะที่สุด
- ใช้ตัวแก้ปัญหา Powell ของ
scipy.optimize.minimize
- ใช้เวลาส่วนใหญ่ของการรันทั้งหมด
- แปลงพิกัดด้วยโมเดลที่เหมาะที่สุด แล้วทำ image remapping และการทำไบนารี
ผลลัพธ์
- ทำงานได้ดีในตัวอย่างภาพหลากหลายแบบ
- เนื่องจากมีจำนวนพารามิเตอร์ของโมเดลมาก จึงใช้เวลาในการหาค่าเหมาะที่สุดพอสมควร
- ยังไม่ได้พิจารณาความบิดเบี้ยวในแนวนอน
สรุป
- เป็นเวิร์กโฟลว์แบบคลาสสิกของการสั่งสมความรู้พื้นฐานแล้วทำให้เป็นปัญหาการหาค่าเหมาะที่สุดอย่างเป็นทางการ
- เป็นแนวทางที่คล้ายกับ Deformable Part Model และ Active Appearance Model
- ยังได้เทคนิคการใช้เครื่องมืออย่าง Emacs, Pylint เป็นต้น
- แม้จะไม่มีแผนพัฒนาต่อเพิ่มเติม แต่เป็นโปรเจกต์ที่น่าใช้อ้างอิงเวลาเรียนการสอนคอมพิวเตอร์วิทัศน์
ความเห็นของ GN⁺
- หากต้องการใช้งานจริง ดูเหมือนว่ายังจำเป็นต้องแก้ความบิดเบี้ยวในแนวนอนด้วย ซึ่งอาจต้องใช้โมเดลที่ละเอียดกว่านี้แบบ CTM
- การปรับปรุงความเร็วของการหาค่าเหมาะที่สุดน่าจะสำคัญ คงช่วยได้หากลดจำนวนพารามิเตอร์หรือใช้เทคนิคการหาค่าเหมาะที่สุดที่เร็วขึ้น
- น่าสนใจหากลองเปรียบเทียบกับวิธีที่อิง deep learning เพราะ deep learning อาจช่วยจัดการทั้งการดึงจุดเด่นและการสร้างแบบจำลองได้พร้อมกัน
- หากจะนำไปใช้กับงานดิจิทัลไลซ์เอกสารในภาคอุตสาหกรรม ก็น่าจะต้องเพิ่มความทนทานต่อเอกสารที่มีเลย์เอาต์หลากหลายให้มากขึ้น
- การเปิดเป็นโอเพนซอร์สถือเป็นเรื่องดี แต่ถ้าจะใช้จริง การแจกจ่ายเป็นโปรแกรมรันเดี่ยวอาจเหมาะกว่าสคริปต์ Python
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
สรุป:
de-curlingของหน้าสแกนที่กางออกไม่ได้เป็นโจทย์สำคัญde-wrinklingสำหรับใบเสร็จด้วยde-warpingแบบไม่ต้องสัมผัสได้