SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
รายงานโครงการ 
การทาภาพ 3 มิติ จากภาพ Depth Map 
จัดทาโดย 
B5304516 นายภูริเดช สุดสี 
เสนอ 
ผู้ช่วยศาสตราจารย์ ดร.ปรเมศวร์ ห่อแก้ว 
รายงานประกอบรายวิชา 423421 โครงการวิศวกรรมคอมพิวเตอร์ 1 ภาคการศึกษาที่ 1/2555 
มหาวิทยาลัยเทคโนโลยีสุรนารี จ.นครราชสีมา
1 
สารบัญ 
เรื่อง หน้า 
บทที่ 1 : บทนา 
1.1 ที่มาและความสาคัญของโครงการ 3 
1.2 หลักการและเหตุผล 3 
1.3 วัตถุประสงค์ 4 
1.4 เครื่องมือ 4 
บทที่ 2 : หลักการทางาน 
2.1 ภาพแผนที่ความลึก (Depth Map) 5 
2.2 การหา Depth Map จากภาพหลายมุมมอง 6 
2.3 การสร้างโมเดล 3 มิติด้วย DAVID Laser Scanner 9 
2.4 การดึงข้อมูลเพื่อแสดงผล 10 
บทที่ 3 : สรุปและข้อเสนอแนะ 
3.1 สรุป 14 
3.2 ข้อบกพร่อง หรือข้อจากัดของโปรแกรม 14 
3.3 ข้อเสนอแนะ 15 
บทที่ 4 : บรรณานุกรม 
4.1 บรรณานุกรม 16
2 
(2) ภาพด้านขวา 
(1) ภาพด้านซ้าย 
(3) ภาพ 
Depth Map 
(4) ไฟล์ .OBJ 
ไฟล์จาก DAVID Laser Scanner 
แผนผังการทางานของโปรแกรมประกอบโครงการ
3 
บทที่ 1 : บทนา 
1.1 ที่มาและความสาคัญของโครงการ 
โดยปกติเมื่อเราถ่ายรูปจากกล้องเราจะได้ภาพที่มีมุมมองเพียง 2 มิติเท่านั้น คือด้านของความ กว้างและด้านของความสูง ทาให้ขาดการรับรู้บางอย่างที่มีได้ในระบบภาพ 3 มิติ คือความลึกของ ภาพซึ่งสามารถสื่อถึงความใกล้-ไกล ของวัตถุ และสามารถใช้ในการแยกชั้น (Layer) ของวัตถุแต่ ละชิ้นในภาพออกจากกันได้ และเพื่อประโยชน์ในการประยุกต์ใช้ในงานอื่นที่จาเป็นต้องใช้ภาพที่มี ความลึกเพื่อระบุตาแหน่งของวัตถุ เช่น งานด้านการแสดงและภาพยนต์ใช้ในการหาความลึกของ วัตถุเพื่อลบฉากหลังออกจากภาพ เป็นต้น 
1.2 หลักการและเหตุผล 
เทคโนโลยีการแสดงภาพ 3 มิติในปัจจุบันได้รับความนิยมมากขึ้น ดังจะเห็นได้จากการแปลง ภาพให้อยู่ในสื่อต่างๆในรูปแบบ 3 มีติ มีต้นทุนในการผลิตต่าลง และผู้ใช้ทั่วๆไปสามารถสร้างภาพ 3 มิติอย่างง่ายได้ด้วยตนเองด้วยชุดซอฟแวร์สาเร็จรูป 
และอีกวิธีการสร้างภาพ 3 มิติที่ได้รับความนิยมเป็นอย่างมากก็คือการนาภาพ 2 ภาพมาหา ความลึกของภาพเพื่อจะนาไปใช้งานต่อไป ซึ่งวิธีนี้จาเป็นต้องใช้ภาพถ่ายจากมุมที่ต่างกันในระยะที่ เหมาะสม ซึ่งปกติเมื่อได้ความลึกของภาพแล้วก็จะสามารถแยกชั้น(Layer) ของวัตถุออกจากกันได้ ดังนั้นโครงการนี้จึงเป็นการต่อยอดภาพที่ได้จากการหาภาพที่แสดงความลึกของวัตถุ หรือ Depth Map ที่ได้มาจาการใช้ฟังก์ชันที่เป็น Library ของ OpenCV มาแสดงออกทางจอภาพโดยใช้ OpenGL ในการสร้างภาพจากสมการและค่าที่ได้มากจากภาพ Depth Map
4 
1.3 วัตถุประสงค์ 
1.เพื่อศึกษาการหาความลึกของภาพจากขึ้นตอนการทาภาพ Depth Map โดยอาศัยการใช้ Library ของ OpenCV 
2.เพื่อศึกษาหลักการการสร้างภาพโดยใช้คาสั่งทางคอมพิวเตอร์และสมการทางคณิตศาสตร์ โดยใช้ Library ของ OpenGL 
3.เข้าใจกระบวนการสร้างโมเดล 3 มิติ (3D Model) โดยการใช้ Depth map 
4.สามารถประยุกต์ใช้ภาพที่ได้จาก Depth Map มาสร้างเป็นภาพโดยใช้ OpenGL 
5.เพื่อประกอบการเรียนการสอนรายวิชา 423421 โครงการวิศวกรรมคอมพิวเตอร์ 1 
1.4 เครื่องมือที่ใช้ 
1.โปรแกรม Microsoft Visual Studio 2010 With C/C++ Language 
2.OpenCV Library 
3.OpenGL Library with Glut 2.4 
4.DAVID Laser Scanner 3.4.0 
5.กล้อง / กล้องเว็บแคม 
6.Laser Pointer 
7.ฉากหลังเพื่อ Calibrate กล้องของโปรแกรม
5 
บทที่ 2 : หลักการทางาน 
2.1 ภาพแผนที่ความลึก (Depth Map) 
ภาพแผนทึ่ความลึก หรือ Depth Map คือภาพที่แสดงความลึกของวัตถุโดยภาพที่เป็นของ Depth Map จะมีลักษณะเป็นภาพ Gray scale โดยระบุความลึกที่ได้จากการนาเข้าฟังก์ชัน คานวณผลลัพธ์จากการนาภาพ 2 ภาพ โดยผลลัพธ์ที่ได้จะถูกแบ่งออกเป็น Pixel ตามความ ละเอียดที่ได้กาหนดไว้ ซึ่งโดยปกติหลักการของสีคือการผสมกันระหว่างสีของ RGB (Red,Green,Blue) ใน Pixel ของภาพ แต่ในภาพ Depth Map ที่เสร็จแล้วจะได้ผลลัพธ์ออกมา เป็นภาพที่แต่ละ Pixel จะมีค่าสี RGB ที่เท่ากันดังนั้นเราจึงสามารถเรียกให้สีใดใน 3 สีนี้มาแสดง ได้เลยโดยจะได้ผลลัพธ์ที่ตาแหน่ง Pixel เดียวกันมีค่าสีเท่ากัน และค่าสีนี้จะมีค่าตั้งแต่ 0-255 ตาม หลักของสี 8 bit คือ = 256 ช่วงสี โดยปกติกาหนดให้ 0 คือ ดา ถึง 255 คือขาว 
256 ช่วงสี 
0 
255 
รูป 1.
6 
LEFT EYE 
RIGHT EYE 
รูป 2. 
2.2 การหา Depth Map จากภาพหลายมุมมอง 
การหาภาพ Depth Map สามารถทาได้หลายวิธีการ แต่ตัวอย่างภาพที่นามาใช้ในโครงการนี้ได้มากจากการ ถ่ายภาพของวัตถุที่หลายมุมมอง จากรูป 2. จะเห็นได้ว่า ภาพที่มองจากทั้งสองด้านจะได้ภาพที่ไม่เหมือนกัน โดย ภาพที่มองจากด้าน LEFT EYE จะไม่สามารถเห็นความ หนา แต่ภาพด้าน RIGHT EYE จะสามารถมองเห็นความ หนาของขอบวัตถุได้ด้วย จึงถูกในไปใช้ในการหาแผนที่ ความลึกของภาพ หรือ Depth Map โดย Algorithms ที่ ใช้มีหลากหลาย โดยทั่วไปแล้ว Algorithms จะสามารถ ตรวจจับบริเวณที่เป็นส่วนต่อกันระหว่างภาพ 2 ภาพได้ โดยอัตโนมัติ 
- ตัวอย่าง Algorithms 
รูป 3. 
Left Image. 
Right Image.
7 
1. SSD (Sum of Squared Differences). 
2. SO (Scanline Optimization). 
3. SAD (Sum of Absolute Difference 
4. SA (Simulated Annealing). 
5. GC (Graph Cut). 
6. DP (Dynamic Programming).
8 
การติดตั้งกล้องต้องมีการติดตั้งในลักษณะที่อยู่ในแนวที่เหมาะสมกับ Algorithms ทั้งสองภาพ เพื่อจะได้ความลึกของภาพ และสามารถจับคู่กับภาพอีกฝั่งได้แม่นยา โดยที่ตาแหน่ง W คือ ตาแหน่งแกนที่ยื่นออกมาจากฉากภาพ 
และการสร้างภาพ Depth Map จากวิธีการนี้มีการใช้งานเทคนิคหลายอย่างเข้าช่วยด้วยเพื่อให้ได้ ภาพที่มีความลึกที่ต่างกันของวัตถุชัดเจนขึ้น หรือลดเวลาการทางาน เช่นเทคนิค Graph cut หรือ การทา Stereo Matching 
W(X,Y,Z) 
(X2,Y2) 
(X1,Y1) 
Image 2 
Image 1 
Optical Axis 
รูป 4. 
X 
Y 
X 
Y 
รูป 6. 
Matching 
Graph Cut 
รูป 5.
9 
2.3 การสร้างโมเดล 3 มิติด้วย DAVID Laser Scanner 
โปรแกรม DAVID Laser Scanner เป็นโปรแกรมที่ใช้ในการสร้างโมเดล 3 มิติโดยการฉายแสง Laser ที่มีลักษณะเส้นในแนวนอน ไปกระทบที่ฉากหลังซึ่งได้ทาการ Calibrate จุดตาแหน่งที่ใช้ อ้างอิงการแสกนไว้แล้ว โดยรุ่นที่ใช้ในการทาโครงการนี้คือรุ่น DAVID 3.4.0 (Freeware) และมี ขั้นตอนการทาดังนี้ 
1. ทาการสร้างฉากหลังขึ้นมาตามแบบของโปรแกรม โดยที่โปรแกรมจะให้ภาพที่ใช้ในการ สร้างฉากติดมากับโปรแกรม สามารถเลือกขนาดและพิมพ์ออกมาติดกับพื้นหลังและใช้ได้ เลย โดยพื้นหลังต้องทามุมกันระหว่าง 45-90 องศา เพื่อให้โปรแกรมตรวจการเป็นพื้นหลัง และตาแหน่งของมุมได้ 
2. ทาการ Calibrate ฉาก โดยโปรแกรมจะทาการตรวจจับจุดที่ใช้ระบุตาแหน่ง ในรุ่นนี้มีให้ เลือกทั้งกาหนดเอง และโดยอัตโนมัติ 
3. เลือกสีของ Laser เพื่อให้โปรแกรมตรวจจับพื้นผิวของวัตถุได้ถูกต้อง 
รูป 7.
10 
4. กาหนด Result Filtering 
a. Interpolation คือ Index จานวนการแก้ไขโมเดล 
b. Smooth Average คือ Index ค่าความกระจายของ พื้นผิวโมเดล 
c. Smooth Median คือ Index ค่ากลางของพื้นผิวโมเดล 
5. เริ่มทาการ Scan ภาพ และสามารถนาไฟล์โมเดลของวัตถุ .OBJ ออกมาไช้เพื่อเข้าขึ้นตอนการขึ้นรูป 3 มิติใน OpenGL ได้ (DAVID Scanner รุ่นนี้สามารถใส่พื้นผิวลงในโมเดลได้) 
2.4 การดึงข้อมูลเพื่อแสดงผล 
2.4.1 การอ่านไฟล์ภาพ Depth Map 
การอ่านไฟล์ Depth Map ทาได้โดยการใช้ไฟล์ Bitmap เข้าสู่โปรแกรม โปรแกรมจะทาการ อ่านไฟล์และเก็บข้อมูลไว้ในตัวแปร unsigned character เนื่องจากว่าภาพ bitmap ที่ใช้มี ระดับสี 24 bit จึงต้องการใช้ unsigned character 3 ตัวเพื่อระบุสี Red Green Blue ตาม ระบบสี RGB ซึ่งแต่ละสีมีระดับได้ 8 bit คือ 0-255 ดังนั้น 3 ตัวจึงใช้ 24 bit ต่อ 1 Pixel 
รูป 8. 
ใน Pixel ของภาพ Bitmap 
RED = 186, Green = 190, Blue = 33 
รูป 9.
11 
2.4.2 การเขียนข้อมูลที่อ่านได้จาก Bitmap ในรูปของไฟล์ .OBJ 
ไฟล์นามสกุล .OBJ เป็นไฟล์ที่ถูกใช้ในงานด้าน 3 มิติอย่างกว้างขวาง เพราะมีโปรแกรมที่ พัฒนาให้รองรับไฟล์ประเภทนี้อยู่มาก อีกทั้งไฟล์นี้ยังสามารถอ่านเปิดอ่านโดยโปรแกรมเปิดไฟล์ ข้อความธรรมดา และมนุษย์สามารถอ่านให้เข้าใจได้ โดยการอ่านไฟล์ .OBJ ในโครงการนี้ จะมี ข้อมูลที่มีลักษณะที่สาคัญดังนี้ 
- ตัวอักษร v นาหน้า คือจุดที่เป็นส่วนประกอบของเวกเตอร์โดยแต่ละจุดมีพิกัดใน 3 มิติ คือพิกัด แกน X , Y และ Z 
- ตัวอักษร vt นาหน้า คือตาแหน่งที่ใช้ในการดึงพื้นผิว(Texture) โดยจะระบุตาแหน่ง X,Y 
- ตัวอักษร vn นาหน้า คือเวกเตอร์แนวฉาก (Normal Vector) มีในแนวแกน X,Y และ Z 
- ตัวอักษร f นาหน้า คือข้อมูลที่ใช้ในการระบุว่าแต่ละพื้นผิว(Surface) ต้องใช้ข้อมูลที่ตาแหน่ง ใดบ้าง 
รูป 10.
12 
การคานวณหาเวกเตอร์แนวฉาก (Normal Vector) 
เวกเตอร์แนวฉากคือเวกเตอร์ที่ชี้ตั้งฉากกับระนาบสัมผัสของวัตถุเสมอ โดยใช้มุมที่พื้นผิวหันไป กระทาต่อแสงหรือใช้ควบคุมปริมาณแสงที่ตกกระทบพื้นผิว โดยค่าที่ได้จะมีค่าเป็นบวกเสมอ 
คือ ค่าแนวฉากของแต่ละหน้าสามเหลี่ยม (Facet) 
คือ ค่าพื้นที่ของแต่ละหน้าสามเหลี่ยม (Facet) 
คือ ค่าแนวฉากของแต่ละจุด (Vertex) 
รูป 11.
13 
2.4.3 การอ่านข้อมูลจากไฟล์ .OBJ และแสดงผล 
โครงการนี้สร้างคาสั่งเพื่อวนลูปดึงข้อมูลออกมาจากไฟล์ .OBJ ที่ได้สร้างไว้แล้ว โดยทาการ เก็บข้อมูลไว้ในตัวแปร Structure โดยจะเก็บแตกต่างกันตามความต้องการของแต่ละประเภทของ ข้อมูล เช่น ข้อมูลตัวอักษรขึ้นต้นด้วย v ต้องการใช้ Structure ที่มีลักษณะ float 3 ตัว หรือ ข้อมูลที่ขึ้นต้นด้วย vt ที่ต้องการใช้ Structure ที่มีลักษณะ float 2 ตัว เป็นต้น 
เมื่อดึงข้อมูลมาเก็บไว้ในตัวแปรเรียบร้อยแล้ว จึงใช้การวนลูปสร้าง Polygon 3 เหลี่ยมใน OpenGL โดยมีคาสั่งในการสร้างคือ glBegin(GL_POLYGON); และเมื่อเสร็จแล้วก็จะได้ Polygon ที่มีจานวนมาก ประกอบกันจนสามารถมองเป็นเป็นรูปร่างได้ และในการวนลูปสร้าง Polygon สามารถกาหนดให้นารูปภาพมาแสดงเป็นพื้นผิวได้ด้วย โดยการนาไฟล์ Bitmap ที่ ต้องการให้เป็นพื้นผิวมาอ่านไฟล์โดยใช้ฟังก์ชันเดียวกับการอ่านเพื่อทาเป็นไฟล์ .OBJ แต่เก็บไว้คน ละตัวแปร เพื่อนามาทาเป็นพื้นผิวได้ 
รูป 12.
14 
บทที่ 3 : สรุปและข้อเสนอแนะ 
3.1 สรุป 
โปรแกรมนี้ค่อนข้างเป็นโปรแกรมในลักษณะปิด เพราะผู้ที่ใช้งานได้ยังต้องมีความรู้ด้านภาษา C/C++ และวิธีการนี้อาจจะยากเมื่อเทียบกับการใช้งานโปรแกรมสาเร็จรูป หรือว่าอุปกรณ์ที่ได้รับ การปรับปรุงเพื่อการใช้งานขึ้นรูป 3 มิติโดยเฉพาะ 
อย่างไรก็ดี โปรแกรมประเภทนี้ยังมีออกสู่ตลาดซอฟต์แวร์อยู่เรื่อยๆ เพราะงบประมาณลงทุน ในอุปกรณ์ และค่าซอฟแวร์ที่ใช้พัฒนาที่ต่าทาให้อนาคตของซอฟแวร์ประเภทนี้ยังมีความก้าวหน้า อยู่ตลอดเวลา 
3.2 ข้อบกพร่อง หรือข้อจากัดของโปรแกรม 
โปรแกรมมีข้อจากัดในการนาเข้าไฟล์รูปภาพ Bitmap ที่ต้องมีขนาด bit ที่เป็น 24 bit และ เป็นภาพนิ่งเท่านั้น และภาพที่ได้จากการใช้งานยังมีเหลี่ยมมุมของภาพเยอะทาให้ไม่ค่อยสวยงาม อีกทั้งยังไม่สามารถคงความละเอียดของชิ้นวัตถุได้มากเนื่องจากว่าโปรแกรมต้องทาการข้าม Pixel บาง Pixel ไปเนื่องจากการทางานที่ค่อนข้างใช้ทรัพยากรสูงหากต้องการใช้ความละเอียดที่สูงขึ้น ละโปรแกรมที่ได้ยังใช้งานยุ่งยากกับผู้ใช้ทั่วไปเพราะยังไม่มีส่วนติดต่อกับผู้ใช้โดยตรง
15 
3.3 ข้อเสนอแนะ 
การสร้างภาพ 3 มิติควรจะมีวิธีการทาให้โมเดลมีการกระจายน้าหนักแต่ละจุดเฉลี่ยกันเพื่อให้ พื้นผิวมีความเนียนมากขึ้น และลดการใช้ Pixel จานวนมาก เพราะจะทาให้ทรัพยากรของระบบ หมดลง ซึ่งอาจจะใช้ Dynamic Programming เข้าช่วย 
และควรเพิ่มส่นต่อประสานงานกับผู้ใช้ (User Interface) ให้มีความสะดวกมากขึ้น แต่ อย่างไรก็ตามโปรแกรมนี้ยังมีความยุ่งยากในแน่ที่ต้องการหา Depth Map มาก่อนจึงจะสามารถ สร้างให้อยู่ในรูปของ 3 มิติได้ และมีเพียงระนาบที่ยื่นออกมาเพียงด้านเดียวเท่านั้นที่สามารถใช้ได้ ซึ่งอาจจะเพิ่มเติมคุณสมบัติในส่วนนี้คือ ให้สามารถนาภาพ Depth Map จากหลายๆภาพ เพื่อ รวมกันให้เป็นชิ้นวัตถุ สามารถมองเห็นความลึกจากทุกๆด้าน
16 
บทที่ 4 : บรรณานุกรม 
4.1 บรรณานุกรม 
(http://3dstereophoto.blogspot.com/2011/06/depth-maps-from-stereo-pairs.html. 2011) 
Oskar Veerhoek. (18 July 2012 ). C++ OpenGL #1 - Some basic GLUT. http://www.thecodinguniverse.com/ 
William Jacobs. (18 July 2012 ). OpenGL Tutorial. http://www.videotutorialsrock.com/ 
(http://www.learn- i.com/index.php?option=com_content&view=article&id=30%3Aopengl28&catid=1%3Ac- opengl&Itemid=2&lang=en.2011 
Tuotuo Li,Feng Hu and Zheng Geng.(2011) Geometric calibration of a camera-projector 3D imaging system. 187. ACM Digital Library,ISBN: 978-1-4503-1060-4

Contenu connexe

Similaire à sample plot 3D form depth map using OpenCV

3D Projection Mapping
3D Projection Mapping3D Projection Mapping
3D Projection MappingJump' Kmutt
 
บทที่1
บทที่1บทที่1
บทที่1jibbie23
 
01 intro computergraphic
01 intro computergraphic01 intro computergraphic
01 intro computergraphicpisandesign
 
การสอนครั้งที่ 2 intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิก
การสอนครั้งที่ 2   intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิกการสอนครั้งที่ 2   intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิก
การสอนครั้งที่ 2 intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิกjibbie23
 
ประเภทของภาพกราฟฟิค
ประเภทของภาพกราฟฟิคประเภทของภาพกราฟฟิค
ประเภทของภาพกราฟฟิคwattikorn_080
 
Still image
Still imageStill image
Still imagejibbie23
 
Image Digitization with Scanning Technology
Image Digitization with Scanning TechnologyImage Digitization with Scanning Technology
Image Digitization with Scanning TechnologyRachabodin Suwannakanthi
 
การใช้โปรแกรมกราฟิกส์.1
การใช้โปรแกรมกราฟิกส์.1การใช้โปรแกรมกราฟิกส์.1
การใช้โปรแกรมกราฟิกส์.1Sodaam AC
 
การใช้งาน Adobe photoshop cs5
การใช้งาน Adobe photoshop cs5การใช้งาน Adobe photoshop cs5
การใช้งาน Adobe photoshop cs5Rattapadol Gunhakoon
 
โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5JoyCe Zii Zii
 
โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5JoyCe Zii Zii
 
โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5Aungkana Na Na
 
คอมพิวเตอร์กราฟิกส์ (Computer graphics)
คอมพิวเตอร์กราฟิกส์ (Computer graphics)คอมพิวเตอร์กราฟิกส์ (Computer graphics)
คอมพิวเตอร์กราฟิกส์ (Computer graphics)kru na Swkj
 

Similaire à sample plot 3D form depth map using OpenCV (20)

3D Projection Mapping
3D Projection Mapping3D Projection Mapping
3D Projection Mapping
 
บทที่1
บทที่1บทที่1
บทที่1
 
01 intro computergraphic
01 intro computergraphic01 intro computergraphic
01 intro computergraphic
 
Com Vision
Com VisionCom Vision
Com Vision
 
การสอนครั้งที่ 2 intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิก
การสอนครั้งที่ 2   intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิกการสอนครั้งที่ 2   intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิก
การสอนครั้งที่ 2 intro ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์กราฟิก
 
ประเภท
ประเภทประเภท
ประเภท
 
ประเภทของภาพกราฟฟิค
ประเภทของภาพกราฟฟิคประเภทของภาพกราฟฟิค
ประเภทของภาพกราฟฟิค
 
Still image
Still imageStill image
Still image
 
Inkscape
InkscapeInkscape
Inkscape
 
Image Digitization with Scanning Technology
Image Digitization with Scanning TechnologyImage Digitization with Scanning Technology
Image Digitization with Scanning Technology
 
การใช้โปรแกรมกราฟิกส์.1
การใช้โปรแกรมกราฟิกส์.1การใช้โปรแกรมกราฟิกส์.1
การใช้โปรแกรมกราฟิกส์.1
 
การใช้งาน Adobe photoshop cs5
การใช้งาน Adobe photoshop cs5การใช้งาน Adobe photoshop cs5
การใช้งาน Adobe photoshop cs5
 
โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5
 
โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5
 
Photoshop lab1
Photoshop lab1Photoshop lab1
Photoshop lab1
 
โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5โครงงานพัฒนาเครื่องมือ 5
โครงงานพัฒนาเครื่องมือ 5
 
คู่มือ58170038
คู่มือ58170038คู่มือ58170038
คู่มือ58170038
 
Map windowgismanual
Map windowgismanualMap windowgismanual
Map windowgismanual
 
Photoshop ict
Photoshop ictPhotoshop ict
Photoshop ict
 
คอมพิวเตอร์กราฟิกส์ (Computer graphics)
คอมพิวเตอร์กราฟิกส์ (Computer graphics)คอมพิวเตอร์กราฟิกส์ (Computer graphics)
คอมพิวเตอร์กราฟิกส์ (Computer graphics)
 

Plus de Bhuridech Sudsee

Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum ComputingBhuridech Sudsee
 
เสี่ยวเอ้อสอน Spark
เสี่ยวเอ้อสอน Sparkเสี่ยวเอ้อสอน Spark
เสี่ยวเอ้อสอน SparkBhuridech Sudsee
 
18 ฝ่ามือพิชิต docker
18 ฝ่ามือพิชิต docker18 ฝ่ามือพิชิต docker
18 ฝ่ามือพิชิต dockerBhuridech Sudsee
 
หนังสือภาษาไทย Spark Internal
หนังสือภาษาไทย Spark Internalหนังสือภาษาไทย Spark Internal
หนังสือภาษาไทย Spark InternalBhuridech Sudsee
 
Git ฉบับอนุบาล 2
Git ฉบับอนุบาล 2Git ฉบับอนุบาล 2
Git ฉบับอนุบาล 2Bhuridech Sudsee
 
illustrator & design workshop
illustrator & design workshopillustrator & design workshop
illustrator & design workshopBhuridech Sudsee
 
Producer and Consumer problem
Producer and Consumer problemProducer and Consumer problem
Producer and Consumer problemBhuridech Sudsee
 
Market management with ZK Grails
Market management with ZK GrailsMarket management with ZK Grails
Market management with ZK GrailsBhuridech Sudsee
 
Networking section present
Networking section presentNetworking section present
Networking section presentBhuridech Sudsee
 
Breast Cancer data mining KDD
Breast Cancer data mining KDDBreast Cancer data mining KDD
Breast Cancer data mining KDDBhuridech Sudsee
 

Plus de Bhuridech Sudsee (20)

Kafka for developer
Kafka for developerKafka for developer
Kafka for developer
 
Xss and sql injection
Xss and sql injectionXss and sql injection
Xss and sql injection
 
Introduction to Quantum Computing
Introduction to Quantum ComputingIntroduction to Quantum Computing
Introduction to Quantum Computing
 
$ Spark start
$  Spark start$  Spark start
$ Spark start
 
เสี่ยวเอ้อสอน Spark
เสี่ยวเอ้อสอน Sparkเสี่ยวเอ้อสอน Spark
เสี่ยวเอ้อสอน Spark
 
Jpa sa-60
Jpa sa-60Jpa sa-60
Jpa sa-60
 
18 ฝ่ามือพิชิต docker
18 ฝ่ามือพิชิต docker18 ฝ่ามือพิชิต docker
18 ฝ่ามือพิชิต docker
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
หนังสือภาษาไทย Spark Internal
หนังสือภาษาไทย Spark Internalหนังสือภาษาไทย Spark Internal
หนังสือภาษาไทย Spark Internal
 
VBoxManage tutorial
VBoxManage tutorialVBoxManage tutorial
VBoxManage tutorial
 
Git ฉบับอนุบาล 2
Git ฉบับอนุบาล 2Git ฉบับอนุบาล 2
Git ฉบับอนุบาล 2
 
illustrator & design workshop
illustrator & design workshopillustrator & design workshop
illustrator & design workshop
 
The bounded buffer
The bounded bufferThe bounded buffer
The bounded buffer
 
operating system
operating systemoperating system
operating system
 
Producer and Consumer problem
Producer and Consumer problemProducer and Consumer problem
Producer and Consumer problem
 
OPD System with ZK Grails
OPD System with ZK GrailsOPD System with ZK Grails
OPD System with ZK Grails
 
Market management with ZK Grails
Market management with ZK GrailsMarket management with ZK Grails
Market management with ZK Grails
 
Websocket & HTML5
Websocket & HTML5Websocket & HTML5
Websocket & HTML5
 
Networking section present
Networking section presentNetworking section present
Networking section present
 
Breast Cancer data mining KDD
Breast Cancer data mining KDDBreast Cancer data mining KDD
Breast Cancer data mining KDD
 

sample plot 3D form depth map using OpenCV

  • 1. รายงานโครงการ การทาภาพ 3 มิติ จากภาพ Depth Map จัดทาโดย B5304516 นายภูริเดช สุดสี เสนอ ผู้ช่วยศาสตราจารย์ ดร.ปรเมศวร์ ห่อแก้ว รายงานประกอบรายวิชา 423421 โครงการวิศวกรรมคอมพิวเตอร์ 1 ภาคการศึกษาที่ 1/2555 มหาวิทยาลัยเทคโนโลยีสุรนารี จ.นครราชสีมา
  • 2. 1 สารบัญ เรื่อง หน้า บทที่ 1 : บทนา 1.1 ที่มาและความสาคัญของโครงการ 3 1.2 หลักการและเหตุผล 3 1.3 วัตถุประสงค์ 4 1.4 เครื่องมือ 4 บทที่ 2 : หลักการทางาน 2.1 ภาพแผนที่ความลึก (Depth Map) 5 2.2 การหา Depth Map จากภาพหลายมุมมอง 6 2.3 การสร้างโมเดล 3 มิติด้วย DAVID Laser Scanner 9 2.4 การดึงข้อมูลเพื่อแสดงผล 10 บทที่ 3 : สรุปและข้อเสนอแนะ 3.1 สรุป 14 3.2 ข้อบกพร่อง หรือข้อจากัดของโปรแกรม 14 3.3 ข้อเสนอแนะ 15 บทที่ 4 : บรรณานุกรม 4.1 บรรณานุกรม 16
  • 3. 2 (2) ภาพด้านขวา (1) ภาพด้านซ้าย (3) ภาพ Depth Map (4) ไฟล์ .OBJ ไฟล์จาก DAVID Laser Scanner แผนผังการทางานของโปรแกรมประกอบโครงการ
  • 4. 3 บทที่ 1 : บทนา 1.1 ที่มาและความสาคัญของโครงการ โดยปกติเมื่อเราถ่ายรูปจากกล้องเราจะได้ภาพที่มีมุมมองเพียง 2 มิติเท่านั้น คือด้านของความ กว้างและด้านของความสูง ทาให้ขาดการรับรู้บางอย่างที่มีได้ในระบบภาพ 3 มิติ คือความลึกของ ภาพซึ่งสามารถสื่อถึงความใกล้-ไกล ของวัตถุ และสามารถใช้ในการแยกชั้น (Layer) ของวัตถุแต่ ละชิ้นในภาพออกจากกันได้ และเพื่อประโยชน์ในการประยุกต์ใช้ในงานอื่นที่จาเป็นต้องใช้ภาพที่มี ความลึกเพื่อระบุตาแหน่งของวัตถุ เช่น งานด้านการแสดงและภาพยนต์ใช้ในการหาความลึกของ วัตถุเพื่อลบฉากหลังออกจากภาพ เป็นต้น 1.2 หลักการและเหตุผล เทคโนโลยีการแสดงภาพ 3 มิติในปัจจุบันได้รับความนิยมมากขึ้น ดังจะเห็นได้จากการแปลง ภาพให้อยู่ในสื่อต่างๆในรูปแบบ 3 มีติ มีต้นทุนในการผลิตต่าลง และผู้ใช้ทั่วๆไปสามารถสร้างภาพ 3 มิติอย่างง่ายได้ด้วยตนเองด้วยชุดซอฟแวร์สาเร็จรูป และอีกวิธีการสร้างภาพ 3 มิติที่ได้รับความนิยมเป็นอย่างมากก็คือการนาภาพ 2 ภาพมาหา ความลึกของภาพเพื่อจะนาไปใช้งานต่อไป ซึ่งวิธีนี้จาเป็นต้องใช้ภาพถ่ายจากมุมที่ต่างกันในระยะที่ เหมาะสม ซึ่งปกติเมื่อได้ความลึกของภาพแล้วก็จะสามารถแยกชั้น(Layer) ของวัตถุออกจากกันได้ ดังนั้นโครงการนี้จึงเป็นการต่อยอดภาพที่ได้จากการหาภาพที่แสดงความลึกของวัตถุ หรือ Depth Map ที่ได้มาจาการใช้ฟังก์ชันที่เป็น Library ของ OpenCV มาแสดงออกทางจอภาพโดยใช้ OpenGL ในการสร้างภาพจากสมการและค่าที่ได้มากจากภาพ Depth Map
  • 5. 4 1.3 วัตถุประสงค์ 1.เพื่อศึกษาการหาความลึกของภาพจากขึ้นตอนการทาภาพ Depth Map โดยอาศัยการใช้ Library ของ OpenCV 2.เพื่อศึกษาหลักการการสร้างภาพโดยใช้คาสั่งทางคอมพิวเตอร์และสมการทางคณิตศาสตร์ โดยใช้ Library ของ OpenGL 3.เข้าใจกระบวนการสร้างโมเดล 3 มิติ (3D Model) โดยการใช้ Depth map 4.สามารถประยุกต์ใช้ภาพที่ได้จาก Depth Map มาสร้างเป็นภาพโดยใช้ OpenGL 5.เพื่อประกอบการเรียนการสอนรายวิชา 423421 โครงการวิศวกรรมคอมพิวเตอร์ 1 1.4 เครื่องมือที่ใช้ 1.โปรแกรม Microsoft Visual Studio 2010 With C/C++ Language 2.OpenCV Library 3.OpenGL Library with Glut 2.4 4.DAVID Laser Scanner 3.4.0 5.กล้อง / กล้องเว็บแคม 6.Laser Pointer 7.ฉากหลังเพื่อ Calibrate กล้องของโปรแกรม
  • 6. 5 บทที่ 2 : หลักการทางาน 2.1 ภาพแผนที่ความลึก (Depth Map) ภาพแผนทึ่ความลึก หรือ Depth Map คือภาพที่แสดงความลึกของวัตถุโดยภาพที่เป็นของ Depth Map จะมีลักษณะเป็นภาพ Gray scale โดยระบุความลึกที่ได้จากการนาเข้าฟังก์ชัน คานวณผลลัพธ์จากการนาภาพ 2 ภาพ โดยผลลัพธ์ที่ได้จะถูกแบ่งออกเป็น Pixel ตามความ ละเอียดที่ได้กาหนดไว้ ซึ่งโดยปกติหลักการของสีคือการผสมกันระหว่างสีของ RGB (Red,Green,Blue) ใน Pixel ของภาพ แต่ในภาพ Depth Map ที่เสร็จแล้วจะได้ผลลัพธ์ออกมา เป็นภาพที่แต่ละ Pixel จะมีค่าสี RGB ที่เท่ากันดังนั้นเราจึงสามารถเรียกให้สีใดใน 3 สีนี้มาแสดง ได้เลยโดยจะได้ผลลัพธ์ที่ตาแหน่ง Pixel เดียวกันมีค่าสีเท่ากัน และค่าสีนี้จะมีค่าตั้งแต่ 0-255 ตาม หลักของสี 8 bit คือ = 256 ช่วงสี โดยปกติกาหนดให้ 0 คือ ดา ถึง 255 คือขาว 256 ช่วงสี 0 255 รูป 1.
  • 7. 6 LEFT EYE RIGHT EYE รูป 2. 2.2 การหา Depth Map จากภาพหลายมุมมอง การหาภาพ Depth Map สามารถทาได้หลายวิธีการ แต่ตัวอย่างภาพที่นามาใช้ในโครงการนี้ได้มากจากการ ถ่ายภาพของวัตถุที่หลายมุมมอง จากรูป 2. จะเห็นได้ว่า ภาพที่มองจากทั้งสองด้านจะได้ภาพที่ไม่เหมือนกัน โดย ภาพที่มองจากด้าน LEFT EYE จะไม่สามารถเห็นความ หนา แต่ภาพด้าน RIGHT EYE จะสามารถมองเห็นความ หนาของขอบวัตถุได้ด้วย จึงถูกในไปใช้ในการหาแผนที่ ความลึกของภาพ หรือ Depth Map โดย Algorithms ที่ ใช้มีหลากหลาย โดยทั่วไปแล้ว Algorithms จะสามารถ ตรวจจับบริเวณที่เป็นส่วนต่อกันระหว่างภาพ 2 ภาพได้ โดยอัตโนมัติ - ตัวอย่าง Algorithms รูป 3. Left Image. Right Image.
  • 8. 7 1. SSD (Sum of Squared Differences). 2. SO (Scanline Optimization). 3. SAD (Sum of Absolute Difference 4. SA (Simulated Annealing). 5. GC (Graph Cut). 6. DP (Dynamic Programming).
  • 9. 8 การติดตั้งกล้องต้องมีการติดตั้งในลักษณะที่อยู่ในแนวที่เหมาะสมกับ Algorithms ทั้งสองภาพ เพื่อจะได้ความลึกของภาพ และสามารถจับคู่กับภาพอีกฝั่งได้แม่นยา โดยที่ตาแหน่ง W คือ ตาแหน่งแกนที่ยื่นออกมาจากฉากภาพ และการสร้างภาพ Depth Map จากวิธีการนี้มีการใช้งานเทคนิคหลายอย่างเข้าช่วยด้วยเพื่อให้ได้ ภาพที่มีความลึกที่ต่างกันของวัตถุชัดเจนขึ้น หรือลดเวลาการทางาน เช่นเทคนิค Graph cut หรือ การทา Stereo Matching W(X,Y,Z) (X2,Y2) (X1,Y1) Image 2 Image 1 Optical Axis รูป 4. X Y X Y รูป 6. Matching Graph Cut รูป 5.
  • 10. 9 2.3 การสร้างโมเดล 3 มิติด้วย DAVID Laser Scanner โปรแกรม DAVID Laser Scanner เป็นโปรแกรมที่ใช้ในการสร้างโมเดล 3 มิติโดยการฉายแสง Laser ที่มีลักษณะเส้นในแนวนอน ไปกระทบที่ฉากหลังซึ่งได้ทาการ Calibrate จุดตาแหน่งที่ใช้ อ้างอิงการแสกนไว้แล้ว โดยรุ่นที่ใช้ในการทาโครงการนี้คือรุ่น DAVID 3.4.0 (Freeware) และมี ขั้นตอนการทาดังนี้ 1. ทาการสร้างฉากหลังขึ้นมาตามแบบของโปรแกรม โดยที่โปรแกรมจะให้ภาพที่ใช้ในการ สร้างฉากติดมากับโปรแกรม สามารถเลือกขนาดและพิมพ์ออกมาติดกับพื้นหลังและใช้ได้ เลย โดยพื้นหลังต้องทามุมกันระหว่าง 45-90 องศา เพื่อให้โปรแกรมตรวจการเป็นพื้นหลัง และตาแหน่งของมุมได้ 2. ทาการ Calibrate ฉาก โดยโปรแกรมจะทาการตรวจจับจุดที่ใช้ระบุตาแหน่ง ในรุ่นนี้มีให้ เลือกทั้งกาหนดเอง และโดยอัตโนมัติ 3. เลือกสีของ Laser เพื่อให้โปรแกรมตรวจจับพื้นผิวของวัตถุได้ถูกต้อง รูป 7.
  • 11. 10 4. กาหนด Result Filtering a. Interpolation คือ Index จานวนการแก้ไขโมเดล b. Smooth Average คือ Index ค่าความกระจายของ พื้นผิวโมเดล c. Smooth Median คือ Index ค่ากลางของพื้นผิวโมเดล 5. เริ่มทาการ Scan ภาพ และสามารถนาไฟล์โมเดลของวัตถุ .OBJ ออกมาไช้เพื่อเข้าขึ้นตอนการขึ้นรูป 3 มิติใน OpenGL ได้ (DAVID Scanner รุ่นนี้สามารถใส่พื้นผิวลงในโมเดลได้) 2.4 การดึงข้อมูลเพื่อแสดงผล 2.4.1 การอ่านไฟล์ภาพ Depth Map การอ่านไฟล์ Depth Map ทาได้โดยการใช้ไฟล์ Bitmap เข้าสู่โปรแกรม โปรแกรมจะทาการ อ่านไฟล์และเก็บข้อมูลไว้ในตัวแปร unsigned character เนื่องจากว่าภาพ bitmap ที่ใช้มี ระดับสี 24 bit จึงต้องการใช้ unsigned character 3 ตัวเพื่อระบุสี Red Green Blue ตาม ระบบสี RGB ซึ่งแต่ละสีมีระดับได้ 8 bit คือ 0-255 ดังนั้น 3 ตัวจึงใช้ 24 bit ต่อ 1 Pixel รูป 8. ใน Pixel ของภาพ Bitmap RED = 186, Green = 190, Blue = 33 รูป 9.
  • 12. 11 2.4.2 การเขียนข้อมูลที่อ่านได้จาก Bitmap ในรูปของไฟล์ .OBJ ไฟล์นามสกุล .OBJ เป็นไฟล์ที่ถูกใช้ในงานด้าน 3 มิติอย่างกว้างขวาง เพราะมีโปรแกรมที่ พัฒนาให้รองรับไฟล์ประเภทนี้อยู่มาก อีกทั้งไฟล์นี้ยังสามารถอ่านเปิดอ่านโดยโปรแกรมเปิดไฟล์ ข้อความธรรมดา และมนุษย์สามารถอ่านให้เข้าใจได้ โดยการอ่านไฟล์ .OBJ ในโครงการนี้ จะมี ข้อมูลที่มีลักษณะที่สาคัญดังนี้ - ตัวอักษร v นาหน้า คือจุดที่เป็นส่วนประกอบของเวกเตอร์โดยแต่ละจุดมีพิกัดใน 3 มิติ คือพิกัด แกน X , Y และ Z - ตัวอักษร vt นาหน้า คือตาแหน่งที่ใช้ในการดึงพื้นผิว(Texture) โดยจะระบุตาแหน่ง X,Y - ตัวอักษร vn นาหน้า คือเวกเตอร์แนวฉาก (Normal Vector) มีในแนวแกน X,Y และ Z - ตัวอักษร f นาหน้า คือข้อมูลที่ใช้ในการระบุว่าแต่ละพื้นผิว(Surface) ต้องใช้ข้อมูลที่ตาแหน่ง ใดบ้าง รูป 10.
  • 13. 12 การคานวณหาเวกเตอร์แนวฉาก (Normal Vector) เวกเตอร์แนวฉากคือเวกเตอร์ที่ชี้ตั้งฉากกับระนาบสัมผัสของวัตถุเสมอ โดยใช้มุมที่พื้นผิวหันไป กระทาต่อแสงหรือใช้ควบคุมปริมาณแสงที่ตกกระทบพื้นผิว โดยค่าที่ได้จะมีค่าเป็นบวกเสมอ คือ ค่าแนวฉากของแต่ละหน้าสามเหลี่ยม (Facet) คือ ค่าพื้นที่ของแต่ละหน้าสามเหลี่ยม (Facet) คือ ค่าแนวฉากของแต่ละจุด (Vertex) รูป 11.
  • 14. 13 2.4.3 การอ่านข้อมูลจากไฟล์ .OBJ และแสดงผล โครงการนี้สร้างคาสั่งเพื่อวนลูปดึงข้อมูลออกมาจากไฟล์ .OBJ ที่ได้สร้างไว้แล้ว โดยทาการ เก็บข้อมูลไว้ในตัวแปร Structure โดยจะเก็บแตกต่างกันตามความต้องการของแต่ละประเภทของ ข้อมูล เช่น ข้อมูลตัวอักษรขึ้นต้นด้วย v ต้องการใช้ Structure ที่มีลักษณะ float 3 ตัว หรือ ข้อมูลที่ขึ้นต้นด้วย vt ที่ต้องการใช้ Structure ที่มีลักษณะ float 2 ตัว เป็นต้น เมื่อดึงข้อมูลมาเก็บไว้ในตัวแปรเรียบร้อยแล้ว จึงใช้การวนลูปสร้าง Polygon 3 เหลี่ยมใน OpenGL โดยมีคาสั่งในการสร้างคือ glBegin(GL_POLYGON); และเมื่อเสร็จแล้วก็จะได้ Polygon ที่มีจานวนมาก ประกอบกันจนสามารถมองเป็นเป็นรูปร่างได้ และในการวนลูปสร้าง Polygon สามารถกาหนดให้นารูปภาพมาแสดงเป็นพื้นผิวได้ด้วย โดยการนาไฟล์ Bitmap ที่ ต้องการให้เป็นพื้นผิวมาอ่านไฟล์โดยใช้ฟังก์ชันเดียวกับการอ่านเพื่อทาเป็นไฟล์ .OBJ แต่เก็บไว้คน ละตัวแปร เพื่อนามาทาเป็นพื้นผิวได้ รูป 12.
  • 15. 14 บทที่ 3 : สรุปและข้อเสนอแนะ 3.1 สรุป โปรแกรมนี้ค่อนข้างเป็นโปรแกรมในลักษณะปิด เพราะผู้ที่ใช้งานได้ยังต้องมีความรู้ด้านภาษา C/C++ และวิธีการนี้อาจจะยากเมื่อเทียบกับการใช้งานโปรแกรมสาเร็จรูป หรือว่าอุปกรณ์ที่ได้รับ การปรับปรุงเพื่อการใช้งานขึ้นรูป 3 มิติโดยเฉพาะ อย่างไรก็ดี โปรแกรมประเภทนี้ยังมีออกสู่ตลาดซอฟต์แวร์อยู่เรื่อยๆ เพราะงบประมาณลงทุน ในอุปกรณ์ และค่าซอฟแวร์ที่ใช้พัฒนาที่ต่าทาให้อนาคตของซอฟแวร์ประเภทนี้ยังมีความก้าวหน้า อยู่ตลอดเวลา 3.2 ข้อบกพร่อง หรือข้อจากัดของโปรแกรม โปรแกรมมีข้อจากัดในการนาเข้าไฟล์รูปภาพ Bitmap ที่ต้องมีขนาด bit ที่เป็น 24 bit และ เป็นภาพนิ่งเท่านั้น และภาพที่ได้จากการใช้งานยังมีเหลี่ยมมุมของภาพเยอะทาให้ไม่ค่อยสวยงาม อีกทั้งยังไม่สามารถคงความละเอียดของชิ้นวัตถุได้มากเนื่องจากว่าโปรแกรมต้องทาการข้าม Pixel บาง Pixel ไปเนื่องจากการทางานที่ค่อนข้างใช้ทรัพยากรสูงหากต้องการใช้ความละเอียดที่สูงขึ้น ละโปรแกรมที่ได้ยังใช้งานยุ่งยากกับผู้ใช้ทั่วไปเพราะยังไม่มีส่วนติดต่อกับผู้ใช้โดยตรง
  • 16. 15 3.3 ข้อเสนอแนะ การสร้างภาพ 3 มิติควรจะมีวิธีการทาให้โมเดลมีการกระจายน้าหนักแต่ละจุดเฉลี่ยกันเพื่อให้ พื้นผิวมีความเนียนมากขึ้น และลดการใช้ Pixel จานวนมาก เพราะจะทาให้ทรัพยากรของระบบ หมดลง ซึ่งอาจจะใช้ Dynamic Programming เข้าช่วย และควรเพิ่มส่นต่อประสานงานกับผู้ใช้ (User Interface) ให้มีความสะดวกมากขึ้น แต่ อย่างไรก็ตามโปรแกรมนี้ยังมีความยุ่งยากในแน่ที่ต้องการหา Depth Map มาก่อนจึงจะสามารถ สร้างให้อยู่ในรูปของ 3 มิติได้ และมีเพียงระนาบที่ยื่นออกมาเพียงด้านเดียวเท่านั้นที่สามารถใช้ได้ ซึ่งอาจจะเพิ่มเติมคุณสมบัติในส่วนนี้คือ ให้สามารถนาภาพ Depth Map จากหลายๆภาพ เพื่อ รวมกันให้เป็นชิ้นวัตถุ สามารถมองเห็นความลึกจากทุกๆด้าน
  • 17. 16 บทที่ 4 : บรรณานุกรม 4.1 บรรณานุกรม (http://3dstereophoto.blogspot.com/2011/06/depth-maps-from-stereo-pairs.html. 2011) Oskar Veerhoek. (18 July 2012 ). C++ OpenGL #1 - Some basic GLUT. http://www.thecodinguniverse.com/ William Jacobs. (18 July 2012 ). OpenGL Tutorial. http://www.videotutorialsrock.com/ (http://www.learn- i.com/index.php?option=com_content&view=article&id=30%3Aopengl28&catid=1%3Ac- opengl&Itemid=2&lang=en.2011 Tuotuo Li,Feng Hu and Zheng Geng.(2011) Geometric calibration of a camera-projector 3D imaging system. 187. ACM Digital Library,ISBN: 978-1-4503-1060-4