in parallel with a Single Instruction Multiple
Threads (SIMT) approach.
Following the Early Vision model proposed by
Adelson & Bergen (Adelson and Bergen, 1991),
many steps are necessary in order to gain a deep un-
derstanding of the scene structure, ranging from dis-
parity estimation and 3D reconstruction to image seg-
mentation and blob detection: many solutions have
been devised over the years (Chen et al., 2011), each
of them based on different assumptions and/or with
different strengths, weaknesses and execution times.
In any case, their main goal lies in measuring a spe-
cific feature of the scene.
When approaching the problem of robot naviga-
tion, computer vision is not the only discipline in-
volved: the robot needs to be modelled, all of its sen-
sors have to be analysed in order to characterise its
proprioception (position and orientation estimation)
and interaction with the external world (e.g. cameras
for object detection, tracking and/or avoidance). Fi-
nally, every module has to be integrated with the oth-
ers.
The main contributions this paper provides are:
• Integration of features belonging to the Early Vi-
sion model (e.g. disparity and edges) in a modular
framework which combines them in order to solve
complex visual tasks (e.g. 3D reconstruction in a
vergent system, blob extraction, navigation).
• Development of a SIMT approach towards depth
estimation, starting from disparity computed
through a bio-inspired algorithm.
• Evaluation of the performances (execution times
and depth estimation errors) of such platform
when equipped with the aforementioned bio-
inspired algorithm.
The remainder of this paper describes the proposed
system, the flow of data, the experiments and the ob-
tained results.
2 PROPOSED SYSTEM
The proposed system is represented in the block di-
agram in Fig. 1. It comprises many modules: im-
age acquisition, used to obtain the images from the
cameras and to apply undistorting operations, dis-
parity estimation and 3D reconstruction, segmenta-
tion and blobs extraction, Navigator module, which
combines depth and blob information with the robot
state (RobotModel module) to detect near objects and
avoid them during navigation. Finally, a GUI mod-
ule is present which shows a 3D reconstruction of the
scene in real-world coordinates, allows orders to be
issued to the robot and to set the various parameters
which characterise the system.
Great attention has been paid whilst designing this
framework in order to keep it as modular as possible,
having many pieces of software running at the same
time sharing data, and still being easy to update with
new modules and features.
Image Acquisition and Segmentation. According
to the pinhole camera model (Forsyth and Ponce,
2002), the acquisition module encapsulates all the in-
trinsic parameters of the cameras and the functions
to obtain undistorted stereo images. The system does
not rectify the images, and thus it does not need the
extrinsic parameters of the stereo rig.
In order to implement an efficient colour segmen-
tation module, colour edge detection was applied as a
preliminary step to detect the boundaries between the
observed surfaces. Similarly to other approaches (see
(Chen and Chen, 2010; Dutta and Chaudhuri, 2009))
our implementation performed the following opera-
tions:
• Median filtering, to lessen the effect of noise pre-
serving edges.
• Image gradient computation for every channel,
through a derivative kernel (e.g. [−1,0,1]) or
other operators (e.g Sobel).
• Sum of the norm of the gradients (6 components,
X and Y for every channel) for every pixel. To
provide a faster execution, we chose || · ||
1
, sum-
ming the absolute values of the components.
• Binary thresholding (see Fig. 2, second row) in
order to set the strong edges to 0 and the inner re-
gions to 1. The obtained binary map can be then
easily labelled with blob detection algorithms.
Blob Extraction. Based on the algorithm proposed
by F. Chang in (Chang et al., 2004), component la-
belling was applied through contour tracing: we de-
veloped our own implementation of the algorithm
and a library which has been released under the
LGPL license (OpenCVBlobsLib
1
, originally based
on cvblobslib). The original project was enhanced
both in terms of performance (implementing a multi-
thread algorithm) and functionalities: for example,
blob joining capability was added, allowing to link
many separate regions to one entity. Regarding the
multi thread implementation, the approach can be de-
scribed as follows:
• Horizontal splitting of the image into number of
Threads regions.
1
v1.0 https://code.google.com/p/opencvblobslib/
GRAPP2014-InternationalConferenceonComputerGraphicsTheoryandApplications
506