StereoVision
(using C, GTK, OpenCV and OpenGL)
Return
The project aim is about 3D reconstruction using stereovision.
What is the stereovision ?
The stereovision is able to reconstruct a scene from differents points of view, for instance, the human vision.

left image
|

right image
|

3D result
|
I used several image processing method to produce this result:
Gamma correction
Normally, the intrisic parameters of both camera are equivalent..in theory. Actually, there is some differents between both pictures (right and left).
I used the Gamma parameter correction.
|
Right Image
|
|
Original images
|
Corrected images
|
|
|
Left Image
|
Principal Composant Analysis (PCA)
I implemented algorithms which work with gray images. I need to convert color images into gray images. Instead of use a weighted average (informations lost), I used PCA, such as :
This method provides a gray image keeping the image signification.
|
|
|
|
Original image. (R=127,G=127,B=0) |
Simple weighted average image. |
OpenCV weighted average image. |
PAC result image. |
The PAC on a research picture :
We cannot see a big difference between resuts, except if we see the desk lamp, there is more constrast with the background using PAC than using a simple method.
At this point, we adjust the intrinsic parameters in the pictures couple. Now, we have to adjust the extrinsics parameters, to do it, I used a geometrical projection.
Image Normalisation
Using this projection :
We can produce a projection from the stereoscopic couple, such as :
This projection means the epipolar lines are parallel into the couple.
To produce those epipolar lines, I used a «corner tracker» (provide by OpenCV based on the Lucas-Kanade Method) to find strong points into the images. From those points, I was able to determine epipolar lines using OpenCV.
«Corner Tracker»
|
|
Right image
|
Left image
|
The OpenCV algorithm follows strong corners from the right image to the left image.
Stereovision Correlation algorithm
The correlation principle :
This part is based on the triangulation :
«the farther objects are, the less they move and the closer objects are, the more they move».
I can search pixels using correlation, such as :

I was able to generate disparities map :
As we can see, it needs some improvements.
Improvements method
The main improvement that I program is a method based on the Latecki compresison :
3D Map Creation
To be continued...
The dynamic vision...
The interface
To test faster our algorithms and methods, I developped a friendly interface in GTK+.
Some stereoscopic pictures :




