MATLAB OCR 7-Segment Part1


 7-Segment



OCR (Optical character recognition) 

แปลเป็นไทยง่ายๆ ก็คือการรู้จำตัวเลข และตัวอักษรนั่นแหละครับ 

ซึ่งโดยปกติแล้วตัวเลข จะรู้จำง่ายกว่าตัวอักษรอยู่แล้ว และความแม่นยำก็สูงด้วย เพราะตัวเลขมีแค่ 10 รูปแบบเท่านั้น (ก็คือเลข 0 - 9) ดังนั้นโดยปกติแล้ว การรู้จำตัวเลข จึงไม่ค่อยมักมีปัญหาอะไร ยกเว้นแต่....
 

เจ้าตัวปัญหานี่เลยครับ
7 - Segment

แล้วทำไมเจ้าตัวเลขแบบนี้ถึงมีปัญหาละ? ก็เพราะว่ามันแบ่งออกเป็น 7 ส่วนนี่แหละครับ มันเลยมีปัญหา

ลองจินตนาการถึงเวลาที่เราเขียนตัวเลขดูนะครับ ตัวเลขทุกตัวจะถูกเขียนโดยไม่ยกปากกา และเส้นทุกเส้นจะเชื่อมต่อกันทั้งหมด ทำให้เวลาเขียนโปรแกรม เราสามารถกำหนดได้ง่ายๆ ว่าเส้นขีดๆ แต่ละชุด คือตัวเลข 1 ตัว

แต่ 7-Segment มันดันมี 7 ส่วน และแต่ละส่วนก็ไม่เชื่อมต่อกันอีก แล้วก็ใช่ว่ามันจะแสดงออกมาครบ 7 ส่วนทุกครั้ง อย่างเช่น เลข 1 มันก็แสดงออกมาแค่ 2 ส่วน เลข 7 แสดงออกมาแค่ 3 ส่วน ดังนั้นๆ เราจึงไม่สามารถกำหนดเงื่อนไขแบบเดิมได้อีก เพราะตัวเลขแต่ละตัวมันมีหลายขีด ไม่ได้มีขีดเดียวเหมือนเดิมแล้ว 

แล้วเราจะแก้ปัญหานี้ยังไงละ?
จริงๆ แล้ววิธีการแก้มันก็มีหลายวิธี เช่น
1. กำหนดกลุ่มให้ขีด (segment) ของตัวเลข ซึ่งก็ทำได้หลายวิธี เช่น การ fix ความกว้างของ roi ของตัวเลขแต่ละตัว หรือใช้ k-mean cluster หรือใช้ Cascade Object Detector ก็ได้เหมือนกัน
2. ยืดขนาดแต่ละ segment ให้มันไปเชื่อมต่อกัน 

ซึ่งในตัวอย่างนี้ ผมจะใช้วิธีแก้ปัญหาในแบบที่ 2 นี่แหละครับ ในการแก้ปัญหา เพราะว่ามันง่ายกว่าวิธีที่ 1 นั่นเอง ฮ่าๆๆๆ 

ถ้าพร้อมแล้ว เราก็มาเริ่มกันเลยครับ (ไปที่ OCR 7-Segment Part2)


ความเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การแก้สมการ Differential ด้วย MATLAB

การหาค่าเฉลี่ยโดยไม่ต้องเก็บค่า

การเปรียบเทียบข้อมูล