Hand Tracking and 3-D Pose Estimation

ตุลาคม 25, 2009

 Reserach นี้ศึกษาเรื่อง computer vision ของในเรื่อง hand tracking โดยดูจากวัตถุที่เคลื่อนไหวเร็วโดยจับผ่านผ่านกล้องเวปแคม

  • จับวัตถุที่ผิดรูปอย่างรวดเร็ว (rapidly deformed)
  • ทำนายทิศทางการเคลื่อนที่ของมือที่เปลี่ยนแปลงรูปร่างอย่างรวดเร็วและแยก Gusture ต่างๆ โดยใช้ shape transition network
  • เพิ่มความแม่นยำด้วย 3D hand model โดย map จาก 2D model

Tracking Hand with Rapid Motion and Gesture Classification using Shape Transition Network
จากรายงานการวิจัยบอกว่า เมื่อมือมีการเคลื่อนไหวอย่างรวดเร็วจะทำให้ผิดรูปไปหรือเบลอดังนั้นจะทำให้ยากต่อการตรวจจับวัตถุอย่างต่อเนื่องแต่จากรายงานบอกว่า ถ้ารูปเบลอเราอาจจะใช้การเคลื่อนที่ของวัตถุในการตรวจจับแทนได้ ดังนั้นเราอาจจะพิจารณาที่การเคลื่อนที่ของมืออย่างเดียวตอนที่มีการเคลื่อนไหวอย่างรวดเร็ว

transitionnetwork

 จากรูปจะเห็นว่าวงกลมสีแดงเป็นส่วนที่เคลื่อนที่ สีน้ำเงินเป็นส่วนที่ไม่มีการเคลือนที่ แต่ละละจุดแทนที่ข้อมูลด้วยตำแหน่งและความเร็ว (delta X / delta t)

gesture

แต่ละ network สามารถบอกได้ว่า gesture เป็นอะไรได้บ้าง

Read the rest of this entry »

Hand detection using openCV by Andol

ตุลาคม 25, 2009

AndolHand

andolhandsegment

Technique ของ Andol

  • ใช้ openCV
  • ใช้วิธีการหาช่วงของสีที่เป็นสีผิวของมนุษย์
  • แยก contours ที่เหมาะสมออกมาโดยดูจากพื้นที่
  • วาดกรอบเพื่อบอกว่าส่วนที่ detect hand ได้
  • นำ object  ที่ได้ไป detect hand guesture
  • ในการณีที่ hand guesture มีความซับซ้อนจะใช้ ratio เข้ามาช่วยในการตัดสินใจด้วย  

Reference:
http://www.vimeo.com/4026184
http://www.andol.info/hci/830.htm

LICENSE PLATE

ตุลาคม 17, 2009

หลังจากที่เรียนเรื่อง digital image processing มาและได้มีโอกาสทำ class project เกี่ยวกับ image processing ผมรู้สึกว่าการทำงานของ computer กับสมองของมนุษย์มันต่างกันแน่นอน…

จากเทอมที่ผ่านมาผมได้มีโอกาสทำ class project เรื่องการหาป้ายทะเบียนรถยนต์ทำให้เข้าใจเรื่อง imageprocessing เพิ่มขึ้นเป็นอย่างมาก โจทย์ของอาจารย์คือให้หาว่าส่วนใหนของรูปคือป้ายทะเบียนและวาดเป็นกรอบแดงๆ เอาไว้รวมทั้งบอกตำแหน่งหรือพิกัดออกมาด้วย.. 

จากรูปรถยนต์ที่ถ่ายเฉพาะด้านหน้ารถมีประมาณสามร้อยรูปผมมองแว้บเดียวก็รู้แล้วว่าตรงใหนมันคือป้ายทะเบียน แต่ตอนทำใน computer มันต่างกันมากมายผมใช้ core2 1.6 ใช้เวลารูปละเกือบห้าวินาทีในการหาป้ายทะเบียนแถมส่วนใหญ่ก็พลาดอีกต่างหาก.. นี่คือเหตุผลที่ผมคิดว่ากระบวนการในการทำงานของโปรแกรมของผมน่าจะต่างกับสมองมนุษย์อย่างแน่นอน

แต่ทั้งนี้ทั้งนั้นด้วยเวลาและงานที่จะต้องส่ง… ผมใช้วิธีปรับภาพให้เป็นสีขาวดำโดยการตัด threshold แล้วค่อยนำมาหา object ที่ติดๆกัน ซึ่งใน matlab มันคือคำสั่ง bwlabel หรือว่า contour ใน opencv ที่ผมเคยสงสัยเมื่อตอนลองเล่น opencv ใหม่ๆ นั่นเอง.. พอได้เป็น object แล้วก็นำมาพิจารณาว่าอันใหนมันน่าจะเป็นป้ายทะเบียนโดยดูจากขนาดกว้างหารยาว ไม่เกินค่าๆหนึ่ง และภายในจะต้องมี object เล็กๆ ที่คาดว่าจะเป็นตัวอักษร อยู่ประมาณหนึ่ง ก็ถือว่ามันเป็นป้ายทะเบียน

ด้วยวิธีการหา object ที่ติดๆกันนี้ทำให้ program ทำงานได้ช้าพอสมควรเพราะว่ามันจะได้ object ที่ติดๆกันเยอะแยะไปหมดยิ่งถ้ามีรายละเอียดเยอะๆ จะได้ออกมามากอยู่ทีเดียว สำหรับงาน thesis ของผมที่จะทำก็มีความคิดว่าจะทำคล้ายๆ กับการหาป้ายทะเบียนรถยนต์แต่จะใช้การเคลื่อนไหวเข้ามาช่วยตัดสินใจว่าเป็นมือหรือไม่เพราะว่ามือน่าจะจะเป็นส่วนที่เคลื่อนไหวเร็วกว่าส่วนอื่นๆ

lpd

Source Code (matlab): http://rapidshare.com/files/323269373/LPSourceCode.zip.html

Aforge

กรกฎาคม 23, 2009

Aforge เป็นอีก tools หนึ่งที่น่าสนใจในเพราะว่าน่าจะเข้าใจง่ายกว่า OpenCV เพราะว่าสามารถพัฒนาบน .net framework ได้นั่นก็หมายถึงว่าจะสามารถเขียนด้วยภาษา C# ได้ด้วยแต่ต้องทดลองดูว่าเรื่อง perforamance จะดีเพียงพอหรือไม่..

Aforge

Contours

กรกฎาคม 20, 2009

วันนี้ลองเล่นๆ OpenCV จากตัวอย่างเจอเรื่อง contours ใช้หาหน้าคนที่วาดขึ้นมาได้เลยลองหัดเล่นดู
งงอยู่ตั้งนานว่ามันทำงานอย่างไร.. สุดท้ายมาเจอ http://www.iamas.ac.jp/~jmp/2009/05/a-simple-opencv-tutorial.html

สรุปว่ามันเป็นฟังก์ชันที่ใช้หาขอบของวัตถุในรูปโดยค่าที่คืนกลับมาเป็นรูปวัตถุแต่ละอันที่พบ ดูจากรูปข้างล่างแล้วเข้าใจเลย..

ถ้าใช้ contours ประยุกต์หามือน่าจะเป็นอีกทางเลือกหนึ่งนั่นคือ หาวัตถุทั้งหมดที่มีอยู่ในภาพรวมทั้งมือของเราแล้วค่อยเอาไปคัดแยกอีกครั้งหนึ่งว่าเป็นมือจริงๆหรือเปล่า

Contours

First code

กรกฎาคม 12, 2009

วันนี้ลองหัดใช้ opencv ดู ตัวอย่าง code มีเยอะอยู่พอสมควร.. หลังจากที่ลองเล่นๆ ดู opencv มี library ให้ใช้เยอะมาก

OpenCV มีแบบที่เป็น .net wraper  นั่นหมายถึงผมจะสามารถเขียนด้วยภาษา C# ที่ผมถนัดได้แต่พอลอง download มาใช้ดูมันไม่ค่อยwork เท่าไหร่เพราะว่าแค่ sample ของมันก็มี error มากมายต่างกับ version ต้นฉบับที่เป็น c และ c++

วันนี้ลอง search ด้วย “hand detection opencv” เจอตัวอย่างหนึ่งน่าสนในจาก http://www.andol.info/hci/1097.htm อ่านๆดูเขาใช้ สีเป็นตัว dectect ซึ่งลองเอามา compile ดูก็เหมือนจะใช้ได้แต่มีข้อจำกัดอยู่ที่ว่าต้องเป็นมือเท่านั้นห้ามมีหน้าโผล่เข้าไปด้วยเพราะว่าหน้าเราก็สีเหมือนมือเหมือนกัน พอเอาหน้าเข้าไปมันก็คิดว่าเป็นมือด้วย

HandDetect

เป็นไข้หวัด

มิถุนายน 18, 2009

ตอนนี้ผมเป็นไข้หวัด.. มาสองอาทิตย์แล้ว ไม่หายสักทีแถมยังมีงานมากมายอีกเหมือนโดนแกล้งเลย

Hand Tracking for interaction

มิถุนายน 15, 2009

ผมเคยคิดว่าอยากจะทำ application แบบนี้พอเห็น clib video นี้แล้วทำให้รู้สึกว่าความคิดของผมมันทำได้จริงๆ.. เหลือแต่ว่าจะนำมันไปต่อยอดอย่างไรดี

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

เขายังพูดถึง os ที่ใช้เป็นสาธิตใน video เป็น windows XP ส่วนโปรแกรมบางอันสร้างขึ้นโดย scratch http://scratch.mit.edu/

สิ่งที่น่าสนใจ

  • Hand gestures
  • Computer Interaction ควบคุม mouse pointer 
  • Scratch

ข้อด้อย

  • ยังรู้สึกไม่เป็นธรรมชาติมากนักเนื่องจากต้องระบุท่าทางที่เฉพาะเจาะจงเพื่อสั่งงาน
  • เหมือนจะใช้ได้แค่ฝ่ามือด้านเดียว ไม่สามารถระบุถึงหลังมือได้

ข้อเสนอแนะในการนำไปพัฒนาต่อ

  • จากข้อด้อย ถ้าพัฒนาท่าทางในการสั่งงานให้เป็นธรรมชาติกว่านี้จะดีมากขึ้น

Hand detection

มิถุนายน 10, 2009

 


ตัวอย่างที่หาเจอบน youtube ผู้พัฒนาใช้การชูนิ้วแทนตัวเลข ตัวอย่างนี้แสดงให้เห็นว่าผู้พัฒนาสามารถจับตำแหน่งปลายนิ้วได้แล้ว

จาก video นี้ผู้พัฒนาใช้ Immersive virtual reality ทำให้รู้สึกเสมือนว่าอยู่ในเหตุการณ์จริง.. ทำให้ง่ายต่อการเข้าใจมากว่า

สิ่งที่น่าสนใจ

  • การใช้งานมีความสมจริง ด้วยการใช้ VR เข้ามาช่วย

ข้อจำกัด

  • จาก video จะเห็นว่าไม่มีการใช้ hand gesture อย่างอื่นเลยนอกจากการแตะตรงจุดที่วางเอาไว้

ข้อเสนอแนะและการนำไปพัฒนาต่อ

จากข้อจำกัดถ้าสามารถนำ hand gesture เข้ามาประยุกต์ใช้น่าจะทำให้ประยุกต์กับงานและเพิ่มความสามารถมากขึ้น

Hand model

มิถุนายน 9, 2009

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

กรณีสองมิติ:
การพัฒนาจะมีความง่ายกว่าแต่ขอบเขตของการนำไปใช้งานจะน้อยดังนั้นจึงต้องศึกษาว่า ขอบเขตของงานเพียงพอหรือไม่

จาก video “Silhuette hand detection”  ตรวจจับมือโดยใช้ขอบ ด้วยการตรวจจับขอบแบบนี้น่าจะนำมาหาตำแหน่งปลายนิ้วและระบุนิ้วได้

การนำไปใช้
-ระบุนิ้วได้เช่น ชูสองนิ้ว
ข้อจำกัด
-ไม่สามารถระบุถึงการงอของนิ้วได้

กรณีสามมิติ:
การพัฒนาจะมีความยุ่งยากกว่าสองมิติมากเพราะต้องตรวจได้ถึงการงอของนิ้วต่างๆ แต่อาจจะทำได้โดยการประยุกต์จากภาพสองมิติโดยวัดระยะที่ปลายนิ้ว ถึงข้อมือนั่นคือต้องมีการวัดระยะทางของมือที่เหยียดนิ้วตรงมากสุดเอาไว้ก่อนเป็นขั้นตอนแรก แล้วนำมาประมาณว่านิ้วจะงอหรือเหยียดตรงได้

http://www.sixtyfourbit.org/myhand.htm

http://www.sixtyfourbit.org/myhand.htm


Follow

Get every new post delivered to your Inbox.