วันพฤหัสบดีที่ 28 เมษายน พ.ศ. 2559

ทำความรู้จักกับโปรแกรมเซนเซอร์วิดีโออัตโนมัติ

สวัสดีค่ะคุณผู้อ่านทุกท่าน ตามชื่อหัวข้อก็คงทำให้พอเดาได้คร่าวๆว่าบทความนี้ได้กล่าวถึงโปรแกรมเซนเซอร์ภาพที่ทำงานได้อัติโนมัติ สำหรับโปรแกรมนี้เป็นการประมวลผลวิดีโอเพื่อให้ได้การติดตามการเคลื่อนไหวพร้อมการเซ็นเซอร์ภาพภายในวิดีโอ ซึ่งจุดประสงค์ของการพัฒนาโปรแกรม คือ
  1. เพื่อค้นหาทุกตำแหน่งของภาพที่ต้องการในวิดีโอได้
  2. เพื่อเซ็นเซอร์ภาพในวิดีโอได้ครบตรงตามที่กำหนด
  3. เพื่อเซ็นเซอร์วิดีโอให้แสดงผลออกมาอัตโนมัติ
  4. เพื่อแทนภาพอื่นในการเซนเซอร์
  5. เพื่อลดขั้นตอนการทำงานในการเซนเซอร์ภาพ
ในการใช้งานโปรแกรมจะต้องมี ข้อมูลนำเข้า (input) คือ
  1. รูปภาพตัวอย่างที่จะนำมาค้นหาในไฟล์วิดีโอ
  2. ไฟล์วิดีโอที่นำมาใช้งาน
  3. ภาพที่นำมาแทนการเซนเซอร์
และ ผลลัพท์ (output) ที่ได้ คือไฟล์วิดีโอที่สามารถเซนเซอร์วัตถุจากภาพตัวอย่าง ดังนั้นเราจะอธิบายรายละเอียดต่างๆที่ประกอบอยู่ในโปรแกรม ดังต่อไปนี้


                                       
คลิป A  เป็นตัวอย่างวิดีโอ Input ก่อนประมวลผล



คลิป B  เป็นตัวอย่างวิดีโอ Output หลังประมวลผล



ภาพ C เป็นภาพตัวอย่าง ที่ต้องการเซนเซอร์ในวิดีโอ


ในส่วนผลลัพธ์ที่ออกมานั้น อาจจะมีบางช่วงที่ผลลัพธ์ไม่เป็นที่ต้องการ หรือมีข้อผิดพลาดบางอย่างเนื่องจากมีหลายปัจจัยที่ส่งผล เช่น ฟังก์ชั่นการค้นหาภาพ ลักษณะของภาพที่เหมาะสม เป็นต้น
โปรแกรมทำงานอย่างไร ?  ใช้ฟังก์ชั่นใดบ้างในการทำงาน ?  เราจะอธิบายในตอนต่อไป


OpenCV คืออะไร ?


ก่อนอื่นเรามาทำความรู้จักกับ OpenCV กันก่อนนะคะ  โปรแกรม OpenCV เป็น Library ในภาษา C++ และ Phyton สำหรับการพัฒนาโปรแกรมที่เกี่ยวข้องกับ Image Processing และ Computer Vision โดยสามารถพัฒนาได้ทั้งในระบบปฏิบัติการวินโดว์ และระบบปฏิบัติการ Linux

วิธีใช้งาน OpenCV ร่วมกับโปรแกรม Visual Studio C++ เพื่อใช้พัฒนาโปรแกรมนั้น เราจำเป็นต้องตั้งค่าให้กับโปรแกรม Visual Studio C++ ก่อน เพื่อระบุตำแหน่งของ Library ของ OpenCV ตำแหน่งของไฟล์ที่ต้องใช้ในโปรแกรม และตำแหน่งของ Source File ให้ตัวโปรแกรมทราบ และสามารถดึงมาใช้ได้

สำหรับ OpenCV ในส่วนของ Corlor หรือ Object จะประกอบไปด้วย Histrogram ของสีต่างๆ เราจะเก็บลักษณะของ histrogram เอาไว้เช็คข้อมูลที่อยู่ในภาพ ที่เปลี่ยนแปลงอยู่ตลอดเวลาหากมีลักษณะที่ใกล้เคียงกันก็สามารถที่จะระบุตำแหน่งของ object หรือ corlor ได้

ข้อมูลจาก https://sourceforge.net/projects/opencvlibrary/?source=directory



ฟังก์ชันที่ใช้ในการทำงานและขั้นตอนวิธีของโปรแกรมนี้

1. Image Matching หรือการจับคู่ภาพ

ภาพ D แสดวถึงการจับคู่ภาพระหว่าง Source image และ Template image

ซึ่งในปัจจุบันมีวิธีการทำงานที่หลากหลาย โดยโปรแกรมนี้เลือกใช้ matchTemplate คือการทำงานที่ใช้การจับคู่กันของภาพสองภาพ ซึ่งเรียกว่า Source image (I) และ Template image (T) โดย I คือภาพต้นแบบที่เราต้องการนำมาจับคู่กับ T ซึ่ง T คือภาพตัวอย่างที่เราต้องการค้นหา เพื่อให้เข้าใจมากขึ้นสามารถดูที่ภาพประกอบ D

ข้อมูลจาก http://docs.opencv.org/2.4/doc/tutorials/imgproc/histograms/template_matching/template_matching.html

2.  Region of Interesting คือการกำหนดขอบเขตของภาพที่เราสนใจ โดยใช้ฟังก์ชันที่ชื่อว่า rect      ข้อมูลจาก http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html


3.  Motion Tracking หรือการติดตามการเคลื่อนไหว

ภาพ E เป็นการทำงานร่วมกันของฟังก์ชัน GoodFeaturesToTrack  และ calcOpticalFlowPyrLK

ซึ่งการติดตามการเคลื่อนไหวนี้มีหลากหลายวิธีการและมีความยืดหยุ่นในการเลือกใช้ แต่วิธีการที่เราเลือกใช้ในโปรแกรมนี้จะเป็นการทำงานร่วมกันของฟังก์ชัน GoodFeaturesToTrack  และ calcOpticalFlowPyrLK โดยขั้นแรก GoodFeaturesToTrack จะทำหน้าที่กำหนดจุดของวัตถุที่เราต้องการทำการติดตาม แล้วจึงใช้ calcOpticalFlowPyrLK เพื่อคำนวณหาการเคลื่อนที่ของวัตถุเพื่อทำการติดตาม

ข้อมูลจาก http://docs.opencv.org/2.4/modules/video/doc/motion_analysis_and_object_tracking.html


4.  Censor หรือเซนเซอร์

ภาพ F แสดงการเปรียบเทียบภาพต้นแบบและภาพที่ผ่านการใช้ GaussianBlur

ซึ่งในโปรแกรมนี้ใช้เซนเซอร์ที่ชื่อว่า GaussianBlur โดยใช้ในการปิดส่วนที่ไม่ต้องการในภาพตัวอย่าง เช่น โลโก้แบรนด์สินค้า เป็นต้น
ข้อมูลจาก  http://docs.opencv.org/2.4/modules/imgproc/doc/filtering.html


ในส่วนต่อไปจะเป็นการอธิบายการทำงานโปรแกรม  คลิ๊กที่นี่

Next การทำงานส่วนต่างๆ ของโปรแกรม เซนเซอร์วิดีโออัตโนมัติ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น