Stereo disparity cores

The depth estimation can be based on the correspondences of image features of a binocular system. Disparity computation models basically consist of a matching problem, finding correspondences between features or areas in both left and right images and taking into account some constraints based on the geometry of the stereo rig that may help to simplify the search process (due to the epipolar geometry constraint). This model assumes that the geometry of the cameras is fixed and known (e.g., using a previous calibration stage that allows us to extract the intrinsic and extrinsic binocular cameras parameters). Based on this assumption, in most of the literature contributions, the disparity is managed as a mono-dimensional matching problem of correspondences.

Different estimation methods usually assume that images are calibrated or include a pre-processing stage for undistortion and rectification. This process consists of correcting the lens radial distortions and aligning the image planes with the epipolar lines, which simplifies the disparity estimation, reducing the problem to a matching only for the horizontal coordinates. Nevertheless, the main problem is that the rectification process is required each time the camera configuration is modified.

Depth perception is essential for an autonomous system that is moving in a dynamic environment. It is applied in multiple applications such as autonomous navigation, obstacle detection and avoidance, 3-D reconstruction, tracking, grasping.

Our cores are able to process 640 by 480 images at a frame rate up to 32 fps for the Lucas Kanade algorithm including undistortion and rectification stage (see Fig 1 for some examples). Calibration matrices have to be provided and previously calculated offline. Cores are implemented in Handel-C and detailed in [2][3][5].

Fig 1. Disparity estimation for some examples from the Middlebury datasets.

As mentioned in Image-processing-core-library, all the work is supported by several publications in international scientific journals. However, the main difference is that here we are only including the cores for the one-scale computation, not for the whole coarse-to-fine process. The reason is that the coarse-to-fine structure requires intensive use of the memory and therefore, it is platform-dependent in our case.

Contact

Javier Serrano