Image Processing & Computer Vision Projection Model & Stereo Vision
Projection Model Computer Graphic (X,Y,Z) = 3D Coordinate (X,Y) = 2D Coordinate
Projection Model (เป็นไปตามกฎของสามเหลี่ยม)
Perspective Projection Model ดังนั้น disparity สูง วัตถุอยู่ใกล้ตา disparity ต่ำ วัตถุไกลตา B = distance between two cameras or eyes f ระยะห่างจากกล้องไปฉากหลัง Z ระยะห่างจากกล้องไปยังวัตถุ B ระยะห่างระหว่างกล้องซ้ายและขวา X ระยะห่างของวัตถุจากแกน X xl ระยะห่างของวัตถุที่สะท้อนฉากหลังของกล้องซ้าย xr ระยะห่างของวัตถุที่สะท้อนฉากหลังของกล้องขวา
Perspective Projection Model กรณีวัตถุอยู่ไกลออกไป จะทำให้ได้ disparity ต่ำลง
Stereo Vision Stereo Vision คือ การจำลองการมองของตาซ้ายและตาขวาของมนุษย์ มาเป็นภาพ 2 ภาพ คือ ภาพที่มาจากตาซ้าย และ ภาพที่มาจากตาขวา เพื่อนำมาคำนวณหา disparity (ความห่างระหว่างสองภาพ) แล้วนำค่า disparity ที่ได้มาเป็นค่าในการตัดสินว่า วัตถุที่อยู่ภายในภาพมีความลึก (dept) เท่าไร
Stereo Vision การมองจากสองตาของมนุษย์ ไปยังวัตถุ สี่เหลี่ยมลูกบาศก์เลื่อนไปทางขวาเมื่อมองด้วยตาซ้าย สี่เหลี่ยมลูกบาศก์เลื่อนไปทางซ้ายเมื่อมองด้วยตาขวา ภาพแสดงความลึกของวัตถุแสดงด้วย Gray Scale Dept Map ภาพจากมองด้วยตาทั้งสองข้างรวมกัน
Stereo Vision Left Right Disparity (Ground Truth)
Stereo Vision Left Right Disparity (Ground Truth)
การนำเอา Stereo vision มาประยุกต์ใช้ใน Robot
Stereo Vision : Disparity
Stereo Vision : Disparity Finding disparity Left Right Disparity
Constraints Data Constraints ภาพตาขวา ณ จุดที่เรายืนอยู่แต่ละจุด จะต้องมีความเข้มของสี (image intensity) เหมือนกับภาพตาซ้าย Smoothness Constraints disparity จะต้อง smooth หมายถึงว่า การเข้าไปดูค่า disparity ของ เพื่อนบ้าน (neighbor) ด้วยว่า สอดคล้องกันหรือไม่ Energy = xy [(IR(x,y)) – IL(x+D(x,y),y))2 + (D(x+1,y) – D(x,y))2 + (D(x,y+1) – D(x,y))2 ] + Data Constraints Smoothness Constraints
Algorithm using Gibbs Sampler Start Temperature T is high Initialize D(x,y) = Random 0….20 For each pixel(x,y) For each state S = 0…20 if D(x,y) = 0; E0 = … ; P0 = exp(-E0/T) if D(x,y) = 1; E1 = … ; P1 = exp(-E1/T) ………………………. if D(x,y) = 20; E20 = … ; P20 = exp(-E20/T) For each Probi = Pi / sum(Pi) Sample for state S from pdf Probi D(x,y) = State S Reduce T = T * 0.9 Repeat step 3-4 Until E is stable
Example left right Result disparity Random disparity
Example left right ให้แทน D(x,y) 4 state ที่จุด (1,2) (3,3)และ (2,5) 1 2 3 4 5 6 ให้แทน D(x,y) 4 state ที่จุด (1,2) (3,3)และ (2,5) 1 2 3 4 5 6 Result disparity Random disparity
Data Constraint Trick (IR(x-D(x,y),y) – IL(x,y))2 เปลี่ยนจากการดูทีละ pixel เป็นการ ดูทีละ 9 pixels 1 1 (IR(x-D(x,y)+m, y+n) – IL(x+m, y+n))2 m= -1 n= -1 3x3 pixel
Display disparity in Grayscale เมื่อ Energy stable และได้ค่า disparity ของทุก pixel ที่เหมาะสมแล้ว เราจะทำการแสดงภาพในการบอกความลึก (depth) อย่างไร ในเมื่อค่า disparity มีค่าเพียง 0…20 เท่านั้น ? เราจะใช้สีอ่อนในการแสดงวัตถุที่อยู่ใกล้ และสีจะเข้มขึ้นเรื่อย ๆ เมื่อวัตถุส่วนอื่น ๆ อยู่ไกลออกไป การแปลงค่า disparity ให้เป็นค่า intensity นั้นทำได้โดยนำค่า Gray scale สูงสุดซึ่งก็คือ 255 หารด้วย ค่าสูงสุดของ disparity ใน state 255 / 20 = 12.75 round(disparity * 12.75) = intensity ที่จะนำไปสร้างรูปแสดงความลึก ปัดเศษ
Display disparity in Grayscale (Example) คูณ 12.75 Intensity