sample plot 3D form depth map using OpenCV
-
Upload
bhuridech-sudsee -
Category
Education
-
view
329 -
download
3
description
Transcript of sample plot 3D form depth map using OpenCV
รายงานโครงการ
การท าภาพ 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