นายนราวุฒิ...

81
การประกอบรวมโครงร่างมนุษย์จากการตรวจจับการเคลื่อนไหวโดยใช้กล้อง Kinect หลายตัว นายนราวุฒิ พัฒโนทัย วิทยานิพนธ์นี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตร ปริญญาวิทยาศาสตรมหาบัณฑิต สาขาวิศวกรรมซอฟต์แวร์ คณะเทคโนโลยีสารสนเทศ มหาวิทยาลัยเทคโนโลยีพระจอมกล้าธนบุรี พ.ศ. 2554

Upload: lykiet

Post on 15-Feb-2019

232 views

Category:

Documents


0 download

TRANSCRIPT

การประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว

นายนราวฒ พฒโนทย

วทยานพนธนเปนสวนหนงของการศกษาตามหลกสตร ปรญญาวทยาศาสตรมหาบณฑต สาขาวศวกรรมซอฟตแวร

คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมกลาธนบร

พ.ศ. 2554

การประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว

นายนราวฒ พฒโนทย วท.บ. (วทยาการคอมพวเตอร)

วทยานพนธนเปนสวนหนงของการศกษาตามหลกสตร ปรญญาวทยาศาสตรมหาบณฑต สาขาวศวกรรมซอฟตแวร

คณะเทคโนโลยสารสนเทศ มหาวทยาลยเทคโนโลยพระจอมกลาธนบร

พ.ศ. 2554 คณะกรรมการสอบวทยานพนธ ......................................................................... ประธานกรรมการสอบวทยานพนธ (ดร. วทดา จงศภชยสทธ) .......................................................................... กรรมการและอาจารยทปรกษาวทยานพนธ (ผศ.ดร. พรชย มงคลนาม) .......................................................................... กรรมการและอาจารยทปรกษาวทยานพนธรวม (ดร. บณฑต วรรธนาภา) .......................................................................... กรรมการ (ผศ.ดร. ชาครดา นกลกจ) .......................................................................... กรรมการ (ผศ.ดร. เสาวลกษณ วรรธนาภา)

ลขสทธของมหาวทยาลยเทคโนโลยพระจอมเกลาธนบร

หวขอวทยานพนธ การประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect หลายตว หนวยกต 12 ผเขยน นายนราวฒ พฒโนทย อาจารยทปรกษา ผศ.ดร. พรชย มงคลนาม ดร. บณฑต วรรธนาภา หลกสตร วทยาศาสตรมหาบณฑต สาขาวชา วศวกรรมซอฟตแวร คณะ คณะเทคโนโลยสารสนเทศ พ.ศ. 2554

บทคดยอ กลอง Kinect สามารถตรวจจบโครงรางของมนษยไดอยางถกตองเฉพาะสวนทไมถกบดบง ดงนนในทางปฏบต การตรวจจบการเคลอนไหวของมนษยจงมความจ าเปนตองใชกลองสองตวหรอมากกวา เพอสรางโครงรางทสมบรณจากการตรวจจบ แตการเพมจ านวนกลองจะท าใหไดโครงรางมากกวาหนงโครงราง ซงเกดจากมมมองของแตละกลองทแตกตางกน งานวจยนจงน าเสนอวธการประกอบรวมโครงรางมนษยทไดจากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว และน าเสนอระบบการตรวจจบการเคลอนไหวตามเวลาจรงทรองรบการใชกลอง Kinect จ านวนมากได จากผลการทดสอบวธการทน าเสนอปรากฏผลในระดบทยอมรบได และสามารถน าไปใชในงานอนๆ ดานการตรวจจบการเคลอนไหวไดตอไป ค าส าคญ : กลอง Kinect / การตรวจจบการเคลอนไหว / การประกอบรวมโครงรางมนษย / OpenNI

Thesis Title Compositing Human Skeleton from Motion Captures using Multiple Kinect Sensors Thesis Credits 12 Candidate Mr. Naravut Pattanotai Thesis Advisors Asst. Prof. Dr. Pornchai Mongkolnam Dr. Bunthit Watanapa Program Master of Science Field of Study Software Engineering Faculty School of Information Technology B.E. 2554

Abstract A single Kinect sensor could capture only an unobstructed human skeleton. In practice, two or more sensors are needed to accurately construct a complete skeleton of human in motion. However, using many sensors will present the problem of having multiple skeletons, each with different camera viewpoint. This work proposes the method of compositing skeleton from motion captures using multiple Kinect sensors in real time. Experiments show acceptable results. And the proposed method is promising for the future work in human motion captures. Keywords : Kinect sensor / motion capture / human skeleton composition / OpenNI

กตตกรรมประกาศ งานวจยนไดรบการสนบสนนจากโครงการสงเสรมการวจยในอดมศกษาและการพฒนามหาวทยาลยวจยแหงชาต (NRU) ของส านกงานคณะกรรมการการอดมศกษา และขอขอบคณมหาวทยาลยเทคโนโลยพระจอมเกลาธนบรทสนบสนนทนเพชรพระจอมเกลา “ทนสงเสรมดานวชาการดเดน” งานวจยนส าเรจลลวงไปไดดวยดจากความกรณาเปนอยางสงของอาจารยทปรกษาวทยานพนธ ผศ.ดร. พรชย มงคลนาม และดร. บณฑต วรรธนาภา ทใหค าปรกษาและค าแนะน าทถกตอง แนวทางการแกไขปญหาทเกดขนระหวางด าเนนงานวจย และความชวยเหลอในทกดานเปนอยางด มาโดยตลอด รวมถงการเสยสละเวลาอนมคายงเพอตรวจสอบขอบกพรองของวทยานพนธฉบบนอยางถถวนจนเรยบรอยสมบรณ ผวจยขอขอบพระคณเปนอยางสง วทยานพนธฉบบนเสรจสนสมบรณจากความกรณาของ ดร. วทดา จงศภชยสทธ ประธานกรรมการสอบวทยานพนธ ผศ.ดร. ชาครดา นกลกจ และ ผศ.ดร. เสาวลกษณ วรรธนาภา กรรมการสอบวทยานพนธทใหค าแนะน าและขอเสนอแนะในการจดท าวทยานพนธ ผวจยขอขอบพระคณ เปนอยางสงไว ณ โอกาสน ทายทสดนขอขอบพระคณบดามารดาทสนบสนนและเอาใจใสเปนอยางดในการศกษา ขอขอบคณเพอนทกคนส าหรบก าลงใจและความชวยเหลอทด ผวจยจะน าความรและประสบการณทไดรบจากการจดท างานวจยน เพอกอประโยชนตอประเทศชาตและสงคมตอไป และประโยชนใดทเกดจากวทยานพนธฉบบนยอมเปนผลจากความกรณาของทานดงกลาวขางตน

สารบญ หนา บทคดยอภาษาไทย ข บทคดยอภาษาองกฤษ ค กตตกรรมประกาศ ง สารบญ จ รายการตาราง ช รายการรปประกอบ ซ บทท 1. บทน า 1 1.1 ทมาและความส าคญของปญหา 1 1.2 วตถประสงคของงานวจย 2 1.3 ขอบเขตของงานวจย 2 1.4 ขนตอนการด าเนนงานวจย 3 1.5 ประโยชนทไดรบ 3 1.6 โครงรางของวทยานพนธ 4 2. ทฤษฎ เทคโนโลยและงานวจยทเกยวของ 5 2.1 การแปลงทางเรขาคณต 5 2.1.1 การยายในสามมต 5 2.1.2 การหมนในสามมต 6 2.2 การแปลงระบบพกด 9 2.2.1 การพสจนสตร 13 2.3 กลอง Kinect 14 2.4 OpenNI 16 2.5 การตรวจจบการเคลอนไหวโดยใชกลอง Kinect และ OpenNI 18 2.6 งานวจยทเกยวของ 21

หนา 3. วธการด าเนนงานวจย 29 3.1 วธการประกอบรวมโครงรางมนษย 29 3.2 ระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว 32 3.3 การทดสอบวธการประกอบรวมโครงรางมนษย 32 3.4 การสรางสถานการณการตรวจจบการเคลอนไหว 33 3.5 การพฒนาโปรแกรมสวน Client 35 3.6 การพฒนาโปรแกรมสวน Server 38 4. ผลการวจย 47 4.1 การทดสอบวธการทน าเสนอ 47 4.2 ผลลพธจากวธการประกอบรวมโครงรางมนษย 49 4.3 ตวอยางผลการตรวจจบการเคลอนไหวท 1 50 4.4 ตวอยางผลการตรวจจบการเคลอนไหวท 2 53 4.5 ตวอยางผลการตรวจจบการเคลอนไหวท 3 55 4.6 ตวอยางผลการตรวจจบการเคลอนไหวท 4 57 5. สรปผลการวจย 60 5.1 การอภปรายผล 60 5.2 ผลสรป 60 5.3 ขอจ ากด 61 5.4 ขอเสนอแนะ 63 5.5 แนวทางการพฒนาตอไป 64 เอกสารอางอง 66 ภาคผนวก 70 ก ผลงานทไดรบการตพมพ 70 ประวตผวจย 82

รายการตาราง ตาราง หนา 2.1 คาของตวแปรทใชในการสรางเมตรกซการแปลงของ LCS1 และ LCS2 11 2.2 คณสมบตของกลอง Kinect 16 3.1 คาของตวแปรทใชในการสรางเมตรกซการแปลง 34 4.1 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 1 50 4.2 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 2 53 4.3 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 3 55 4.4 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 4 57

รายการรปประกอบ รป หนา 2.1 การยายในสามมต 5 2.2 การหมนในแตละแกนในสามมต 6 2.3 การหมนแบบ X-Y-Z Fixed Angles 9 2.4 ตวอยางของการท าการแปลงระบบพกด 10 2.5 สถาปตยกรรมของกลอง Kinect 15 2.6 สวนประกอบของกลอง Kinect 15 2.7 หลกการของ OpenNI 17 2.8 ทา Calibration Pose 18 2.9 แกน X, Y และ Z ของกลอง Kinect เมอใช OpenNI 18 2.10 ต าแหนงของขอตอทสมพนธกบต าแหนงของรางกายมนษย 19 2.11 การสรางโครงรางมนษยจากการแบงแยกสวนของรปภาพในหลายๆ มมมอง 22 2.12 กราฟแสดงความลกทแทจรงและความลกทไดจากกลอง Kinect 22 2.13 ระบบการลองเสอผาเสมอนจรง 23 2.14 ระบบการบงบอกคณลกษณะภายนอกของบคคลโดยใชกลอง Kinect 23 2.15 ตวอยางพฤตกรรมของเดกทบนทกโดยใชกลอง Kinect 24 2.16 ระบบการควบคมการแสดงรปภาพทางการแพทยดวยทาทางของผใช 25 2.17 ระบบแสดงผลทควบคมโดยการแสดงทาทางและการแสดงออกทางหนาตาของผใช 26 2.18 ระบบการควบคมหนยนตดวยทาทางของผควบคม 27 2.19 การน าภาพความลกทไดจากกลอง Kinect ในหลายมมมองไปสรางเปนโครงรางมนษย 28 3.1 การหมนกลองทท าใหเกดคา aY 29 3.2 การยายกลองทท าใหเกดคา tX , tY และ tZ 30 3.3 ระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว 32 3.4 แผนผงการจดวางกลองในสถานการณการตรวจจบการเคลอนไหว 33 3.5 ระบบพกดของกลองแตละตวและ GCS ในพนททท าการตรวจจบการเคลอนไหว 34 3.6 ตวอยางโปรแกรมสวน Client 36 3.7 การก าหนดหมายเลขแทนแตละต าแหนงของขอตอ 36 3.8 โคดการรวมคาต าแหนงของขอตอใหเปน String 37

รป หนา 3.9 ตวอยางขอมลการตรวจจบการเคลอนไหวในหนงเฟรม 37 3.10 โคดการสงขอมลการตรวจจบการเคลอนไหว 38 3.11 ตวอยางโปรแกรมสวน Server 39 3.12 คลาส Skeleton และ SkeletonJoint 39 3.13 สวนแสดงภาพโครงรางมนษยทง 4 สวน 40 3.14 โครงสรางของคลาส View 41 3.15 สวนแสดงภาพโครงรางมนษยทง 4 สวน 41 3.16 โคดการวาดภาพโครงรางมนษย 42 3.17 โคดการค านวณเพอสรางเมตรกซการแปลง 42 3.18 โคดการท างานของ Thread 43 3.19 โคดการแบงแยกขอมลการตรวจจบการเคลอนไหว 44 3.20 โคดการปรบระบบพกดของขอมลต าแหนงของขอตอ 44 3.21 โคดการค านวณหาคาต าแหนงเฉลย 45 3.22 โคดการค านวณหาระยะหาง 46 4.1 แผนผงการจดวางอปกรณในการตรวจจบการเคลอนไหว 47 4.2 ตวอยางขอมลการตรวจจบการเคลอนไหวทถกสงเขามายงเครอง Server 48 4.3 โครงรางมนษยทไดจากการตรวจจบ แสดงตามขนตอนการประกอบรวม 49 4.4 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 1 51 4.5 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 2 54 4.6 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 3 56 4.7 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 4 58 5.1 ตวอยางหนจ าลองทน ามาใชเพอวดระยะ 65

บทท 1 บทน า บทนจะกลาวถงทมาและความส าคญของปญหา วตถประสงคของงานวจย ขอบเขตของงานวจย ขนตอนการด าเนนงานวจย ประโยชนทคาดวาจะไดรบ และโครงรางของวทยานพนธ

1.1 ทมาและความส าคญของปญหา การตรวจจบการเคลอนไหวของรางกายมนษยเปนกระบวนการบนทกการเคลอนไหวของรางกาย ใหอยในรปแบบดจตอล สามารถแบงวธการตรวจจบการเคลอนไหวเปนสองรปแบบใหญๆ คอ การตรวจจบการเคลอนไหวโดยการท าเครองหมายตามต าแหนงตางๆ บนรางกาย (Marker Motion Capture) และการตรวจจบการเคลอนไหวโดยปราศจากการท าเครองหมายตามต าแหนงตางๆ บนรางกาย (Markerless Motion Capture) ขอมลการตรวจจบการเคลอนไหวทได สามารถน าไปใช ในงานดานตางๆ ได เชน การท าการตนอนเมชน การตรวจจบการลมของผสงอาย (Fall Detection) การวเคราะหพฤตกรรม และการปฏสมพนธกบคอมพวเตอรโดยปราศจากการใชอปกรณ หรอการ ใชทาทางการเคลอนไหวในการปฏสมพนธกบคอมพวเตอร (Natural User Interface : NUI) เปนตน กลอง Kinect [1] เปนอปกรณเสรมการใชงานเครองเลนเกม Xbox 360 ทพฒนาโดยบรษท Microsoft มความสามารถในการใหภาพส (RGB Image) ภาพความลก (Depth Image) ทกลองตรวจจบ และสามารถรบฟงเสยงของผใชได เมอน ามาใชงานรวมกบซอฟตแวรคอมโพเนนทท เหมาะสม จะสามารถตรวจจบรางกายของผใช และสามารถจ าแนกต าแหนงของขอตอตางๆ ของรางกายผใชได โดยใหขอมลต าแหนงของขอตอในรปแบบจดพกดสามมต ดงนนจงสามารถน ามาประยกตใชกบการตรวจจบการเคลอนไหวของรางกายมนษย แบบปราศจากการท าเครองหมายตามต าแหน งตางๆ บนรางกายได [2] เมอใชกลอง Kinect ในการตรวจจบการเคลอนไหว ขอมลต าแหนงของขอตอของรางกายทได จะมความถกตองเฉพาะสวนทกลองตรวจจบได หากบางสวนของรางกายถกบดบง ขอมลต าแหนงของขอตอของสวนนนจะเปนคาประมาณ มความถกตองนอย การท าใหทกสวนของรางกาย ถกตรวจจบไดตลอดเวลาจงตองมการเพมจ านวนกลองในการตรวจจบ และจดวางกลองในหลายๆ มมมอง เพอใหครอบคลมกบการตรวจจบการเคลอนไหวทสนใจ แตการท าเชนนจะท าใหไดขอมลต าแหนงของขอตอมากกวาหนงชดในการตรวจจบคนหนงคน และคาต าแหนงของขอตอทขอตอเดยวกนทไดจากกลองแตละตวมคาไมเทากน เพราะมต าแหนงอางองซงเปนต าแหนงทตงของกลองแตกตางกน จงจ าเปนตองน าขอมลต าแหนงทไดมาท าการปรบต าแหนงอางอง และท าการประมวลผล

2

รวมกนใหเปนขอมลชดเดยว โดยการรวมขอมลต าแหนงของขอตอนน จะตองเพมความถกตองของขอมลต าแหนงของขอตอ และตองทดแทนขอมลต าแหนงทถกบดบงในบางมมมอง ดวยขอมลต าแหนงจากกลองอนทใหมมมองทไมถกบดบง เพอใหไดขอมลต าแหนงของขอตอทประกอบรวมกนเปนโครงรางมนษยทมความถกตองสมบรณ สามารถน าไปใชในการตรวจจบทาทางและ การเคลอนไหวไดตอไป ในสวนของการพฒนาระบบและโปรแกรมในการตรวจจบการเคลอนไหว เนองจากในขณะนยงไมมวธการส าหรบการใชกลอง Kinect หลายตว ในการตรวจจบการเคลอนไหวของรางกายมนษยตาม เวลาจรงพรอมกน จงตองมการออกแบบระบบและพฒนาโปรแกรมขนมาโดยเฉพาะ ซงควร เปนระบบทรองรบการใชกลอง Kinect ในการตรวจจบไดไมจ ากด และเปนโปรแกรมทสามารถน าไปพฒนาเพมเตมได งานวจยนจงศกษาการใชงานกลอง Kinect ในการตรวจจบการเคลอนไหวของรางกายมนษย เสนอวธการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect หลายตว และเสนอระบบการตรวจจบการเคลอนไหวตามเวลาจรงทรองรบการใชกลอง Kinect จ านวนมาก

1.2 วตถประสงคของงานวจย 1. เพอศกษาการใชงานกลอง Kinect ในการตรวจจบการเคลอนไหวของรางกายมนษย 2. เพอเสนอวธการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง

Kinect หลายตว 3. เพอเสนอระบบการตรวจจบการเคลอนไหวตามเวลาจรงทรองรบการใชกลอง Kinect จ านวนมาก 4. เพอเสนอโปรแกรมแสดงผลการประกอบรวมโครงรางมนษย

1.3 ขอบเขตของงานวจย 1. ใช OpenNI [3] ทม PrimeSense NiTE Middleware [4] เปนชดเครองมอในการพฒนาโปรแกรม

ตรวจจบการเคลอนไหวโดยใชกลอง Kinect 2. ท าการทดสอบวธการประกอบรวมโครงรางมนษยทน าเสนอ โดยใชกลอง Kinect จ านวน 3 ตว

ในการตรวจจบการเคลอนไหวของผใช 1 ทาน ในหองโลงไมมสงของใดๆ อยในหอง 3. ตงสมมตฐานวากลองแตละตวทใชในการตรวจจบการเคลอนไหว มความสามารถในการ

วดระยะหางทเทากน

3

4. ใชไมบรรทดเหลก ไมบรรทดครงวงกลม (อปกรณเครองเขยน) และตลบเมตร ในการวดหาระยะทตงและวดหาทศทางทตรวจจบของกลอง Kinect

5. คอมพวเตอรทน ามาใชในการตรวจจบการเคลอนไหวมคณลกษณะ (Specification) ทเทากน

1.4 ขนตอนการด าเนนงานวจย 1. ศกษาทบทวนทฤษฎและงานวจยทเกยวของ 2. ศกษาการใชงานกลอง Kinect ในการตรวจจบการเคลอนไหวของรางกายมนษย 3. เสนอวธการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect

หลายตว 4. ออกแบบระบบการตรวจจบการเคลอนไหวตามเวลาจรงทรองรบการใชกลอง Kinect จ านวนมาก

โดยหลกการ 5. เสนอวธการทดสอบวธการประกอบรวมโครงรางมนษยทน าเสนอ 6. พฒนาโปรแกรมตรวจจบการเคลอนไหวโดยใชกลอง Kinect 7. พฒนาโปรแกรมแสดงผลการประกอบรวมโครงรางมนษย 8. แสดงผลการทดสอบวธการประกอบรวมโครงรางมนษยทน าเสนอ 9. สรปผล

1.5 ประโยชนทไดรบ 1. ไดระบบการตรวจจบการเคลอนไหวตามเวลาจรงทรองรบการใชกลอง Kinect จ านวนมากได 2. ไดวธการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect

หลายตว ทมผลลพธทยอมรบได สามารถน าไปใชในการตรวจจบทาทางและการเคลอนไหวไดตอไป เชน การตรวจจบการลม (Fall Detection) การท าการตนอนเมชน เปนตน

4

1.6 โครงรางของวทยานพนธ วทยานพนธน มสวนประกอบดงน บทท 1 บทน า บทนจะกลาวถงทมาและความส าคญของปญหา วตถประสงคของงานวจย ขอบเขต ของงานวจย ขนตอนการด าเนนงานวจย ประโยชนทคาดวาจะไดรบ และโครงราง ของวทยานพนธ บทท 2 ทฤษฎ เทคโนโลยและงานวจยทเกยวของ บทนจะกลาวถงการแปลงทางเรขาคณต การแปลง ระบบพกด กลอง Kinect OpenNI การตรวจจบการเคลอนไหวโดยใชกลอง Kinect และ OpenNI และงานวจยทเกยวของ บทท 3 วธการด าเนนงานวจย บทนจะกลาวถงวธการประกอบรวมโครงรางมนษย ระบบการตรวจจบ การเคลอนไหวโดยใชกลอง Kinect หลายตว การทดสอบวธการประกอบรวม โครงรางมนษย การสรางสถานการณการตรวจจบการเคลอนไหว และการพฒนา โปรแกรมสวน Client และ Server บทท 4 ผลการวจย บทนจะกลาวถงการทดสอบวธการทน าเสนอ ผลลพธจากวธการประกอบรวม โครงรางมนษย และผลการตรวจจบการเคลอนไหวจากสถานการณทจดท าขน บทท 5 สรปผลการวจย บทนจะกลาวถงการอภปรายผล ผลสรป ขอจ ากด ขอเสนอแนะ และแนวทาง การพฒนาตอไป

บทท 2 ทฤษฎ เทคโนโลยและงานวจยทเกยวของ บทนจะกลาวถงการแปลงทางเรขาคณต การแปลงระบบพกด กลอง Kinect OpenNI การตรวจจบการเคลอนไหวโดยใชกลอง Kinect และ OpenNI และงานวจยทเกยวของ

2.1 การแปลงทางเรขาคณต การแปลงทางเรขาคณต (Geometric Transformation) ในงานวจยน จะสนใจเฉพาะการยาย (Translation) การหมน (Rotation) ในระบบพกดสามมต [5]

2.1.1 การยายในสามมต

รปท 2.1 การยายในสามมต การยาย (Translation) หมายถง การเคลอนยายทกๆ จดของวตถเปนระยะทางทเทากนในทศทางเดยวกน ตามทแสดงในรปท 2.1 การยายในสามมตสามารถเขยนในรปแบบเมตรกซไดดงน P = P + T (2.1)

Z

Y

X

PPP

=

Z

Y

X

PPP

+

Z

Y

X

ttt

(2.2)

Z

X

Y

6

หรอสามารถเขยนในรปแบบเมตรกซ แบบ Homogeneous Coordinate ไดดงน P = T P (2.3)

1Z

Y

X

PPP

=

1000100010001

Z

Y

X

ttt

1Z

Y

X

PPP

(2.4)

เมตรกซทงสองรปแบบสามารถเขยนเปนสมการไดดงน XP = XP + tX (2.5) YP = YP + tY (2.6) ZP = ZP + tZ (2.7) เมอก าหนดให P คอ จดใดๆ ในสามมต T คอ ระยะการเลอนในแตละแกน P คอ จดใหมทเกดจากการเลอน

2.1.2 การหมนในสามมต การหมน (Rotation) หมายถง การเคลอนยายทกๆ จดของวตถรอบจดตรงจดหนง การหมนในสามมตจะตองพจารณาถงแกนทจะใชในการหมนดวย ตามทแสดงในรปท 2.2

รปท 2.2 การหมนในแตละแกนในสามมต

Z

X

Y

Z

X

Y

Z

X

Y

7

การหมนในแตละแกนสามารถเขยนเปนเมตรกซไดดงน

RX (aX) =

)()(

)()(

XX

XX

aaaa

cossin0sin-cos0

001 (2.8)

RY (aY) =

)()(

)()(

YY

YY

aa

aa

cos0sin-010

sin0cos (2.9)

RZ (aZ) =

1000cossin0sin-cos

)()(

)()(

ZZ

ZZ

aaaa

(2.10)

เมอก าหนดให RX (aX) คอ เมตรกซการหมนรอบแกน X ดวยมม aX RY (aY) คอ เมตรกซการหมนรอบแกน Y ดวยมม aY RZ (aZ) คอ เมตรกซการหมนรอบแกน Z ดวยมม aZ ตวอยางการหมนจดใดๆ รอบแกน Z ดวยมม aZ สามารถเขยนในรปแบบเมตรกซ แบบ Homogeneous Coordinates และในรปแบบสมการไดดงน P = RZ (aZ) P (2.11)

1Z

Y

X

PPP

=

1000010000cossin00sin-cos

)()(

)()(

ZZ

ZZ

aaaa

1Z

Y

X

PPP

(2.12)

XP = cos(aZ) PX – sin(aZ) PY (2.13) YP = sin(aZ) PX + cos(aZ) PY (2.14) ZP = ZP (2.15) เมอก าหนดให P คอ จดใดๆ ในสามมต RZ (aZ) คอ เมตรกซการหมนรอบแกน Z ดวยมม aZ P คอ จดใหมทเกดจากการหนนรอบแกน Z ดวยมม aZ จากสมการขางตน เนองจากเปนการหมนรอบแกน Z ผลของการหมนจะไมท าใหพกดในแนวแกน Z ของจด P เปลยน

8

เมตรกซการหมนรอบแกนหลก (แกน X, Y และ Z) สามารถน ามารวมกนได โดยน าเมตรกซการหมนมาคณกนตามล าดบยอนหลงการท าการหมนรอบแกน ยกตวอยางเชน X-Y-Z Fixed Angles [6] จะท าการหมนรอบแกน X กอน แลวท าการหนนรอบแกน Y และจากนนจะท าการหมนรอบแกน Z ตามทแสดงในรปท 2.3 การค านวณหาเมตรกซการหมนแบบ X-Y-Z Fixed Angles จะตองน าเมตรกซการหมนรอบแกน Z ไปคณกบเมตรกซการหมนรอบแกน Y จากนนน าไปคณกบเมตรกซการหมนรอบแกน X ซงจะท าใหไดเมตรกซการหมนดงน RXYZ (aX, aY, aZ) = RZ (aZ) RY (aY) RX (aX) (2.16)

=

1000cs0s-c

)()(

)()(

ZZ

ZZ

aaaa

)()(

)()(

YY

YY

aa

aa

c0s-010

s0c

)()(

)()(

XX

XX

aaaa

cs0s-c0

001 (2.17)

=

)()(

)()()()()(

)()()()()(

YY

YZZYZ

YZZYZ

aaaaaaaaaaaa

c0s-s scc ss cs-c c

)()(

)()(

XX

XX

aaaa

cs0s-c0

001 (2.18)

=

)c( )c()s( )c()s(-)c( )s( )s()s( )c(-)s( )s( )s()c( )c()c( )s(

)c( )s( )c()s( )s()s( )s( )c()c( )s(-)c( )c(

XYXYY

XYZXZXYZXZYZ

XYZXZXYZXZYZ

aaaaaaaaaaaaaaaaa

aaaaaaaaaaaa (2.19)

เมอก าหนดให RXYZ (aX, aY, aZ) คอ เมตรกซการหมนแบบ X-Y-Z Fixed Angles s(aX) แทน sin(aX) c(aX) แทน cos(aX)

9

(1) (2)

(3) (4)

รปท 2.3 การหมนแบบ X-Y-Z Fixed Angles

2.2 การแปลงระบบพกด เนองจากมระบบพกดหลายระบบทใชอธบายต าแหนงของจดในสามมต จงเปนสงส าคญทจะเขาใจวาระบบเหลานนสมพนธกนอยางไร ความสมพนธอยางหนงคอ การแปลงระหวางระบบพกด (Coordinate System Transformation) ซงจะมสตรส าหรบอธบายระบบพกดหนงในพจนของระบบพกดอางอง โดยสตรดงกลาวจะไดมาจากการท าการแปลงทางเรขาคณตใหระบบพกดนนมาอยในต าแหนงเดยวกนกบระบบพกดอางอง ในงานวจยน จะสรางเมตรกซการแปลง (Transformation Matrix) จากการน าเมตรกซการยายไปคณกบเมตรกซการหมนแบบ X-Y-Z Fixed Angles ตามทแสดงในสมการท 2.20

X

Y

Z

X

Y

Z X

Y

Z X

Y

Z

X

Y

Z

X

Y

Z X

Y

Z

X Y

Z

10

TM = T R (2.20)

=

1000100010001

z

y

x

ttt

10000)c( )c()s( )c()s(-0)c( )s( )s()s( )c(-)s( )s( )s()c( )c()c( )s(0)c( )s( )c()s( )s()s( )s( )c()c( )s(-)c( )c(

XYXYY

XYZXZXYZXZYZ

XYZXZXYZXZYZ

aaaaaaaaaaaaaaaaa

aaaaaaaaaaaa (2.21)

=

1000)c( )c()s( )c()s(-

)c( )s( )s()s( )c(-)s( )s( )s()c( )c()c( )s()c( )s( )c()s( )s()s( )s( )c()c( )s(-)c( )c(

ZXYXYY

YXYZXZXYZXZYZ

XXYZXZXYZXZYZ

taaaaataaaaaaaaaaaataaaaaaaaaaaa

(2.22)

เมอก าหนดให TM คอ เมตรกซการแปลงระบบพกด T คอ เมตรกซการยายทเกดขน R คอ เมตรกซการหมนแบบ X-Y-Z Fixed Angles ทเกดขน ตวอยางของการท าการแปลงระบบพกดแสดงในรปท 2.4 แสดง Global Coordinate System (GCS) ทม Local Coordinate System (LCS) 3 ระบบ ไดแก LCS1, LCS2 และ LCS3 โดย LCS1 อยทต าแหนงจดก าเนดของ GCS และจด Q ทมคาพกด (0, 1, 5.66) เมออางองจาก LCS1 และมคาพกด (0.71, 1, 2.12) เมออางองจาก LCS2

รปท 2.4 ตวอยางของการท าการแปลงระบบพกด

GCS

Y

Z

Q

LCS3

X

X

Y

Z

LCS1

LCS2 Z X

Y

X

Y

Z

11

ในการค านวณหาคาพกดของจด Q เมออางองจาก GCS หรอการแปลงระบบพกดของจด Q จาก LCS1 หรอ LCS2 ใหเปน GCS จะตองทราบขนาดมมทใชในการหมนแกน X, Y และ Z ของ GCS ทท าให LCS3 มลกษณะเชนเดยวกบ LCS1 และ LCS2 (aX , aY และ aZ) และระยะการยาย LCS3 จากจดก าเนด GCS ไปยงต าแหนงเดยวกนกบ LCS1 และ LCS2 (tX , tY และ tZ) ซงมคาตามทแสดงในตารางท 2.1 โดยคาทงหมดอางองดวย GCS และเมอท าการแปลงระบบพกดของจด Q จาก LCS1 หรอ LCS2 ใหเปน GCS แลว คาพกดจะตองมคาทเทากนเพราะเปนจดเดยวกน ตารางท 2.1 คาของตวแปรทใชในการสรางเมตรกซการแปลงของ LCS1 และ LCS2 ตวแปร aX aY aZ tX tY tZ LCS1 180 225 0 -2 3 -1 LCS2 0 315 0 3 1 1 เมตรกซการแปลงของการยาย LCS3 จากจดก าเนด GCS ไปยงต าแหนงเดยวกนกบ LCS1 และ LCS2 สามารถค านวณไดจากสมการท 2.22 โดยคาของเมตรกซการแปลงนน (TMLCS1 และ TMLCS2) แสดงในสมการท 2.24 และ 2.26 ตามล าดบ

TMLCS1 =

1 0001-)c(180 )c(225)s(180 )c(225)s(225-3 )c(180 )s(225 )s(0)s(180 )c(0-)s(180 )s(225 )s(0)c(180 )c(0 )c(225 )s(02-)c(180 )s(225 )c(0)s(180 )s(0 )s(180 )s(225 )c(0)c(180 )s(0-)c(225 )c(0

(2.23)

=

1 00 01-0.710 0.71 3 01- 0 2-0.710 0.71-

(2.24)

TMLCS2 =

10001)c(0 )c(315)s(0 )c(315)s(315-1)c(0 )s(315 )s(0)s(0 )c(0-)s(0 )s(315 )s(0)c(0 )c(0 )c(315 )s(03)c(0 )s(315 )c(0)s(0 )s(0 )s(0 )s(315 )c(0)c(0 )s(0-)c(315 )c(0

(2.25)

=

100010.7100.711010 30.71-00.71

(2.26)

12

คาพกดของจด Q ใน GCS (QGCS) ทค านวณจากจากการน าคาพกดของจด Q ใน LCS1 (QLCS1) ไปคณกบเมตรกซการแปลงของการยาย LCS3 ไปยงต าแหนงเดยวกนกบ LCS1 (TMLCS1) แสดงในสมการท 2.27 และคาพกดของ QGCS แสดงในสมการท 2.32 QGCS = TMLCS1 QLCS1 (2.27)

1Z

Y

X

GCS

GCS

GCS

QQQ

=

1 00 01-0.710 0.71 3 01- 0 2-0.710 0.71-

15.66

10

(2.28)

QX = ( -0.71 x 0 ) + ( 0 x 1 ) + ( 0.71 x 5.66 ) – 2 = 2 (2.29) QY = ( 0 x 0 ) + ( -1 x 1 ) + ( 0 x 5.66 ) + 3 = 2 (2.30) QZ = ( -0.71 x 0 ) + ( 0 x 1 ) + ( 0.71 x 5.66 ) – 1 = 3 (2.31) QGCS = ( 2, 2, 3 ) (2.32) คาพกดของจด Q ใน GCS (QGCS) ทค านวณจากจากการน าคาพกดของจด Q ใน LCS2 (QLCS2) ไปคณกบเมตรกซการแปลงของการยาย LCS3 ไปยงต าแหนงเดยวกนกบ LCS2 (TMLCS2) แสดงในสมการท 2.33 และคาพกดของ QGCS แสดงในสมการท 2.38 QGCS = TMLCS2 QLCS2 (2.33)

1Z

Y

X

GCS

GCS

GCS

QQQ

=

100010.7100.711010 30.71-00.71

12.12

10.71

(2.34)

QX = ( 0.71 x 0.71 ) + ( 0 x 1 ) + ( -0.71 x 2.12 ) + 3 = 2 (2.35) QY = ( 0 x 0.71 ) + ( 1 x 1 ) + ( 0 x 2.12 ) + 1 = 2 (2.36) QZ = ( 0.71 x 0.71 ) + ( 0 x 1 ) + ( 0.71 x 2.12 ) + 1 = 3 (2.37) QGCS = ( 2, 2, 3 ) (2.38) จะเหนไดวาคาพกดของจด Q ใน GCS (QGCS) ทไดจากการแปลงระบบพกดทงสอง มคาทเทากน

13

2.2.1 การพสจนสตร เมอน าจดใดๆ ในสามมตไปคณกบเมตรกซการแปลง จดนนจะเปลยนแปลงไปตามคา aX , aY , aZ , tX , tY และ tZ ทน ามาสรางเมตรกซการแปลง

1 ZP

PP

Y

X

=

1000)c( )c()s( )c()s(-

)c( )s( )s()s( )c(-)s( )s( )s()c( )c()c( )s()c( )s( )c()s( )s()s( )s( )c()c( )s(-)c( )c(

ZXYXYY

YXYZXZXYZXZYZ

XXYZXZXYZXZYZ

taaaaataaaaaaaaaaaataaaaaaaaaaaa

1Z

Y

X

PPP

XP = [c(aZ) c(aY)] PX + [-s(aZ) c(aX) + c(aZ) s(aY) s(aX)] PY + [s(aZ) s(aX) + c(aZ) s(aY) c(aX)] PZ + tX

YP = [s(aZ) c(aY)] PX + [c(aZ) c(aX) + s(aZ) s(aY) s(aX)] PY + [-c(aZ) s(aX) + s(aZ) s(aY) c(aX)] PZ + tY

ZP = [-s(aY)] PX + [c(aY) s(aX)] PY + [c(aY) c(aX)] PZ + tZ หากน าจดนนมาท าการแปลงทางเรขาคณตตามล าดบเชนเดยวกนกบล าดบของขนตอนในการสรางเมตรกซการแปลงนน คาทไดจะมคาเทากน ตามทแสดงดงน 1. ท าการหมนจดรอบแกน X ดวยมม aX

1Z

Y

X

PPP

=

10000)c()s(00)s(-)c(00001

XX

XX

aaaa

1Z

Y

X

PPP

XP = PX

YP = c(aX) PY - s(aX) PZ

ZP = s(aX) PY + c(aX) PZ 2. ท าการหมนจดรอบแกน Y ดวยมม aY

1PZ

Y

X

PP

=

10000)c(0)s(-00100)s(0)c(

YY

YY

aa

aa

1ZP

PP

Y

X

XP = c(aY) XP + s(aY) ZP = c(aY) PX + s(aY) [ s(aX) PY + c(aX) PZ ] = c(aY) PX + s(aY) s(aX) PY + s(aY) c(aX) PZ

YP = YP = c(aX) PY - s(aX) PZ

ZP = - s(aY) XP + c(aY) ZP = - s(aY) PX + c(aY) [s(aX) PY + c(aX) PZ ] = - s(aY) PX + c(aY) s(aX) PY + c(aY) c(aX) PZ

14

3. ท าการหมนจดรอบแกน Z ดวยมม aZ

1ZP

PP

Y

X

=

100001000)c(1)s(0)s(-0)c(

ZZ

ZZ

aaaa

1Z

Y

X

PPP

XP = c(aZ) XP - s(aZ) YP = c(aZ) [ c(aY) PX + s(aY) s(aX) PY + s(aY) c(aX) PZ ] - s(aZ) [ c(aX) PY - s(aX) PZ ] = c(aZ) c(aY) PX + c(aZ) s(aY) s(aX) PY + c(aZ) s(aY) c(aX) PZ - s(aZ) c(aX) PY + s(aZ) s(aX) PZ = [ c(aZ) c(aY) ] PX + [ -s(aZ) c(aX) + c(aZ) s(aY) s(aX) ] PY + [ s(aZ) s(aX) + c(aZ) s(aY) c(aX) ] PZ

YP = s(aZ) XP + c(aZ) YP = s(aZ) [c(aY) PX + s(aY) s(aX) PY + s(aY) c(aX) PZ ] + c(aZ) [c(aX) PY - s(aX) PZ ] = s(aZ) c(aY) PX + s(aZ) s(aY) s(aX) PY + s(aZ) s(aY) c(aX) PZ + c(aZ) c(aX) PY - c(aZ) s(aX) PZ = [s(aZ) c(aY)] PX + [c(aZ) c(aX) + s(aZ) s(aY) s(aX)] PY + [-c(aZ) s(aX) + s(aZ) s(aY) c(aX)] PZ

ZP = ZP = - s(aY) PX + c(aY) s(aX) PY + c(aY) c(aX) PZ

4. ท าการยายตามระยะ tX , tY และ tZ จากจดก าเนด

1 ZP

PP

Y

X

=

1000100010001

Z

Y

X

ttt

1ZP

PP

Y

X

XP = XP + tX = [c(aZ) c(aY)] PX + [-s(aZ) c(aX) + c(aZ) s(aY) s(aX)] PY + [s(aZ) s(aX) + c(aZ) s(aY) c(aX)] PZ + tX

YP = YP + tY = [s(aZ) c(aY)] PX + [c(aZ) c(aX) + s(aZ) s(aY) s(aX)] PY + [-c(aZ) s(aX) + s(aZ) s(aY) c(aX)] PZ + tY

ZP = ZP + tZ = [-s(aY)] PX + [c(aY) s(aX)] PY + [c(aY) c(aX)] PZ + tZ

2.3 กลอง Kinect กลอง Kinect [1] เปนอปกรณเสรมการใชงานเครองเลนเกม Xbox 360 ทพฒนาโดยบรษท Microsoft ภายใตแนวความคด “You Are the Controller” (ใชการเคลอนไหวของรางกายและการออกเสยงเปนค าสงในการเลนเกม) กลอง Kinect ถกสรางขนตามสถาปตยกรรมทน าเสนอโดยบรษท PrimeSense ผเปนผน าในดาน Natural User Interface (NUI) ตามทแสดงในรปท 2.5

15

รปท 2.5 สถาปตยกรรมของกลอง Kinect [7] กลอง Kinect มสวนประกอบตามทแสดงในรปท 2.6 ดงน 1. RGB Camera เปนกลองวดโอใชในการจบภาพส 2. 3D Depth Sensors ประกอบดวย Depth Projector (ดานขวาของ RGB Camera) และ Depth

Sensor (ดานซายของ RGB Camera) ใชในการค านวณหาระยะทางทหางออกไปจากกลอง ซงสามารถท างานได แมไมมแสงสวางในขณะทใชงาน

3. Motorized Tilt เปนมอเตอรส าหรบปรบใหกลองเอยงขนหรอเอยงลง (กม-เงย) เพอปรบมมมองในการตรวจจบ

4. Multi-Array Microphone เปนแถวของไมโครโฟน ใชในการรบเสยง

รปท 2.6 สวนประกอบของกลอง Kinect [8]

16

จากสวนประกอบดงกลาว ท าใหกลอง Kinect มคณสมบตตามทแสดงในตารางท 2.2 ตารางท 2.2 คณสมบตของกลอง Kinect [9]

Sensor item Specification range Viewing angle 43° vertical by 57° horizontal field of view Mechanized tilt range (vertical) ±27° Frame rate (depth and color stream) 30 frames per second (FPS) Default resolution, depth stream VGA (640 x 480) Default resolution, color stream VGA (640 x 480) Audio format 16-kHz, 16-bit mono pulse code modulation (PCM)

Audio input characteristics A four-microphone array with 24-bit analog-to-digital converter (ADC) and Kinect-resident signal processing, such as acoustic echo cancellation and noise suppression

กลอง Kinect จงเปนอปกรณทพฒนาขนมาเพองานทางดาน NUI โดยเฉพาะ โดยมความสามารถในการตรวจจบทาทางการเคลอนไหวของรางกายและการรบฟงเสยงค าสงของผควบคม

2.4 OpenNI OpenNI (Open Natural Interaction) [3] เปนเฟรมเวรคทก าหนด API ส าหรบการพฒนาโปรแกรมทางดาน NUI วตถประสงคหลกของ OpenNI คอ การสราง API มาตรฐานส าหรบการตดตอกบอปกรณทสามารถรบภาพและเสยงได และส าหรบการตดตอกบซอฟตแวรคอมโพเนนท (Middleware) ทสามารถวเคราะหเสยงและภาพได OpenNI สนบสนนหลกการ Multi-language และ Cross-platform และเปน Open-source API OpenNI กอตงโดยบรษท PrimeSense และพนธมตรบรษทอนๆ

17

หลกการของ OpenNI แสดงในรปท 2.7 โดยประกอบดวย 3 เลเยอร ดงน 1. เลเยอรชนบน จะเปนซอฟตแวรทางดาน NUI ทพฒนาอยบน OpenNI เฟรมเวรค 2. เลเยอรชนกลาง จะเปน OpenNI ทจะเปนตวกลางในการตดตอระหวางซอฟตแวร อปกรณ และ

Middleware ทสามารถวเคราะหขอมลทไดรบจากอปกรณ เชน ซอฟตแวรคอมโพเนนททสามารถใหต าแหนงของฝามอทปรากฎอยในภาพ เปนตน

3. เลเยอรชนลาง จะเปนอปกรณทใชในการตรวจจบภาพและเสยง เชน กลองเวบแคม (RGB Camera) กลองอนฟราเรท (IR Camera) ไมโครโฟน เปนตน

จากหลกการของ OpenNI ท าใหสามารถพฒนาโปรแกรมทางดาน NUI ทไมยดตดกบ Middleware หรออปกรณตวใดตวหนง และสามารถพฒนา Middleware ทสามารถท างานสอดคลองกบไดกบทกอปกรณ

รปท 2.7 หลกการของ OpenNI [3] ในขณะน Middleware ทมมาใหพรอมกบ OpenNI เมอดาวนโหลดมาใช คอ PrimeSense NiTE [4] ซงมความสามารถในการตรวจจบมอ (Hand Point Analysis) และการตรวจจบการเคลอนไหวของรางกายมนษย

OpenNI Interfaces

Applications

Hardware Devices (Sensors)

Application

(Game, TV Portal, Browser, etc.)

OpenNI

Middleware Component

A

Middleware Component

B

Middleware Components (e.g. Hand gesture tracking)

18

2.5 การตรวจจบการเคลอนไหวโดยใชกลอง Kinect และ OpenNI การตรวจจบการเคลอนไหวของรางกายมนษยโดยใชกลอง Kinect และ OpenNI ทม PrimeSense NiTE เปน Middleware ในเวอรชนแรกๆ ของ OpenNI ผใชทจะท าการตรวจจบการเคลอนไหว จ าเปนจะตองยนหนหนาเขาหากลอง และแสดงทา Calibration Pose ทเปนทาทางตามทแสดงในรปท 2.8 เปนเวลาประมาณ 3 วนาท หรอจนกวา OpenNI จะสามารถใหขอมลต าแหนงของขอตอได กอนเรมท าการตรวจจบการเคลอนไหวทกครง โดยศรษะและแขนของผใชตองเหนไดอยางชดเจน และไมควรงอหวเขาหรอกมล าตวในขณะทแสดงทาน แตในเวอรชนปจจบน (OpenNI ทใชในขณะด าเนนงานวจยนคอ เวอรชน 1.5.2.7) ผใชไมจ าเปนตองแสดงทา Calibration Pose น กอนเรมท าการตรวจจบการเคลอนไหว OpenNI สามารถใหขอมลต าแหนงของแตละขอตอไดทนททผใชอยใน มมกลอง แตอยางไรกตามหากมความผดพลาดเกดขนในระหวางทท าการตรวจจบการเคลอนไหว เชน OpenNI ระบสวนของรางกายเปนต าแหนงของขอตอทผด เปนตน การแสดงทา Calibration Pose น จะชวยแกปญหาดงกลาวได

รปท 2.8 ทา Calibration Pose ขอมลต าแหนงของขอตอทไดรบจาก OpenNI จะอยในรปแบบจดพกดสามมต (X, Y และ Z) โดยต าแหนงของจดก าเนด (X = Y = Z = 0) จะเปนต าแหนงของกลองทใชในการตรวจจบการเคลอนไหว และมทศทางของแกน X, Y และ Z ตามทแสดงในรปท 2.9 ซงแกน Z จะเปนทศทางทกลองตรวจจบ

รปท 2.9 แกน X, Y และ Z ของกลอง Kinect เมอใช OpenNI

X

Y

Z

19

คา X จะเปนคาแสดงระยะทางทหางออกไปจากจดก าเนดตามแนวนอนสมพทธกบกลองทตรวจจบ จะมคาเปนบวกเมอต าแหนงทถกตรวจจบไดอยทางดานขวาของกลอง คา Y จะเปนคาแสดงระยะทางทหางออกไปจากจดก าเนดตามแนวตงทกลองตรวจจบ จะมคาเปนบวกเมอต าแหนงทถกตรวจจบไดอยสงกวาต าแหนงของกลอง และคา Z จะเปนระยะทางทหางออกไปจากกลองโดยจะมคา เปนบวกเสมอ ต าแหนงของขอตอทไดรบจาก API จะสมพนธกบต าแหนงของรางกายมนษย 15 ต าแหนง ตามทแสดงในรปท 2.10 เมอผใชยนหนหนาเขาหากลอง ต าแหนงของขอตอขางซายและขวาจะสลบขางกน แตกตางจากรางกายจรง แตละต าแหนงของขอตอจะมคา X, Y และ Z ในหนวยมลลเมตร และมฟลด Confidence แสดงสถานะการตรวจจบต าแหนงขอตอนนๆ โดยจะมคาระหวาง 0 – 1 ซง 1 หมายถง สามารถตรวจจบได และหากมคานอยกวา 1 (เปนตวเลขทศนยม) หมายถง ไมสามารถตรวจจบได ขอมลต าแหนงของขอตอในสวนนนจะเปนคาประมาณ ในบางครงอาจเปนคาทตรวจจบไดลาสดกอนทจะตรวจจบไมไดในเวลาตอมา หรออาจเปนคาทไมมความหมายกได

รปท 2.10 ต าแหนงของขอตอทสมพนธกบต าแหนงของรางกายมนษย

Torso

Neck Head

RightShoulder RightElbow

RightHand

LeftShoulder LeftElbow

LeftHand

RightHip

RightKnee

RightFoot

LeftKnee

LeftFoot

LeftHip

20

ในการตรวจจบการเคลอนไหว หากผใชอยภายในมมกลอง หางจากกลองประมาณ 1.2 – 3.5 เมตร (ระยะหางอดมคตตามท PrimeSense NiTE แนะน าคอ ประมาณ 2.5 เมตร) คาต าแหนงของขอตอท ถกตรวจจบได จะมคาใกลเคยงกบการวดจรง เชน ความยาวของขอศอกไปจนถงกลางฝามอ เปนตน และฟลด Confidence ของขอตอจะมคาเปน 1 แตหากมบางขอตอทกลองไมสามารถตรวจจบได หรอถกบดบงไป เชน ยนมอไพลหลง เปนตน ฟลด Confidence ของขอตอนนจะมคานอยกวา 1 ค าแนะน าเพมเตมจาก PrimeSense NiTE ในการตรวจจบการเคลอนไหวดวย OpenNI ทม PrimeSense NiTE เปน Middleware - ผใชไมควรสวมชดทหลวมโครงในขณะทท าการตรวจจบการเคลอนไหว เพราะจะท าให

Middleware ไมสามารถตรวจจบต าแหนงของขอตอได - การตรวจจบขอตอทแขนจะมความเสถยรนอย หากแขนนนอยใกลชดกบสวนของรางกาย

โดยเฉพาะอยชดกบล าตว ถาแขนทงสองอยชดกบล าตวหรออยใกลกบสวนอน Middleware อาจรวมแขนนนเปนสวนหนงของรางกายสวนนนได และจะท าใหไมสามารถตรวจจบขอตอ ทแขนได

- การตรวจจบขอตอทขาจะมการตรวจจบทดขน หากผใชไมยนชดขา - การเคลอนไหวอยางรวดเรวหรอการแสดงทาทางทซบซอน อาจท าใหไมสามารถตรวจจบการ

เคลอนไหวได เชน การท าทาเตะฟตบอลอยางรวดเรว เปนตน จากการใชงานกลอง Kinect และ OpenNI ในการตรวจจบการเคลอนไหวของรางกายมนษย ในเบองตน ผวจยพบวา ต าแหนงทดทสดในการตงกลองตรวจจบการเคลอนไหวคอ การตงกลอง ใหเผชญหนากบผใช และไมมสงทบดบงการตรวจจบ เพราะสวนของรางกายเกอบทกๆ สวน จะสามารถตรวจจบไดตลอดเวลา และหากมสงของทอยใกลกบผใช เชน ผใชนงอยบนเกาอ เปนตน OpenNI อาจรวมสงของทอยใกลนนเปนสวนหนงของรางกายผใช และระบต าแหนงของขอตอ ทผดพลาดได การระบสวนของรางกายดานซายและขวาอาจสามารถสลบกนได เนองจาก OpenNI ไมสามารถวเคราะหภาพโครงรางมนษยทกลองตรวจจบไดวาเปนดานหนาหรอดานหลงของรางกาย หากผใชหนหลงใหกบกลองตงแตเรมการตรวจจบการเคลอนไหว ต าแหนงของขอตอทควรจะเปนดานซายกจะสลบไปเปนดานขวาได นอกจากน หากมสงของทมรปรางคลายกบโครงรางมนษย เชน พดลมตงพน เปนตน OpenNI อาจท าการตรวจจบและใหคาต าแหนงได

21

2.6 งานวจยทเกยวของ การตรวจจบการเคลอนไหวของรางกายมนษย (Human Motion Capture) เปนกระบวนการการบนทกการเคลอนไหวของรางกายมนษยใหอยในรปแบบดจตอล การตรวจจบการเคลอนไหวของรางกายสามารถแบงออกไดเปน 2 รปแบบหลก ไดแก การตรวจจบการเคลอนไหวโดยการท าเครองหมายตามต าแหนงตางๆ บนรางกาย (Marker Motion Capture) และการตรวจจบการเคลอนไหวโดยปราศจากการท าเครองหมายตามต าแหนงตางๆ บนรางกาย (Markerless Motion Capture) การตรวจจบการเคลอนไหวโดยการท าเครองหมายตามต าแหนงตางๆ บนรางกาย จะใชวธการตดเครองหมายตามขอตอตางๆ บนรางกาย หรอตดเครองหมายลงบนชดทสวมใส แลวใชกลองตรวจจบเครองหมายทตดไว จากนนจะใชซอฟตแวรท าการวเคราะหต าแหนงของเครองหมายเพอสรางต าแหนงของขอตอของรางกายในรปแบบสามมต การท าเครองหมายตามต าแหนงตางๆ บนรางกายอกวธการหนง จะใชวธการตดอปกรณบอกต าแหนงไวทรางกายโดยตรง วธการนจงไมตองใชกลองในการตรวจจบ และท าใหไดต าแหนงของขอตอในสามมตโดยตรง การตรวจจบการเคลอนไหวโดยปราศจากการท าเครองหมายตามต าแหนงตางๆ บนรางกาย จะใชกลองตรวจจบภาพการเคลอนไหว แลวใชซอฟตแวรท าการวเคราะหภาพทกลองตรวจจบได เพอแยกภาพรางกายออกจากภาพพนหลง จากนนจะท าการวเคราะหภาพรางกาย เพอสรางต าแหนงของขอตอของรางกายในรปแบบสามมต งานวจยของ Y. Liu, C. Stoll, J. Gall, H. Seidel และ C. Theobalt [10] ไดเสนอวธการตรวจจบการเคลอนไหวแบบปราศจากการท าเครองหมายไวตามต าแหนงตางๆ บนรางกาย ของการตรวจจบการเคลอนไหวของผใชสองคนทมสวนของรางกายสมผสกนอย เชน ผใชสองคนก าลงเตนร า เปนตน งานวจยนสามารถแยกโครงรางของผใชสองคนออกจากกนได ดวยการใชวธการแบงแยกสวนของรปภาพ (Image Segmentation) โดยท าการแบงแยกสวนของรปภาพทไดจากการจบภาพผใชทงสอง ในหลายๆ มมมอง จากนนจะท าการประเมนพนผว (Surface Estimation) สรางแบบจ าลองสามมต และสรางโครงรางของผใชแตละคน ตามทแสดงในรปท 2.11 ผลการทดสอบวธการทงานวจยนน าเสนอแสดงใหเหนถงวธการทถกตองและนาเชอถอในการตรวจจบการเคลอนไหวทผใชสองคน ทมสวนของรางกายทสมผสกน โดยมความผดพลาดบางในบางเฟรมทผใชมการเคลอนไหวอยางรวดเรว และมความผดพลาดจากการแบงแยกสวนของรปภาพในสวนทมสสนเหมอนกน

22

รปท 2.11 การสรางโครงรางมนษยจากการแบงแยกสวนของรปภาพในหลายๆ มมมอง [10] สวนหนงของงานวจยของ G. Odowichuk, S. Trail, P. Driessen, W. Nie และ W. Page [11] ไดท าการทดสอบการความสามารถในการวดระยะหาง (ความลก) ของกลอง Kinect โดยน าระยะหางทกลอง วดไดไปเปรยบเทยบกบระยะหางทแทจรงจากการวดระยะหางจากกลองไปยงพนระนาบ ปรากฏผลตามทแสดงในรปท 2.12 โดยทจดกงกลางของภาพความลกทกลองตรวจจบได หากระยะหางทไดจากกลองเปน 1 เมตร ระยะหางทแทจรงจากการวดจะไดประมาณ 1.253 เมตร

รปท 2.12 กราฟแสดงความลกทแทจรงและความลกทไดจากกลอง Kinect [11] มงานวจยหลายงานทน าการใชกลอง Kinect และ OpenNI ในการตรวจจบการเคลอนไหวของรางกายมนษยไปประยกตใชในงานดานตางๆ ดงน

23

งานวจยของ S. Hauswiesner, M. Straka และ G. Reitmayr [12] ไดเสนอระบบการลองเสอผาจาก ทบานผานระบบเสมอนจรง โดยใชกลอง Kinect ตรวจจบผใช และตรวจจบเสอผาทตองการ จากนนระบบจะท าการสรางแบบจ าลองสามมตของผใชและเสอผา แลวน ามาแสดงประกอบกนเปนภาพผใชสวมใสเสอผาตามทไดเลอกไว โดยแสดงทาทางเดยวกนกบผใชตามเวลาจรง ตามทแสดงในรปท 2.13 งานวจยนทดสอบระบบทเสนอโดยการใชแบบสอบถามสอบถามผทดลอง ซงปรากฏผลตอบรบทดจากผทดลอง

รปท 2.13 ระบบการลองเสอผาเสมอนจรง [12] งานวจยของ C. Velardo และ J. Dugelay [13] ไดเสนอระบบการบงบอกคณลกษณะภายนอกของบคคล (Body Soft Biometric) โดยใชกลอง Kinect ตรวจจบรางกายของผใช จากนนจะน าขอมลการตรวจจบทไดไปค านวณหาสวนสง น าหนก และเพศของผใชคนนนโดยประมาณ ตามทแสดงใน รปท 2.14 งานวจยนแสดงใหเหนถงแนวทางในการระบตวตนของบคคลโดยใชกลอง Kinect

รปท 2.14 ระบบการบงบอกคณลกษณะภายนอกของบคคลโดยใชกลอง Kinect [13]

24

งานวจยของ M. K. M. bin Sidik, M. S. bin Sunar, I. bin Ismail, M. K. bin Mokhtar และ N. binti M. Jusoh [14] ไดท าการศกษาเกยวกบการปฏสมพนธระหวางผใชกบคอมพวเตอรโดยการตรวจจบการเคลอนไหวดวยการใชภาพความลก (Depth Image) การศกษานไดแสดงใหเหนถงโครงสรางของระบบการวเคราะหการเคลอนไหวของรางกายมนษย ซงประกอบดวย 4 ขนตอน ดงน 1. Initialization เปนขนตอนในการเตรยมความพรอมกอนทจะเรมท าการตรวจจบการเคลอนไหว 2. Tracking เปนขนตอนในการแบงแยกระหวางผถกตรวจจบกบฉากพนหลง 3. Pose Estimation เปนขนตอนในการประมาณการแสดงทาทางของผถกตรวจจบ 4. Recognition เปนขนตอนในการวเคราะหและจ าแนกการกระท าของผถกตรวจจบ ผลการศกษาของงานวจยนแสดงใหเหนถงประโยชนของการใชภาพความลกในการตรวจจบการเคลอนไหวของรางกายมนษย ซงการใชภาพความลกจะชวยลดขนตอนและเวลาในการแบงแยกระหวางผถกตรวจจบกบฉากพนหลง งานวจยของ X. Yu, L. Wu, Q. Liu และ H. Zhou [15] ไดเสนอวธการประเมนการแสดงอารมณ ดานลบของเดกดวยขอมลทไดรบจากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect ตามทแสดงในรปท 2.15 งานวจยนน าขอมลการตรวจจบการคลอนไหวทไดไปวเคราะหดวยอลกอรทมในการวเคราะหพฤตกรรมแบบ Stochastic Grammar งานวจยนท าการทดสอบระบบตนแบบเปรยบเทยบกบการบนทกภาพเคลอนไหวและการจดบนทกพฤตกรรมทเดกแสดงออก ผลของงานวจยนแสดง ใหเหนถงระบบตนแบบทชวยในการวเคราะหพฤตกรรมและการแสดงอารมณดานลบของเดก และชวยในการแกไขพฤตกรรมของเดก

(1) Beat Others (2) Ignore Others (3) Crying and Depressed

รปท 2.15 ตวอยางพฤตกรรมของเดกทบนทกโดยใชกลอง Kinect [15] งานวจยของ B. Lange, C. Chang, E. Suma, B. Newman, A. S. Rizzo และ M. Bolas [16] ไดเสนอเกมส าหรบฝกการทรงตวของผปวยทางระบบประสาท โดยใชกลอง Kinect ในการตรวจจบการเคลอนไหวของผปวย และใช OpenNI ในการใหขอมลต าแหนงของขอตอ แลวน าขอมลการตรวจจบ

25

การเคลอนไหวทไดไปควบคมตวการตนในเกม งานวจยนท าการทดสอบเกมทน าเสนอกบผปวยทางระบบประสาท ผลของงานวจยนแสดงใหเหนถงเกมทชวยในการพฒนาการทรงตวของผปวยทมความเพลดเพลน และผปวยมความพงพอใจมาก งานวจยของ S. Rogge, P. Amtsfeld, C. Hentschel, D. Bestle และ M. Meyer [17] ไดเสนอวธการควบคมการแสดงผลแบบจ าลองสามมตของใบพดในสภาพแวดลอมเสมอนจรง ดวยทาทางของผใช งานวจยนใชกลอง Kinect และ OpenNI ในการพฒนาโปรแกรมตนแบบ ผลของงานวจยนแสดงใหเหนถงระบบแสดงแบบจ าลองสามมตทใชงานไดงาย และท าใหเหนขอผดพลาดของแบบจ าลองไดอยางรวดเรว งานวจยของ L. Gallo, A. P. Placitelli และ M. Ciampi [18] ไดเสนอระบบการควบคมการแสดงรปภาพทางการแพทยดวยทาทางของผใช ตามทแสดงในรปท 2.16 งานวจยนใชกลอง Kinect ในการตรวจจบทาทางของผใช และใช OpenNI ในการใหขอมลต าแหนงของขอตอ แลวน าขอมลต าแหนงของขอตอทมอและแขนไปวเคราะห เปนค าสงในการควบคมการแสดงรปภาพ ผลการศกษาของงานวจยนแสดงใหเหนถงระบบการควบคมการแสดงรปภาพทางการแพทยทปราศจากการใชอปกรณควบคม มคาใชจายนอย และสามารถหาซออปกรณไดตามรานคาทวไป

รปท 2.16 ระบบการควบคมการแสดงรปภาพทางการแพทยดวยทาทางของผใช [18] งานวจยของ C. Bellmore, R. Ptucha, และ A. Savakis [19] ไดเสนอระบบแสดงผลแบบโตตอบ (Interactive Display System) ทควบคมโดยการแสดงทาทางของผใช และการแสดงออกทางหนาตาของผใช ตามทแสดงในรปท 2.17 งานวจยนใชกลอง Kinect ในการตรวจจบการเคลอนไหวของผใช และใชภาพสทกลองตรวจจบไดน าไปวเคราะหค าสงทมาจากการแสดงออกทางหนาตา ส าหรบการ

26

ควบคมโดยใชการแสดงทาทาง จะน าคาต าแหนงของขอตอทไดรบจาก OpenNI ทอยในรปแบบ จดพกดสามมตไปเปลยนใหเปนจดพกดสองมตของรปภาพ กอนน าคาต าแหนงของขอตอทอยในรปแบบสองมตไปวเคราะหค าสงของผใช งานวจยนท าการทดสอบวธการควบคมระบบแสดงผล ทน าเสนอดวยระบบรานคากบผใชจ านวนมากกวา 100 คน ผลการศกษาของงานวจยนแสดงใหเหนถงแนวทางทเปนไปไดในการปฎสมพนธกบระบบดวยรางกายมนษย

รปท 2.17 ระบบแสดงผลทควบคมโดยการแสดงทาทางและการแสดงออกทางหนาตาของผใช [19]

งานวจยของ R. Igorevich, E. Ismoilovich และ D. Min [20] ไดเสนอระบบการควบคมหนยนตดวยทาทางของผควบคม โดยควบคมใหหนยนตแสดงทาทางเชนเดยวกนกบทาทางของผควบคม ตามทแสดงในรปท 2.18 งานวจยนใชกลอง Kinect ในการตรวจจบทาทางของผควบคม และใช OpenNI ในการใหขอมลต าแหนงของขอตอ ส าหรบการควบคมทาทางของหนยนต งานวจยนใชขนาดมมระหวางขอตอของรางกายของผควบคมทค านวณจากขอมลต าแหนงของขอตอทกลองตรวจจบไดไปควบคมการแสดงทาทางของหนยนต เชน ขนาดมมทขอศอกจะสามารถค านวณไดจากค านวณหาขนาดมมระหวางเวกเตอรสองตว ไดแก เวกเตอรทสรางขนจากคาต าแหนงของขอศอกไปยงคาต าแหนงของมอ และเวกเตอรทสรางขนจากคาต าแหนงของขอศอกไปยงคาต าแหนงของหวไหล ผลของการค านวณจะท าใหไดขนาดมมทขอศอกของผควบคมในขณะนน เปนตน งานวจยนท าการทดสอบวธการควบคมหนยนตทน าเสนอโดยการวดเวลาทลาชาทเกดขนระหวางทสงค าสงไปใหหนยนตแสดงทาทาง ซงมเวลาลาชาประมาณ 200 มลลวนาท ผลการศกษาของงานวจยนแสดงใหเหนถงวธการทงาย มคาใชจายนอย และเปนวธการทเสถยรมนคง ในการควบคมหนยนตดวยการเคลอนไหวของรางกายมนษย

27

รปท 2.18 ระบบการควบคมหนยนตดวยทาทางของผควบคม [20] งานวจยของ D. Alexiadis, P. Kelly, P. Daras, N. E. O'Connor, T. Boubekeur, และ M. B. Moussa [21] ไดเสนอระบบประเมนประสทธภาพของนกเตนโดยอตโนมต โดยใหนกเตนคนหนงท าการแสดงพรอมกบนกเตนทเปนตนแบบ (Gold-Standard Performance) และระบบยงน าเสนอภาพการตนแสดงการแสดงในรปแบบสภาพแวดลอมเสมอนจรงสามมต (3D Virtual Environment) งานวจยนใชกลอง Kinect ในการตรวจจบการเคลอนไหว และใช OpenNI ในการใหขอมลต าแหนงของขอตอ แลวน าขอมลต าแหนงของขอตอทตรวจจบไดของนกเตนทงสองคนมาเปรยบเทยบกนตามเวลาจรงและน าไปเปนสวนหนงในการใหคะแนนการเตน ผลการศกษาของงานวจยนแสดงใหเหนวา การตรวจจบการเคลอนไหวโดยใชกลอง Kinect และ OpenNI สามารถใหขอมลทเหมาะทน าไปใชในการประเมนประสทธภาพการเตนได และจากผลการทดสอบระบบทงานวจยนน าเสนอ แสดงใหเหนวาสามารถน าระบบไปใชในการสอนเตนออนไลนตามเวลาจรงได งานวจยของ K. Berger, K. Ruhl, Y. Schroeder, C. Bruemmer, A. Scholz, และ M. Magnor [22] ไดท าการศกษาเกยวกบการตรวจจบการเคลอนไหวแบบปราศจากการท าเครองหมายตามต าแหนงตางๆ บนรางกาย โดยใชกลอง Kinect หนงถงสตวในการตรวจจบ แลวน าภาพความลก (Depth Image) ทไดจากกลองในหลายๆ มมมองไปค านวณหาคาต าแหนงของขอตอของรางกายผถกตรวจจบ จากนนจะน าต าแหนงของขอตอไปสรางเปนโครงรางมนษย ตามทแสดงในรปท 2.19 ซงแตกตางจากวทยานพนธนทน าขอมลต าแหนงของขอตอทไดรบจาก OpenNI น าไปสรางเปนโครงรางมนษยโดยตรง ผลการศกษาของงานวจยนแสดงใหเหนวาการใชกลองหลายตวเพอเพมมมมองในการตรวจจบ ท าใหสามารถตดตามต าแหนงของขอตอไดอยางสม าเสมอ ผใชไมจ าเปนตองอยในบรเวณหนากลองตวใดตวหนงเสมอไป และสามารถชวยลดโอกาสทสวนของรางกายไมถกตรวจจบได อยางมนยส าคญ

28

รปท 2.19 การน าภาพความลกทไดจากกลอง Kinect ในหลายมมมองไปสรางเปนโครงรางมนษย [22]

วทยานพนธนมความคลายคลงกบงานวจยทกลาวมาขางตน ในเรองการใชกลอง Kinect และ OpenNI ในการตรวจจบการเคลอนไหวของรางกายมนษย แตมงเนนไปทางดานการหาวธการประกอบรวมโครงรางมนษยทกลองแตละตวตรวจจบไดใหเปนโครงรางมนษยเดยวกนทครบสมบรณ ในการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว ในบทนไดกลาวถงการแปลงทางเรขาคณต และการแปลงระบบพกด การตรวจจบการเคลอนไหว โดยใชกลอง Kinect และ OpenNI และงานวจยทเกยวของ ซงเปนหลกการและวธการทจะน ามาด าเนนงานวจยน

บทท 3 วธการด าเนนงานวจย บทนจะกลาวถงวธการประกอบรวมโครงรางมนษย ระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว การทดสอบวธการประกอบรวมโครงรางมนษย การสรางสถานการณการตรวจจบการเคลอนไหว และการพฒนาโปรแกรมสวน Client และ Server

3.1 วธการประกอบรวมโครงรางมนษย วธการประกอบรวมโครงรางมนษยทไดจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect หลายตว ประกอบดวย 7 ขนตอน ดงน 1. ก าหนดต าแหนงใดๆ บนพนททท าการตรวจจบ เปนต าแหนงสมมตทจะวางจดก าเนดของ Global

Coordinate System (GCS) เพอใหกลองทกตวใชอางองต าแหนงของกลองจากจดน โดยทศทางของแตละแกนของ GCS จะใชทศทางเชนเดยวกนกบแตละแกนของกลอง Kinect ตามทแสดงในรปท 2.9

2. น ากลองแตละตวทจะท าการตรวจจบมาวางทจดก าเนด GCS โดยจดวางใหจดก าเนดและทศทางของแตละแกนของกลองตรงกนกบจดก าเนดและทศทางของแตละแกนของ GCS

3. ท าการหมนกลองตามเขมนาฬกาไปยงทศทางทตองการใหกลองตรวจจบ และท าการวดขนาดมมทใชในการหมนกลองตามแกน X, Y และ Z ของจดก าเนด GCS ซงจะไดคา aX , aY และ aZ โดยคา aX จะเปนขนาดมมทเกดจากการกมหรอเงยกลอง คา aY จะเปนขนาดมมทเกดจากการหนกลอง และคา aZ จะเปนขนาดมมทเกดจากการเอยงกลอง ตวอยางของการหมนกลองแสดงในรปท 3.1 โดยในรปนจะเปนการหมนกลองตามแนวแกน Y ของ GCS ทท าใหเกดมม aY จากขนตอนท 2 เมอน ากลองไปจดวางทจดก าเนด GCS โดยจดวางใหจดก าเนดและทศทางของแตละแกนของกลองตรงกนกบจดก าเนดและทศทางของแตละแกนของ GCS แลว เมอมการหมนกลองตามแนวแกน Y ของ GCS จะท าใหเกดมมระหวางแกน X ของกลองกบแกน X ของ GCS และมมระหวางแกน Z ของกลองกบแกน Z ของ GCS ซงขนาดของมมนจะเปนคาของ aY

รปท 3.1 การหมนกลองทท าใหเกดคา aY

aY

แกน Y ของ GCS และของกลอง แกน X ของ GCS

แกน X ของกลอง

30

4. ท าการยายกลองไปยงต าแหนงตดตงทตองการใหกลองตรวจจบ และท าการวดระยะหางตามแนวแกน X, Y และ Z ของจดก าเนด GCS ไปยงต าแหนงจดก าเนดของกลอง ณ ต าแหนงทตดตง ซงจะไดคา tX , tY และ tZ หากการยายนนเปนการยายทยอนทศทางคาบวกของแกน X, Y และ Z ของจดก าเนด GCS ระยะทวดไดใหมคาตดลบ ยกตวอยางตามทแสดงในรปท 3.2 คา tZ ของการยายกลองในรปนตองเปนคาตดลบ

รปท 3.2 การยายกลองทท าใหเกดคา tX , tY และ tZ 5. น าคา aX , aY , aZ , tX , tY และ tZ ทวดไดมาแทนคาในสมการท 3.1 เพอสรางเมตรกซการแปลงของ

กลองตวนนๆ

TM =

1000)c( )c()s( )c()s(-

)c( )s( )s()s( )c(-)s( )s( )s()c( )c()c( )s()c( )s( )c()s( )s()s( )s( )c()c( )s(-)c( )c(

ZXYXYY

YXYZXZXYZXZYZ

XXYZXZXYZXZYZ

taaaaataaaaaaaaaaaataaaaaaaaaaaa

(3.1)

=

1000Z333231

Y232221

X131211

trrrtrrrtrrr

(3.2)

เมอก าหนดให TM คอ เมตรกซการแปลงของกลองใดๆ aX , aY และ aZ คอ ขนาดมมทใชในการหมนกลองตามแตละแกนของ GCS

tX , tY และ tZ คอ ระยะการยายกลองจากจดก าเนดของ GCS ในแตละแกน s(aX) แทน sin(aX) c(aX) แทน cos(aX)

tZ tX

tY

GCS

Y

X Z

X Z Y

31

6. น าคาต าแหนงของแตละขอตอทกลองตวนนตรวจจบไดมาคณกบเมตรกซการแปลง ตามทแสดงในสมการท 3.3 จะท าใหไดต าแหนงของขอตอทมคาอางองจากจดก าเนด GCS โดยมคา X, Y และ Z ตามทแสดงในสมการท 3.5, 3.6 และ 3.7 ตามล าดบ

P = TM P (3.3)

1ZP

PP

Y

X

=

1000Z333231

Y232221

X131211

trrrtrrrtrrr

1ZP

PP

Y

X

(3.4)

XP = r11 XP + r12 YP + r13 ZP + tX (3.5) YP = r21 XP + r22 YP + r23 ZP + tY (3.6) ZP = r31 XP + r32 YP + r33 ZP + tZ (3.7)

เมอก าหนดให P คอ จดพกดของขอตอใดๆ P คอ จดพกดของขอตอนนหลงท าการปรบระบบพกด 7. น าคาต าแหนงของแตละขอตอจากกลองทกๆ ตว ทฟลด Confidence มคาเปน 1 ในขณะนนๆ

มาค านวณหาคาเฉลย ตามทแสดงในสมการท 3.8 ซงจะท าใหไดคาต าแหนงเฉลยของขอตอนน น ามาใชเปนคาต าแหนงของขอตอทประกอบกนเปนโครงรางมนษยขนใหม

Q(X, Y, Z) = (

n

i 1

XPn1 ,

n

i 1

YPn1 ,

n

i 1

ZPn1 ) (3.8)

เมอก าหนดให Q คอ จดพกดเฉลยของขอตอใดๆ ทค านวณจากจดพกดของขอตอนนหลงจาก ท าการปรบระบบพกดตามกลองแตละตวแลว ทฟลด Confidence มคาเปน 1

ขนตอนท 1 - 6 จะเปนการปรบขอมลต าแหนงของขอตอใหมระบบพกดเดยวกน เนองจากกลอง Kinect แตละตวทใชในการตรวจจบการเคลอนไหว จะใชต าแหนงของกลองเปนต าแหนงจดก าเนด ท าใหต าแหนงของขอตอต าแหนงเดยวกนทกลองแตละตวตรวจจบได มคาแตกตางกน เพราะมต าแหนงจดก าเนดทเปนต าแหนงอางองตางกน จงตองมการก าหนดต าแหนง GCS ขนมา เพอใชอางองต าแหนงของกลองแตละตว และเพอปรบระบบพกดของขอมลต าแหนงของขอตอใหมระบบพกดอางองเดยวกน

32

3.2 ระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว เนองจากขอจ ากดในการใชงานกลอง Kinect ในขณะน สามารถตอและใชงานไดเพยงหนงกลอง ตอหนง USB Root Hub และคอมพวเตอรสวนใหญมเพยงหนง USB Root Hub เชนกน จงออกแบบระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว ใหเปนแบบ Client – Server ตามทแสดงในรปท 3.3 โดย Client จะเปนคอมพวเตอรทตอเขากบกลอง Kinect และมโปรแกรมทสงขอมล การตรวจจบการเคลอนไหวทตรวจจบไดไปยง Server ทเปนคอมพวเตอรทมโปรแกรมรบขอมล การตรวจจบจากกลองแตละตว และท าการประกอบรวมขอมลต าแหนงของขอตอใหเปนโครงรางมนษยตามเวลาจรง การออกแบบระบบใหเปนแบบ Client – Server น ท าใหสามารถเพมจ านวน Client ซงเปนการเพมจ านวนกลองทใชในการตรวจจบไดไมจ ากดโดยหลกการ

รปท 3.3 ระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว

3.3 การทดสอบวธการประกอบรวมโครงรางมนษย การวดความเหมาะสมของการใชคาต าแหนงเฉลยของขอตอทน าไปสรางเปนโครงรางมนษยประกอบรวมนน จะใชวธการค านวณหาระยะหางระหวางคาต าแหนงเฉลยกบคาต าแหนงหลงท าการปรบระบบพกดทกลองแตละตวตรวจจบไดตามแตละต าแหนงของขอตอ ซงสามารถค านวณไดจากสมการท 3.9 โดยจะค านวณเฉพาะขอตอทมคา Confidence เทากบ 1 เทานน d = 222 )()()( ZZYYXX PQPQPQ (3.9) เมอก าหนดให d คอ ระยะหางระหวางสองจดใดๆ ในสามมต

Client

Client Client

Server

Switch

33

หลงจากทไดระยะหางระหวางคาทงสองของทกต าแหนงของขอตอแลว จะท าการรวบรวมระยะหางทงหมดของทกเฟรมของการตรวจจบการเคลอนไหว แลวน าไปค านวณหาระยะหางเฉลยอกครง

3.4 การสรางสถานการณการตรวจจบการเคลอนไหว งานวจยนจะสรางสถานการณการตรวจจบการเคลอนไหวขนมา เพอทดสอบวธการประกอบรวมโครงรางมนษยทน าเสนอ โดยใชกลอง Kinect สามตวในการตรวจจบการเคลอนไหวของผใช 1 ทาน ก าหนดชอของกลองแตละตวเปน A, B และ C และจะจดวางกลองใหอยบนระนาบทขนานกบระนาบพนททท าการตรวจจบ สงจากระนาบพน 0.6 เมตร ตงกลองใหแกน Z ของกลองแตละตวท ามม 120 องศาตอกน หางออกไปจากจดศนยกลางบนระนาบพนทท าการตรวจจบการเคลอนไหว 2.5 เมตร โดยจดศนยกลางนจะถกก าหนดใหเปนต าแหนงของจดก าเนด GCS ตามทแสดงในรปท 3.4

รปท 3.4 แผนผงการจดวางกลองในสถานการณการตรวจจบการเคลอนไหว ทศทางของแกน X, Y และ Z ของกลองแตละตวและ GCS แสดงในรปท 3.5

GCS A

C B

Z X Z

Z Z

120 2.5 m

0.6 m

34

รปท 3.5 ระบบพกดของกลองแตละตวและ GCS ในพนททท าการตรวจจบการเคลอนไหว คาของตวแปร tX , tY , tZ , aX , aY และ aZ ทใชในการสรางเมตรกซการแปลงของกลองแตละตว จะมคาตามทแสดงในตารางท 3.1 ตารางท 3.1 คาของตวแปรทใชในการสรางเมตรกซการแปลง

ตวแปร aX aY aZ tX tY tZ กลอง A 0 180 0 0 0.6 2.50 กลอง B 0 300 0 2.165 0.6 -1.25 กลอง C 0 60 0 -2.165 0.6 -1.25

เมตรกซการแปลงของกลองแตละตวจะมคาตามทแสดงในสมการท 3.11, 3.13 และ 3.15

TMA =

10002.5)c(0 )c(180)s(0 )c(180)s(180-0.6)c(0 )s(180 )s(0)s(0 )c(0-)s(0 )s(180 )s(0)c(0 )c(0)c(180 )s(00.0)c(0 )s(180 )c(0)s(0 )s(0)s(0 )s(180 )c(0)c(0 )s(0-)c(180 )c(0

(3.10)

=

10002.51-000.60100.0001-

(3.11)

GCS

A

C

B Z

X Z Y

X

Z Y

X

Z X

Y

35

TMB =

10001.25-)c(0 )c(300)s(0 )c(300)s(300-0.6)c(0 )s(300 )s(0)s(0 )c(0-)s(0 )s(300 )s(0)c(0 )c(0)c(300 )s(0

2.165)c(0 )s(300 )c(0)s(0 )s(0)s(0 )s(300 )c(0)c(0 )s(0-)c(300 )c(0

(3.12)

=

10001.25-0.500.8670.6010

2.1650.867-00.5 (3.13)

TMC =

10001.25-)c(0 )c(60)s(0 )c(60)s(60-0.6)c(0 )s(60 )s(0)s(0 )c(0-)s(0 )s(60 )s(0)c(0 )c(0)c(60 )s(02.165-)c(0 )s(60 )c(0)s(0 )s(0)s(0 )s(60 )c(0)c(0 )s(0-)c(60 )c(0

(3.14)

=

10001.25-0.500.867-0.6010

2.1650.86700.5 (3.15)

เมอก าหนดให TMA คอ เมตรกซการแปลงของกลอง A TMB คอ เมตรกซการแปลงของกลอง B TMC คอ เมตรกซการแปลงของกลอง C

3.5 การพฒนาโปรแกรมสวน Client โปรแกรมสวน Client นจะเปนโปรแกรมทท าการตรวจจบการเคลอนไหวและแสดงภาพโครงรางของผใช จากนนจะสงขอมลการตรวจจบการเคลอนไหวไปยงโปรแกรม Server การพฒนาโปรแกรมสวนนจะพฒนาเพมเตมจากโปรแกรมตวอยางทมใหมากบ OpenNI โดยในสวน User Interface จะเพมฟอรมส าหรบกรอกชอกลอง IP Address และ Port ของเครอง Server ทจะสงขอมลการตรวจจบการเคลอนไหวไปให ตามทแสดงในรปท 3.6

36

รปท 3.6 ตวอยางโปรแกรมสวน Client ขอมลการตรวจจบการเคลอนไหวทจะสงไปยงโปรแกรม Server จะประกอบดวยชอกลอง และขอมลต าแหนงของขอตอทงหมด 15 ขอตอ แตละขอตอจะประกอบดวย หมายเลขแทนต าแหนงของขอตอ ก าหนดหมายเลขตามทแสดงในรปท 3.7 คา Confidence และคาพกด X, Y และ Z โดยน ามาเรยงตอกนเปนสาย String คนระหวางขอมลแตละคาดวยการเวนวรรค

รปท 3.7 การก าหนดหมายเลขแทนแตละต าแหนงของขอตอ

Torso

Neck Head

RightShoulder RightElbow

RightHand

LeftShoulder LeftElbow

LeftHand

RightHip

RightKnee

RightFoot

LeftKnee

LeftFoot

LeftHip

14

13

12

11

10

9

8 7

6 5

4 3

2

1 0

37

ตวอยางของโคดในการรวมคาต าแหนงของขอตอใหเปน String แสดงในรปท 3.8

if (joint == SkeletonJoint.Head) posedata += "0";

else if (joint == SkeletonJoint.Neck) posedata += "1";

else if (joint == SkeletonJoint.Torso) posedata += "2";

else if (joint == SkeletonJoint.LeftShoulder) posedata += "3";

else if (joint == SkeletonJoint.LeftElbow) posedata += "4";

else if (joint == SkeletonJoint.LeftHand) posedata += "5";

else if (joint == SkeletonJoint.RightShoulder) posedata += "6";

else if (joint == SkeletonJoint.RightElbow) posedata += "7";

else if (joint == SkeletonJoint.RightHand) posedata += "8";

else if (joint == SkeletonJoint.LeftHip) posedata += "9";

else if (joint == SkeletonJoint.LeftKnee) posedata += "10";

else if (joint == SkeletonJoint.LeftFoot) posedata += "11";

else if (joint == SkeletonJoint.RightHip) posedata += "12";

else if (joint == SkeletonJoint.RightKnee) posedata += "13";

else if (joint == SkeletonJoint.RightFoot) posedata += "14";

posedata += " " + pos.Confidence +

" " + Math.Round(pos.Position.X / 1000, 3) +

" " + Math.Round(pos.Position.Y / 1000, 3) +

" " + Math.Round(pos.Position.Z / 1000, 3) + " ";

รปท 3.8 โคดการรวมคาต าแหนงของขอตอใหเปน String

หลงจากทรวมคาต าแหนงของขอตอใหเปนขอมลการตรวจจบการเคลอนไหวทพรอมทจะสงไปยงโปรแกรม Server แลว ตวอยางของขอมลการตรวจจบการเคลอนไหวในหนงเฟรมแสดงในรปท 3.9 และตวอยางของโคดในการสงขอมลการตรวจจบการเคลอนไหวแสดงในรปท 3.10

B // ชอกลอง 0 1 -0.069 0.792 2.273 // Head Confidence X Y Z

1 1 -0.011 0.572 2.292 // Neck Confidence X Y Z

2 1 -0.027 0.37 2.277 // Torso Confidence X Y Z

3 1 -0.116 0.575 2.371 // LeftShoulder Confidence X Y Z

4 1 -0.072 0.376 2.539 // LeftElbow Confidence X Y Z

5 0 -0.156 0.129 2.583 // LeftHand Confidence X Y Z

6 1 0.093 0.57 2.213 // RightShoulder Confidence X Y Z

7 1 0.229 0.472 2.007 // RightElbow Confidence X Y Z

8 1 0.139 0.706 1.9 // RightHand Confidence X Y Z

9 1 -0.081 0.169 2.291 // LeftHip Confidence X Y Z

10 1 -0.161 -0.2 2.39 // LeftKnee Confidence X Y Z

11 1 -0.113 -0.598 2.466 // LeftFoot Confidence X Y Z

12 1 -0.006 0.168 2.235 // RightHip Confidence X Y Z

13 1 0.02 -0.182 2.099 // RightKnee Confidence X Y Z

14 1 0.077 -0.577 2.156 // RightFoot Confidence X Y Z

รปท 3.9 ตวอยางขอมลการตรวจจบการเคลอนไหวในหนงเฟรม

38

try

{

TcpClient clientSocket = new TcpClient();

clientSocket.Connect(“127.0.0.1”, 8888);

byte[] outStream = System.Text.Encoding.ASCII.GetBytes(

client_name + " " + posedata + '$');

NetworkStream serverStream = clientSocket.GetStream();

serverStream.Write(outStream, 0, outStream.Length);

serverStream.Flush();

serverStream.Close();

clientSocket.Close();

}

catch (Exception ex)

{

Console.WriteLine(ex);

}

รปท 3.10 โคดการสงขอมลการตรวจจบการเคลอนไหว

ขอมลการตรวจจบการเคลอนไหวจะถกสงไปยงโปรแกรม Server ทกๆ เฟรมของการตรวจจบการเคลอนไหว หากก าหนด Frame rate ในการตรวจจบการเคลอนไหวเปน 30 เฟรมตอวนาท กจะมขอมลการตรวจจบการเคลอนไหวทจะถกสงไปยงโปรแกรม Server จ านวน 30 ขอมลตอวนาท ดวยเชนกน

3.6 การพฒนาโปรแกรมสวน Server โปรแกรมสวน Server นจะเปนโปรแกรมทท าการรบขอมลการตรวจจบการเคลอนไหวทสงมาจากโปรแกรม Client แสดงภาพโครงรางมนษยทกลองแตละตวตรวจจบได และท าการประกอบขอมลการตรวจจบการเคลอนไหวใหเปนโครงรางมนษยประกอบรวมตลอดเวลาทไดรบขอมล ตวอยาง User Interface ของโปรแกรมสวน Server แสดงในรปท 3.11 ซงประกอบดวยสวนแสดงภาพโครงรางมนษย ฟอรมส าหรบกรอก IP Address และ Port ทเปดรบขอมลของเครอง Server และตารางในการใสคาของตวแปร aX , aY , aZ , tX , tY และ tZ ซงแสดงคาต าแหนงของแตละขอตอตามกลองแตละตว

39

รปท 3.11 ตวอยางโปรแกรมสวน Server ในโปรแกรมนจะมการสรางคลาส Skeleton และ SkeletonJoint เพอเปนตวแทนขอมลโครงรางมนษยและขอตอตามทแสดงในรปท 3.12 โดยแตละ Skeleton จะมฟลด SkeletonJoint จ านวน 15 ตว เพอเปนตวแทนขอมลของแตละต าแหนงของขอตอ และ SkeletonJoint แตละตวจะมฟลดประเภท double จ านวน 4 ตว ไดแก ฟลด F เปนตวแทนของคา Confidence และฟลด X, Y และ Z แทนคาพกด X, Y และ Z ตามล าดบ

class Skeleton

{

private const byte NUM_JOINT = 15;

public SkeletonJoint[] joints;

public Skeleton()

{

joints = new SkeletonJoint[NUM_JOINT];

for (byte j = 0; j < NUM_JOINT; j++)

{

joints[j] = new SkeletonJoint();

}

}

}

class SkeletonJoint

{

public double F, X, Y, Z;

}

รปท 3.12 คลาส Skeleton และ SkeletonJoint

A

B

C

Composed view

40

ออบเจกตของ Skeleton ในโปรแกรมน จะมทงหมด 7 ตว โดยรวมอยในอาเรยของ Skeleton (skeletons) เพอความสะดวกในการเรยกใชงาน ซงตวท 0 - 2 จะเปนตวแทนของโครงรางมนษยทมขอมลต าแหนงของขอตอตามทไดรบจากกลอง A, B และ C ตามล าดบ ตวท 3 - 5 จะเปนตวแทนของโครงรางมนษยทมขอมลต าแหนงของขอตอทผานการปรบระบบพกดตามกลองแตละตวแลว และตวท 6 จะเปนตวแทนของโครงรางมนษยทเกดจากการน าขอมลต าแหนงของขอตอจากโครงรางมนษยตวท 3 – 5 มาประกอบรวมกน จากสถานการณการตรวจจบการเคลอนไหวทจดท าขน โดยใชกลอง Kinect สามตวในการตรวจจบ ในโปรแกรมน จงออกแบบใหมสวนแสดงภาพโครงรางมนษย 4 สวน ตามทแสดงในรปท 3.13 โดยสวนแสดงภาพท 1 – 3 จะใชแสดงภาพโครงรางมนษยทกลองแตละตวตรวจจบได และสวนท 4 จะใชแสดงภาพโครงรางมนษยประกอบรวม

รปท 3.13 สวนแสดงภาพโครงรางมนษยทง 4 สวน แตละสวนแสดงภาพโครงรางมนษยจะถกผกกบออบเจกตของคลาส View โดยโครงสรางของคลาส View จะมลกษณะตามทแสดงในรปท 3.14 สวนแสดงภาพทงหมดจะรวมอยในอาเรยของ View (views) เพอความสะดวกในการเรยกใชงาน

A (สวนแสดงภาพ 1)

B (สวนแสดงภาพ 2)

C (สวนแสดงภาพ 3)

Composed view (สวนแสดงภาพ 4)

41

class View

{

private const byte NUM_JOINT = 15;

private Viewport3D view;

private byte num_skeleton; // เกบจ านวนโครงรางทงหมดทมใน View น public Skeleton[] skeletons; // เกบแตละโครงรางในอาเรย เพอความสะดวกในการใชงาน public View(Viewport3D view, byte num_skeleton) { }

public void Clear() { } // ลบภาพโครงรางทงหมด public void Draw() { } // วาดภาพโครงรางทงหมด }

รปท 3.14 โครงสรางของคลาส View

แตละออบเจกตของคลาส View จะผกอยกบออบเจกตของคลาส Skeleton ตามทแสดงในรปท 3.15

รปท 3.15 สวนแสดงภาพโครงรางมนษยทง 4 สวน ส าหรบสวนของการวาดภาพโครงรางมนษยจะใชการวาดเสนตรงระหวางคาต าแหนงของขอตอ โดยมโคดตวอยางตามทแสดงในรปท 3.16 หมายเลขทใชแทนแตละต าแหนงของขอตอจะก าหนดตามทแสดงในรปท 3.7

A (สวนแสดงภาพ 1) views[0]

-skeletons[0]

B (สวนแสดงภาพ 2) views[1]

-skeletons[1]

C (สวนแสดงภาพ 3) views[2]

-skeletons[2]

Composed view (สวนแสดงภาพ 4) views[3]

- skeletons[3]

- skeletons[4]

- skeletons[5]

- skeletons[6]

42

DrawLine(0, 1); // วาดเสนระหวางต าแหนง Head กบ Neck DrawLine(1, 2); // วาดเสนระหวางต าแหนง Neck กบ Torso DrawLine(1, 3); // วาดเสนระหวางต าแหนง Neck กบ LeftShoulder DrawLine(1, 6); // วาดเสนระหวางต าแหนง Neck กบ RightShoulder DrawLine(2, 9); // วาดเสนระหวางต าแหนง Torso กบ LeftHip DrawLine(2, 12); // วาดเสนระหวางต าแหนง Torso กบ RightHip DrawLine(3, 4); // วาดเสนระหวางต าแหนง LeftShoulder กบ LeftElbow DrawLine(4, 5); // วาดเสนระหวางต าแหนง LeftElbow กบ LeftHand DrawLine(6, 7); // วาดเสนระหวางต าแหนง RightShoulder กบ RightElbow DrawLine(7, 8); // วาดเสนระหวางต าแหนง RightElbow กบ RightHand DrawLine(9, 10); // วาดเสนระหวางต าแหนง LeftHip กบ LeftKnee DrawLine(10, 11); // วาดเสนระหวางต าแหนง LeftKnee กบ LeftFoot DrawLine(12, 13); // วาดเสนระหวางต าแหนง RightHip กบ RightKnee DrawLine(13, 14); // วาดเสนระหวางต าแหนง RightKnee กบ RightFoot

รปท 3.16 โคดการวาดภาพโครงรางมนษย

ส าหรบสวนของการสรางเมตรกซการแปลงของกลองแตละตวมโคดตวอยางตามทแสดงในรปท 3.17 โดยจะค านวณหาคา sin และ cos ของตวแปรไวกอน แลวน าไปค านวณเพอสรางเมตรกซการแปลงของกลองตามสมการท 3.1

double SAx = Math.Sin(Deg2Rad(Ax));

double CAx = Math.Cos(Deg2Rad(Ax));

double SAy = Math.Sin(Deg2Rad(Ay));

double CAy = Math.Cos(Deg2Rad(Ay));

double SAz = Math.Sin(Deg2Rad(Az));

double CAz = Math.Cos(Deg2Rad(Az));

double[,] tm = new double[4, 4];

tm[0, 0] = CAz * CAy;

tm[0, 1] = (CAz * SAy * SAx) - (SAz * CAx);

tm[0, 2] = (SAz * SAx) + (CAz * SAy * CAx);

tm[0, 3] = Tx;

tm[1, 0] = SAz * CAy;

tm[1, 1] = (CAz * CAx) + (SAz * SAy * SAx);

tm[1, 2] = (SAz * SAy * CAx) - (CAz * SAx);

tm[1, 3] = Ty;

tm[2, 0] = SAy * -1;

tm[2, 1] = CAy * SAx;

tm[2, 2] = CAy * CAx;

tm[2, 3] = Tz;

tm[3, 0] = tm[3, 1] = tm[3, 2] = 0;

tm[3, 3] = 1;

รปท 3.17 โคดการค านวณเพอสรางเมตรกซการแปลง

43

เมอสงใหโปรแกรมท างาน โปรแกรมจะสราง Thread ทม Infinite Loop ขนมา คอยรบขอมลการตรวจจบการเคลอนไหวอยตลอดเวลาทโปรแกรมท างาน ตวอยางของโคดการท างานของ Thread แสดงในรปท 3.18

private void ListenData()

{

TcpListener server = null;

string data = null;

try

{

IPAddress localAddr = IPAddress.Parse(“127.0.0.1”);

server = new TcpListener(localAddr, 8888);

server.Start();

byte[] bytes = new byte[2000];

while (true) // Infinite loop

{

if (!server.Pending()) continue;

data = null;

TcpClient client = server.AcceptTcpClient();

NetworkStream stream = client.GetStream();

stream.Read(bytes, 0, bytes.Length); // รบขอมลทสงมา data = System.Text.Encoding.ASCII.GetString(bytes);

data = data.Substring(0, data.IndexOf('$'));

this.Dispatcher.Invoke(

System.Windows.Threading.DispatcherPriority.Normal,

(MethodInvoker)delegate

{

SetData(data); // น าขอมลไปแสดงผล });

client.Close();

}

}

catch(Exception ex){System.Windows.MessageBox.Show(ex.Message);}

finally { server.Stop(); }

}

รปท 3.18 โคดการท างานของ Thread

เมอไดรบขอมลการตรวจจบการเคลอนไหวทสงมาจากโปรแกรม Client ขอมลนนจะถกตรวจสอบวาเปนขอมลทมาจากกลองใด จากนนขอมลการตรวจจบการเคลอนไหวจะถกตดแบงเปนขอมลต าแหนงของแตละขอตอ และท าการวาดภาพโครงรางมนษยตามทกลองตวนนตรวจจบได ตวอยางโคดของการท างานในสวนนแสดงในรปท 3.19

44

private void SetData(string data)

{

string[] t = data.Split(' ');

byte cam = 0;

if (t[0].Equals("A")) cam = 0; // ตรวจสอบวาเปนขอมลจากกลองใด else if (t[0].Equals("B")) cam = 1;

else if (t[0].Equals("C")) cam = 2;

views[cam].Clear(); // ลบภาพโครงรางเกา for (byte i = 0, j = 1, jn = 0; i < NUM_JOINT; i++)

{

jn = byte.Parse(t[j++]);

skeletons[cam].joints[jn].F = double.Parse(t[j++]);

skeletons[cam].joints[jn].X = double.Parse(t[j++]);

skeletons[cam].joints[jn].Y = double.Parse(t[j++]);

skeletons[cam].joints[jn].Z = double.Parse(t[j++]);

}

views[cam].Draw(); // วาดภาพโครงรางใหม }

รปท 3.19 โคดการแบงแยกขอมลการตรวจจบการเคลอนไหว

เมอไดรบขอมลต าแหนงของขอตอของกลองนนทงหมดแลว จากนนจะน าขอมลต าแหนงของ ขอตอไปคณกบเมตรกซการแปลงของกลองตวนน เพอปรบระบบพกดของขอมลต าแหนงของขอตอ แลวน าไปเกบในอกโครงรางมนษย ส าหรบคา Confidence ของขอตอจะไมมการเปลยนแปลง ตวอยางโคดการปรบระบบพกดของขอมลต าแหนงของขอตอแสดงในรปท 3.20

for (byte i = 0, n = 3; i < 3; i++, n++)

{

for (byte j = 0; j < NUM_JOINT; j++)

{

double x = skeletons[i].joints[j].X;

double y = skeletons[i].joints[j].Y;

double z = skeletons[i].joints[j].Z;

skeletons[n].joints[j].F = skeletons[i].joints[j].F;

skeletons[n].joints[j].X =

(tranMat[i][0, 0] * x) + (tranMat[i][0, 1] * y) +

(tranMat[i][0, 2] * z) + tranMat[i][0, 3];

skeletons[n].joints[j].Y =

(tranMat[i][1, 0] * x) + (tranMat[i][1, 1] * y) +

(tranMat[i][1, 2] * z) + tranMat[i][1, 3], 2);

skeletons[n].joints[j].Z =

(tranMat[i][2, 0] * x) + (tranMat[i][2, 1] * y) +

(tranMat[i][2, 2] * z) + tranMat[i][2, 3], 2);

}

}

รปท 3.20 โคดการปรบระบบพกดของขอมลต าแหนงของขอตอ

45

หลงจากทไดขอมลต าแหนงของขอตอทผานการปรบระบบพกดจากกลองทกตวแลว จะน าขอมลต าแหนงของขอตอแตละต าแหนงไปค านวณหาคาต าแหนงเฉลย โดยจะเลอกเฉพาะขอมลทมคา Confidence เปน 1 เทานน แลวน าคาต าแหนงเฉลยไปวาดโครงรางมนษยประกอบรวม ตวอยางโคดการค านวณหาคาต าแหนงเฉลยแสดงในรปท 3.21

views[3].Clear(); // ลบภาพโครงรางเกา double x, y, z;

for (byte j = 0, d = 0; j < NUM_JOINT; j++)

{

x = y = z = d = 0;

for (byte i = 3; i < 6; i++)

{

if (skeletons[i].joints[j].F == 1) {

x += skeletons[i].joints[j].X;

y += skeletons[i].joints[j].Y;

z += skeletons[i].joints[j].Z;

d++;

}

}

if (d > 0)

{

skeletons[6].joints[j].F = 1;

skeletons[6].joints[j].X = x / d;

skeletons[6].joints[j].Y = y / d;

skeletons[6].joints[j].Z = z / d;

}

else

{

skeletons[6].joints[j].F = 0;

}

}

views[3].Draw(); // วาดภาพโครงรางใหม

รปท 3.21 โคดการค านวณหาคาต าแหนงเฉลย

ในสวนของการหาระยะหางระหวางคาต าแหนงเฉลยกบคาต าแหนงทผานการปรบระบบพกดของ ขอตอทไดจากกลองแตละตว ทน าไปใชในการเปรยบเทยบถงความเหมาะสมของการใชคาต าแหนงเฉลยทน าไปสรางเปนโครงรางมนษยประกอบรวมนน การค านวณหาระยะหางระหวางคาต าแหนง ทงสอง จะใชคลาส Vector3D มาชวยในการค านวณหาคา โดยจะสรางออบเจกตของคลาส Vector3D จากการน าคาต าแหนงทงสองมาลบกน ระยะหางระหวางคาต าแหนงทงสองจะเทากบการเรยกใชฟลด Length ของคลาส Vector3D และหากคา Confidence ของขอตอใดมคาไมเทากบ 1 จะไมถกน าไปค านวณหาระยะหาง โคดการค านวณหาระยะหางระหวางคาทงสองแสดงในรปท 3.22

46

Vector3D vec;

for (byte i = 3; i < 6; i++)

{

for (byte j = 0; j < NUM_JOINT; j++)

{

if(skeletons[i].joints[j].F == 1 && skeletons[6].joints[j].F == 1)

{

vec = new Vector3D(

skeletons[6].joints[j].X - skeletons[i].joints[j].X,

skeletons[6].joints[j].Y - skeletons[i].joints[j].Y,

skeletons[6].joints[j].Z - skeletons[i].joints[j].Z);

Console.Write(vec.Length);

}

else Console.WriteLine("-");

}

}

รปท 3.22 โคดการค านวณหาระยะหาง

หลงจากทไดระยะหางระหวางคาต าแหนงทงสองแลว จะน าระยะหางทไดทงหมดตลอดการตรวจจบการเคลอนไหวในแตละครงไปค านวณหาคาเฉลยของระยะหางอกครงหนง ในบทนไดกลาวถงวธการประกอบรวมโครงรางมนษย ระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว การพฒนาโปรแกรมส าหรบการตรวจจบการเคลอนไหว และก าหนดการสรางสถานการณการตรวจจบการเคลอนไหว เพอท าการทดสอบวธการและระบบทน าเสนอ

บทท 4 ผลการวจย บทนจะกลาวถงการทดสอบวธการทน าเสนอ ผลลพธจากวธการประกอบรวมโครงรางมนษย และผลการตรวจจบการเคลอนไหวจากสถานการณทจดท าขน

4.1 การทดสอบวธการทน าเสนอ งานวจยนท าการทดสอบวธการประกอบรวมโครงรางมนษยทน าเสนอ โดยพฒนาโปรแกรมสวน Client และ Server ดวย Microsoft Visual Studio 2010 โดยใชภาษา C# และใช .NET Framework เวอรชน 3.5 ใช OpenNI เวอรชน 1.5.2.7 ทม PrimeSense NiTE เวอรชน 1.5.2.7 เปน Middleware การสรางสถานการณการตรวจจบการเคลอนไหวโดยใชกลอง Kinect สามตวในการตรวจจบ จะจดวางกลองตามแผนผงทก าหนดไวในหวขอท 3.4 โดยใชเครองคอมพวเตอรทม CPU Dual-Core ความเรว 2.10 GHz และม Windows 7 Professional เปนระบบปฏบตการ จ านวน 2 เครอง โดยเครองแรก (PC1) ม 2 USB Root Hub ท าใหสามารถตอเขากบกลอง Kinect ได 2 ตว จงก าหนดใหกลอง A และ C ตอเขากบคอมพวเตอรเครองแรกน สวนคอมพวเตอรเครองทสอง (PC2) ก าหนดใหเปนเครอง Server และตอเขากบกลอง B คอมพวเตอรทงสองเครองตอเชอมกนดวยสาย UTP (สาย LAN) ตามแผนผงทแสดงในรปท 4.1 ผใชทถกท าการตรวจจบการเคลอนไหวในสถานการณน เปนเพศชาย และมความสงประมาณ 165 เซนตเมตร

รปท 4.1 แผนผงการจดวางอปกรณในการตรวจจบการเคลอนไหว

GCS A

C B

120 2.5 m

0.6 m

PC1 (2 Clients)

PC2 (Server & Client)

UTP wire

48

ผจดท างานวจยไดท าการตรวจจบการเคลอนไหวของผใชอยหลายสบครง แตไดเลอกผลการตรวจจบการเคลอนไหวทนาสนใจมาแสดงในวทยานพนธน จ านวน 4 ตวอยาง โดยทง 4 ตวอยางเปนการตรวจจบการเคลอนไหวในการทดลองครงเดยวกน จดวางกลองเพยงครงเดยวกอนเรมท าการตรวจจบ และผใชทถกตรวจจบสวมใสเสอผาชดเดยวกนตลอดการตรวจจบการเคลอนไหว ตวอยางของขอมลการตรวจจบการเคลอนไหวทถกสงเขามายงเครอง Server แสดงในรปท 4.2 จะเหนไดวาล าดบของขอมลทไดรบจากเครอง Client มล าดบทไมคงทแนนอน ซงนาจะขนอยกบสภาวะของเครอขายในขณะนน อยางไรกตาม การแสดงภาพโครงรางมนษยประกอบรวมทเกดจากการใชกลองสามตวในการตรวจจบการเคลอนไหวพรอมกนในงานวจยนนน ยงมการแสดงผลทเปนปกตเชนเดยวกบการใชกลองตวเดยวตรวจจบ ไมมการแสดงภาพโครงรางทลาชากวาจนสงเกตได

A 0 1 0.012 0.738 2.151 1 1 0 0.547 2.1 3 1 0.09 0.559 1.998 4 1 0.12…

B 0 1 0.014 0.74 2.352 1 1 0.043 0.55 2.307 3 1 0.079 0.523 2.455 4 0…

C 0 1 -0.028 0.722 2.319 1 1 -0.029 0.522 2.353 3 1 -0.143 0.508 2.28…

A 0 1 0.027 0.743 2.158 1 1 0.015 0.554 2.107 3 1 0.111 0.566 2.011 4…

B 0 1 -0.007 0.738 2.374 1 1 0.018 0.545 2.332 3 1 0.025 0.516 2.482 …

C 0 1 -0.045 0.721 2.299 1 1 -0.049 0.523 2.33 3 1 -0.157 0.51 2.254 …

A 0 1 0.054 0.748 2.152 1 1 0.041 0.56 2.108 3 1 0.143 0.569 2.018 4 …

B 0 1 -0.024 0.742 2.401 1 1 0.001 0.548 2.359 3 1 -0.013 0.517 2.509…

A 0 1 0.083 0.754 2.155 1 1 0.069 0.566 2.109 3 1 0.178 0.572 2.028 4…

C 0 1 -0.063 0.725 2.282 1 1 -0.069 0.525 2.307 3 1 -0.173 0.514 2.22…

B 0 1 -0.038 0.745 2.432 1 1 -0.013 0.548 2.383 3 1 -0.04 0.515 2.532…

A 0 1 0.111 0.753 2.151 1 1 0.099 0.567 2.108 3 1 0.214 0.572 2.035 4…

C 0 1 -0.079 0.727 2.261 1 1 -0.089 0.524 2.282 3 1 -0.186 0.515 2.19…

B 0 1 -0.052 0.745 2.455 1 1 -0.023 0.548 2.406 3 1 -0.049 0.514 2.55…

A 0 1 0.141 0.762 2.148 1 1 0.13 0.575 2.106 3 1 0.25 0.578 2.044 4 1…

C 0 1 -0.101 0.729 2.23 1 1 -0.113 0.526 2.252 3 1 -0.205 0.517 2.156…

B 0 1 -0.089 0.747 2.484 1 1 -0.045 0.551 2.44 3 1 -0.079 0.516 2.589…

A 0 1 0.168 0.765 2.141 1 1 0.163 0.576 2.101 3 1 0.289 0.58 2.051 4 …

C 0 1 -0.112 0.729 2.202 1 1 -0.129 0.527 2.229 3 1 -0.218 0.517 2.12…

B 0 1 -0.099 0.745 2.506 1 1 -0.056 0.549 2.47 3 1 -0.098 0.515 2.617…

A 0 1 0.199 0.764 2.137 1 1 0.193 0.574 2.097 3 1 0.323 0.576 2.055 4…

C 0 1 -0.127 0.731 2.182 1 1 -0.147 0.532 2.207 3 1 -0.231 0.525 2.10…

A 0 1 0.229 0.761 2.139 1 1 0.218 0.571 2.094 3 1 0.35 0.568 2.065 4 …

B 0 1 -0.112 0.743 2.527 1 1 -0.068 0.547 2.495 3 1 -0.13 0.512 2.633…

C 0 1 -0.14 0.733 2.159 1 1 -0.164 0.535 2.183 3 1 -0.244 0.528 2.075…

A 0 1 0.25 0.755 2.136 1 1 0.235 0.566 2.089 3 1 0.37 0.559 2.069 4 1…

B 0 1 -0.125 0.74 2.554 1 1 -0.079 0.546 2.52 3 1 -0.154 0.507 2.65 4…

C 0 1 -0.154 0.733 2.142 1 1 -0.182 0.533 2.16 3 1 -0.262 0.531 2.053…

B 0 1 -0.135 0.741 2.577 1 1 -0.086 0.548 2.541 3 1 -0.169 0.505 2.66…

รปท 4.2 ตวอยางขอมลการตรวจจบการเคลอนไหวทถกสงเขามายงเครอง Server

49

4.2 ผลลพธจากวธการประกอบรวมโครงรางมนษย ตวอยางโครงรางมนษยทไดจากสถานการณการตรวจจบการเคลอนไหวทจดท าขนเมอผานขนตอนตามวธการประกอบรวมโครงรางมนษยทน าเสนอในหวขอท 3.1 แสดงในรปท 4.3 โดยแถวแรก จะเปนภาพโครงรางมนษยทกลองแตละตวตรวจจบไดจากต าแหนงทกลองตง โดยแสดงเฉพาะขอตอทฟลด Confidence มคาเทากบ 1 เทานน แสดงเรยงล าดบตามกลอง A, B และ C แถวทสองจะเปนภาพโครงรางมนษยของแตละกลองหลงจากทท าการปรบขอมลต าแหนงของขอตอใหใชจดก าเนด GCS เปนต าแหนงอางองเดยวกนแลว (ภาพ A, B และ C) และแถวสดทายจะเปนภาพของโครงรางมนษยทท าการปรบขอมลต าแหนงของขอตอแลวน ามาแสดงซอนทบกน (Superimposed View : SV) และภาพโครงรางมนษยทสรางขนจากต าแหนงของขอตอเฉลย (Composed View : CV)

A

B

C

A

B

C

SV

CV

รปท 4.3 โครงรางมนษยทไดจากการตรวจจบ แสดงตามขนตอนการประกอบรวม

50

4.3 ตวอยางผลการตรวจจบการเคลอนไหวท 1 การตรวจจบการเคลอนไหวนมทงหมด 1 ,705 เฟรม เปนเวลาประมาณ 57 วนาท โครงรางมนษย ทกลองแตละตวตรวจจบได และโครงรางมนษยประกอบรวมในบางเฟรมแสดงในรปท 4.4 ระยะหางเฉลยระหวางคาต าแหนงเฉลยกบคาต าแหนงทไดจากกลองแตละตวหลงจากท าการปรบระบบพกดของแตละขอตอ และคาเบยงเบนมาตรฐาน (Standard Deviation : S.D.) ของขอมลจากการตรวจจบการเคลอนไหวน แสดงในตารางท 4.1 ระยะหางเฉลยของคาต าแหนงระหวางกนทมากทสดในการตรวจจบน คอทต าแหนง LeftHand ของกลอง C มระยะหางเฉลยประมาณ 8.32 เซนตเมตร และระยะหางเฉลยของคาต าแหนงระหวางกนทนอยทสดในการตรวจจบน คอทต าแหนง LeftFoot ของกลอง A มระยะหางเฉลยประมาณ 2.69 เซนตเมตร ตารางท 4.1 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 1 (หนวย : เซนตเมตร)

ขอตอ กลอง A กลอง B กลอง C

ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. Head 7.51 2.01 7.84 0.91 8.18 0.99 Neck 5.84 2.37 4.86 1.58 5.44 1.14 Torso 5.70 2.64 3.77 2.23 4.30 1.77 LeftHand 6.95 3.49 6.57 1.59 8.32 1.97 LeftElbow 3.82 3.08 5.18 2.47 5.39 1.52 LeftShoulder 4.93 4.04 5.44 3.39 4.83 2.02 RightHand 5.07 1.61 5.78 1.81 4.37 1.79 RightElbow 6.04 1.94 7.20 2.01 4.09 1.37 RightShoulder 8.01 2.34 8.00 1.77 5.53 1.16 LeftHip 7.42 3.65 5.84 2.90 7.93 3.86 LeftKnee 5.08 2.18 4.18 2.10 5.07 2.24 LeftFoot 2.69 1.84 4.65 1.24 4.15 1.52 RightHip 6.26 2.83 5.33 2.83 6.14 2.72 RightKnee 5.20 2.66 3.94 2.62 4.32 2.79 RightFoot 2.92 2.88 4.12 1.49 4.37 1.78

51

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 61 frame = 555

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 1,378 frame = 1,429

รปท 4.4 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 1

52

จากรปท 4.4 ต าแหนง Head ของโครงรางมนษยของกลอง A ในเฟรมท 61, 555 และ 1,378 มคา Confidence นอยกวา 1 จงไมถกวาดอยในโครงรางมนษย เพราะผถกตรวจจบอยใกลกบต าแหนงทตงของกลอง A มากเกนไป ท าใหกลอง A ไมสามารถตรวจจบศรษะของผถกตรวจจบได เฟรมท 1,429 แสดงใหเหนถงกลองทมมมมองของการตรวจจบทดทสดในขณะนนคอ กลอง B สวนกลอง A และ C ตรวจจบผถกตรวจจบไดจากทางดานขาง ซงท าใหโครงรางมนษยของกลอง A และ C แตกตางจากโครงรางมนษยทไดจากกลอง B และท าใหโครงรางมนษยประกอบรวมแตกตางจากกลอง B เลกนอย

53

4.4 ตวอยางผลการตรวจจบการเคลอนไหวท 2 การตรวจจบการเคลอนไหวนมทงหมด 1 ,937 เฟรม เปนเวลาประมาณ 65 วนาท โครงรางมนษย ทกลองแตละตวตรวจจบได และโครงรางมนษยประกอบรวมในบางเฟรมแสดงในรปท 4.5 ระยะหางเฉลยระหวางคาต าแหนงเฉลยกบคาต าแหนงทไดจากกลองแตละตวหลงจากท าการปรบระบบพกดของแตละขอตอ และคาเบยงเบนมาตรฐาน (S.D.) ของขอมลจากการตรวจจบการเคลอนไหวน แสดงในตารางท 4.2 ระยะหางเฉลยของคาต าแหนงระหวางกนทมากทสดในการตรวจจบน คอทต าแหนง Head ของกลอง C มระยะหางเฉลยประมาณ 10.90 เซนตเมตร และระยะหางเฉลยของคาต าแหนงระหวางกนทนอยทสดในการตรวจจบน คอทต าแหนง LeftFoot ของกลอง B มระยะหางเฉลยประมาณ 3.05 เซนตเมตร ตารางท 4.2 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 2 (หนวย : เซนตเมตร)

ขอตอ กลอง A กลอง B กลอง C

ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. Head 8.12 1.56 10.16 1.41 10.90 1.48 Neck 5.50 1.08 7.31 1.26 9.39 1.94 Torso 4.88 1.06 5.92 1.37 7.94 2.02 LeftHand 5.36 1.28 6.86 0.99 10.13 1.60 LeftElbow 6.28 1.76 5.69 1.50 8.40 2.21 LeftShoulder 6.63 1.99 6.72 2.14 8.59 2.66 RightHand 6.16 1.67 8.98 1.28 9.95 2.33 RightElbow 6.94 1.73 6.75 1.84 10.22 3.11 RightShoulder 7.93 2.29 6.62 1.98 9.79 3.04 LeftHip 4.75 1.52 4.97 1.82 7.19 1.41 LeftKnee 4.65 1.36 5.69 1.58 7.81 2.04 LeftFoot 7.76 1.59 3.05 1.58 9.69 1.78 RightHip 5.18 1.62 6.75 2.11 8.99 2.01 RightKnee 5.17 1.59 7.31 2.10 10.55 2.23 RightFoot 6.99 2.08 4.63 1.73 10.26 2.66

54

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 104 frame = 944

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 1,799 frame = 1,855

รปท 4.5 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 2 จากรปท 4.5 เฟรมท 104 แสดงใหเหนถงกลองทมมมมองของการตรวจจบทไมดทสดในขณะนนคอ กลอง C และท าใหโครงรางมนษยของกลอง C แตกตางจากโครงรางมนษยของกลอง A และ B

55

4.5 ตวอยางผลการตรวจจบการเคลอนไหวท 3 การตรวจจบการเคลอนไหวนมทงหมด 1,701 เฟรม เปนเวลาประมาณ 57 วนาท โครงรางมนษย ทกลองแตละตวตรวจจบได และโครงรางมนษยประกอบรวมในบางเฟรมแสดงในรปท 4.6 ระยะหางเฉลยระหวางคาต าแหนงเฉลยกบคาต าแหนงทไดจากกลองแตละตวหลงจากท าการปรบระบบพกดของแตละขอตอ และคาเบยงเบนมาตรฐาน (S.D.) ของขอมลจากการตรวจจบการเคลอนไหวน แสดงในตารางท 4.3 ระยะหางเฉลยของคาต าแหนงระหวางกนทมากทสดในการตรวจจบน คอทต าแหนง RightShoulder ของกลอง C มระยะหางเฉลยประมาณ 11.05 เซนตเมตร ซงเปนต าแหนงทม คาเบยงเบนมาตรฐานมากทสดเดยวเชนกน คอ 10.91 เซนตเมตร และระยะหางเฉลยของคาต าแหนงระหวางกนทนอยทสดในการตรวจจบน คอทต าแหนง LeftFoot ของกลอง B มระยะหางเฉลยประมาณ 4.15 เซนตเมตร ตารางท 4.3 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 3 (หนวย : เซนตเมตร)

ขอตอ กลอง A กลอง B กลอง C

ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. Head 8.09 1.28 7.79 1.50 8.02 1.52 Neck 5.03 2.60 5.51 2.55 5.81 1.61 Torso 4.98 2.33 5.02 2.71 5.45 1.92 LeftHand 5.63 2.92 6.32 3.05 6.49 2.07 LeftElbow 4.51 1.65 6.27 2.30 5.99 2.76 LeftShoulder 6.27 4.65 5.48 2.85 6.08 3.38 RightHand 5.48 2.88 6.20 2.27 6.50 1.88 RightElbow 8.71 3.37 6.34 4.78 7.28 4.97 RightShoulder 10.77 5.72 9.88 5.96 11.05 10.91 LeftHip 8.49 2.51 6.66 3.00 7.73 3.13 LeftKnee 7.46 2.95 6.44 2.48 5.07 2.08 LeftFoot 4.95 1.91 4.15 2.17 4.34 3.14 RightHip 7.67 2.46 7.71 3.16 8.36 2.83 RightKnee 9.39 3.78 6.84 2.60 5.72 2.45 RightFoot 4.31 1.42 5.27 1.16 6.10 1.73

56

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 958 frame = 1,028

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 1,271 frame = 1,644

รปท 4.6 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 3

57

4.6 ตวอยางผลการตรวจจบการเคลอนไหวท 4 การตรวจจบการเคลอนไหวนมทงหมด 2,197 เฟรม เปนเวลาประมาณ 73 วนาท โครงรางมนษย ทกลองแตละตวตรวจจบได และโครงรางมนษยประกอบรวมในบางเฟรมแสดงในรปท 4.7 ระยะหางเฉลยระหวางคาต าแหนงเฉลยกบคาต าแหนงทไดจากกลองแตละตวหลงจากท าการปรบระบบพกดของแตละขอตอ และคาเบยงเบนมาตรฐาน (S.D.) ของขอมลจากการตรวจจบการเคลอนไหวน แสดงในตารางท 4.4 ระยะหางเฉลยของคาต าแหนงระหวางกนทมากทสดในการตรวจจบน คอทต าแหนง LeftShoulder ของกลอง B มระยะหางเฉลยประมาณ 24.92 เซนตเมตร ซงเปนต าแหนงทมคาเบยงเบนมาตรฐานมากทสดเดยวเชนกน คอ 22.42 เซนตเมตร และระยะหางเฉลยของคาต าแหนงระหวางกน ทนอยทสดในการตรวจจบน คอทต าแหนง Torso ของกลอง C มระยะหางเฉลยประมาณ 3.24 เซนตเมตร ตารางท 4.4 ระยะหางเฉลยของการตรวจจบการเคลอนไหวท 4 (หนวย : เซนตเมตร)

ขอตอ กลอง A กลอง B กลอง C

ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. ระยะหางเฉลย S.D. Head 7.17 2.23 5.65 2.46 7.28 1.55 Neck 5.71 1.49 5.62 2.73 4.71 1.91 Torso 4.48 2.34 3.78 2.41 3.24 2.17 LeftHand 6.33 2.21 5.39 3.20 5.38 2.57 LeftElbow 10.28 5.10 15.99 9.53 6.77 3.91 LeftShoulder 11.77 10.64 24.92 22.42 9.68 8.37 RightHand 5.71 1.67 6.78 2.92 5.35 1.84 RightElbow 7.92 2.48 9.18 2.81 5.93 1.47 RightShoulder 9.68 3.29 9.67 3.61 6.85 3.45 LeftHip 5.53 2.84 5.56 2.53 5.09 2.53 LeftKnee 4.23 2.83 6.04 2.36 5.81 1.97 LeftFoot 3.71 2.09 6.62 3.26 5.40 1.29 RightHip 6.19 2.86 4.38 2.44 3.44 2.66 RightKnee 3.78 2.48 6.00 3.08 5.00 1.84 RightFoot 3.64 1.66 5.30 4.22 4.49 1.94

58

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 443 frame = 681

A

B

C

A

B

C

A

B

C

A

B

C

SV

CV

SV

CV

frame = 1,732 frame = 2,137

รปท 4.7 โครงรางมนษยทไดจากการตรวจจบการเคลอนไหวท 4

59

จากรปท 4.7 เฟรมท 681 แสดงใหเหนถงความผดพลาดของขอมลต าแหนงของขอตอทไดรบจาก OpenNI ทภาพโครงรางมนษยของกลอง A แสดงใหเหนถงความผดพลาดทมโอกาสเกดขนนอยครงในการตรวจจบการเคลอนไหว โดยขอมลต าแหนงของขอตอของสวนล าตวทได มคา Confidence นอยกวา 1 ซงกลอง A เปนกลองทมมมมองของการตรวจจบทดทสดในขณะนน และทภาพโครงรางมนษยของกลอง B แสดงใหเหนถงความผดพลาดของ OpenNI ทมความพยายามทจะใหไดขอมลต าแหนงของขอตอทครบสมบรณทกต าแหนงของขอตอ ท าใหมการระบสวนของรางกายเปนต าแหนงของขอตอทผด สงผลใหโครงรางมนษยประกอบรวมแตกตางจากโครงรางมนษยทไดจากกลอง A และ C ในบทนไดแสดงถงตวอยางผลการตรวจจบการเคลอนไหวจากสถานการณการตรวจจบการเคลอนไหวทไดจดท าขน จากภาพโครงรางมนษยทไดจากการตรวจจบของกลองแตละตว ทต าแหนงของขอตอเดยวกนจะมคาต าแหนงของขอตอทไมเทากน และท าใหระยะหางระหวางคาต าแหนงเฉลยกบคาต าแหนงหลงจากท าการปรบระบบพกดทไดจากกลองแตละตวตามแตละต าแหนงของขอตอ มคาเฉลยทไมคงทแนนอน ซงขอมลต าแหนงของขอตอทไดรบจาก OpenNI เปนผลมาจากการวเคราะหภาพสและภาพความลกตามทกลองตรวจจบไดจากต าแหนงทตงกลอง ดวยอลกอรทมของ PrimeSense NiTE Middleware

บทท 5 สรปผลการวจย บทนจะกลาวถงการอภปรายผล ผลสรป ขอจ ากด ขอเสนอแนะ และแนวทางการพฒนาตอไป

5.1 การอภปรายผล จากสถานการณการตรวจจบการเคลอนไหวทจดท าขน โดยใชกลอง Kinect สามตวในการตรวจจบ จากการก าหนดต าแหนงในการตงกลองโดยใหแกน Z ของกลองท ามม 120 องศา ตอกน หากผใช อยใกลกบจดศนยกลางพนททท าการตรวจจบการเคลอนไหว ไมวาผใชจะหนหนาไปทางใดกตามจะมหนงกลองทสามารถตรวจจบผใชไดจากทางดานหนาเสมอ ท าใหมกลองทตรวจจบการเคลอนไหว ในมมมองทดทสดอยอยางนอยหนงกลอง จากผลการตรวจจบการเคลอนไหวจากสถานการณทจดท าขนทง 4 ตวอยาง เมอใชการค านวณหาระยะหางระหวางคาต าแหนงเฉลยกบคาต าแหนงหลงการปรบระบบพกดกลองแตละตวตามแตละต าแหนงของขอตอ มาเปนเครองมอวดความเหมาะสมของการน าคาต าแหนงของขอตอเฉลยไปสรางเปนโครงรางมนษยประกอบรวมนน พบวาระยะหางเฉลยทค านวณไดมคาทขนอยกบตวแปรส าคญสองคา ตวแปรทหนงคอมมมองของกลองในขณะทตรวจจบ ซงสงผลตอคาต าแหนงของขอตอ ทไดรบจาก OpenNI ซงเปนผลมาจากการวเคราะหภาพทกลองแตละตวตรวจจบได และตวแปรทสองคอ ทาทางทผใชแสดงออกในขณะทท าการตรวจจบการเคลอนไหว หากเปนทาทางทสวนของรางกายแบงแยกกนอยางชดเจน เชน ยนกางแขนและแยกขา เปนตน คาต าแหนงหลงจากท าการปรบ ระบบพกดทไดจากกลองทงสามจะมคาทใกลเคยงกน สงผลใหระยะหางระหวางคาต าแหนงเฉลยและคาต าแหนงหลงจากท าการปรบระบบพกดตามแตละขอตอมคานอยดวย

5.2 ผลสรป งานวจยนไดน าเสนอวธการการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect หลายตว และน าเสนอระบบการตรวจจบการเคลอนไหวตามเวลาจรงทรองรบการใชกลอง Kinect จ านวนมาก จากผลของวธการทน าเสนอแสดงใหเหนวา หลงจากท าการ ปรบระบบพกดของต าแหนงของขอตอทไดจากการตรวจจบจากกลองแตละตวแลว สามารถใชคาเฉลยของต าแหนงของขอตอในการประกอบรวมโครงรางมนษยได และการใชกลองหลายตว ในการตรวจจบ จะท าใหโครงรางมนษยประกอบรวม มต าแหนงของขอตอทครบสมบรณและ มคาต าแหนงของขอตออยตลอดเวลา

61

การออกแบบระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว เปนแบบ Client – Server โดยก าหนดใหกลองทตรวจจบแตละตวเปนสวน Client ท าใหสามารถเพมจ านวนกลองในการตรวจจบไดไมจ ากด และโปรแกรมสวน Client สามารถน าไปใชตอในงานอนๆ ได โดยไมตองมการดดแปลงแกไข เพราะขอมลต าแหนงของขอตอทงหมดทไดรบจาก OpenNI ถกรวมเปนขอมล การตรวจจบการเคลอนไหวเดยวกนไวแลว ส าหรบการออกแบบโปรแกรมสวน Server ทน าเสนอ ในงานวจยน ทเนนการใชอาเรยของขอมลตางๆ ท าใหสามารถดดแปลงแกไขหรอพฒนาโปรแกรมสวน Server ทรองรบการใชกลองมากกวาสามตวไดงาย โดยการเพมจ านวนอลเมนทในอาเรย จากผลการทดลองทได ชวยยนยนวา การใชกลอง Kinect หลายตวในการตรวจจบการเคลอนไหว ชวยเพมโอกาสทผใชเผชญหนากบกลองอยตลอดเวลาการตรวจจบ ดงนนหากมการตงกลองตรวจจบการเคลอนไหวทสนใจอยางครอบคลม ไมวาผใชจะอยในต าแหนงใดของพนททท าการตรวจจบ กจะท าใหไดมมองทดทสดในการตรวจจบ สงผลใหระบบสามารถตรวจจบคาต าแหนงของแตละ ขอตอไดดวยระดบความถกตองทนาพงพอใจ อยางไรกตาม ผลการวดระยะหางระหวางคาต าแหนงเฉลยและคาต าแหนงหลงจากท าการปรบระบบพกดทกลองแตละตวตรวจจบไดตามแตละต าแหนงของขอตอ มระยะหางเฉลยวดไดเปนหนวยเซนตเมตร ซงสะทอนใหเหนถงขอจ ากดและความจ าเปนในการศกษาตวแปรอนทกระทบตอระดบความแมนย าในการตรวจจบตอไป ในขณะเดยวกนกแสดงใหเหนถงความเหมาะสมในการเลอกใช คาต าแหนงของขอตอเฉลยเปนตวแทนของขอมลต าแหนงของขอตอทงหมดทไดจากการตรวจจบการเคลอนไหวในเวลาเดยวกน ส าหรบวธการทไดน าเสนอในชนน

5.3 ขอจ ากด การวจยครงนมขอจ ากดในการออกแบบงานวจยอยบางประการ ดงตอไปน ขอจ ากดในการวดระยะทางของต าแหนงทตงและวดขนาดมมของทศทางทตรวจจบของกลอง Kinect เนองจากระบบพกดของกลองเปนระบบพกดสมมตทไมชดเจนแนนอน และเครองมอทใช ในงานวจยนเปนเพยงอปกรณเครองเขยนธรรมดา ท าใหอาจมความผดพลาดจากการวดระยะทางจากต าแหนงทตงกลองไปยงต าแหนงจดก าเนด GSC และความผดพลาดจากการวดขนาดมมทใชในการหมนกลองตามแตละแกนของ GCS ซงโดยเฉพาะการวดขนาดมม หากมการเบยงเบนไปแมเพยงเลกนอย ในระยะทางทไกลออกไป อาจท าใหเกดระยะหางทมากและผดพลาดมากจากต าแหนง ทควรจะเปนได ความผดพลาดจากการการวดระยะทางและวดขนาดมมน จะสงผลตอคาต าแหนงของขอตอหลงท าการปรบระบบพกด ทค านวณจากการน าคาต าแหนงของขอตอทกลองตรวจจบไดไป

62

คณกบเมตรกซการแปลงทสรางขนจากมมและระยะทไดจากการวด และสงผลตอระยะหางระหวาง คาต าแหนงเฉลยและคาต าแหนงหลงจากท าการปรบระบบพกดทกลองแตละตวตรวจจบไดตามแตละต าแหนงของขอตอ ทน ามาเปนเครองมอวดความเหมาะสมของการใชคาต าแหนงเฉลย หากมเครองมอหรอวธการวดระยะทางของต าแหนงทตงและวดขนาดมมของทศทางทตรวจจบของกลอง Kinect ทแมนย า จะเปนการขจดขอจ ากดเรองนไป ขอจ ากดอกประการหนงคอ การตรวจจบการเคลอนไหวโดยใชกลอง Kinect และน าคาต าแหนงของขอตอทไดรบจาก OpenNI ไปใชในงานวจยน ซงเปนการใชผลการวเคราะหภาพสและภาพความลก ทกลองตรวจจบไดจากต าแหนงทตงกลองตามอลกอรทมของ Middleware สวนของรางกายทถกระบวาเปนต าแหนงของขอตอใดๆ จงมต าแหนงทไมคงทแนนอน ท าใหความยาวระหวางต าแหนงของ ขอตอมคาไมคงทตามไปดวย และเปนการยากทจะท าการวดระยะหางจากต าแหนงของขอตอของผใช ถงต าแหนงทตงกลองตรวจจบอยอยางตลอดเวลาทท าการตรวจจบการเคลอนไหว ขอจ ากดของ PrimeSense NiTE Middleware ทใหขอมลการตรวจจบการเคลอนไหวของ OpenNI ทใชในงานวจยน ในการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว ในระหวางทท าการตรวจจบการเคลอนไหวอาจมกลองทไดภาพของผใชในมมมองทไมดอยหลายตว ในหลายๆ ครง อลกอรทมของ PrimeSense NiTE กจะพยายามทจะใหไดขอมลการตรวจจบการเคลอนไหวทมขอมลต าแหนงของขอตอครบทกต าแหนงของขอตออยตลอดเวลา ท าใหมการระบสวนของรางกายเปนต าแหนงของขอตอทผดพลาด ซงท าใหคาต าแหนงของขอตอหลงจากท าการปรบระบบพกดแลว มคาทแตกตางกนมาก และท าใหโครงรางมนษยประกอบรวมมความแตกตางจากโครงรางมนษยทไดจากกลองในมมมองทดทสดได ขอจ ากดส าหรบระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตวทน าเสนอ ทออกแบบใหเปนแบบ Client - Server ซงโดยหลกการแลวสามารถมจ านวนเครอง Client หรอจ านวนกลองทใชตรวจจบการเคลอนไหวไดไมจ ากด แตเนองจากขอจ ากดทางดานการตดตอผานระบบเครอขาย หากมจ านวนเครอง Client มากๆ ท าการสงขอมลพรอมๆ กน อาจสงผลใหประสทธภาพของการประกอบรวมของโครงรางมนษยและการแสดงภาพโครงรางมนษยประกอบรวม เกดความลาชาจนผใช สงเกตได ดงนน ผทน าระบบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตวทน าเสนอ ไปใชในการตรวจจบการเคลอนไหวทสนใจ จะตองค านงถงขอจ ากดในเรองนดวย

63

ขอจ ากดในเรองการวดระยะหางของกลอง Kinect และ OpenNI เนองจากในงานวจยนตงสมมตฐานวากลองแตละตวทใชในการตรวจจบมความสามารถในการวดระยะหางทเทากน แตจากงานวจย ทเกยวของแสดงใหเหนถงความจ าเปนในการตรวจสอบการวดระยะหางของกลอง Kinect และความจ าเปนในการก าหนดสตรส าหรบชดเชยระยะหางทผดพลาดส าหรบกลองแตละตวกอนการใชงาน เพอเพมความถกตองของคาต าแหนงทไดรบ และอาจสงผลใหระยะหางระหวางคาต าแหนงของแตละขอตอมคาเฉลยทลดลงดวย ขอจ ากดในเรองคณสมบตของเครองคอมพวเตอรทใชเปนเครอง Client เนองจากการทดลองท าการตรวจจบการเคลอนไหวในงานวจยนไดใชเครองคอมพวเตอรทมคณสมบตทเทากนเปนเครอง Client ท าใหขอมลการตรวจจบการเคลอนไหวทถกสงไปยงเครอง Server มล าดบทคอนขางสม าเสมอ หากเครอง Client แตละตวมคณสมบตทตางกน จะท าใหขอมลการตรวจจบการเคลอนไหวทถกสง ไปยงเครอง Server สวนใหญ นาจะเปนขอมลจากเครองทมคณสมบตทสงกวาเพราะสามารถท างานไดรวดเรวกวา และจะท าใหโครงรางมนษยประกอบรวม มโครงรางทคลายกบโครงรางทไดจากกลองทตอเขากบเครอง Client เครองนนมากกวาเครองอนๆ

5.4 ขอเสนอแนะ จากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว ทอาจมกลองทไดภาพของผใช ในมมมองทไมดอยหลายตว และท าใหไดคาต าแหนงของขอตอทนาจะมความถกตองนอย ดงนน จงควรศกษาหาวธการเลอกใชคาต าแหนงของขอตอจากกลองทใหมมมองทดทสด แทนการน าขอมลต าแหนงของขอตอมารวมกน และอาจท าการทดแทนเฉพาะบางต าแหนงของขอตอทกลองในมมมองทดทสดไมสามารถตวตรวจจบได งานวจยนใช OpenNI ทม PrimeSense NiTE Middleware เปนชดเครองมอในการพฒนาโปรแกรมและใหขอมลต าแหนงของขอตอในการตรวจจบการเคลอนไหวโดยใชกลอง Kinect ผลการวจยของงานวจยน จงเปนการทดสอบความสามารถของ OpenNI ดวย จงควรท าการศกษาการใช API อน ในการตรวจจบการเคลอนไหวโดยใชกลอง Kinect เชน KinectSDK ของบรษท Microsoft [9] เปนตน ดวยวธการเดยวกนตามทงานวจยนไดน าเสนอ เพอเปรยบเทยบความสามารถของ API และจะท า ใหได API ทเหมาะสมกบการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว

64

5.5 แนวทางการพฒนาตอไป ผลลพธของวธการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว อาจน าไปพฒนารวมกบงานวจยของ V. Vaidehi, K. Ganapathy, K. Mohan, A. Aldrin และ K. Nirmal [23] ทท าการศกษาเรองการตรวจจบการลมดวยการใชภาพวดโอ โดยวธการทงานวจยนน าเสนอเปนวธการทงาย ถกตอง และใชการค านวณทนอยกวางานวจยอนๆ ทมมา ในการตรวจจบการลมดวยการใชภาพวดโอ จากผลการทดสอบของงานวจยนแสดงใหเหนวา วธการทงานวจยนน าเสนอเปนวธการท เสถยรในการตรวจจบการลมทกรปแบบ และหากเพมการตรวจจบการ เคลอนไหวโดยใชกลอง Kinect เขาไปดวย นาจะเปนการเพมความนาเชอถอใหมากยงขน และหากน าผลลพธของวธการประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว ไปพฒนารวมกบงานวจยของ M. Yu, A. Rhuma, S. M. Naqvi และ J. Chambers [24] ทใชกลองวดโอหลายตวในการตรวจจบการลมของผสงอายภายในหองอยแลว โดยใหใชภาพสทไดจากกลอง Kinect แทนกลองวดโอ และเพมการตรวจจบการเคลอนไหวโดยใชกลอง Kinect หลายตว เขาไปดวย จะชวยเพมความถกตองและความนาเชอถอใหมากยงขน ในทางเทคนค เนองจากขอมลต าแหนงของขอตอในงานวจยน ใชขอมลต าแหนงของขอตอทไดรบจาก Middleware ของ OpenNI โดยตรง จงควรท าการศกษาขอมลต าแหนงของขอตอเพมเตม เพอตรวจสอบขอมลต าแหนงของขอตอทไดรบมคาทเหมาะสมและเปนไปไดหรอไม โดยการตรวจสอบจากขนาดมมทสามารถเกดขนไดจรงจากการงอพบของแตละขอตอของรางกายจรง เชน ทหวเขาของรางกายมนษย จะไมสามารถงอพบไปดานหนาได หากขอมลต าแหนงของหวเขาทไดรบ มการงอพบไปดานหนา จงควรตดหรอลดความนาเชอถอของขอมลในสวนนออกไป เปนตน หรอการตรวจสอบจากระยะหางระหวางต าแหนงขอตออยางตอเนอง หากสวนใดมความยาวทสนลงเกนไปหรอยาวเกนกวาปกตในระหวางทท าการตรวจจบการเคลอนไหว กควรตดหรอลดความนาเชอถอของขอมลต าแหนงของขอตอในสวนนนออกไป หรอการวเคราะหขอมลต าแหนงของขอตอทไดรบ วาดานใดเปนดานหนาของรางกายมนษย จะเปนการตรวจสอบวาต าแหนงของขอตอขางซายและขวาทไดรบมการสลบขางกนหรอไม เนองจาก OpenNI ไมสามารถระบภาพทไดรบวาเปนดานหนาหรอดานหลงของรางกายมนษย การตรวจสอบดงกลาวน จะชวยคดกรองและเพมความถกตองของต าแหนงของขอตอทไดจากการตรวจจบการเคลอนไหวในระดบหนง กอนน าไปท าการประกอบรวมโครงรางมนษย และน าไปใชในงานดานอนๆ ตอไป เนองจากกลอง Kinect มความสามารถในการวดระยะหางทคอนขางถกตอง ดงนนจงควรท าการศกษาคนควาหาวธการค านวณหาทศทางทตรวจจบและต าแหนงทตงของกลอง Kinect ในการตรวจจบการเคลอนไหวเดยวกนอยางอตโนมต โดยอาศยขอมลต าแหนงของขอตอทไดรบจาก OpenNI ในการ

65

ตรวจจบรางกายของผใช หรอสรางหนจ าลองทมลกษณะคลายกบโครงรางของมนษย ซง OpenNI สามารถตรวจจบและใหคาต าแหนงของขอตอของสงของทมลกษณะคลายกบโครงรางของมนษย ไดเชนกน โดยใชทรงกลมแทนศรษะและมอทงสองขาง เพอความสะดวกในการค านวณหาระยะหางทแทจรง ตามตวอยางทแสดงในรปท 5.1 ซงเปนการพฒนางานวจยของคณะผวจย [25] ในอนาคต ไดตอไป และหากผลลพธของงานวจยน สามารถใหต าแหนงทตงและทศทางทตรวจจบของกลอง Kinect ทมความถกตองแมนย า กจะเปนการขจดความผดพลาดทอาจเกดขนจากการวดหาระยะในการตดตงและการวดหาขนาดมมทใชในการหมนกลอง Kinect และเพมความสะดวกในการตดตงและ การใชงานกลอง Kinect หลายๆ ตวพรอมกน

รปท 5.1 ตวอยางหนจ าลองทน ามาใชเพอวดระยะ

เอกสารอางอง 1. Microsoft, Kinect for Xbox 360 - Xbox.com [Online], Available : http://www.xbox.com/en-

GB/kinect [2012, April 1]. 2. Wikipedia, Motion capture - Wikipedia, the free encyclopedia [Online], Available :

http://en.wikipedia.org/wiki/Motion_capture [2012, April 1]. 3. OpenNI, Introducing OpenNI [Online], Available : http://www.openni.org [2012, April 1]. 4. PrimeSense, PrimeSense Natural Interaction [Online], Available : http://www.primesense

.com/ en/nite [2012, April 1]. 5. Vince, J., 2010, Mathematics for Computer Graphics, Springer, pp. 75-82. 6. Siciliano, B. and Khatib, O. (Eds.), 2008, Springer Handbook of Robotics, Springer, pp. 10-

12. 7. iFixit, Microsoft Kinect Teardown - Page 2 – iFixit [Online], Available : http://www.ifixit

.com/Teardown/Microsoft-Kinect-Teardown/4066/2 [2012, April 1]. 8. Microsoft, Installing and Using the Kinect Sensor | Kinect for Windows SDK Quickstarts |

Channel 9 [Online], Available : http://channel9.msdn.com/Series/KinectSDKQuickstarts/ Understanding-Kinect-Hardware [2012, April 1].

9. Microsoft, Kinect Develop Overview | Kinect for Windows [Online], Available : http://www.

microsoft.com/en-us/kinectforwindows/develop/overview.aspx [2012, April 1].

67

10. Liu, Y., Stoll, C., Gall, J., Seidel, H. and Theobalt, C., 2011, “Markerless Motion Capture of Interacting Characters Using Multi-view Image Segmentation”, IEEE Conference on Computer Vision and Pattern Recognition, 24th, June 20-25, Colorado Springs, USA, pp. 1249-1256.

11. Odowichuk, G., Trail, S., Driessen, P., Nie, W. and Page, W., 2011, “Sensor Fusion: Towards a

Fully Expressive 3D Music Control Interface”, IEEE Pacific Rim Conference on Communications, Computers and Signal Processing, August 23-26, Victoria, B.C., Canada, pp. 836-841.

12. Hauswiesner, S., Straka, M. and Reitmayr, G., 2011, “Free Viewpoint Virtual Try-On With

Commodity Depth Cameras”, Proceedings of the 10th International Conference on Virtual Reality Continuum and Its Applications in Industry, 11-12 December, Hong Kong, China, pp. 23-30.

13. Velardo, C. and Dugelay, J., 2011, “Real Time Extraction of Body Soft Biometric from 3D

Videos”, Proceedings of the 19th ACM international conference on Multimedia, 28 November-1 December, Arizona, USA, pp. 781-782.

14. Sidik, M.K., Sunar, M.S., Ismail, I., Mokhtar, M.K. and Jusoh, N., 2011, “A Study on Natural

Interaction for Human Body Motion using Depth Image Data” Workshop on Digital Media and Digital Content Management, May 15-17, Hangzhou, China, pp. 97-102.

15. Yu, X., Wu, L., Liu, Q. and Zhou, H., 2011, “Children Tantrum Behaviour Analysis Based on

Kinect Sensor”, Third Chinese Conference on Intelligent Visual Surveillance, December 1-2, Beijing, China, pp. 49-52.

16. Lange, B., Chang, C., Suma, E., Newman, B., Rizzo, A.S. and Bolas, M., 2011, “Development

and Evaluation of Low Cost Game-Based Balance Rehabilitation Tool Using the Microsoft Kinect Sensor”, Annual International Conference of the IEEE Engineering in Medicine and Biology Society, August 30-September 3, Massachusetts, USA, pp. 1831-1834.

68

17. Rogge, S., Amtsfeld, P., Hentschel, C., Bestle, D. and Meyer, M., 2012, “Using Gestures to Interactively Modify Turbine Blades in a Virtual Environment”, IEEE International Conference on Emerging Signal Processing Applications, January 12-14, Las Vegas, Nevada, USA, pp. 155-158.

18. Gallo, L., Placitelli, A.P. and Ciampi, M., 2011, “Controller-free exploration of medical image

data: experiencing the Kinect”, 24th International Symposium on Computer-Based Medical Systems, June 27-30, Bristol, UK, pp. 1-6.

19. Bellmore, C., Ptucha, R. and Savakis, A., 2011, “Interactive Display Using Depth and RGB

Sensors for Face and Gesture Control”, IEEE Western New York Image Processing Workshop, November 14, pp. 1-4.

20. Igorevich, R.R., Ismoilovich, E.P. and Min, D., 2011, “Behavioral Synchronization of Human

and Humanoid Robot”, 8th International Conference on Ubiquitous Robots and Ambient Intelligence, November 23-26, Incheon, Korea, pp. 655-660.

21. Alexiadis, D., Kelly, P., Daras, P., O'Connor, N.E., Boubekeur, T. and Moussa, M.B., 2011,

“Evaluating a Dancer’s Performance using Kinect-based Skeleton Tracking”, Proceedings of the 19th ACM international conference on Multimedia, November 28-December 1, Arizona, USA, pp. 659-662.

22. Berger, K., Ruhl, K., Brümmer, C., Schröder, Y., Scholz, A. and Magnor, M., 2011,

“Markerless Motion Capture using multiple Color-Depth Sensors”, International Workshop on Vision, Modeling and Visualization, 16th, October 4-6, Berlin, Germany.

23. Vaidehi, V., Ganapathy, K., Mohan, K., Aldrin, A. and Nirmal, K., 2011, “Video Based

Automatic Fall Detection in Indoor Environment”, International Conference on Recent Trends in Information Technology, June 3-5, Chennai, India, pp. 1016-1020.

69

24. Yu, M., Rhuma, A., Naqvi, S.M. and Chambers, J., 2011, “Fall Detection for the Elderly in A Smart Room by Using An Enhanced One Class Support Vector Machine”, 17th International Conference on Digital Signal Processing, July 6-8, Corfu, Greece, pp. 1-6.

25. นราวฒ พฒโนทย, พรชย มงคลนาม และบณฑต วรรธนาภา, 2554, “การคนหาต าแหนงและ

ทศทางของกลอง Kinect อตโนมต”, The 2011 International Computer Science and Engineering Conference, September 7-9, Bangkok, Thailand, pp. 251-255.

ภาคผนวก ก ผลงานทไดรบการตพมพ

82

ประวตผวจย ชอ – สกล นายนราวฒ พฒโนทย วน เดอน ปเกด 13 มนาคม 2528 ประวตการศกษา ระดบมธยมศกษา ประโยคมธยมศกษาตอนปลาย โรงเรยนพยหะพทยาคม พ.ศ. 2546 ระดบปรญญาตร วทยาศาสตรบณฑต สาขาวทยาการคอมพวเตอร มหาวทยาลยนเรศวร พ.ศ. 2550 ระดบปรญญาโท วทยาศาสตรมหาบณฑต สาขาวศวกรรมซอฟตแวร มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร พ.ศ. 2555 ทนการศกษา หรอทนวจย ทนเพชรพระจอมเกลา “ทนสงเสรมดานวชาการดเดน” มหาวทยาลยเทคโนโลยพระจอมเกลาธนบร ประวตการท างาน นกวชาการคอมพวเตอรปฏบตการ ส านกงบประมาณกรงเทพมหานคร พ.ศ. 2553 - ปจจบน ผลงานทไดรบการตพมพ นราวฒ พฒโนทย, พรชย มงคลนาม และบณฑต วรรธนาภา, 2011, “การคนหาต าแหนงและทศทางของกลอง Kinect อตโนมต”, The 2011 International Computer Science and Engineering Conference, September 7-9, Bangkok, Thailand, pp. 251-255. นราวฒ พฒโนทย, พรชย มงคลนาม และบณฑต วรรธนาภา, 2555, “การประกอบรวมโครงรางมนษยจากการตรวจจบการเคลอนไหว โดยใชกลอง Kinect หลายตว”, การประชมวชาการระดบประเทศ ทางดานเทคโนโลยสารสนเทศ, ครงท 4, 26-27 เมษายน 2555, อ. ชะอ า, จ. เพชรบร, หนา 369-374.