In this project, every method and algorithm described was implemented in an FPGA, either on Microblaze using C or directly in Verilog. This way the whole system is implemented in a single board, making it more useful and portable.
Because of the limited instructions memory available on the FPGA, an advanced method of finding correspondences is impossible to design. The correspondence problem was made simple by dividing it into some small weighting functions. The various actions of the functions are now listed, in chronological order:
The method is restarted from the previous point if a non-corner block is detected.
This proposed algorithm as been thoroughly tested in the given cameras. These cameras have significant blur effect and lens distortion, and even so this algorithm was capable of detecting correspondences with good quality, as can be seen in the next image.
In about 40 correspondences only 2 of them were wrong (white arrow). After the second iteration using the epipolar geometry calculated from these pairs' coordinates (see next phase), these wrong correspondences were detected and eliminated, resulting in 40 good correspondences.
The coordinates of the correspondence pairs are extracted, end sent to another algorithm which estimates the epipolar geometry used in the next iteration, and finally calculates the transformation required to the videos. These transformations perform the stereo-video rectification.