formerly "ฉะเชิงเทรา project"
Final Project | 2110433 Computer Vision
HitAlert คือระบบแจ้งเตือนการชนสิ่งกีดขวางให้กับผู้พิการทางสายตา
เพื่อให้ผู้พิการทราบก่อนที่จะเกิดการชน อันอาจทำให้เกิดการบาดเจ็บได้ผู้ใช้สามารถนำวิดีโอจากกล้องที่ยึดกับตัวผู้ใช้มาป้อนให้ HitAlert ได้
จากนั้น HitAlert จะประมวลผลภาพด้วยเทคนิคจำพวก Dynamic Vision แล้วจึงแจ้งเตือนผู้ใช้ถึงความเสี่ยงในการชนด้วยเสียงแบบต่างๆ ให้ผู้ใช้ทราบว่ามีความเสี่ยงที่จะชนสิ่งกีดขวางจากทิศทางใดอัลกอริทึมของ HitAlert ดัดแปลงมาจาก (Pundlik'13) ซึ่งมีพื้นฐานจากการคำนวณ optical flow ในภาพ แล้วเปรียบเทียบระยะห่างของคู่จุดที่ใกล้เคียงกันในเฟรมก่อนหน้าและเฟรมหลัง เพื่อประเมินว่าวัตถุในภาพกำลังพุ่งเข้าหากล้องหรือไม่
ส่วนที่ดัดแปลงไปจากวิธีดังกล่าวคือวิธีการคำนวณค่าความเสี่ยง ซึ่งในระบบนี้ จะใช้การเปรียบเทียบพื้นที่ของสามเหลี่ยมที่ได้จาก Delaunay triangulation ของจุด features ที่พบในภาพ แทนที่จะเปรียบเทียบระยะห่างของแต่ละจุด และอีกส่วนที่เปลี่ยนไปจากงานดังกล่าวคือกระบวนการ post-processing ผลที่ได้จากขั้นก่อนหน้า โดยขั้นตอนการประมวลภาพของระบบ HitAlert ประกอบด้วยขั้นตอนหลักๆ ดังนี้
เนื่องจากอัลกอริทึมนี้ใช้ประโยชน์จาก optical flow เป็นหลัก จึงต้องหาบริเวณ feature ในภาพที่เหมาะกับการ track เช่น มุม หรือขอบในภาพ ก่อนที่จะนำจุดเหล่านั้นไปคำนวณหา optical flow
ลากเส้นสร้างรูปสามเหลี่ยมจากชุดของจุดในพื้นที่ 2 มิติ เพื่อให้ทราบบริเวณ region ต่างๆ ของภาพได้อย่างคร่าวๆ และนำสามเหลี่ยมแต่ละชิ้นไปคำนวณต่อเพื่อดูความเสี่ยงในการชน
คำนวณว่าจุดแต่ละจุดที่สนใจในเฟรมที่แล้ว เคลื่อนที่ไปอย่างไรในเฟรมปัจจุบัน ขั้นตอนนี้เป็นขั้นตอนที่ทำให้ทราบการเปลี่ยนแปลงของภาพวิดีโอที่ได้จากสองเฟรม ทำให้สามารถคำนวณความเสี่ยงในการชนจากวิดีโอได้
ข้อมูลจาก Delaunay triangulation และ optical flow รวมกันได้เป็นตำแหน่งจุดยอดของสามเหลี่ยมแต่ละชิ้นในเฟรมก่อนหน้าและเฟรมปัจจุบัน นำสามเหลี่ยมทั้งสองมาประมาณค่าเวลาที่วัตถุจะเคลื่อนเข้ามาชน หรือ Time-to-Collide (TTC) ด้วยความสัมพันธ์
$$TTC \propto {\sqrt{A_t} \over {\sqrt{A_t} - \sqrt{A_{t-1}}}}$$
ซึ่งความสัมพันธ์นี้คำนวณมาจาก image geometry ของการเคลื่อนที่ของวัตถุในโลก 3 มิติ โดยที่ At คือพื้นที่ของสามเหลี่ยมบนภาพที่สนใจในเฟรมที่ t เมื่อได้ค่า TTC ของแต่ละสามเหลี่ยมแล้ว ก็นำมาวาดลงบน "ภาพความเสี่ยง"
(Risk Map) (ในภาพตัวอย่างด้านล่าง ยิ่งสว่างมากคือเสี่ยงมาก)
เมื่อได้ภาพความเสี่ยงในแต่ละเฟรมแล้ว ก็นำมา post-process เพื่อลดจำนวน False Positive ที่อาจะเกิดขึ้นลง โดยทำ
สามารถดูผลที่ได้จากแต่ละขั้นตอนได้ในภาพด้านล่างนี้
ทดลองโดยให้ผู้ใช้ถือคอมพิวเตอร์ที่รันโปรแกรม HitAlert แล้วเดินตรงไปข้างหน้า ทั้งหมด 100 ครั้ง แบ่งการเดินออกเป็น 2 กลุ่ม คือ
Accuracy | 78.0% |
---|---|
Precision | 79.2% |
Recall | 76.0% |
จากผลการทดลองใช้อัลกอริทึม พบส่วนที่อาจนำไปพัฒนาต่อได้ คือ