วันอังคารที่ 9 เมษายน พ.ศ. 2556

Kinect Software Review

Standard

     Kinect  ที่พัฒนาโดย Microsoft สำหรับเครื่องเกมส์ XBox 360 และ Windows PCs ถูกสร้างขึ้นโดย Rare ซึ่งเป็นส่วนหนึ่งของ Microsoft Game Studio และใช้กล้องวัดระยะ ซึ่งเป็น technology ของ Israeli developer และมีระบบติดตามการเคลื่อนไหวของร่างกาย ซึ่งภายในตัว Kinect จะประกอบไปด้วย กล้อง RGB, กล้องวัดความลึก, microphone ซึ่ง Kinect สามารถนำมาประยุกต์ใช้ได้หลากหลาย เช่น ระบบตรวจจับความเคลื่อนไหว ระบบคิดตามใบหน้า การสั่งงานด้วยเสียง   Kinect สามารถใช้งานได้พร้อมกันถึง 6 ผู้เล่น และแต่ละผู้เล่น สามารถบอก joint ได้ถึง 20 joint ต่อผู้เล่น
     จากกระบวนการ Reverse engineering พบว่า กล้องของ Kinect ช่วงปกติมี frame size 640 x 480 pixel ที่ความละเอียด 11 bit แต่ sensor มีความละเอียดถึง 1280 x 1024 pixel และ IR sensor สามารถ stream มาได้โดยตรง และ Kinect มีระยะทำงานอยู่ที่ 1.2-3.5 เมตร
     ปัจจุบันมีคนนำ Kinect ไปใช้งานหลากหลายสาขาขึ้น เช่นการกายภาพบำบัดผู้ป่วย, การทำเครื่อง 3D scanner, การใช้งานเว็ปไซตืด้วยท่าทาง, การทำระบบสั่งงานด้วยภาษามือ, ช่วยในการผ่าติดรักษาโรคมะเร็ง, การหาความผิดปกติของเด็ก  





     Kinect ถูกออกแบบมาจากกล้อง RGB sensor กล้องอินฟราเรด หลอดอินฟราเรด และ ไมโครโฟน




     สำหรับการพัฒนา Application กับ Kinect นั้นมี Software Library ที่น่าเลือกใช้อยู่ 2 ค่ายคือ 1.Kinect SDK 2.Open Kinect ซึ่งแต่ล่ะ Library ก็มีข้อดีและข้อเสียที่แตกต่างกันไป อย่างเช่น Kinect SDK ซึ่งเป็นของ Microsoft เองก็มีข้อดีตือ Hardware เป็นของตัวเองเพราะฉะนั้นชุดคำสั่งต่างๆ จะอัพเดตออกมาเสมอ แต่มีข้อเสือคือเนื่องจากเป็นของ Microsoft ดังนั้น SDK นี้จึงใช้ได้กับระบบปฏิบัติการ Windows เท่านั้น จากจุดด้วยตรงนี้จึงมาเป็นจุดเด่นของทาง Open Kinect ซึ่งสามารถใช้บนระบบปฏิบัติการไหนก็ได้ เพราะตัว Library เป็น open source โดยผู้พัฒนาสามารถนำ source code ของ library มา compile บนระบบปฏิบัติการที่ต้องการได้ และอีกจุดเด่นของ Open Kinect คือมีภาษาที่ใช้พัฒนาได้หลายภาษา เช่น C, C++, Python, Java, Java script, C#, Action Script เป็นต้น

     แต่สำหรับ Software Review ในส่วนนี้เลือกในส่วนของ Kinect SDK  ของ Microsoft มาเพราะว่าการใช้งานค่อนข้างง่าย ไม่ซับซ้อน และมี source code ตัวอย่างมาให้มากมาย โดยเริ่มจากต้องดาวโหลด Kinect SDK & Toolkit ที่นี่ จากนั้นติดตั้ง หลังจากติดตั้งแล้วที่ Start > Program จะพบว่ามี Kinect for Windows SDK v1.7 (เลขเวอร์ชั่นอาจจะเปลี่ยนแปลงไปตาม เวอร์ชั่นของ SDK ที่ติดตั้ง) เพิ่มขึ้นมา
ซึ่งภายใน Kinect for Windows SDK v1.7 จะมีโปรแกรมที่สำคัญ อยู่ 2 โปรแกรมคือ

  1.  Developer Toolkit Browser v1.7.0 (Kinect for Windows)
         โปรแกรมนี้จะรวบรวมเอกสารสำหรับ SDK, example code  และอื่นๆ ที่จำเป็นสำหรับการพัฒนา software สำหรับ kinect
  2. Kinect Studio v1.7.0
        โปรแกรมนี้เป็น Tool สำหรับใช้ดูภาพและบันทึกภาพจาก Kinect โดยจะแสดงภาพที่โปรแกรมที่กำลังใช้งาน Kinect อยถุ่เห็นภาพอะไร ภาพนั้นจะมาแสดงที่โปรแกรมนี้ด้วย โดยจะแสดงภาพ 3 แบบคือ เป็นมุมมองภาพสีธรรมดา (Color Viewer), มุมมองความลึก (Depth Viewer), มุมมองสามมิติ (3D Viewer)


 Developer Toolkit Browser v1.7.0

Kinect Studio v1.7.0

          - มุมมองภาพสีธรรมดา (Color Viewer)
                เป็นมุมมองภาพสีธรรมดา
          - มุมมองความลึก (Depth Viewer)
                มุมมองด้านความลึก จะแยกด้วยสี คือถ้าใกล้มาจะเป็นสีดำ น้ำเงิน ฟ้า เขียว เหลือง ส้ม แดง ตามระยะ
          - มุมมองสามมิติ (3D Viewer)
                มุมมองแสดงภาพที่ Kinect มองเป็น 3 มิติ


ตัวอย่าง Application Skeleton
      Seleton คือการหาข้อต่อและกระดูก ของคนเพื่อสามารถนำไปต่อยอดเพื่อการหาท่าทาง ว่าคนที่ Kinect มองเห็นแสดงท่าทางอะไร example นี้ชื่อ SkeletonBasics-WPF

ตัวอย่าง Application Skeleton

ภาพที่ Kinect มองเห็นในรูปความลึก


     หากจะใช้ Kinect จะต้องเพิ่ม References Microsoft.Kinect และ ต้อง using Microsoft.Kinect;
และ class ที่ใช่ในการเชื่อมต่อ Kinect คือ KinectSensor โดยเพิ่ม Data Member
private KinectSensor sensor;
 และตอน initial sensor
foreach (var potentialSensor in KinectSensor.KinectSensors)
            {
                if (potentialSensor.Status == KinectStatus.Connected)
                {
                    this.sensor = potentialSensor;
                    break;
                }
            }
            if (null != this.sensor)
            {
                // Turn on the skeleton stream to receive skeleton frames
                this.sensor.SkeletonStream.Enable();

                // Add an event handler to be called whenever there is new color frame data
                this.sensor.SkeletonFrameReady += this.SensorSkeletonFrameReady;

                // Start the sensor!
                try
                {
                    this.sensor.Start();
                }
                catch (IOException)
                {
                    this.sensor = null;
                }
            }
 และเมื่อ Initial Sensor สำเร็จแล้ว และ kinect พร้อมทำงาน จะมี Event ไปที่ Method SensorSkeletonFrameReady


Video ทดสอบ Skeleton Basic


     จากการทำลองใช้ Kinect SDK นั้น ใช้งานค่อนข้างง่าย มี Source Code ตัวอย่างเยอะทั้งในส่วนของ SDK และใน Internet และ ในส่วนของ Kinect นั้นมีระยะที่ค่อนข้างไกล คือถ้าอยู่ใกล้ๆมาก ตัว Kinect จะไม่สามารถตรวจจับได้


Video Review SDK





Link Doc : Kinect for Windows
Link D\L : XNA Fx 4.0
Link D\L : DirectX SDK

6 ความคิดเห็น:

  1. please share the source code to my email bdp_rs@hotmail.com

    ตอบลบ
    คำตอบ
    1. Source code in review I use from Kinect SDK (http://www.microsoft.com/en-us/kinectforwindowsdev/Downloads.aspx)

      ลบ
  2. please share the source code - full(arm and leg) robobuilder kinect control to my email muzafferyildirim57@gmail.com.com

    Regard....

    ตอบลบ
  3. please share the source code - full(arm and leg) robobuilder kinect control to my email muzafferyildirim57@gmail.com

    ตอบลบ