sample plot 3D form depth map using OpenCV

17
รายงานโครงการ การทาภาพ 3 มิติ จากภาพ Depth Map จัดทาโดย B5304516 นายภูริเดช สุดสี เสนอ ผู้ช่วยศาสตราจารย์ ดร.ปรเมศวร์ ห่อแก้ว รายงานประกอบรายวิชา 423421 โครงการวิศวกรรมคอมพิวเตอร์ 1 ภาคการศึกษาที่ 1/2555 มหาวิทยาลัยเทคโนโลยีสุรนารี จ.นครราชสีมา

description

sample plot 3D form depth map using OpenCV

Transcript of sample plot 3D form depth map using OpenCV

Page 1: sample plot 3D form depth map using OpenCV

รายงานโครงการ

การท าภาพ 3 มต จากภาพ Depth Map

จดท าโดย

B5304516 นายภรเดช สดส

เสนอ

ผชวยศาสตราจารย ดร.ปรเมศวร หอแกว

รายงานประกอบรายวชา 423421 โครงการวศวกรรมคอมพวเตอร 1 ภาคการศกษาท 1/2555

มหาวทยาลยเทคโนโลยสรนาร จ.นครราชสมา

Page 2: sample plot 3D form depth map using OpenCV

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

Page 3: sample plot 3D form depth map using OpenCV

2

(2) ภาพดานขวา

(1) ภาพดานซาย

(3) ภาพ

Depth Map (4) ไฟล .OBJ

ไฟลจาก DAVID Laser

Scanner

แผนผงการท างานของโปรแกรมประกอบโครงการ

Page 4: sample plot 3D form depth map using OpenCV

3

บทท 1 : บทน า

1.1 ทมาและความส าคญของโครงการ

โดยปกตเมอเราถายรปจากกลองเราจะไดภาพทมมมมองเพยง 2 มตเทานน คอดานของความ

กวางและดานของความสง ท าใหขาดการรบรบางอยางทมไดในระบบภาพ 3 มต คอความลกของ

ภาพซงสามารถสอถงความใกล-ไกล ของวตถ และสามารถใชในการแยกชน (Layer) ของวตถแต

ละชนในภาพออกจากกนได และเพอประโยชนในการประยกตใชในงานอนทจ าเปนตองใชภาพทม

ความลกเพอระบต าแหนงของวตถ เชน งานดานการแสดงและภาพยนตใชในการหาความลกของ

วตถเพอลบฉากหลงออกจากภาพ เปนตน

1.2 หลกการและเหตผล

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

ภาพใหอยในสอตางๆในรปแบบ 3 มต มตนทนในการผลตต าลง และผใชทวๆไปสามารถสรางภาพ

3 มตอยางงายไดดวยตนเองดวยชดซอฟแวรส าเรจรป

และอกวธการสรางภาพ 3 มตทไดรบความนยมเปนอยางมากกคอการน าภาพ 2 ภาพมาหา

ความลกของภาพเพอจะน าไปใชงานตอไป ซงวธนจ าเปนตองใชภาพถายจากมมทตางกนในระยะท

เหมาะสม ซงปกตเมอไดความลกของภาพแลวกจะสามารถแยกชน(Layer) ของวตถออกจากกนได

ดงนนโครงการนจงเปนการตอยอดภาพทไดจากการหาภาพทแสดงความลกของวตถ หรอ Depth

Map ทไดมาจาการใชฟงกชนทเปน Library ของ OpenCV มาแสดงออกทางจอภาพโดยใช

OpenGL ในการสรางภาพจากสมการและคาทไดมากจากภาพ Depth Map

Page 5: sample plot 3D form depth map using OpenCV

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 กลองของโปรแกรม

Page 6: sample plot 3D form depth map using OpenCV

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.

Page 7: sample plot 3D form depth map using OpenCV

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.

Page 8: sample plot 3D form depth map using OpenCV

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).

Page 9: sample plot 3D form depth map using OpenCV

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.

Page 10: sample plot 3D form depth map using OpenCV

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.

Page 11: sample plot 3D form depth map using OpenCV

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.

Page 12: sample plot 3D form depth map using OpenCV

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.

Page 13: sample plot 3D form depth map using OpenCV

12

การค านวณหาเวกเตอรแนวฉาก (Normal Vector)

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

กระท าตอแสงหรอใชควบคมปรมาณแสงทตกกระทบพนผว โดยคาทไดจะมคาเปนบวกเสมอ

คอ คาแนวฉากของแตละหนาสามเหลยม (Facet)

คอ คาพนทของแตละหนาสามเหลยม (Facet)

คอ คาแนวฉากของแตละจด (Vertex)

รป 11.

Page 14: sample plot 3D form depth map using OpenCV

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.

Page 15: sample plot 3D form depth map using OpenCV

14

บทท 3 : สรปและขอเสนอแนะ

3.1 สรป

โปรแกรมนคอนขางเปนโปรแกรมในลกษณะปด เพราะผทใชงานไดยงตองมความรดานภาษา

C/C++ และวธการนอาจจะยากเมอเทยบกบการใชงานโปรแกรมส าเรจรป หรอวาอปกรณทไดรบ

การปรบปรงเพอการใชงานขนรป 3 มตโดยเฉพาะ

อยางไรกด โปรแกรมประเภทนยงมออกสตลาดซอฟตแวรอยเรอยๆ เพราะงบประมาณลงทน

ในอปกรณ และคาซอฟแวรทใชพฒนาทต าท าใหอนาคตของซอฟแวรประเภทนยงมความกาวหนา

อยตลอดเวลา

3.2 ขอบกพรอง หรอขอจ ากดของโปรแกรม

โปรแกรมมขอจ ากดในการน าเขาไฟลรปภาพ Bitmap ทตองมขนาด bit ทเปน 24 bit และ

เปนภาพนงเทานน และภาพทไดจากการใชงานยงมเหลยมมมของภาพเยอะท าใหไมคอยสวยงาม

อกทงยงไมสามารถคงความละเอยดของชนวตถไดมากเนองจากวาโปรแกรมตองท าการขาม Pixel

บาง Pixel ไปเนองจากการท างานทคอนขางใชทรพยากรสงหากตองการใชความละเอยดทสงขน

ละโปรแกรมทไดยงใชงานยงยากกบผใชทวไปเพราะยงไมมสวนตดตอกบผใชโดยตรง

Page 16: sample plot 3D form depth map using OpenCV

15

3.3 ขอเสนอแนะ

การสรางภาพ 3 มตควรจะมวธการท าใหโมเดลมการกระจายน าหนกแตละจดเฉลยกนเพอให

พนผวมความเนยนมากขน และลดการใช Pixel จ านวนมาก เพราะจะท าใหทรพยากรของระบบ

หมดลง ซงอาจจะใช Dynamic Programming เขาชวย

และควรเพมสนตอประสานงานกบผใช (User Interface) ใหมความสะดวกมากขน แต

อยางไรกตามโปรแกรมนยงมความยงยากในแนทตองการหา Depth Map มากอนจงจะสามารถ

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

ซงอาจจะเพมเตมคณสมบตในสวนนคอ ใหสามารถน าภาพ Depth Map จากหลายๆภาพ เพอ

รวมกนใหเปนชนวตถ สามารถมองเหนความลกจากทกๆดาน

Page 17: sample plot 3D form depth map using OpenCV

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