next up previous contents
Next: Matching Sub Strings Up: Stereo matching Previous: Edge Strings   Contents

Stereo Index

See figure 3. Prior to matching edges are indexed according to epipolar bands. This simplifies (in terms of both code complexity and computational efficiency) the subsequent matching problem. This is done by transforming each edge to a suitable and equivalent virtual parallel camera set up. It is important here to note that it is only the geometry of the edge, as opposed to the physical location in the edgerect array, that is transformed. Additional distortion in the image geometry (eg radial distortion) that may have occurred during the transformation process can also be incorporated at this stage.

Note that edge transformation (called rectification) can result in both multiple and zero mappings from physical image to virtual image rasters.

The stereo index, used to index rectified rasters, is stored on the property list of the edgrect using SINDEX, a structure of type Windex (above). This is a general purpose 2D index. In the stereo case the first dimension is epipolar/raster and the second position along the raster quantised by m and n (ie m buckets of width n pixels). The region of interest covered by the index is given by the Imregion structure region.

Windex *w;
int x,y;

   .
   .

    List *r_index;
    Imregion *roi;
    int c; 

    roi = w->region;
    c = (x-roi->lx)/w->n;  /* column offset within region of interest */ 

    if (c<w->m) /* covered by region */
      r_index = w->index[y][c]

The above code sample illustrates use of the indexing scheme to recover a list (ordered along the raster) of all primitives that occur in and beyond the raster bucket that includes edge location column x on raster y (where x and y are in chosen image coordinates). All edges in the raster can be indexed by the degenerate case

w->index[y][0]

Note that all indices refer to the same list, that is

for all (j>i) w->index[y][j] is a subset of w->index[y][i]

In order to avoid unnecessary excess ambiguity, stereo matches are not sought between individual edgels. Instead connected edges that cross an individual raster are grouped into sub-strings. These have type field set to FORWARD or BACKWARD depending upon the direction they run along the raster. Note that to satisfy the situation where no edge from a particular edge string transforms to lie upon a particular virtual raster that the string crosses, then the same edge sub-string is allowed to be referenced on a number of adjacent virtual rasters (determined from the meta connectivity of the edge string).

The sub-string used in the stereo index (which can of course refer to a single edgel) can be referenced through the SINDEX property of the edgel.

This rather complex data structure has the considerable advantage that stereo matching can be carried out at a different resolution to the original image by simply changing the rectification function. Increasing the coarseness of the epipolar band does not increase the degree of within epipolar ambiguity. It follows also that the left and right hand images do not have to be the same size as long as the rectification functions produce virtual images of a constant size. In Tina the rectification functions are currently standardised about the left image camera model.


next up previous contents
Next: Matching Sub Strings Up: Stereo matching Previous: Edge Strings   Contents
root 2017-09-21