Serveur d'exploration sur les dispositifs haptiques

Attention, ce site est en cours de développement !
Attention, site généré par des moyens informatiques à partir de corpus bruts.
Les informations ne sont donc pas validées.

Vector Disparity Sensor with Vergence Control for Active Vision Systems

Identifieur interne : 001497 ( Pmc/Checkpoint ); précédent : 001496; suivant : 001498

Vector Disparity Sensor with Vergence Control for Active Vision Systems

Auteurs : Francisco Barranco ; Javier Diaz ; Agostino Gibaldi ; Silvio P. Sabatini ; Eduardo Ros

Source :

RBID : PMC:3304139

Abstract

This paper presents an architecture for computing vector disparity for active vision systems as used on robotics applications. The control of the vergence angle of a binocular system allows us to efficiently explore dynamic environments, but requires a generalization of the disparity computation with respect to a static camera setup, where the disparity is strictly 1-D after the image rectification. The interaction between vision and motor control allows us to develop an active sensor that achieves high accuracy of the disparity computation around the fixation point, and fast reaction time for the vergence control. In this contribution, we address the development of a real-time architecture for vector disparity computation using an FPGA device. We implement the disparity unit and the control module for vergence, version, and tilt to determine the fixation point. In addition, two on-chip different alternatives for the vector disparity engines are discussed based on the luminance (gradient-based) and phase information of the binocular images. The multiscale versions of these engines are able to estimate the vector disparity up to 32 fps on VGA resolution images with very good accuracy as shown using benchmark sequences with known ground-truth. The performances in terms of frame-rate, resource utilization, and accuracy of the presented approaches are discussed. On the basis of these results, our study indicates that the gradient-based approach leads to the best trade-off choice for the integration with the active vision system.


Url:
DOI: 10.3390/s120201771
PubMed: 22438737
PubMed Central: 3304139


Affiliations:


Links toward previous steps (curation, corpus...)


Links to Exploration step

PMC:3304139

Le document en format XML

<record>
<TEI>
<teiHeader>
<fileDesc>
<titleStmt>
<title xml:lang="en">Vector Disparity Sensor with Vergence Control for Active Vision Systems</title>
<author>
<name sortKey="Barranco, Francisco" sort="Barranco, Francisco" uniqKey="Barranco F" first="Francisco" last="Barranco">Francisco Barranco</name>
<affiliation>
<nlm:aff id="af1-sensors-12-01771"> Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Diaz, Javier" sort="Diaz, Javier" uniqKey="Diaz J" first="Javier" last="Diaz">Javier Diaz</name>
<affiliation>
<nlm:aff id="af1-sensors-12-01771"> Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Gibaldi, Agostino" sort="Gibaldi, Agostino" uniqKey="Gibaldi A" first="Agostino" last="Gibaldi">Agostino Gibaldi</name>
<affiliation>
<nlm:aff id="af2-sensors-12-01771"> PSPC Group, Department of Biophysical and Electronic Engineering (DIBE), University of Genoa, Via Opera Pia 11A, I-16145, Genoa, Italy; E-Mails:
<email>agostino.gibaldi@unige.it</email>
(A.G.);
<email>silvio.sabatini@unige.it</email>
(S.P.S.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Sabatini, Silvio P" sort="Sabatini, Silvio P" uniqKey="Sabatini S" first="Silvio P." last="Sabatini">Silvio P. Sabatini</name>
<affiliation>
<nlm:aff id="af2-sensors-12-01771"> PSPC Group, Department of Biophysical and Electronic Engineering (DIBE), University of Genoa, Via Opera Pia 11A, I-16145, Genoa, Italy; E-Mails:
<email>agostino.gibaldi@unige.it</email>
(A.G.);
<email>silvio.sabatini@unige.it</email>
(S.P.S.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Ros, Eduardo" sort="Ros, Eduardo" uniqKey="Ros E" first="Eduardo" last="Ros">Eduardo Ros</name>
<affiliation>
<nlm:aff id="af1-sensors-12-01771"> Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</nlm:aff>
</affiliation>
</author>
</titleStmt>
<publicationStmt>
<idno type="wicri:source">PMC</idno>
<idno type="pmid">22438737</idno>
<idno type="pmc">3304139</idno>
<idno type="url">http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3304139</idno>
<idno type="RBID">PMC:3304139</idno>
<idno type="doi">10.3390/s120201771</idno>
<date when="2012">2012</date>
<idno type="wicri:Area/Pmc/Corpus">002524</idno>
<idno type="wicri:Area/Pmc/Curation">002524</idno>
<idno type="wicri:Area/Pmc/Checkpoint">001497</idno>
</publicationStmt>
<sourceDesc>
<biblStruct>
<analytic>
<title xml:lang="en" level="a" type="main">Vector Disparity Sensor with Vergence Control for Active Vision Systems</title>
<author>
<name sortKey="Barranco, Francisco" sort="Barranco, Francisco" uniqKey="Barranco F" first="Francisco" last="Barranco">Francisco Barranco</name>
<affiliation>
<nlm:aff id="af1-sensors-12-01771"> Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Diaz, Javier" sort="Diaz, Javier" uniqKey="Diaz J" first="Javier" last="Diaz">Javier Diaz</name>
<affiliation>
<nlm:aff id="af1-sensors-12-01771"> Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Gibaldi, Agostino" sort="Gibaldi, Agostino" uniqKey="Gibaldi A" first="Agostino" last="Gibaldi">Agostino Gibaldi</name>
<affiliation>
<nlm:aff id="af2-sensors-12-01771"> PSPC Group, Department of Biophysical and Electronic Engineering (DIBE), University of Genoa, Via Opera Pia 11A, I-16145, Genoa, Italy; E-Mails:
<email>agostino.gibaldi@unige.it</email>
(A.G.);
<email>silvio.sabatini@unige.it</email>
(S.P.S.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Sabatini, Silvio P" sort="Sabatini, Silvio P" uniqKey="Sabatini S" first="Silvio P." last="Sabatini">Silvio P. Sabatini</name>
<affiliation>
<nlm:aff id="af2-sensors-12-01771"> PSPC Group, Department of Biophysical and Electronic Engineering (DIBE), University of Genoa, Via Opera Pia 11A, I-16145, Genoa, Italy; E-Mails:
<email>agostino.gibaldi@unige.it</email>
(A.G.);
<email>silvio.sabatini@unige.it</email>
(S.P.S.)</nlm:aff>
</affiliation>
</author>
<author>
<name sortKey="Ros, Eduardo" sort="Ros, Eduardo" uniqKey="Ros E" first="Eduardo" last="Ros">Eduardo Ros</name>
<affiliation>
<nlm:aff id="af1-sensors-12-01771"> Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</nlm:aff>
</affiliation>
</author>
</analytic>
<series>
<title level="j">Sensors (Basel, Switzerland)</title>
<idno type="eISSN">1424-8220</idno>
<imprint>
<date when="2012">2012</date>
</imprint>
</series>
</biblStruct>
</sourceDesc>
</fileDesc>
<profileDesc>
<textClass></textClass>
</profileDesc>
</teiHeader>
<front>
<div type="abstract" xml:lang="en">
<p>This paper presents an architecture for computing vector disparity for active vision systems as used on robotics applications. The control of the vergence angle of a binocular system allows us to efficiently explore dynamic environments, but requires a generalization of the disparity computation with respect to a static camera setup, where the disparity is strictly 1-D after the image rectification. The interaction between vision and motor control allows us to develop an active sensor that achieves high accuracy of the disparity computation around the fixation point, and fast reaction time for the vergence control. In this contribution, we address the development of a real-time architecture for vector disparity computation using an FPGA device. We implement the disparity unit and the control module for vergence, version, and tilt to determine the fixation point. In addition, two on-chip different alternatives for the vector disparity engines are discussed based on the luminance (gradient-based) and phase information of the binocular images. The multiscale versions of these engines are able to estimate the vector disparity up to 32 fps on VGA resolution images with very good accuracy as shown using benchmark sequences with known ground-truth. The performances in terms of frame-rate, resource utilization, and accuracy of the presented approaches are discussed. On the basis of these results, our study indicates that the gradient-based approach leads to the best trade-off choice for the integration with the active vision system.</p>
</div>
</front>
<back>
<div1 type="bibliography">
<listBibl>
<biblStruct>
<analytic>
<author>
<name sortKey="Bertozzi, M" uniqKey="Bertozzi M">M. Bertozzi</name>
</author>
<author>
<name sortKey="Broggi, A" uniqKey="Broggi A">A. Broggi</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="El Ansari, M" uniqKey="El Ansari M">M. El Ansari</name>
</author>
<author>
<name sortKey="Mousset, S" uniqKey="Mousset S">S. Mousset</name>
</author>
<author>
<name sortKey="Bensrhair, A" uniqKey="Bensrhair A">A. Bensrhair</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Oisel, L" uniqKey="Oisel L">L. Oisel</name>
</author>
<author>
<name sortKey="Memin, E" uniqKey="Memin E">E. Memin</name>
</author>
<author>
<name sortKey="Morin, L" uniqKey="Morin L">L. Morin</name>
</author>
<author>
<name sortKey="Galpin, F" uniqKey="Galpin F">F. Galpin</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Lu, Z" uniqKey="Lu Z">Z. Lu</name>
</author>
<author>
<name sortKey="Shi, B" uniqKey="Shi B">B. Shi</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Musleh, B" uniqKey="Musleh B">B. Musleh</name>
</author>
<author>
<name sortKey="Garca, F" uniqKey="Garca F">F. Garca</name>
</author>
<author>
<name sortKey="Otamendi, J" uniqKey="Otamendi J">J. Otamendi</name>
</author>
<author>
<name sortKey="Armingol, J M" uniqKey="Armingol J">J.M. Armingol</name>
</author>
<author>
<name sortKey="De La Escalera, A" uniqKey="De La Escalera A">A. de la Escalera</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Coelho, J" uniqKey="Coelho J">J. Coelho</name>
</author>
<author>
<name sortKey="Piater, J" uniqKey="Piater J">J. Piater</name>
</author>
<author>
<name sortKey="Grupen, R" uniqKey="Grupen R">R. Grupen</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Song, W" uniqKey="Song W">W. Song</name>
</author>
<author>
<name sortKey="Minami, M" uniqKey="Minami M">M. Minami</name>
</author>
<author>
<name sortKey="Yu, F" uniqKey="Yu F">F. Yu</name>
</author>
<author>
<name sortKey="Zhang, Y" uniqKey="Zhang Y">Y. Zhang</name>
</author>
<author>
<name sortKey="Yanou, A" uniqKey="Yanou A">A. Yanou</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
<author>
<name sortKey="Carrillo, R" uniqKey="Carrillo R">R. Carrillo</name>
</author>
<author>
<name sortKey="Prieto, A" uniqKey="Prieto A">A. Prieto</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Murphy, C" uniqKey="Murphy C">C. Murphy</name>
</author>
<author>
<name sortKey="Lindquist, D" uniqKey="Lindquist D">D. Lindquist</name>
</author>
<author>
<name sortKey="Rynning, A" uniqKey="Rynning A">A. Rynning</name>
</author>
<author>
<name sortKey="Cecil, T" uniqKey="Cecil T">T. Cecil</name>
</author>
<author>
<name sortKey="Leavitt, S" uniqKey="Leavitt S">S. Leavitt</name>
</author>
<author>
<name sortKey="Chang, M" uniqKey="Chang M">M. Chang</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Trucco, E" uniqKey="Trucco E">E. Trucco</name>
</author>
<author>
<name sortKey="Verri, A" uniqKey="Verri A">A. Verri</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Faugeras, O" uniqKey="Faugeras O">O. Faugeras</name>
</author>
<author>
<name sortKey="Luong, Q T" uniqKey="Luong Q">Q.T. Luong</name>
</author>
<author>
<name sortKey="Papadopoulou, T" uniqKey="Papadopoulou T">T. Papadopoulou</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Samarawickrama, J G" uniqKey="Samarawickrama J">J.G. Samarawickrama</name>
</author>
<author>
<name sortKey="Sabatini, S P" uniqKey="Sabatini S">S.P. Sabatini</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Theimer, W M" uniqKey="Theimer W">W.M. Theimer</name>
</author>
<author>
<name sortKey="Mallot, H A" uniqKey="Mallot H">H.A. Mallot</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Gibaldi, A" uniqKey="Gibaldi A">A. Gibaldi</name>
</author>
<author>
<name sortKey="Canessa, A" uniqKey="Canessa A">A. Canessa</name>
</author>
<author>
<name sortKey="Chessa, A" uniqKey="Chessa A">A. Chessa</name>
</author>
<author>
<name sortKey="Sabatini, S P" uniqKey="Sabatini S">S.P. Sabatini</name>
</author>
<author>
<name sortKey="Solari, F" uniqKey="Solari F">F. Solari</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Semmlow, J L" uniqKey="Semmlow J">J.L. Semmlow</name>
</author>
<author>
<name sortKey="Yuan, W" uniqKey="Yuan W">W. Yuan</name>
</author>
<author>
<name sortKey="Alvarez, T L" uniqKey="Alvarez T">T.L. Alvarez</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Enrights, J" uniqKey="Enrights J">J. Enrights</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Chessa, M" uniqKey="Chessa M">M. Chessa</name>
</author>
<author>
<name sortKey="Sabatini, S P" uniqKey="Sabatini S">S.P. Sabatini</name>
</author>
<author>
<name sortKey="Solari, F" uniqKey="Solari F">F. Solari</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Xu, Y" uniqKey="Xu Y">Y. Xu</name>
</author>
<author>
<name sortKey="Zhou, J" uniqKey="Zhou J">J. Zhou</name>
</author>
<author>
<name sortKey="Zhai, G" uniqKey="Zhai G">G. Zhai</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Nalpantidis, L" uniqKey="Nalpantidis L">L. Nalpantidis</name>
</author>
<author>
<name sortKey="Amanatiadis, A" uniqKey="Amanatiadis A">A. Amanatiadis</name>
</author>
<author>
<name sortKey="Sirakoulis, G" uniqKey="Sirakoulis G">G. Sirakoulis</name>
</author>
<author>
<name sortKey="Gasteratos, A" uniqKey="Gasteratos A">A. Gasteratos</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Beauchemin, S S" uniqKey="Beauchemin S">S.S. Beauchemin</name>
</author>
<author>
<name sortKey="Barron, J L" uniqKey="Barron J">J.L. Barron</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Lucas, B D" uniqKey="Lucas B">B.D. Lucas</name>
</author>
<author>
<name sortKey="Kanade, T" uniqKey="Kanade T">T. Kanade</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Fleet, D J" uniqKey="Fleet D">D.J. Fleet</name>
</author>
<author>
<name sortKey="Jepson, A D" uniqKey="Jepson A">A.D. Jepson</name>
</author>
<author>
<name sortKey="Jenkin, M R" uniqKey="Jenkin M">M.R. Jenkin</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Sabatini, S P" uniqKey="Sabatini S">S.P. Sabatini</name>
</author>
<author>
<name sortKey="Gastaldi, G" uniqKey="Gastaldi G">G. Gastaldi</name>
</author>
<author>
<name sortKey="Solari, F" uniqKey="Solari F">F. Solari</name>
</author>
<author>
<name sortKey="Pauwels, K" uniqKey="Pauwels K">K. Pauwels</name>
</author>
<author>
<name sortKey="Hulle, M M V" uniqKey="Hulle M">M.M.V. Hulle</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
<author>
<name sortKey="Pugeault, N" uniqKey="Pugeault N">N. Pugeault</name>
</author>
<author>
<name sortKey="Krger, N" uniqKey="Krger N">N. Krger</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Solari, F" uniqKey="Solari F">F. Solari</name>
</author>
<author>
<name sortKey="Sabatini, S P" uniqKey="Sabatini S">S.P. Sabatini</name>
</author>
<author>
<name sortKey="Bisio, G M" uniqKey="Bisio G">G.M. Bisio</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Beira, R" uniqKey="Beira R">R. Beira</name>
</author>
<author>
<name sortKey="Lopes, M" uniqKey="Lopes M">M. Lopes</name>
</author>
<author>
<name sortKey="Praga, M" uniqKey="Praga M">M. Praga</name>
</author>
<author>
<name sortKey="Santos Victor, J" uniqKey="Santos Victor J">J. Santos-Victor</name>
</author>
<author>
<name sortKey="Bernardino, A" uniqKey="Bernardino A">A. Bernardino</name>
</author>
<author>
<name sortKey="Metta, G" uniqKey="Metta G">G. Metta</name>
</author>
<author>
<name sortKey="Becchi, F" uniqKey="Becchi F">F. Becchi</name>
</author>
<author>
<name sortKey="Saltaren, R" uniqKey="Saltaren R">R. Saltaren</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Ivaldi, S" uniqKey="Ivaldi S">S. Ivaldi</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Georgoulas, C" uniqKey="Georgoulas C">C. Georgoulas</name>
</author>
<author>
<name sortKey="Andreadis, I" uniqKey="Andreadis I">I. Andreadis</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Hansard, M" uniqKey="Hansard M">M. Hansard</name>
</author>
<author>
<name sortKey="Horaud, R" uniqKey="Horaud R">R. Horaud</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Vanegas, M" uniqKey="Vanegas M">M. Vanegas</name>
</author>
<author>
<name sortKey="Barranco, F" uniqKey="Barranco F">F. Barranco</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Hadjitheophanous, S" uniqKey="Hadjitheophanous S">S. Hadjitheophanous</name>
</author>
<author>
<name sortKey="Ttofis, C" uniqKey="Ttofis C">C. Ttofis</name>
</author>
<author>
<name sortKey="Georghiades, A" uniqKey="Georghiades A">A. Georghiades</name>
</author>
<author>
<name sortKey="Theocharides, T" uniqKey="Theocharides T">T. Theocharides</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Jin, S" uniqKey="Jin S">S. Jin</name>
</author>
<author>
<name sortKey="Cho, J" uniqKey="Cho J">J. Cho</name>
</author>
<author>
<name sortKey="Pham, X D" uniqKey="Pham X">X.D. Pham</name>
</author>
<author>
<name sortKey="Lee, K M" uniqKey="Lee K">K.M. Lee</name>
</author>
<author>
<name sortKey="Park, S K" uniqKey="Park S">S.K. Park</name>
</author>
<author>
<name sortKey="Kim, M" uniqKey="Kim M">M. Kim</name>
</author>
<author>
<name sortKey="Jeon, J W" uniqKey="Jeon J">J.W. Jeon</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Calderon, H" uniqKey="Calderon H">H. Calderon</name>
</author>
<author>
<name sortKey="Ortiz, J" uniqKey="Ortiz J">J. Ortiz</name>
</author>
<author>
<name sortKey="Fontaine, J" uniqKey="Fontaine J">J. Fontaine</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
<author>
<name sortKey="Pelayo, F" uniqKey="Pelayo F">F. Pelayo</name>
</author>
<author>
<name sortKey="Ortigosa, E M" uniqKey="Ortigosa E">E.M. Ortigosa</name>
</author>
<author>
<name sortKey="Mota, S" uniqKey="Mota S">S. Mota</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Barranco, F" uniqKey="Barranco F">F. Barranco</name>
</author>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Vanegas, M" uniqKey="Vanegas M">M. Vanegas</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
<author>
<name sortKey="Agis, R" uniqKey="Agis R">R. Agis</name>
</author>
<author>
<name sortKey="Bernier, J" uniqKey="Bernier J">J. Bernier</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Brandt, J W" uniqKey="Brandt J">J.W. Brandt</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Barron, J L" uniqKey="Barron J">J.L. Barron</name>
</author>
<author>
<name sortKey="Fleet, D J" uniqKey="Fleet D">D.J. Fleet</name>
</author>
<author>
<name sortKey="Beauchemin, S S" uniqKey="Beauchemin S">S.S. Beauchemin</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Liu, H" uniqKey="Liu H">H. Liu</name>
</author>
<author>
<name sortKey="Hong, T H" uniqKey="Hong T">T.H. Hong</name>
</author>
<author>
<name sortKey="Herman, M" uniqKey="Herman M">M. Herman</name>
</author>
<author>
<name sortKey="Chellappa, R" uniqKey="Chellappa R">R. Chellappa</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Pauwels, K" uniqKey="Pauwels K">K. Pauwels</name>
</author>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
<author>
<name sortKey="Hulle, M M V" uniqKey="Hulle M">M.M.V. Hulle</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Gautama, T" uniqKey="Gautama T">T. Gautama</name>
</author>
<author>
<name sortKey="Van Hulle, M" uniqKey="Van Hulle M">M. van Hulle</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Bergen, J" uniqKey="Bergen J">J. Bergen</name>
</author>
<author>
<name sortKey="Anandan, P" uniqKey="Anandan P">P. Anandan</name>
</author>
<author>
<name sortKey="Hanna, K" uniqKey="Hanna K">K. Hanna</name>
</author>
<author>
<name sortKey="Hingorani, R" uniqKey="Hingorani R">R. Hingorani</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Burt, P J" uniqKey="Burt P">P.J. Burt</name>
</author>
<author>
<name sortKey="Adelson, E H" uniqKey="Adelson E">E.H. Adelson</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Vanegas, M" uniqKey="Vanegas M">M. Vanegas</name>
</author>
<author>
<name sortKey="Barranco, F" uniqKey="Barranco F">F. Barranco</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Vanegas, M" uniqKey="Vanegas M">M. Vanegas</name>
</author>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Ortigosa, E" uniqKey="Ortigosa E">E. Ortigosa</name>
</author>
<author>
<name sortKey="Canas, A" uniqKey="Canas A">A. Canas</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
<author>
<name sortKey="Ortigosa, P" uniqKey="Ortigosa P">P. Ortigosa</name>
</author>
<author>
<name sortKey="Mota, S" uniqKey="Mota S">S. Mota</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Barranco, F" uniqKey="Barranco F">F. Barranco</name>
</author>
<author>
<name sortKey="Vanegas, M" uniqKey="Vanegas M">M. Vanegas</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Vision, M C" uniqKey="Vision M">M.C. Vision</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Chessa, M" uniqKey="Chessa M">M. Chessa</name>
</author>
<author>
<name sortKey="Solari, F" uniqKey="Solari F">F. Solari</name>
</author>
<author>
<name sortKey="Sabatini, S P" uniqKey="Sabatini S">S.P. Sabatini</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Chang, N C" uniqKey="Chang N">N.C. Chang</name>
</author>
<author>
<name sortKey="Tsai, T H" uniqKey="Tsai T">T.H. Tsai</name>
</author>
<author>
<name sortKey="Hsu, B H" uniqKey="Hsu B">B.H. Hsu</name>
</author>
<author>
<name sortKey="Chen, Y C" uniqKey="Chen Y">Y.C. Chen</name>
</author>
<author>
<name sortKey="Chang, T S" uniqKey="Chang T">T.S. Chang</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Ernst, I" uniqKey="Ernst I">I. Ernst</name>
</author>
<author>
<name sortKey="Hirschmuller, H" uniqKey="Hirschmuller H">H. Hirschmüller</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Han, S K" uniqKey="Han S">S.K. Han</name>
</author>
<author>
<name sortKey="Woo, S" uniqKey="Woo S">S. Woo</name>
</author>
<author>
<name sortKey="Jeong, M H" uniqKey="Jeong M">M.H. Jeong</name>
</author>
<author>
<name sortKey="You, B J" uniqKey="You B">B.J. You</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Gibson, J" uniqKey="Gibson J">J. Gibson</name>
</author>
<author>
<name sortKey="Marques, O" uniqKey="Marques O">O. Marques</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Gong, M" uniqKey="Gong M">M. Gong</name>
</author>
<author>
<name sortKey="Yang, Y H" uniqKey="Yang Y">Y.H. Yang</name>
</author>
</analytic>
</biblStruct>
<biblStruct></biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Carneiro, G" uniqKey="Carneiro G">G. Carneiro</name>
</author>
<author>
<name sortKey="Jepson, A" uniqKey="Jepson A">A. Jepson</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Oppenheim, A" uniqKey="Oppenheim A">A. Oppenheim</name>
</author>
<author>
<name sortKey="Lim, J" uniqKey="Lim J">J. Lim</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Tomasi, M" uniqKey="Tomasi M">M. Tomasi</name>
</author>
<author>
<name sortKey="Vanegas, M" uniqKey="Vanegas M">M. Vanegas</name>
</author>
<author>
<name sortKey="Barranco, F" uniqKey="Barranco F">F. Barranco</name>
</author>
<author>
<name sortKey="Diaz, J" uniqKey="Diaz J">J. Diaz</name>
</author>
<author>
<name sortKey="Ros, E" uniqKey="Ros E">E. Ros</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Fleet, D" uniqKey="Fleet D">D. Fleet</name>
</author>
<author>
<name sortKey="Jepson, A" uniqKey="Jepson A">A. Jepson</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Bernardino, A" uniqKey="Bernardino A">A. Bernardino</name>
</author>
<author>
<name sortKey="Santos Victor, J" uniqKey="Santos Victor J">J. Santos-Victor</name>
</author>
</analytic>
</biblStruct>
<biblStruct>
<analytic>
<author>
<name sortKey="Sapienza, M" uniqKey="Sapienza M">M. Sapienza</name>
</author>
<author>
<name sortKey="Hansard, M" uniqKey="Hansard M">M. Hansard</name>
</author>
<author>
<name sortKey="Horaud, R" uniqKey="Horaud R">R. Horaud</name>
</author>
</analytic>
</biblStruct>
</listBibl>
</div1>
</back>
</TEI>
<pmc article-type="research-article">
<pmc-dir>properties open_access</pmc-dir>
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors (Basel)</journal-id>
<journal-title-group>
<journal-title>Sensors (Basel, Switzerland)</journal-title>
</journal-title-group>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="pmid">22438737</article-id>
<article-id pub-id-type="pmc">3304139</article-id>
<article-id pub-id-type="doi">10.3390/s120201771</article-id>
<article-id pub-id-type="publisher-id">sensors-12-01771</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Article</subject>
</subj-group>
</article-categories>
<title-group>
<article-title>Vector Disparity Sensor with Vergence Control for Active Vision Systems</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Barranco</surname>
<given-names>Francisco</given-names>
</name>
<xref ref-type="aff" rid="af1-sensors-12-01771">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c1-sensors-12-01771">
<sup></sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Diaz</surname>
<given-names>Javier</given-names>
</name>
<xref ref-type="aff" rid="af1-sensors-12-01771">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Gibaldi</surname>
<given-names>Agostino</given-names>
</name>
<xref ref-type="aff" rid="af2-sensors-12-01771">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Sabatini</surname>
<given-names>Silvio P.</given-names>
</name>
<xref ref-type="aff" rid="af2-sensors-12-01771">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Ros</surname>
<given-names>Eduardo</given-names>
</name>
<xref ref-type="aff" rid="af1-sensors-12-01771">
<sup>1</sup>
</xref>
</contrib>
</contrib-group>
<aff id="af1-sensors-12-01771">
<label>1</label>
Department of Computer Architecture and Technology, CITIC, ETSIIT, University of Granada, C/Daniel Saucedo Aranda s/n, E18071, Granada, Spain; E-Mails:
<email>jdiaz@atc.ugr.es</email>
(J.D.);
<email>eduardo@atc.ugr.es</email>
(E.R.)</aff>
<aff id="af2-sensors-12-01771">
<label>2</label>
PSPC Group, Department of Biophysical and Electronic Engineering (DIBE), University of Genoa, Via Opera Pia 11A, I-16145, Genoa, Italy; E-Mails:
<email>agostino.gibaldi@unige.it</email>
(A.G.);
<email>silvio.sabatini@unige.it</email>
(S.P.S.)</aff>
<author-notes>
<corresp id="c1-sensors-12-01771">
<label></label>
Author to whom correspondence should be addressed; E-Mail:
<email>fbarranco@atc.ugr.es</email>
; Tel.: +34-95-824-1775; Fax: +34-95-824-8993.</corresp>
</author-notes>
<pub-date pub-type="collection">
<year>2012</year>
</pub-date>
<pub-date pub-type="epub">
<day>9</day>
<month>2</month>
<year>2012</year>
</pub-date>
<volume>12</volume>
<issue>2</issue>
<fpage>1771</fpage>
<lpage>1799</lpage>
<history>
<date date-type="received">
<day>28</day>
<month>12</month>
<year>2011</year>
</date>
<date date-type="rev-recd">
<day>18</day>
<month>1</month>
<year>2012</year>
</date>
<date date-type="accepted">
<day>7</day>
<month>2</month>
<year>2012</year>
</date>
</history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<license-p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (
<ext-link ext-link-type="uri" xlink:href="http://creativecommons.org/licenses/by/3.0/">http://creativecommons.org/licenses/by/3.0/</ext-link>
).</license-p>
</license>
</permissions>
<abstract>
<p>This paper presents an architecture for computing vector disparity for active vision systems as used on robotics applications. The control of the vergence angle of a binocular system allows us to efficiently explore dynamic environments, but requires a generalization of the disparity computation with respect to a static camera setup, where the disparity is strictly 1-D after the image rectification. The interaction between vision and motor control allows us to develop an active sensor that achieves high accuracy of the disparity computation around the fixation point, and fast reaction time for the vergence control. In this contribution, we address the development of a real-time architecture for vector disparity computation using an FPGA device. We implement the disparity unit and the control module for vergence, version, and tilt to determine the fixation point. In addition, two on-chip different alternatives for the vector disparity engines are discussed based on the luminance (gradient-based) and phase information of the binocular images. The multiscale versions of these engines are able to estimate the vector disparity up to 32 fps on VGA resolution images with very good accuracy as shown using benchmark sequences with known ground-truth. The performances in terms of frame-rate, resource utilization, and accuracy of the presented approaches are discussed. On the basis of these results, our study indicates that the gradient-based approach leads to the best trade-off choice for the integration with the active vision system.</p>
</abstract>
<kwd-group>
<kwd>field programmable gate arrays</kwd>
<kwd>active vision</kwd>
<kwd>real time systems</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec>
<label>1.</label>
<title>Introduction</title>
<p>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 [
<xref ref-type="bibr" rid="b1-sensors-12-01771">1</xref>
], obstacle detection and avoidance [
<xref ref-type="bibr" rid="b2-sensors-12-01771">2</xref>
], 3-D reconstruction [
<xref ref-type="bibr" rid="b3-sensors-12-01771">3</xref>
], tracking [
<xref ref-type="bibr" rid="b4-sensors-12-01771">4</xref>
,
<xref ref-type="bibr" rid="b5-sensors-12-01771">5</xref>
], grasping [
<xref ref-type="bibr" rid="b6-sensors-12-01771">6</xref>
,
<xref ref-type="bibr" rid="b7-sensors-12-01771">7</xref>
],
<italic>etc</italic>
. For example, depth computation is used for obtaining 3D information of real-world scenarios with real-time implementations such as [
<xref ref-type="bibr" rid="b8-sensors-12-01771">8</xref>
,
<xref ref-type="bibr" rid="b9-sensors-12-01771">9</xref>
]. Many computer vision algorithms have been proposed for extracting depth information from multiple-view images [
<xref ref-type="bibr" rid="b10-sensors-12-01771">10</xref>
,
<xref ref-type="bibr" rid="b11-sensors-12-01771">11</xref>
].</p>
<p>An alternative for depth estimation is 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 [
<xref ref-type="bibr" rid="b10-sensors-12-01771">10</xref>
]). 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 [
<xref ref-type="bibr" rid="b10-sensors-12-01771">10</xref>
]). Based on this assumption, in most of the literature contributions, the disparity is managed as a mono-dimensional matching problem of correspondences. They 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 (see
<xref ref-type="fig" rid="f1-sensors-12-01771">Figure 1</xref>
). Nevertheless, the main problem is that the rectification process is required each time the camera configuration is modified. Therefore, this technique is not suitable for any active system that is able to modify the vergence of the cameras, which means that we need a different approach.</p>
<p>In our case, we select a system that adaptively controls the vergence of its binocular camera setup. The use of a static vergence angle cannot yield to a correct gazing position to a specific point. However, a solution for this problem is to use a vergence control that allows the modification of the relative position of the cameras in order to fixate a point. This bio-inspired solution achieves the best disparity results around the fixation point because it moves the image plane at the depth of this point and computes a very small range of disparities around it. In general, indeed, the highest accuracy of the disparity calculation kernel is obtained with the lowest disparity ranges.</p>
<p>On the other hand, our active binocular sensor acts depending on the target, which means that its fixation point is determined by three parameters: version, tilt, and vergence angles (see Section 2). There are some previous works that support the use of the disparity for guiding vergence eye movements in active vision systems [
<xref ref-type="bibr" rid="b12-sensors-12-01771">12</xref>
<xref ref-type="bibr" rid="b14-sensors-12-01771">14</xref>
]. The listed advantages allow us to explore the scene in detail, by changing gazing and fixation at different targets or areas of interest. In this work, we present the implementation of a system where vision and motion control act in a collaborative manner for solving the presented issue. With respect to the motion control strategy, our work is based on a separate control of version and vergence inspired by the Hering’s law [
<xref ref-type="bibr" rid="b15-sensors-12-01771">15</xref>
]. Hering proposed that the movement of one eye is coordinated with the other with a movement of equal amplitude and velocity, but it could be in opposite directions. This coordinated movements are specified in terms of version and vergence components. However, eyes only approximate this law, because saccadic movements may include additional vergence components [
<xref ref-type="bibr" rid="b16-sensors-12-01771">16</xref>
]. More details are provided in the following subsection.</p>
<p>In the literature, we find different works that deal with the vector disparity estimation problem [
<xref ref-type="bibr" rid="b17-sensors-12-01771">17</xref>
<xref ref-type="bibr" rid="b19-sensors-12-01771">19</xref>
]. In this work, we propose a comparison between a gradient-based [
<xref ref-type="bibr" rid="b20-sensors-12-01771">20</xref>
,
<xref ref-type="bibr" rid="b21-sensors-12-01771">21</xref>
] and a phase-based [
<xref ref-type="bibr" rid="b22-sensors-12-01771">22</xref>
<xref ref-type="bibr" rid="b24-sensors-12-01771">24</xref>
] approach for the disparity computation. Phase-based approaches are more accurate and robust against variations in the illumination. On the other hand, gradient-based approaches may be implemented at a reduced cost, saving resources in comparison with the first one and presenting a good accuracy.</p>
<p>FPGA is selected as the platform for our system because of the requirements of real-time performances and the suitability of the integration with the active vision system due to the reduced chip size and limited power consumption compared with other approaches as the one based on GPUs. For vision processing algorithms with a high-computational complexity, we need to exploit the maximum parallelism at different levels and in our case, this objective is matched using a fine-pipeline based architecture in an FPGA. In the case of the single-scale version of our disparity computation, we achieve up to 267 and 118 fps (frames per second) for the gradient- and the phase-based algorithms, respectively. For the multi-scale implementations, the reached frame rate is almost 32 fps. In both cases, the image resolution is VGA (640 × 480), although higher resolutions are possible at the cost of reducing the frame rate.</p>
<p>This paper is structured as follows: in Section 2, we present the vergence, tilt, and version control for our sensor; in Section 3, we describe the mathematical formulation of the used approaches for the disparity computation (gradient-based and phase-based); Section 4 analyzes the hardware implementations for both gradient-based and phase-based approaches detailing their mono- and multi-scale versions. This section also presents the performance analysis (accuracy and frame rate) and the resource utilization. Section 5 shows the motion control strategy for our binocular system and the integration of the system with the disparity computation. Finally, Section 6 presents the conclusions and the future work.</p>
</sec>
<sec>
<label>2.</label>
<title>Version, Tilt, and Vergence Control</title>
<p>In this section, we present a system that manages the vergence, version, and tilt control with a stereo pair of cameras to fixate a target object. This is possible thanks to the utilization of a vector disparity model and a camera setup endowed with a shared motor for the tilt control, and two motors for the independent control of the pan angle of each camera. The separate controls allow us to move the gaze toward the point of interest and to control the vergence angle to fixate the target.</p>
<p>The experiments described in Section 5 were performed using the iCub head platform designed by the RobotCub Consortium [
<xref ref-type="bibr" rid="b25-sensors-12-01771">25</xref>
].
<xref ref-type="fig" rid="f2-sensors-12-01771">Figure 2</xref>
displays the real RobotCub head and the architecture scheme. This platform is composed by a stereo pair of FireWire cameras, two DSPs, and an inertial sensor connected to a PC. The communication between the elements and the PC is carried out through a CAN bus. The DSP controllers use Motorola 56F807 16-bit hybrid processors. The head consists of a binocular system with six degrees of freedom: the eyes have two rotational degrees of freedom but with a common tilt; the neck also has three degrees of freedom. The control of cameras and neck motors is performed separately by two DSP units. The main problem with such a platform is the sensitivity of the motors to the low velocities, or different friction for the motors which might cause oscillations in the fixation task. Finally, slower responses of the system yield more predictable results. More information about the mechanics is provided in [
<xref ref-type="bibr" rid="b26-sensors-12-01771">26</xref>
,
<xref ref-type="bibr" rid="b27-sensors-12-01771">27</xref>
]. Finally, cameras provide pairs of 15 fps with a 1,024 × 768 resolution, although we are able to compute up to 32 fps of 640 × 480 pixels of resolution, we crop and subsample the resolution to 320 × 240 for our experiments because it provides good results for the vergence control algorithm. Our disparity computation system is based on an adaptable architecture that allows us to set the image resolution using input parameters. In this way, it is possible to adopt the most appropriate resolution for the target application. A smaller resolution for the images in our experiments allows the tracking of the objects in a very controlled scenario, and helps us to avoid any possible problem that may be caused by the rapid movements of the head.</p>
<p>The voluntary fixation of the visual system is directly related with the fovea, the central area of the retinas, that provides high-resolution visual stimuli. In fact, in human vision, fixation movements have the task to register the target into the foveae, in order to maximize the perceptible details in the area of interest [
<xref ref-type="bibr" rid="b28-sensors-12-01771">28</xref>
]. Version is defined as the rotation of the eyes about the vertical axis to maintain a constant disparity. Meanwhile, tilt is the rotation of each eye with respect to the horizontal axis. Finally, vergence is the rotation of each eye about the vertical axis to change the disparity. These parameterization of the system allows to define a unique fixation point with three angles [
<xref ref-type="bibr" rid="b29-sensors-12-01771">29</xref>
]. In
<xref ref-type="fig" rid="f3-sensors-12-01771">Figure 3</xref>
, we observe the top and side views of our camera setup. In the figure, Θ
<italic>
<sub>v</sub>
</italic>
defines the vergence angle, Θ
<italic>
<sub>L</sub>
</italic>
and Θ
<italic>
<sub>R</sub>
</italic>
stand for the pan angles (version) and finally, Θ
<italic>
<sub>t</sub>
</italic>
is the tilt angle (displayed on the right). As we mentioned before, tilt angles are common for both right and left cameras. Due to the correlation between the angles, if the vergence angle is defined, we only need either Θ
<italic>
<sub>L</sub>
</italic>
or Θ
<italic>
<sub>R</sub>
</italic>
to define version.</p>
<p>Version might be determined monocularly using a master eye (camera in our case) for the gazing to the target object and the slave camera performs a vergence movement to fixate the point. In this case, we only have two separate controls. However, vergence has to be defined in terms of binocular disparity.</p>
<p>The selected joint control method combines version, vergence, and tilt as independent parallel movements. The performed control can be expressed by the following set of equations in
<xref ref-type="disp-formula" rid="FD1">Equation (1)</xref>
.
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="M1">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Θ</mml:mi>
<mml:mi mathvariant="italic">version</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mn>1</mml:mn>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">x</mml:mi>
</mml:mrow>
<mml:mi>R</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi mathvariant="normal">Θ</mml:mi>
<mml:mi mathvariant="italic">tilt</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mi>L</mml:mi>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold">y</mml:mi>
</mml:mrow>
<mml:mi>R</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">Θ</mml:mi>
<mml:mi mathvariant="italic">vergence</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mo>=</mml:mo>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>K</mml:mi>
</mml:mrow>
<mml:mn>3</mml:mn>
</mml:msub>
<mml:mo> </mml:mo>
<mml:mi>f</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="bold">d</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:math>
</disp-formula>
where (
<bold>x</bold>
<sub>
<italic>L</italic>
</sub>
,
<bold>y</bold>
<sub>
<italic>L</italic>
</sub>
) and (
<bold>x</bold>
<italic>
<sub>R</sub>
</italic>
,
<bold>y</bold>
<italic>
<sub>R</sub>
</italic>
) are the coordinates of the target for the left and right images regarding the current fixation and
<italic>f</italic>
(
<bold>d</bold>
) is a function of the disparity for the fixation point for almost similar vertical disparities that only avoids nullifying the vergence angle for the zero disparity and gives the disparity in other case. Finally,
<italic>K</italic>
<sub>1</sub>
,
<italic>K</italic>
<sub>2</sub>
and
<italic>K</italic>
<sub>3</sub>
are tuning gains. The area close to the fixation point is defined as “zero disparity” region. Vergence control allows us to fixate the gazed target by searching for this region.</p>
<p>We assume the computation of real-time disparity for the implementation of our control model. A fast vergence control can be computed using the information of the disparity of the target when the gazing is changing continuously, and our system is trying to reduce it to “zero” at this point.</p>
<p>There are also some different alternatives such as performing the fixation with several fixed setups for the cameras, constraining them to a set of more likely depths for the fixation point. This approach seems to save resources, since it avoids the computation of the real vector disparity (the undistortion and rectification stage has to be done, but the implementation is easy since the setups are fixed and known “a priori”). As our approach is also applied to autonomous mobile vehicles, vibrations may affect the setup, therefore a periodic evaluation of the rectification would be needed. From this perspective, the strategy of fixed setups is unsuccessful, since the rectification steps keep being mandatory. Another alternative may consist of using several fixed cameras with different vergence configurations, completely avoiding the rectification stage. This approach is similar to the previous one but it entails a high economic cost, which makes it unsuitable for a lot of applications.</p>
</sec>
<sec>
<label>3.</label>
<title>Comparison of Vector Disparity Algorithms</title>
<p>The binocular disparity is usually defined as the difference in the
<italic>x</italic>
coordinates between the right and left images of a binocular vision system. This definition is useful because, even if in real-world applications the images are uncalibrated, binocular disparity systems usually include a preprocessing rectification stage that compensates for the difference in the
<italic>y</italic>
coordinate. This operation is related to the geometry of the cameras, and needs to be recomputed each time that the relative position of the cameras is modified. If the rectification is not applied (for instance, because the relative position of the cameras is continuously changing as in active vision systems), the disparity becomes a 2D problem, as we will discuss in the next subsections.</p>
<p>Disparity estimation techniques can be grouped into local and global methods. Local methods are centered in the surrounding neighborhood of a pixel to estimate its disparity. Global methods take into account the complete image. In our case we implement two different alternatives: a gradient-based technique, the well-known local algorithm of Lucas and Kanade [
<xref ref-type="bibr" rid="b20-sensors-12-01771">20</xref>
,
<xref ref-type="bibr" rid="b21-sensors-12-01771">21</xref>
] and a phase-based one detailed in [
<xref ref-type="bibr" rid="b23-sensors-12-01771">23</xref>
] (also a local algorithm). The first technique estimates small local disparities assuming the intensity or brightness constancy of a pixel between left and right images, while the second one computes the disparity using the phase information for different orientations, in a contrast-independent way. In order to increase the working range for disparity detection, we use the multi-scale extension of the algorithms. Both implementations have been developed from the horizontal-disparity implementations (1D) but conveniently extended for the vector disparity (2D).</p>
<p>In order to validate our approach, we compare both the methods in terms of their different advantages and drawbacks. While the gradient-based method provides a good trade-off between efficiency and resource utilization, phase-based methods are very robust against variations in illumination and shadows, which makes them specially appropriate for real-world applications. In this paper, we avoid the use of global algorithms because they are not suitable for the on-chip implementation, at least with an affordable resource cost. This also explains why most of the current embedded implementations of disparity computation engines are based on local approaches [
<xref ref-type="bibr" rid="b28-sensors-12-01771">28</xref>
,
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
<xref ref-type="bibr" rid="b34-sensors-12-01771">34</xref>
].</p>
<sec>
<label>3.1.</label>
<title>Gradient-Based Lucas–Kanade Disparity Model</title>
<p>The disparity is defined as a 2-D problem as shown in
<xref ref-type="disp-formula" rid="FD2">Equation (2)</xref>
:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="M2">
<mml:mrow>
<mml:msup>
<mml:mi>I</mml:mi>
<mml:mi mathvariant="italic">right</mml:mi>
</mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>y</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
where
<italic>I
<sup>right</sup>
</italic>
and
<italic>I
<sup>left</sup>
</italic>
are the intensity of right and left images respectively and
<italic>d
<sub>x</sub>
</italic>
and
<italic>d
<sub>y</sub>
</italic>
are the disparity components. The solution of the system in this case is similar to the case of the optical flow in [
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
]. Applying the Taylor expansion in
<xref ref-type="disp-formula" rid="FD2">Equation (2)</xref>
, we obtain
<xref ref-type="disp-formula" rid="FD3">Equation (3)</xref>
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="M3">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>y</mml:mi>
</mml:msub>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo></mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">right</mml:mi>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
where
<inline-formula>
<mml:math id="M4">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
and
<inline-formula>
<mml:math id="M5">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula>
are the partial derivatives of the left image. With this ill-posed system, additional assumptions need to be considered. The Lucas–Kanade algorithm supposes that pixels in the same neighborhood correspond to the same object and therefore, have a similar disparity. And then, applying a least-square fitting for solving
<xref ref-type="disp-formula" rid="FD4">Equation (4)</xref>
procedure, we obtain the system defined by
<xref ref-type="disp-formula" rid="FD5">Equations (5)</xref>
and
<xref ref-type="disp-formula" rid="FD6">(6)</xref>
.
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="M6">
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msup>
<mml:mi>W</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>A</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:msup>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msup>
<mml:mi>W</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>b</mml:mi>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="M7">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msup>
<mml:mi>W</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>b</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">xi</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo></mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">right</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">yi</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
<mml:mo></mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">right</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="M8">
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>A</mml:mi>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:msup>
<mml:mi>W</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
<mml:mi>A</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mi>I</mml:mi>
<mml:mi mathvariant="italic">xi</mml:mi>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">xi</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:msubsup>
<mml:mi>I</mml:mi>
<mml:mi mathvariant="italic">yi</mml:mi>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">xi</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">yi</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
</mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:munder>
<mml:mo></mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo></mml:mo>
<mml:mi mathvariant="normal">Ω</mml:mi>
</mml:mrow>
</mml:munder>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>W</mml:mi>
</mml:mrow>
<mml:mi>i</mml:mi>
<mml:mn>2</mml:mn>
</mml:msubsup>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">yi</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="italic">left</mml:mi>
</mml:mrow>
</mml:msubsup>
</mml:mrow>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
<mml:mo>]</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:math>
</disp-formula>
where
<italic>W
<sub>i</sub>
</italic>
stands for the weighting matrix of the pixels in the neighborhood Ω. For the optical flow, Barron [
<xref ref-type="bibr" rid="b20-sensors-12-01771">20</xref>
] computes the confidence of the computed estimation thresholding with the minimum of the eigenvalues of Matrix (6). We simplify it by using the determinant of this Matrix without a significant loss of accuracy, as shown in [
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
,
<xref ref-type="bibr" rid="b37-sensors-12-01771">37</xref>
]. Finally, this algorithm also provides very computationally efficient solutions with a competitive accuracy as shown in [
<xref ref-type="bibr" rid="b38-sensors-12-01771">38</xref>
,
<xref ref-type="bibr" rid="b39-sensors-12-01771">39</xref>
].</p>
</sec>
<sec>
<label>3.2.</label>
<title>Phase-Based Disparity Algorithm</title>
<p>Sabatini
<italic>et al</italic>
. proposed in [
<xref ref-type="bibr" rid="b23-sensors-12-01771">23</xref>
] a multi-channel interaction algorithm to combine the phase information from multiple spatial scales (the multi-scale approach will be detailed in Section 3) and multiple orientations. The computation is performed combining multiple Gabor filter responses tuned at 8 orientations. Using the same formulation for Gabor filtering of [
<xref ref-type="bibr" rid="b40-sensors-12-01771">40</xref>
], the vector disparity can be computed from the phase difference applying an intersection of constraint along different orientations, as in [
<xref ref-type="bibr" rid="b41-sensors-12-01771">41</xref>
], assuming that points on an equi-phase contour satisfy
<italic>ϕ</italic>
(
<italic>x, t</italic>
) =
<italic>c</italic>
, with
<italic>c</italic>
a constant. Differentiation with respect to time yields
<xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>
:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="M9">
<mml:mrow>
<mml:mo></mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mo></mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>+</mml:mo>
<mml:mi>ψ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
where
<inline-formula>
<mml:math id="M10">
<mml:mrow>
<mml:mo></mml:mo>
<mml:mi>ϕ</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>,</mml:mo>
<mml:mo> </mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>ϕ</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>y</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
</mml:mrow>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
is the spatial phase gradient,
<italic>d</italic>
= (
<italic>d
<sub>x</sub>
, d
<sub>y</sub>
</italic>
)
<italic>
<sup>T</sup>
</italic>
is the vector disparity, and
<italic>ψ</italic>
is the phase difference between left and right images. The phase difference is computed without any explicit phase computation using the formulation proposed in [
<xref ref-type="bibr" rid="b24-sensors-12-01771">24</xref>
]. In a linear model, the spatial gradient can be substituted by the radial frequency vector (
<italic>w</italic>
<sub>0</sub>
<italic>cosθ
<sub>q</sub>
, w</italic>
<sub>0</sub>
<italic>sinθ
<sub>q</sub>
</italic>
) [
<xref ref-type="bibr" rid="b23-sensors-12-01771">23</xref>
] where
<italic>q</italic>
indicates one of the eight orientations of the Gabor filter bank that we use. Next,
<xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>
can be rewritten as
<xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="M11">
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:mi>θ</mml:mi>
</mml:mrow>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:mi>θ</mml:mi>
</mml:mrow>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo></mml:mo>
<mml:mi>d</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo></mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mi>q</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
where · denotes scalar product. From this point, we can extract the component disparity and finally compute the disparity estimation solving the over-determined system defined in
<xref ref-type="disp-formula" rid="FD9">Equation (9)</xref>
<disp-formula id="FD9">
<label>(9)</label>
<mml:math id="M12">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mi mathvariant="italic">cos</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi>
</mml:mrow>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mi>y</mml:mi>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mi mathvariant="italic">sin</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi>
</mml:mrow>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>ψ</mml:mi>
</mml:mrow>
<mml:mi>q</mml:mi>
</mml:msub>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi mathvariant="bold">x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
</sec>
<sec>
<label>3.3.</label>
<title>Multi-Scale Generalization</title>
<p>As mentioned, our development is based on the multi-scalar generalization or coarse-to-fine scheme, inspired on Bergen’s work [
<xref ref-type="bibr" rid="b42-sensors-12-01771">42</xref>
], that increases the working range 30 times with respect to the mono-scalar implementation (using 5 scales). Moreover, it is a mandatory operation to achieve fully-operative systems on real-world scenarios. Our architecture is based on warping images, an approach that is usually avoided in the real-time embedded system literature because of its high resource costs (although it is more cost-effective than global methods).</p>
<p>The multi-scalar version implementation is simple. Firstly, we compute the pyramid for the input images (left and right) and they are stored (see [
<xref ref-type="bibr" rid="b43-sensors-12-01771">43</xref>
]). In such a way, we have a bank of images sampled at different spatial resolutions (depending on the number of scales). The second step consists of iterating in a loop as many times as scales: for each iteration, we upsample the previous disparity estimation; then, we warp the previous upsampled results and the frames for the following finer scale; next, the new disparity estimation is computed using the previous results as input for the core; the final stage collects the new estimation and the partial previous, stored results to combine them in a new partial estimation for the next iteration. The first iteration only consists of the initialization, computes the estimation using as input the images computed in the pyramid for the first spatial resolution scale, and continues to the next iteration.</p>
</sec>
</sec>
<sec>
<label>4.</label>
<title>Hardware Implementation</title>
<p>The selected device for our hardware implementation is an FPGA. As mentioned in the introduction, the FPGA is a good candidate as a platform that allows us to exploit the maximum level of parallelism to achieve an embedded system able to work in real-time. Furthermore, the second key point is the possibility of integration with the motor control for our binocular system. The selected FPGA is a Xilinx Virtex4 chip (XC4vfx100). The board is a Xirca V4 [
<xref ref-type="bibr" rid="b44-sensors-12-01771">44</xref>
] with a PCIe interface and four SRAM ZBT memory banks of 8 MB each one. This platform can work as a stand-alone platform or a co-processing board. This means that the platform can be used separately working alone or connected with a PC which facilitates the hardware implementation debugging and the result display.</p>
<p>Our super-scalar architecture was developed using fine-pipelined datapaths. The implementation of this ILP (Instruction Level Parallelism) provides high performances and low power consumption [
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
]. Our architecture is displayed as an adaptable design for different applications and requirements as is shown in some previous works [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
,
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
,
<xref ref-type="bibr" rid="b45-sensors-12-01771">45</xref>
]. The use of fixed-point arithmetic entails a high resource saving with an acceptable loss of accuracy (provided that the bit-width at different operations is carefully chosen).</p>
<p>Our design validation consists of evaluating the accuracy of this degradation with respect to a software floating-point version. We split the complete processing engine into different stages and test different bit-widths for the variables at each stage. The key point is to find the minimum bit-width that leads to a minimum loss of accuracy. Once our objective is reached, we continue with the following stage sequentially along the datapath. This process has been successfully adopted in other contributions as [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
,
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
] and represents a good working methodology to allow the fixed-point implementation of floating point algorithms using digital hardware.</p>
<p>The development of the implementation was performed using two hardware description languages for two different abstraction levels. Firstly, the implementation of the modules that perform the communication protocols and interfaces and the Memory Controller Unit (MCU [
<xref ref-type="bibr" rid="b46-sensors-12-01771">46</xref>
]) are implemented in VHDL. The disparity computation and the multi-scale architecture was developed using Handel-C because this C-like language is better suited for algorithmic descriptions, without significantly degrading performances or increasing resources [
<xref ref-type="bibr" rid="b47-sensors-12-01771">47</xref>
].</p>
<p>The hardware implementation of the multiscale extension is described in detail [
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b40-sensors-12-01771">40</xref>
,
<xref ref-type="bibr" rid="b45-sensors-12-01771">45</xref>
]. This multi-scale-with-warping architecture is usually avoided in the literature because of the high computational costs that imply in hardware implementations high resource costs. On the other hand, the multi-scale architecture that we implemented allows us to increase the working range 30 times with respect to the mono-scale implementation.</p>
<sec>
<label>4.1.</label>
<title>Lucas–Kanade Vector Disparity Core</title>
<p>The implementation of this core is based on previous approaches [
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
,
<xref ref-type="bibr" rid="b48-sensors-12-01771">48</xref>
]. In the cited works, the authors implement optical flow gradient-based algorithms, for both mono- and multi-scale versions. In this work, the most important difference is the computation of the vector disparity or bidimensional disparity for uncalibrated images instead of the 1-D disparity for rectified and undistorted images.</p>
<p>In
<xref ref-type="fig" rid="f4-sensors-12-01771">Figure 4</xref>
,
<italic>Pixel In</italic>
denotes the input to the disparity core (in our case, 2 frames for the left and right images with a bitwidth of 8);
<italic>Control</italic>
represents the control word, with the parameters for the number of scales, confidence thresholds, and the input resolution. The output bitwidth is 24 bits: 12 bits for the vertical and the horizontal component of the disparity. The core is implemented in a segmented pipeline design with 5 stages:
<list list-type="bullet">
<list-item>
<p>
<italic>St</italic>
<sub>0</sub>
: In this stage, the filtering of the inputs reducing the aliasing effects is performed. It convolves them with Gaussian filters whose kernels of 3 taps are
<italic>K</italic>
= [1 2 1]/4.</p>
</list-item>
<list-item>
<p>
<italic>St</italic>
<sub>1</sub>
: It computes the left-right difference and applies a smoothing filter to the inputs.</p>
</list-item>
<list-item>
<p>
<italic>St</italic>
<sub>2</sub>
: In this stage, we compute the spatial derivatives to the results of the previous stage:
<italic>I
<sub>x</sub>
</italic>
,
<italic>I
<sub>y</sub>
</italic>
, and filter again the results (including the left-right difference).</p>
</list-item>
<list-item>
<p>
<italic>St</italic>
<sub>3</sub>
: This stage performs the calculation of the coefficients for the linear systems of 5 and 6. The weights
<italic>W</italic>
are set to a 5 × 5 separable kernel defined
<italic>W</italic>
= [ 1 4 6 4 1]/16 as in [
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
,
<xref ref-type="bibr" rid="b37-sensors-12-01771">37</xref>
].</p>
</list-item>
<list-item>
<p>
<italic>St</italic>
<sub>4</sub>
: The final stage computes the solution of the system using the previous results. It uses as confidence measure the determinant of this matrix.</p>
</list-item>
</list>
</p>
<p>For the computation of this core, we use 187 parallel processing units: stage
<italic>St</italic>
<sub>0</sub>
has 2 paths (2 frames) for the Gaussian convolution,
<italic>St</italic>
<sub>1</sub>
has 2 paths (for the left-right difference and the smoothing),
<italic>St</italic>
<sub>2</sub>
has 3 paths (2 for the derivatives
<italic>I
<sub>x</sub>
</italic>
and
<italic>I
<sub>y</sub>
</italic>
and 1 for the left-right difference),
<italic>St</italic>
<sub>3</sub>
has 6 paths (one for each coefficient in
<xref ref-type="disp-formula" rid="FD5">Equations (5)</xref>
and
<xref ref-type="disp-formula" rid="FD5">(6)</xref>
) and
<italic>St</italic>
<sub>5</sub>
, has only one path for the system resolution. The number in brackets in the figure denotes the micropipelined stages for each of them.</p>
</sec>
<sec>
<label>4.2.</label>
<title>Phase-Based Vector Disparity Core</title>
<p>The design of this core is also based on a previous approach [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
]. The main difference with respect to our case is that previous approaches implement a core for the computation of disparity for calibrated images, as in the previous core (as in [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
,
<xref ref-type="bibr" rid="b34-sensors-12-01771">34</xref>
]).</p>
<p>In
<xref ref-type="fig" rid="f5-sensors-12-01771">Figure 5</xref>
, we show a scheme of the design. Input parameters are the same as in the case of the previous core:
<italic>Pixel In</italic>
denotes the input data (2 frames for left and right images with 8 bits);
<italic>Control</italic>
for the control word (42 bits). The output bitwidth is 24 bits: 12 bits for each disparity component. In this case, the core is implemented in a segmented pipeline with 3 stages:
<list list-type="bullet">
<list-item>
<p>
<italic>St</italic>
<sub>0</sub>
: This stage computes the odd and even filtering quadrature components for the image pair.</p>
</list-item>
<list-item>
<p>
<italic>St</italic>
<sub>1</sub>
: It computes the disparity for each orientation (we use 8 orientations).</p>
</list-item>
<list-item>
<p>
<italic>St</italic>
<sub>2</sub>
: The provided component disparities need to be combined to compute the final full disparity. They conform an equation system solved in this stage applying least-squares (see
<xref ref-type="disp-formula" rid="FD9">Equation (9)</xref>
).</p>
</list-item>
</list>
</p>
<p>For the computation of this core, we use 1,160 parallel processing units: stage
<italic>St</italic>
<sub>0</sub>
has 32 paths (2 frames) for the computation of the odd and even filter components (with 8 orientations, we have 16 different filters),
<italic>St</italic>
<sub>1</sub>
has 8 paths for the
<italic>atan2</italic>
operations and finally,
<italic>St</italic>
<sub>2</sub>
has 2 paths, one for each disparity component. The number in brackets in the figure denotes the micropipelined stages for each of them. We have used two IP cores from Xilinx Core Generator platform to compute complex arithmetic operations such as arctangent (
<italic>St</italic>
<sub>1</sub>
) and a pipelined division (
<italic>St</italic>
<sub>2</sub>
).</p>
</sec>
<sec>
<label>4.3.</label>
<title>Multi-Scale Architecture</title>
<p>The implementation of the multi-scale architecture allows us the expansion of the working range of our disparity estimation more than 30× (using 5 scales) compared to the case of mono-scale versions. The design of this multi-scale architecture is the same as in previous works [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
,
<xref ref-type="bibr" rid="b45-sensors-12-01771">45</xref>
]. This approach is inspired by Bergen’s work [
<xref ref-type="bibr" rid="b42-sensors-12-01771">42</xref>
].</p>
<p>The multi-scalar version implementation is simple and it is displayed in
<xref ref-type="fig" rid="f6-sensors-12-01771">Figure 6</xref>
. Firstly, we compute the pyramid for the input images (left and right) and store them. In such a way, we have a bank of images sampled at the different spatial resolutions (depending on the number of scales). The second step consists of iterating in a loop as many times as scales: for each iteration, we upsample the previous estimation of the disparity; the next stage consists of the computation of the warping using the previous up-sampled results and the frames for the following finer scale; the warping operation compensates (removes) the apparent movement of scene elements due to the different points of view, allowing us the computation of disparity estimates in a valid range for that scale; the new disparity estimation is computed using the previous results as input for the core; the final stage collects both the new estimation and the partial previous stored results, combining them in a new partial estimation for the next iteration. The first iteration only consists of the initialization and computes the estimation using as input the images computed in the pyramid for the first spatial resolution scale and goes to the next iteration.</p>
<p>As a brief summary of this architecture, the design is divided into the following modules:
<list list-type="bullet">
<list-item>
<p>Gaussian pyramid: This module implements the computation of the Gaussian pyramid of the left and right images for the disparity computation inspired in [
<xref ref-type="bibr" rid="b43-sensors-12-01771">43</xref>
]. The number of levels of this pyramid depends on the number of scales with a downsampling factor of 2. It is built by a smoothing and a subsampling circuit. The main operations at this step are the 2D convolution with Gaussian filters of 5 taps (smoothing) and the sub-sampling. The kernel is a 5-by-5 matrix decomposed in two arrays
<italic>K</italic>
= [ 1 4 6 4 1]/16. Thanks to the use of separable filters, the convolution is performed in a parallel way for the
<italic>x</italic>
and
<italic>y</italic>
operations. Five image lines are stored in an embedded multi-port BlockRAM used like a FIFO for the convolution. Then, we send to the output (the external SRAM) a pixel every two clock cycles: one pixel is discarded (sub-sampling). This sequential part of the processing is performed once and the results are stored/read to/from the RAM memory banks.</p>
</list-item>
<list-item>
<p>Vector Disparity: This module has been explained in detail in previous subsections. Depending on the case, this module implements the vector disparity estimation based on the Lucas–Kanade or the phase-based algorithm.</p>
</list-item>
<list-item>
<p>Expansion: This module up-samples the current scale results to the resolution of the following finer scale (the up-sampling factor is also 2). In contrast with the mono-dimensional disparity, this module is duplicated for the vector disparity. We use one module for each component of the vector disparity that needs to be up-sampled to the next scale resolution.</p>
</list-item>
<list-item>
<p>Warping: In the literature, this computationally expensive stage is usually avoided because of its high computational cost. In our case, it consists of a bilinear interpolation between left and right image (keeping the left frame and warping the right one with the estimation of the disparity computed for the previous scale). In
<xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>
, the warping computation for the vector disparity computation is shown. Θ denotes the bidimensional scaling operator for
<bold>d</bold>
(
<italic>x, y</italic>
) (vector disparity) at the scale
<italic>s</italic>
with a factor of 2 and
<italic>I
<sup>R</sup>
</italic>
stands for the right image.
<disp-formula id="FD10">
<label>(10)</label>
<mml:math id="M13">
<mml:mrow>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>R</mml:mi>
<mml:mi>s</mml:mi>
</mml:msubsup>
<mml:mo>=</mml:mo>
<mml:mi mathvariant="italic">Warp</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msubsup>
<mml:mrow>
<mml:mi>I</mml:mi>
</mml:mrow>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msubsup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="normal">Θ</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi>d</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mo></mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo>
</mml:mrow>
</mml:math>
</disp-formula>
The warping operation for the vector disparity consists of a bilinear interpolation of the input images with the shift values which we have stored from the computed disparity in the previous scale. The computation of each warped pixel requires the reading of the pair (Δ
<italic>x</italic>
, Δ
<italic>y</italic>
) and the correspondent pixel
<italic>P</italic>
. Each pair (Δ
<italic>x</italic>
, Δ
<italic>y</italic>
) is used for retrieving from memory the four pixels of the original image for each
<italic>P</italic>
pixel. Then, the warped pixel is calculated performing a weighted bilinear interpolation with the obtained values. The warping process needs to perform four memory accesses per clock cycle to calculate one warped pixel to achieve the maximum throughput. This is one of the reasons for the choice of a specific MCU to manage data with different Abstract Access Ports (AAP) [
<xref ref-type="bibr" rid="b46-sensors-12-01771">46</xref>
]. The warping architecture uses a reading AAP of the MCU for accessing the original image. The MCU provides a 36-bit bus allowing the access to four pixels per memory read. The X and Y matrices are provided from the expansion circuit through two blocking FIFOs. Warping requires a neighborhood of 4 pixels and the number of data available per memory access is limited to four in a same line. Thus, one access brings 2 pixels of the same line in the best case. Nevertheless, it is impossible to access the 4-pixel window in a single memory access. In the worst case, we access 4 different memory words (every 4 consecutive memory accesses). Therefore, the performance is constrained up to 4 pixels every 10 memory accesses.</p>
</list-item>
<list-item>
<p>Merging: This module computes the addition of the previous feature estimation and the current one. The result is stored for the next iteration. The non-valid values are propagated from the coarsest scales to the finest ones. At the last scale, the finest one, we make the logical AND operation between its non-valid values and the propagated ones for the final estimation (the non-valid values obtained at the finest scale are the most reliable). The main problem of this module is the synchronization between the current and the stored results.</p>
</list-item>
<list-item>
<p>Homogenization: This stage filters the results for each iteration with two 3 × 3 median filters in cascade. This filtering removes non-reliable values and homogenizes the results.</p>
</list-item>
</list>
</p>
<p>More details about the hardware implementation of this architecture can be found in [
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b40-sensors-12-01771">40</xref>
,
<xref ref-type="bibr" rid="b45-sensors-12-01771">45</xref>
].</p>
</sec>
</sec>
<sec>
<label>5.</label>
<title>Discussion of Results</title>
<p>As explained in the Introduction, with an active sensor that changes the vergence, the rectification process is required each time that the camera configuration is modified. This fact makes the static rectification approach unsuitable for this kind of systems. Moreover, an adaptive vergence system allows gazing on a target or fixation point and it may obtain the optimal disparity estimations around the image plane that is set using the depth of that fixation point. This section analyzes the performances of the vector disparity computation and the comparison in resource costs between our system and the same system with the static rectification unit.</p>
<p>We present the comparison of the developed systems in terms of resource utilization, accuracy and density of the results. Firstly, we list the performances of our work and some state-of-the-art publications with different implementations and technologies. Next, we benchmark our work (both approaches) with the set of images of Middlebury [
<xref ref-type="bibr" rid="b49-sensors-12-01771">49</xref>
]. All this dataset is addressed to work with horizontal disparity algorithms; therefore, it is only shown to illustrate the comparison of our 2D disparity performances with the 1D ones. As mentioned before, our approach is suitable for working with active vision systems. We also test our implementations with our own benchmark images especially plotted to test the vector disparity accuracy and some images from an on-line set of benchmarks available at [
<xref ref-type="bibr" rid="b50-sensors-12-01771">50</xref>
]. The benchmarking is performed for the hardware and software approaches to compare also the accuracy degradation due to the fixed-point arithmetic adopted in the hardware implementation. The last part of the section is dedicated to present a summary of the resource utilization.</p>
<p>In the case of the mono-dimensional benchmarks, we compute the MAE (Mean Absolute Error) and the Density. We also compute the PoBP (percentage of bad pixels,
<italic>i.e.</italic>
, the percentage of pixels whose MAE is greater than 1, see [
<xref ref-type="bibr" rid="b40-sensors-12-01771">40</xref>
]). For the vector disparity estimation, we compute the AAE (Average Angular Error), and the Density. Furthermore, we also compute the PoGP (percentage of good pixels, or the percentage of pixels whose AAE is less than 5, see again [
<xref ref-type="bibr" rid="b40-sensors-12-01771">40</xref>
]).</p>
<sec>
<label>5.1.</label>
<title>State-of-the-Art Comparison</title>
<p>We mentioned in the Introduction that our aim is the development of a high-performance system that works in real time (in our case, it means a frame rate of at least 25 fps with VGA resolution). In
<xref ref-type="table" rid="t1-sensors-12-01771">Table 1</xref>
, we find that our implementation reaches up to 32 fps with a resolution of 640 × 480. This result fulfills our requirements.</p>
<p>
<xref ref-type="table" rid="t1-sensors-12-01771">Table 1</xref>
shows a performance comparison between our four developments (mono- and multi-scale approaches, phase-based, and Lucas–Kanade) with the last works in the literature. Due to the lack of works for computing vector disparity, we summarize in the table the most important ones that compute horizontal disparity in the last years. Besides, the mono-scalar version achieves a frame rate calculated using the maximum working frequency. Finally, in the multi-scalar versions, the frame rate is empirically measured using the proposed architecture and taking into account the PCIe bandwidth restrictions for the communication with a PC.</p>
<p>Most of the listed works in
<xref ref-type="table" rid="t1-sensors-12-01771">Table 1</xref>
are mono-scalar developments except [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
] and [
<xref ref-type="bibr" rid="b17-sensors-12-01771">17</xref>
]. The performances depend on the algorithm, the architecture, and the optimization level. Algorithms with a lower computational cost as SAD-based implementations may obtain better speed performances but the accuracy results are also rather low. Furthermore, there are substantial differences between mono- and multi-scalar versions. On the other hand, we merge horizontal and vector disparity algorithms in the same table to easily compare the main performances, but this comparison is not completely fair, e.g., in the case of the PDS. The PDS (Points × Disparity measures per Second) is a metric that measures the number of operations performed by our algorithm per time taking into account the disparity range. With respect to this last measure, Georgoulas
<italic>et al</italic>
. [
<xref ref-type="bibr" rid="b28-sensors-12-01771">28</xref>
] achieves impressive results with a PDS of 21120 × 10
<sup>6</sup>
. Our PDS for the best multi-scalar version is 7122 × 10
<sup>6</sup>
. The computation of the PDS depends on the disparity range and, for vector disparity algorithms, this range is squared compared with the horizontal disparity range. In the column, we show firstly the PDS using the simple range to check the magnitude differences with the 1D algorithms and the second values are the PDS for the 2D implementation.</p>
<p>To estimate the disparity at different spatial resolution levels, the multi-scalar architecture is revealed as essential. The Laplacian pyramidal approach for the multi-scale architecture [
<xref ref-type="bibr" rid="b43-sensors-12-01771">43</xref>
] is the way to implement this multi-resolution analysis through a fine-to-coarse strategy. The objective is to estimate disparities larger than the filter support. The factor depends on the number of scales (determined by the target application). In the case of the mono-scalar versions, the main advantage is obviously a computation with a high frame rate. Moreover, multi-scalar versions obtain significant precision improvements due to its wide-range estimations.</p>
</sec>
<sec>
<label>5.2.</label>
<title>Benchmarking for Horizontal Disparity</title>
<p>In this subsection, we briefly analyze the performances of our vector disparity algorithms with the well-known benchmark images of Middelbury [
<xref ref-type="bibr" rid="b49-sensors-12-01771">49</xref>
], whose vertical disparity components are always zero. As vector disparity implementations are rare in the literature, we include this section for future comparisons with horizontal disparity algorithms. Actually, we do not expect better results than the proper 1D algorithms, any variation in the vertical disparity (that should be zero) adds error to the resolution of the 2D equation system. Moreover, the search space for the solution is developed from 1D to 2D (see
<xref ref-type="disp-formula" rid="FD3">Equations (3)</xref>
and
<xref ref-type="disp-formula" rid="FD9">(9)</xref>
respectively) which makes the solutions more unreliable.</p>
<p>
<xref ref-type="fig" rid="f7-sensors-12-01771">Figure 7</xref>
and
<xref ref-type="table" rid="t2-sensors-12-01771">Table 2</xref>
show the performance analysis for the horizontal disparity computation. In the literature, besides the example which is being used in this paper, there are not many image benchmarks for vector disparity. Most of the works which we find in the literature test their algorithms and implementations with the classical horizontal disparity benchmark provided by Middlebury [
<xref ref-type="bibr" rid="b49-sensors-12-01771">49</xref>
]. Firstly, we also show the efficiency and density of our approaches with some images of this benchmark, in particular: “
<italic>Tsukuba</italic>
”, “
<italic>Sawtooth</italic>
”, “
<italic>Venus</italic>
”, “
<italic>Teddy</italic>
”, and “
<italic>Cones</italic>
” (respectively called
<italic>bm</italic>
1 to
<italic>bm</italic>
5). We distinguish between the Lukas–Kanade and the phase-based version and between the hardware and the software implementations. In the figure, we notice that the error is similar for the different versions except in the case of
<italic>bm</italic>
4 and
<italic>bm</italic>
5 (“
<italic>Teddy</italic>
” and “
<italic>Cones</italic>
” cases). The increment in these cases of the errors for the phase-based hardware version is substantial and also entails an important loss of density. The Lucas–Kanade hardware version achieves even better results than the software version due to the use of homogenization stages. The table shows the best results for the Lucas–Kanade hardware version but, except for the last two cases, all the results are very similar and the degradation of the precision is not quite significant.</p>
<p>The generalized loss of density is very significant and may be attributed to the loss of precision of both designs. But it is even worst in the case of the phase-based implementation constrained for the fixed-point arithmetic, especially in the complex operations such as divisions and arctangent modules and in computations for the Gabor filtering stage. Moreover, the use of the fixed-point arithmetic also affects the computation of the confidence measure that performs the thresholding operation. Finally, it is also worth regarding that hardware implementations in
<xref ref-type="fig" rid="f7-sensors-12-01771">Figure 7</xref>
are generally more accurate than their correspondent software implementations (more accurate and reliable estimations entail discarding more estimations).</p>
</sec>
<sec>
<label>5.3.</label>
<title>Benchmarking for Vector Disparity</title>
<p>In this last subsection, we perform the benchmarking using the convenient set of images for the analysis for the performances of the vector disparity implementations.
<xref ref-type="fig" rid="f8-sensors-12-01771">Figure 8</xref>
and
<xref ref-type="table" rid="t3-sensors-12-01771">Table 3</xref>
show the vector disparity results for the “
<italic>plane 0H 0V</italic>
”, “
<italic>plane 15H 15V</italic>
”, “
<italic>desktop00</italic>
”, and “
<italic>desktop09</italic>
” sequences (marked as
<italic>bv</italic>
1 to
<italic>bv</italic>
4). The first two sequences (
<italic>bv1</italic>
and
<italic>bv2</italic>
) were generated using an initial ground-truth, whereas
<italic>bv</italic>
3 and
<italic>bv</italic>
4 are active views of 3D acquired natural scenes generated by a virtual reality system [
<xref ref-type="bibr" rid="b50-sensors-12-01771">50</xref>
] and available at [
<xref ref-type="bibr" rid="b56-sensors-12-01771">56</xref>
]. In this case, differences between the software and hardware versions are more important. On the other hand, the differences between the phase-based and Lucas–Kanade have been shortened, although the Lucas–Kanade hardware implementation seems slightly better. This fact can be attributed, as in the previous section, to the loss of accuracy that affects the phase-based model due to the bit-widths and fixed-point arithmetic limitations.
<xref ref-type="table" rid="t3-sensors-12-01771">Table 3</xref>
also supports it, showing a PoGP that model is about 25% higher in the Lucas–Kanade than in the phase-based model.</p>
<p>In general, in the case of this benchmark, the density is quite similar in contrast with the previous subsection. The computation is not affected as dramatically as in the previous case because now we are using appropriately the confidence measure (implemented for the 2D model not for the 1D). For instance (except for the first sequence
<italic>bv</italic>
1), the maximum difference between hardware and software results in density is about 15%, with similar tendencies for all the sequences.</p>
<p>Finally,
<xref ref-type="fig" rid="f9-sensors-12-01771">Figures 9</xref>
and
<xref ref-type="fig" rid="f10-sensors-12-01771">10</xref>
show the disparity results for the software and hardware versions for the sequences available at [
<xref ref-type="bibr" rid="b56-sensors-12-01771">56</xref>
] and the ones that we generated. In the figures, we display the original images, the ground-truth, and the results for the software versions in the case of the first figure and the hardware results for the second one. All the estimations have a color-coding frame describing the direction of the estimated vector disparity. The values in black in the hardware column are the unreliable values (
<italic>NaN</italic>
). As it can be seen, the phase-based results present better results in the case of the software but, for the hardware implementation, the bit-width constraining degrades the final estimation in an appreciable way. On the other hand, the phase-based implementation presents some advantages for its use in real-world applications such as a better behavior against variations in the illumination [
<xref ref-type="bibr" rid="b57-sensors-12-01771">57</xref>
,
<xref ref-type="bibr" rid="b58-sensors-12-01771">58</xref>
]. This last advantage is illustrated in the figures, especially for “
<italic>desktop00</italic>
” and “
<italic>desktop09</italic>
”. For a more detailed study of the robustness of phase-based implementations against illumination changes and affine transformations between the stereo pair images, cf. [
<xref ref-type="bibr" rid="b57-sensors-12-01771">57</xref>
,
<xref ref-type="bibr" rid="b59-sensors-12-01771">59</xref>
,
<xref ref-type="bibr" rid="b60-sensors-12-01771">60</xref>
].</p>
</sec>
<sec>
<label>5.4.</label>
<title>Hardware Resource Utilization</title>
<p>In computer vision, the selection of the best alternative is performed depending on the target application, searching for a good trade-off between the required accuracy (see previous subsections) and constraints about the maximum frequency and the resource utilization.
<xref ref-type="table" rid="t4-sensors-12-01771">Table 4</xref>
shows the resource utilization and the maximum working frequency of the implemented system. This table presents the information about the board resource utilization: total number of 4 input LUTs, Slice Flip Flops, Slices, DSPs, Block RAMs used, and finally, the maximum frequency (MHz).</p>
<p>The listed options include: the multi-scale vector disparity systems and the horizontal disparity systems with the rectification stage, for both approaches. More details about the resource cost of the different unit components of the multi-scale generalization can be found at [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
,
<xref ref-type="bibr" rid="b35-sensors-12-01771">35</xref>
,
<xref ref-type="bibr" rid="b45-sensors-12-01771">45</xref>
].</p>
<p>For the horizontal disparity systems, the Lucas–Kanade version uses about 9% more 4-Input LUTs, this is due to the difference in Block RAMs and DSPs and especially, to the optimization level. Tools for hardware implementations apply optimization techniques based on heuristics that cannot be completely controlled using the software parameters. A totally fair comparison can also be done with a more intensive use of resources.</p>
<p>On the other hand, focusing on the vector disparity computations, while the phase-based approach increases the resource utilization about 10%, the Lucas–Kanade approach achieves a remarkable reduction of about 25%. As the multi-scale architecture is the same for both approaches, the increment in resource costs for the phase-based approach is due to the 2D core. While the rectification unit is the bottle-neck for the Lucas–Kanade architecture, it is the proper 2D core for the phase-based scheme.</p>
<p>All these results support the idea of implementing the final system for motion control of our binocular system with the Lucas–Kanade approach taking into account also the low degradation of accuracy obtained in the previous subsection and the resource saving of more than 25% with respect to the phase-based approach.</p>
</sec>
</sec>
<sec>
<label>6.</label>
<title>Control of Vergence for a Binocular System</title>
<p>As described in the Introduction section, our final objective is the implementation of a system that, using the vector disparity (implemented according to the previous sections), manages the vergence, version, and tilt control.</p>
<p>Motor control is distributed using Digital Signal Processing (DSPs) boards, in this case, Freescale DSP-56F807, 80 MHz, fixed point 16 bits which perform a fast low-level control loop in real time. A CAN-bus line allows the communication between the boards and a remote PC. Motors are directly controlled by standard PID controllers. This DSP, due to its memory and computation limitations, implements simple operations such as pre-filtering, signal acquisition, and PID position control (using absolute position encoders). More details about the mechanics and the architecture of the ICub and RobotCub can be found in [
<xref ref-type="bibr" rid="b26-sensors-12-01771">26</xref>
,
<xref ref-type="bibr" rid="b27-sensors-12-01771">27</xref>
].</p>
<p>The algorithm that we use for the fixation consists of selecting a point of our object of interest and computing a centroid based on the color of this point, using a threshold for the RGB components (a range of [
<italic></italic>
5,5] for each component). Once we have the centroid computed, we firstly compute the distance between this point and the current position of the eye centers and send it via the CAN bus to the DSP-based control cards. The communication protocol allows four working modes: sending relative angles, absolute angles, relative pixel positions, or normalized relative position (see the documentation at [
<xref ref-type="bibr" rid="b25-sensors-12-01771">25</xref>
]); as explained, we use the third alternative. The PID low-level control loop acts on the motors to modify version and tilt according to these coordinates of the color-based centroid and in this way, we set our eye centers in the object of interest. The last step is acting on the vergence motors and computing the vector disparity until it reaches a value near zero (we use a threshold of 5). Changing the vergence of the cameras means translating the image plane to the depth of the target. Once the object is fixated, we will obtain the optimal performances around this object (zero disparity plane).</p>
<p>Tracking adds the possibility of performing a smooth pursuit of the object gazing on several fixation points. It is worth noticing that, due to the huge backlash on the eyes pan movement [
<xref ref-type="bibr" rid="b25-sensors-12-01771">25</xref>
] and the limits in the physical properties of the motors, the pursuit is not as smooth as it may be expected and there are some fluctuations shown in the second experiment.</p>
<p>One of the problems that might appear in this scenario is the motion blur between the left and right camera images. In our algorithm, we firstly have a master camera that moves to the color centroid (where the object of interest is) and fixates to this position, followed by the second camera. As explained, the tilt is common to the cameras, while the version is achieved to move the cameras towards the same orientation. Then, the second camera (the slave) achieves the vergence movement to fixate the object, according to the position of the first eye.</p>
<p>The blur may happen during this second step, since the disparity is now being computed. However, we partially avoid this situation by using the disparity after each movement when the rig setup of the cameras is steady and not constant. In addition, the multiscale process also provides robustness to this issue due to the coarse-to-fine process and the limited disparity range possible at each scale.</p>
<p>In this final section, we present the results for two real experiments: the fixation in a target object, in our case it is a red plastic bottle, and the fixation and tracking of a blue LED light.</p>
<sec>
<label>6.1.</label>
<title>Experiment 1: Red Plastic Bottle Fixation</title>
<p>The first experiment consists of making the system fixate at a red plastic bottle.
<xref ref-type="fig" rid="f11-sensors-12-01771">Figure 11</xref>
displays the initial position of the system (left and right images of the cameras). The red cross shows the fixation point in each case. The processing begins with the selection of the fixation point and then, the system performs the fixation task with the static object. In the figure, we observe the initial horizontal disparity at the fixation point; after fixating the point, the horizontal disparity tends to zero (we use a threshold to avoid variations that might affect the stability of the system). The vertical disparity is also almost zero, and in our case, with a common tilt for both cameras, it is not possible to reduce it.</p>
<p>The evolution of the X and Y coordinates of the fixation point for both cameras and the component disparities are plotted in
<xref ref-type="fig" rid="f12-sensors-12-01771">Figure 12</xref>
. As we see, with an image resolution of 320 × 240, the fixation is finally performed in a very accurate and fast way. After 0.8 s, all the evolutions of the different parameters are stabilized (X and Y coordinates at 160 and 120 values respectively; component disparities around zero). The third row shows the evolutions for the vergence, version, and tilt. We plot the velocities for the different parameters that are the inputs of the DSP that controls the different motors of our system. After 0.8 s, all of them are also stable. Similar results are obtained for fixation in several works using other architectures: in [
<xref ref-type="bibr" rid="b61-sensors-12-01771">61</xref>
], the fixation time is about 0.5–0.6 s and in [
<xref ref-type="bibr" rid="b62-sensors-12-01771">62</xref>
], about 1.5 s. Our approach is shown as a very competitive alternative according to the fixation time and it has been also presented as one the most accurate ones.</p>
</sec>
<sec>
<label>6.2.</label>
<title>Experiment 2: Smooth Pursuit</title>
<p>In this experiment, we show the smooth pursuit example with a blue object.
<xref ref-type="fig" rid="f13-sensors-12-01771">Figure 13</xref>
shows the experiment performed for the pursuit of a blue object. The sequence shows the initial fixation and some subsequent captures of the cameras of our system tracking the object even at the limits of its physical properties. Once the object is detected, the system always performs the fixation again.</p>
<p>It is worth noticing that the fixation point is not exactly the same point of the object in both cases, on the left and right camera images, because, as we mentioned, we use a threshold for the zero disparity region. In this way, our system is more stable and smoother trajectories are ensured.</p>
</sec>
</sec>
<sec>
<label>7.</label>
<title>Conclusions</title>
<p>The main contribution of this work is the implementation of a sensor for an active vision system with dynamic vergence control to explore dynamic environments using a scheme different to the common static camera configurations. The main problem of an active system is that the rectification process is required each time that the camera configuration is modified. Therefore, the use of a static rectification preprocessing stage technique is unsuitable for any active system that actively modifies the vergence angle of its camera setups. Our solution consists of using vector disparity estimations to control vergence. We have developed a SoC (system-on-a-chip) that integrates vector disparity estimation with vergence control on the same chip. This allows an embedded implementation with a low consumption at a single device that can be integrated on the i-Cub head (or any vision system including low level processing stages such as active stereo vision).</p>
<p>The first part of this work is dedicated to the design and implementation of an embedded system for the estimation of vector disparity. We have developed two different alternatives: a gradient-based one and a phase-based one. As mentioned, there are multiple examples for the horizontal disparity, while in the case of the vector disparity, as far as we know, the developments of this phase-based estimation in the literature are very seldom (see [
<xref ref-type="bibr" rid="b13-sensors-12-01771">13</xref>
,
<xref ref-type="bibr" rid="b17-sensors-12-01771">17</xref>
]), and their hardware implementation is even rarer. We have also designed a multi-scale generalization to increase the number of disparity levels 30× (using 5 spatial scales).</p>
<p>The requirements of a real-time system have been successfully fulfilled, since we are able to reach a working frequency of 32 fps with a VGA resolution (640 × 480) and, resorting on a multi-scale architecture, we are able to cope with large disparities. In the best case, the mono-scalar version of the system may achieve up to 267 fps for the same resolution, which shows the maximum level of parallelism provided by an FPGA (in our case, a Xilinx Virtex4 XC4vfx100 device). We have also analyzed the accuracy and density of our designs showing competitive results. By comparing different techniques with proper benchmark sequences, the Lucas-Kanade algorithm (including the homogenization stage) is revealed as the best choice, showing optimal efficacy
<italic>vs.</italic>
efficiency trade-off for vector disparity computation.</p>
<p>Hence, we have also compared the hardware and software versions of the algorithms; this comparison shows a low degradation for our hardware implementation which is affordable taking into account the use of fixed-point arithmetic instead of floating-point one. We have also compared the phase-based and the gradient-based algorithms and summarize the resource utilization. With the gradient-based algorithm, the resource cost is about 23% less than in the case of the phase-based one comparing the multi-scalar versions and 37% for the mono-scalar version. In terms of maximum working frequency, the gradient-based system is 2.3 times faster than the phase-based one.</p>
<p>The last section in this work deals with the implementation of the control model for a binocular camera system inspired by the Hering’s Law. The control manages the vergence, version, and tilt angles of the system to modify the fixation point in order to focus on a target object using the real-time vector disparity computation. The easy integration with such a system and the low power consumption of the system [
<xref ref-type="bibr" rid="b36-sensors-12-01771">36</xref>
] support the employment of the FPGA as well.</p>
<p>In the paper, we have also presented a fixation application and a tracking trajectory example for a real-world scenario. The implementation is tackled using the real-time vector disparity estimation, computed by the gradient-based algorithm. It consists of moving the cameras towards the position of an object of interest and afterwards, in moving the fixation point using the computed vector disparity to take advantage of the optimal computation that can be performed at the zero disparity plane. Once the proper fixation is ensured, we achieved a second experiment for a smooth pursuit movement towards an object of interest. As shown, we achieve fixating at the point of interest in approximately 0.8 s (it involves the gazing towards the object and the vergence control).</p>
<p>Finally, as future works, we will address the integration of the system on a robotic mobile platform for the implementation of real algorithms for autonomous navigation and scene mapping.</p>
</sec>
</body>
<back>
<ack>
<p>This work has been supported by the National Grant (AP2007-00275), the projects ARC-VISION (TEC2010-15396), ITREBA (TIC-5060), MULTIVISION (TIC-3873), and the EU project TOMSY (FP7-270436).</p>
</ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-01771">
<label>1.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bertozzi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Broggi</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>GOLD: A parallel real-time stereo vision system for generic obstacle and lane detection</article-title>
<source>IEEE Trans. Image Process</source>
<year>1998</year>
<volume>7</volume>
<fpage>62</fpage>
<lpage>81</lpage>
<pub-id pub-id-type="pmid">18267380</pub-id>
</element-citation>
</ref>
<ref id="b2-sensors-12-01771">
<label>2.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>El Ansari</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Mousset</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Bensrhair</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>A new stereo matching approach for real-time road obstacle detection for situations with deteriorated visibility</article-title>
<conf-name>Proceedings of the 2008 IEEE Intelligent Vehicles Symposium</conf-name>
<conf-loc>Eindhoven, The Netherlands</conf-loc>
<conf-date>4–6 June 2008</conf-date>
<fpage>355</fpage>
<lpage>360</lpage>
</element-citation>
</ref>
<ref id="b3-sensors-12-01771">
<label>3.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Oisel</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Memin</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Morin</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Galpin</surname>
<given-names>F.</given-names>
</name>
</person-group>
<article-title>One-dimensional dense disparity estimation for three-dimensional reconstruction</article-title>
<source>IEEE Trans. Image Process</source>
<year>2003</year>
<volume>12</volume>
<fpage>1107</fpage>
<lpage>1119</lpage>
<pub-id pub-id-type="pmid">18237982</pub-id>
</element-citation>
</ref>
<ref id="b4-sensors-12-01771">
<label>4.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Shi</surname>
<given-names>B.</given-names>
</name>
</person-group>
<article-title>Subpixel resolution binocular visual tracking using analog VLSI vision sensors</article-title>
<source>IEEE Trans. Circuits Syst. II Analog Digit. Signal Process</source>
<year>2000</year>
<volume>47</volume>
<fpage>1468</fpage>
<lpage>1475</lpage>
</element-citation>
</ref>
<ref id="b5-sensors-12-01771">
<label>5.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Musleh</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Garca</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Otamendi</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Armingol</surname>
<given-names>J.M.</given-names>
</name>
<name>
<surname>de la Escalera</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>Identifying and tracking pedestrians based on sensor fusion and motion stability predictions</article-title>
<source>Sensors</source>
<year>2010</year>
<volume>10</volume>
<fpage>8028</fpage>
<lpage>8053</lpage>
<pub-id pub-id-type="pmid">22163639</pub-id>
</element-citation>
</ref>
<ref id="b6-sensors-12-01771">
<label>6.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Coelho</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Piater</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Grupen</surname>
<given-names>R.</given-names>
</name>
</person-group>
<article-title>Developing haptic and visual perceptual categories for reaching and grasping with a humanoid robot</article-title>
<source>Robot. Auton. Syst</source>
<year>2001</year>
<volume>37</volume>
<fpage>195</fpage>
<lpage>218</lpage>
</element-citation>
</ref>
<ref id="b7-sensors-12-01771">
<label>7.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Song</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Minami</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Yanou</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>3-D hand amp; Eye-vergence approaching visual servoing with lyapunouv-stable pose tracking</article-title>
<conf-name>Proceedings of the 2011 IEEE International Conference on Robotics and Automation (ICRA)</conf-name>
<conf-loc>Shanghai, China</conf-loc>
<conf-date>9–13 May 2011</conf-date>
<fpage>5210</fpage>
<lpage>5217</lpage>
</element-citation>
</ref>
<ref id="b8-sensors-12-01771">
<label>8.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Carrillo</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Prieto</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>Real-time system for high-image resolution disparity estimation</article-title>
<source>IEEE Trans. Image Process</source>
<year>2007</year>
<volume>16</volume>
<fpage>280</fpage>
<lpage>285</lpage>
<pub-id pub-id-type="pmid">17283786</pub-id>
</element-citation>
</ref>
<ref id="b9-sensors-12-01771">
<label>9.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Murphy</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Lindquist</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Rynning</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Cecil</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Leavitt</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>M.</given-names>
</name>
</person-group>
<article-title>Low-cost stereo vision on an FPGA</article-title>
<conf-name>Proceedings of the 15th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM ’07)</conf-name>
<conf-loc>Napa, CA, USA</conf-loc>
<conf-date>23–25 April 2007</conf-date>
<fpage>333</fpage>
<lpage>334</lpage>
</element-citation>
</ref>
<ref id="b10-sensors-12-01771">
<label>10.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Trucco</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Verri</surname>
<given-names>A.</given-names>
</name>
</person-group>
<source>Introductory Techniques for 3-D Computer Vision</source>
<publisher-name>Prentice Hall PTR</publisher-name>
<publisher-loc>Upper Saddle River, NJ, USA</publisher-loc>
<year>1998</year>
</element-citation>
</ref>
<ref id="b11-sensors-12-01771">
<label>11.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Faugeras</surname>
<given-names>O.</given-names>
</name>
<name>
<surname>Luong</surname>
<given-names>Q.T.</given-names>
</name>
<name>
<surname>Papadopoulou</surname>
<given-names>T.</given-names>
</name>
</person-group>
<source>The Geometry of Multiple Images: The Laws that Govern the Formation of Images of A Scene and Some of Their Applications</source>
<publisher-name>MIT Press</publisher-name>
<publisher-loc>Cambridge, MA, USA</publisher-loc>
<year>2001</year>
</element-citation>
</ref>
<ref id="b12-sensors-12-01771">
<label>12.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Samarawickrama</surname>
<given-names>J.G.</given-names>
</name>
<name>
<surname>Sabatini</surname>
<given-names>S.P.</given-names>
</name>
</person-group>
<article-title>Version and vergence control of a stereo camera head by fitting the movement into the hering’s law</article-title>
<conf-name>Proceedings of the 4th Canadian Conference on Computer and Robot Vision</conf-name>
<conf-loc>Montreal, QC, Canada</conf-loc>
<conf-date>28–30 May 2007</conf-date>
<fpage>363</fpage>
<lpage>370</lpage>
</element-citation>
</ref>
<ref id="b13-sensors-12-01771">
<label>13.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Theimer</surname>
<given-names>W.M.</given-names>
</name>
<name>
<surname>Mallot</surname>
<given-names>H.A.</given-names>
</name>
</person-group>
<source>Vergence Guided Depth Reconstruction Using a Phase Method; Neuro-Nimes ’93</source>
<publisher-name>EC2 Publishing</publisher-name>
<publisher-loc>Nanterre, France</publisher-loc>
<year>1993</year>
<fpage>299</fpage>
<lpage>308</lpage>
</element-citation>
</ref>
<ref id="b14-sensors-12-01771">
<label>14.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Gibaldi</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Canessa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Chessa</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sabatini</surname>
<given-names>S.P.</given-names>
</name>
<name>
<surname>Solari</surname>
<given-names>F.</given-names>
</name>
</person-group>
<article-title>A neuromorphic control module for real-time vergence eye movements on the iCub robot head</article-title>
<conf-name>Proceedings of the 10th IEEE-RAS International Conference on Humanoid Robots (Humanoids)</conf-name>
<conf-loc>Nashville, TN, USA</conf-loc>
<conf-date>6–8 December 2011</conf-date>
<fpage>543</fpage>
<lpage>550</lpage>
</element-citation>
</ref>
<ref id="b15-sensors-12-01771">
<label>15.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Semmlow</surname>
<given-names>J.L.</given-names>
</name>
<name>
<surname>Yuan</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Alvarez</surname>
<given-names>T.L.</given-names>
</name>
</person-group>
<article-title>Evidence for separate control of slow version and vergence eye movements: Support for Hering’s law</article-title>
<source>Vis. Res</source>
<year>1998</year>
<volume>38</volume>
<fpage>1145</fpage>
<lpage>1152</lpage>
<pub-id pub-id-type="pmid">9666973</pub-id>
</element-citation>
</ref>
<ref id="b16-sensors-12-01771">
<label>16.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Enrights</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>Changes in vergence mediated by saccades</article-title>
<source>J. Physiol</source>
<year>1983</year>
<volume>350</volume>
<fpage>9</fpage>
<lpage>31</lpage>
</element-citation>
</ref>
<ref id="b17-sensors-12-01771">
<label>17.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Chessa</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Sabatini</surname>
<given-names>S.P.</given-names>
</name>
<name>
<surname>Solari</surname>
<given-names>F.</given-names>
</name>
</person-group>
<article-title>A fast joint bioinspired algorithm for optic flow and two-dimensional disparity estimation</article-title>
<conf-name>Proceedings of the 7th International Conference on Computer Vision Systems: Computer Vision Systems (ICVS ’09)</conf-name>
<conf-loc>Liege, Belgium</conf-loc>
<conf-date>October 2009</conf-date>
<fpage>184</fpage>
<lpage>193</lpage>
</element-citation>
</ref>
<ref id="b18-sensors-12-01771">
<label>18.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Xu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Zhai</surname>
<given-names>G.</given-names>
</name>
</person-group>
<article-title>2D phase-based matching in uncalibrated images</article-title>
<conf-name>Proceedings of the IEEE Workshop on Signal Processing Systems Design and Implementation</conf-name>
<conf-loc>Athens, Greece</conf-loc>
<conf-date>2–4 November 2005</conf-date>
<fpage>325</fpage>
<lpage>330</lpage>
</element-citation>
</ref>
<ref id="b19-sensors-12-01771">
<label>19.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nalpantidis</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Amanatiadis</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Sirakoulis</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Gasteratos</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>Efficient hierarchical matching algorithm for processing uncalibrated stereo vision images and its hardware architecture</article-title>
<source>IET Image Process</source>
<year>2011</year>
<volume>5</volume>
<fpage>481</fpage>
<lpage>492</lpage>
</element-citation>
</ref>
<ref id="b20-sensors-12-01771">
<label>20.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Beauchemin</surname>
<given-names>S.S.</given-names>
</name>
<name>
<surname>Barron</surname>
<given-names>J.L.</given-names>
</name>
</person-group>
<article-title>The computation of optical flow</article-title>
<source>ACM Comput. Surv</source>
<year>1995</year>
<volume>27</volume>
<fpage>433</fpage>
<lpage>466</lpage>
</element-citation>
</ref>
<ref id="b21-sensors-12-01771">
<label>21.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Lucas</surname>
<given-names>B.D.</given-names>
</name>
<name>
<surname>Kanade</surname>
<given-names>T.</given-names>
</name>
</person-group>
<article-title>An iterative image registration technique with an application to stereo vision</article-title>
<conf-name>Proceedings of the 7th International Joint Conference on Artificial Intelligence (IJCAI ’81)</conf-name>
<conf-loc>Vancouver, BC, Canada</conf-loc>
<conf-date>August 1981</conf-date>
<fpage>674</fpage>
<lpage>679</lpage>
</element-citation>
</ref>
<ref id="b22-sensors-12-01771">
<label>22.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fleet</surname>
<given-names>D.J.</given-names>
</name>
<name>
<surname>Jepson</surname>
<given-names>A.D.</given-names>
</name>
<name>
<surname>Jenkin</surname>
<given-names>M.R.</given-names>
</name>
</person-group>
<article-title>Phase-based disparity measurement</article-title>
<source>CVGIP Image Underst</source>
<year>1991</year>
<volume>53</volume>
<fpage>198</fpage>
<lpage>210</lpage>
</element-citation>
</ref>
<ref id="b23-sensors-12-01771">
<label>23.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sabatini</surname>
<given-names>S.P.</given-names>
</name>
<name>
<surname>Gastaldi</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Solari</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Pauwels</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Hulle</surname>
<given-names>M.M.V.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Pugeault</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Krger</surname>
<given-names>N.</given-names>
</name>
</person-group>
<article-title>A compact harmonic code for early vision based on anisotropic frequency channels</article-title>
<source>Comput. Vis. Image Underst</source>
<year>2010</year>
<volume>114</volume>
<fpage>681</fpage>
<lpage>699</lpage>
</element-citation>
</ref>
<ref id="b24-sensors-12-01771">
<label>24.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Solari</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Sabatini</surname>
<given-names>S.P.</given-names>
</name>
<name>
<surname>Bisio</surname>
<given-names>G.M.</given-names>
</name>
</person-group>
<article-title>Fast technique for phase-based disparity estimation with no explicit calculation of phase</article-title>
<source>Electron. Lett</source>
<year>2001</year>
<volume>37</volume>
<fpage>1382</fpage>
<lpage>1383</lpage>
</element-citation>
</ref>
<ref id="b25-sensors-12-01771">
<label>25.</label>
<element-citation publication-type="webpage">
<person-group person-group-type="author">
<collab>iCub Project</collab>
</person-group>
<article-title>The EU iCub Project: An Open Source Cognitive Humanoid Robotic Platform</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.icub.org/">http://www.icub.org/</ext-link>
(accessed on 28 December 2011).</comment>
</element-citation>
</ref>
<ref id="b26-sensors-12-01771">
<label>26.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Beira</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Lopes</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Praga</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Santos-Victor</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Bernardino</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Metta</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Becchi</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Saltaren</surname>
<given-names>R.</given-names>
</name>
</person-group>
<article-title>Design of the robot-cub (iCub) head</article-title>
<conf-name>Proceedings of the 2006 IEEE International Conference on Robotics and Automation (ICRA ’06)</conf-name>
<conf-loc>Orlando, CA, USA</conf-loc>
<conf-date>May 2006</conf-date>
<fpage>94</fpage>
<lpage>100</lpage>
</element-citation>
</ref>
<ref id="b27-sensors-12-01771">
<label>27.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Ivaldi</surname>
<given-names>S.</given-names>
</name>
</person-group>
<article-title>From Humans to Humanoids: A Study on Optimal Motor Control for the iCub</article-title>
<comment>Ph.D. Thesis,</comment>
<publisher-name>University of Genoa</publisher-name>
<publisher-loc>Genoa, Italy</publisher-loc>
<year>2011</year>
</element-citation>
</ref>
<ref id="b28-sensors-12-01771">
<label>28.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Georgoulas</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Andreadis</surname>
<given-names>I.</given-names>
</name>
</person-group>
<article-title>A real-time occlusion aware hardware structure for disparity map computation</article-title>
<conf-name>Proceedings of the Image Analysis and Processing (ICIAP ’09)</conf-name>
<conf-loc>Vietri sul mare, Italy</conf-loc>
<conf-date>September 2009</conf-date>
<volume>5716</volume>
<fpage>721</fpage>
<lpage>730</lpage>
</element-citation>
</ref>
<ref id="b29-sensors-12-01771">
<label>29.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hansard</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Horaud</surname>
<given-names>R.</given-names>
</name>
</person-group>
<article-title>Cyclopean geometry of binocular vision</article-title>
<source>J. Opt. Soc. Am</source>
<year>2008</year>
<volume>25</volume>
<fpage>2357</fpage>
<lpage>2369</lpage>
</element-citation>
</ref>
<ref id="b30-sensors-12-01771">
<label>30.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vanegas</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Barranco</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
</person-group>
<article-title>A novel architecture for a massively parallel low level vision processing engine on chip</article-title>
<conf-name>Proceedings of the 2010 IEEE International Symposium on Industrial Electronics (ISIE ’10)</conf-name>
<conf-loc>Bari, Italy</conf-loc>
<conf-date>5–7 July 2010</conf-date>
<fpage>3033</fpage>
<lpage>3039</lpage>
</element-citation>
</ref>
<ref id="b31-sensors-12-01771">
<label>31.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Hadjitheophanous</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Ttofis</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Georghiades</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Theocharides</surname>
<given-names>T.</given-names>
</name>
</person-group>
<article-title>Towards hardware stereoscopic 3D reconstruction a real-time FPGA computation of the disparity map</article-title>
<conf-name>Proceedings of the 2010 IEEE International Symposium on Design, Automation & Test in Europe Conference & Exhibition (DATE ’10)</conf-name>
<conf-loc>Dresden, Germany</conf-loc>
<conf-date>8–12 March 2010</conf-date>
<fpage>1743</fpage>
<lpage>1748</lpage>
</element-citation>
</ref>
<ref id="b32-sensors-12-01771">
<label>32.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Jin</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Cho</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Pham</surname>
<given-names>X.D.</given-names>
</name>
<name>
<surname>Lee</surname>
<given-names>K.M.</given-names>
</name>
<name>
<surname>Park</surname>
<given-names>S.K.</given-names>
</name>
<name>
<surname>Kim</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Jeon</surname>
<given-names>J.W.</given-names>
</name>
</person-group>
<article-title>FPGA design and implementation of a real-time stereo vision system</article-title>
<source>IEEE Trans. Circuits Syst. Video Technol</source>
<year>2010</year>
<volume>20</volume>
<fpage>15</fpage>
<lpage>26</lpage>
</element-citation>
</ref>
<ref id="b33-sensors-12-01771">
<label>33.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Calderon</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Ortiz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Fontaine</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>High parallel disparity map computing on FPGA</article-title>
<conf-name>Proceedings of the 2010 IEEE/ASME International Conference on Mechatronics and Embedded Systems and Applications (MESA ’10)</conf-name>
<conf-loc>Suzhou, China</conf-loc>
<conf-date>8–10 July 2010</conf-date>
<fpage>307</fpage>
<lpage>312</lpage>
</element-citation>
</ref>
<ref id="b34-sensors-12-01771">
<label>34.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Pelayo</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Ortigosa</surname>
<given-names>E.M.</given-names>
</name>
<name>
<surname>Mota</surname>
<given-names>S.</given-names>
</name>
</person-group>
<article-title>FPGA-based real-time optical-flow system</article-title>
<source>IEEE Trans. Circuits Syst. Video Technol</source>
<year>2006</year>
<volume>16</volume>
<fpage>274</fpage>
<lpage>279</lpage>
</element-citation>
</ref>
<ref id="b35-sensors-12-01771">
<label>35.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Barranco</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Vanegas</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
</person-group>
<article-title>Parallel architecture for hierarchical optical flow estimation based on FPGA</article-title>
<source>IEEE Trans. Very Large Scale Integr. (VLSI) Syst</source>
<year>2012</year>
<pub-id pub-id-type="doi">10.1109/TVLSI.2011.2145423</pub-id>
</element-citation>
</ref>
<ref id="b36-sensors-12-01771">
<label>36.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Agis</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Bernier</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>Superpipelined high-performance optical-flow computation architecture</article-title>
<source>Comput. Vis. Image Underst</source>
<year>2008</year>
<volume>112</volume>
<fpage>262</fpage>
<lpage>273</lpage>
</element-citation>
</ref>
<ref id="b37-sensors-12-01771">
<label>37.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Brandt</surname>
<given-names>J.W.</given-names>
</name>
</person-group>
<article-title>Improved accuracy in Gradient-based optical flow estimation</article-title>
<source>Int. J. Comput. Vis</source>
<year>1997</year>
<volume>25</volume>
<fpage>5</fpage>
<lpage>22</lpage>
</element-citation>
</ref>
<ref id="b38-sensors-12-01771">
<label>38.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Barron</surname>
<given-names>J.L.</given-names>
</name>
<name>
<surname>Fleet</surname>
<given-names>D.J.</given-names>
</name>
<name>
<surname>Beauchemin</surname>
<given-names>S.S.</given-names>
</name>
</person-group>
<article-title>Performance of optical flow techniques</article-title>
<source>Int. J. Comput. Vis</source>
<year>1994</year>
<volume>12</volume>
<fpage>43</fpage>
<lpage>77</lpage>
</element-citation>
</ref>
<ref id="b39-sensors-12-01771">
<label>39.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Hong</surname>
<given-names>T.H.</given-names>
</name>
<name>
<surname>Herman</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Chellappa</surname>
<given-names>R.</given-names>
</name>
</person-group>
<article-title>Accuracy
<italic>vs.</italic>
efficiency trade-offs in optical flow algorithms</article-title>
<source>Computer Vision ECCV 96</source>
<publisher-name>Springer</publisher-name>
<publisher-loc>Berlin, Germany</publisher-loc>
<year>1996</year>
<volume>1065</volume>
<fpage>174</fpage>
<lpage>183</lpage>
</element-citation>
</ref>
<ref id="b40-sensors-12-01771">
<label>40.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pauwels</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Hulle</surname>
<given-names>M.M.V.</given-names>
</name>
</person-group>
<article-title>A comparison of FPGA and GPU for real-time phase-based optical flow, stereo, and local image features</article-title>
<source>IEEE Trans. Comput</source>
<year>2011</year>
<pub-id pub-id-type="doi">10.1109/TC.2011.120</pub-id>
</element-citation>
</ref>
<ref id="b41-sensors-12-01771">
<label>41.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gautama</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>van Hulle</surname>
<given-names>M.</given-names>
</name>
</person-group>
<article-title>A phase-based approach to the estimation of the optical flow field using spatial filtering</article-title>
<source>IEEE Trans. Neural Netw</source>
<year>2002</year>
<volume>13</volume>
<fpage>1127</fpage>
<lpage>1136</lpage>
<pub-id pub-id-type="pmid">18244509</pub-id>
</element-citation>
</ref>
<ref id="b42-sensors-12-01771">
<label>42.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Bergen</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Anandan</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Hanna</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Hingorani</surname>
<given-names>R.</given-names>
</name>
</person-group>
<article-title>Hierarchical model-based motion estimation</article-title>
<source>Computer Vision ECCV’92</source>
<person-group person-group-type="editor">
<name>
<surname>Sandini</surname>
<given-names>G.</given-names>
</name>
</person-group>
<publisher-name>Springer</publisher-name>
<publisher-loc>Berlin, Germany</publisher-loc>
<year>1992</year>
<volume>588</volume>
<fpage>237</fpage>
<lpage>252</lpage>
</element-citation>
</ref>
<ref id="b43-sensors-12-01771">
<label>43.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Burt</surname>
<given-names>P.J.</given-names>
</name>
<name>
<surname>Adelson</surname>
<given-names>E.H.</given-names>
</name>
</person-group>
<article-title>The laplacian pyramid as a compact image code</article-title>
<source>IEEE Trans. Commun</source>
<year>1983</year>
<volume>31</volume>
<fpage>532</fpage>
<lpage>540</lpage>
</element-citation>
</ref>
<ref id="b44-sensors-12-01771">
<label>44.</label>
<element-citation publication-type="webpage">
<person-group person-group-type="author">
<collab>Sevensols</collab>
</person-group>
<article-title>Seven Solutions</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.sevensols.com/">http://www.sevensols.com/</ext-link>
(accessed on 28 December 2011).</comment>
</element-citation>
</ref>
<ref id="b45-sensors-12-01771">
<label>45.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vanegas</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Barranco</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
</person-group>
<article-title>High-performance optical-flow architecture based on a multiscale, multi-orientation phase-based model</article-title>
<source>IEEE Trans. Circuits Syst. Video Technol</source>
<year>2010</year>
<volume>20</volume>
<fpage>1797</fpage>
<lpage>1807</lpage>
</element-citation>
</ref>
<ref id="b46-sensors-12-01771">
<label>46.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Vanegas</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
</person-group>
<article-title>Multi-port abstraction layer for FPGA intensive memory exploitation applications</article-title>
<source>J. Syst. Archit</source>
<year>2010</year>
<volume>56</volume>
<fpage>442</fpage>
<lpage>451</lpage>
</element-citation>
</ref>
<ref id="b47-sensors-12-01771">
<label>47.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ortigosa</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Canas</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Ortigosa</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Mota</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>Hardware description of multi-layer perceptrons with different abstraction levels</article-title>
<source>Microprocess. Microsyst</source>
<year>2006</year>
<volume>30</volume>
<fpage>435</fpage>
<lpage>444</lpage>
</element-citation>
</ref>
<ref id="b48-sensors-12-01771">
<label>48.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Barranco</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Vanegas</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
</person-group>
<article-title>Fine grain pipeline architecture for high performance phase-based optical flow computation</article-title>
<source>J. Syst. Archit</source>
<year>2010</year>
<volume>56</volume>
<fpage>577</fpage>
<lpage>587</lpage>
</element-citation>
</ref>
<ref id="b49-sensors-12-01771">
<label>49.</label>
<element-citation publication-type="webpage">
<person-group person-group-type="author">
<name>
<surname>Vision</surname>
<given-names>M.C.</given-names>
</name>
</person-group>
<article-title>Middlebury Computer Vision</article-title>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://vision.middlebury.edu/">http://vision.middlebury.edu/</ext-link>
(accessed on 28 December 2011).</comment>
</element-citation>
</ref>
<ref id="b50-sensors-12-01771">
<label>50.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Chessa</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Solari</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Sabatini</surname>
<given-names>S.P.</given-names>
</name>
</person-group>
<article-title>Virtual reality to simulate visual tasks for robotic systems</article-title>
<source>Virtual Reality</source>
<person-group person-group-type="editor">
<name>
<surname>Kim</surname>
<given-names>J.J.</given-names>
</name>
</person-group>
<publisher-name>InTech</publisher-name>
<publisher-loc>New York, NY, USA</publisher-loc>
<year>2010</year>
<fpage>71</fpage>
<lpage>92</lpage>
</element-citation>
</ref>
<ref id="b51-sensors-12-01771">
<label>51.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chang</surname>
<given-names>N.C.</given-names>
</name>
<name>
<surname>Tsai</surname>
<given-names>T.H.</given-names>
</name>
<name>
<surname>Hsu</surname>
<given-names>B.H.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Y.C.</given-names>
</name>
<name>
<surname>Chang</surname>
<given-names>T.S.</given-names>
</name>
</person-group>
<article-title>Algorithm and architecture of disparity estimation with mini-census adaptive support weight</article-title>
<source>IEEE Trans. Circuits Syst. Video Technol</source>
<year>2010</year>
<volume>20</volume>
<fpage>792</fpage>
<lpage>805</lpage>
</element-citation>
</ref>
<ref id="b52-sensors-12-01771">
<label>52.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Ernst</surname>
<given-names>I.</given-names>
</name>
<name>
<surname>Hirschmüller</surname>
<given-names>H.</given-names>
</name>
</person-group>
<article-title>Mutual information based semi-global stereo matching on the GPU</article-title>
<conf-name>Proceedings of the 4th International Symposium on Advances in Visual Computing</conf-name>
<conf-loc>Las Vegas, NV, USA</conf-loc>
<conf-date>December 2008</conf-date>
<fpage>228</fpage>
<lpage>239</lpage>
</element-citation>
</ref>
<ref id="b53-sensors-12-01771">
<label>53.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>S.K.</given-names>
</name>
<name>
<surname>Woo</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Jeong</surname>
<given-names>M.H.</given-names>
</name>
<name>
<surname>You</surname>
<given-names>B.J.</given-names>
</name>
</person-group>
<article-title>Improved-quality real-time stereo vision processor</article-title>
<conf-name>Proceedings of the 22nd International Conference on VLSI Design</conf-name>
<conf-loc>New Delhi, India</conf-loc>
<conf-date>5–9 January 2009</conf-date>
<fpage>287</fpage>
<lpage>292</lpage>
</element-citation>
</ref>
<ref id="b54-sensors-12-01771">
<label>54.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Gibson</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Marques</surname>
<given-names>O.</given-names>
</name>
</person-group>
<article-title>Stereo depth with a unified architecture GPU</article-title>
<conf-name>Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition Workshops (CVPRW ’08)</conf-name>
<conf-loc>Anchorage, AK, USA</conf-loc>
<conf-date>23–28 June 2008</conf-date>
<fpage>1</fpage>
<lpage>6</lpage>
</element-citation>
</ref>
<ref id="b55-sensors-12-01771">
<label>55.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gong</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Y.H.</given-names>
</name>
</person-group>
<article-title>Fast unambiguous stereo matching using reliability-based dynamic programming</article-title>
<source>IEEE Trans. Pattern Anal. Mach. Intell</source>
<year>2005</year>
<volume>27</volume>
<fpage>998</fpage>
<lpage>1003</lpage>
<pub-id pub-id-type="pmid">15943431</pub-id>
</element-citation>
</ref>
<ref id="b56-sensors-12-01771">
<label>56.</label>
<element-citation publication-type="webpage">
<person-group person-group-type="author">
<collab>Virtual Reality Tool for Active Vision</collab>
</person-group>
<comment>Available online:
<ext-link ext-link-type="uri" xlink:href="http://www.pspc.dibe.unige.it/Research/vr.html">http://www.pspc.dibe.unige.it/Research/vr.html</ext-link>
(accessed on 28 December 2011).</comment>
</element-citation>
</ref>
<ref id="b57-sensors-12-01771">
<label>57.</label>
<element-citation publication-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Carneiro</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Jepson</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>Multi-scale phase-based local features</article-title>
<conf-name>Proceedings of the 2003 IEEE Computer Society Conference on Computer Vision and Pattern Recognition</conf-name>
<conf-loc>Madison, WI, USA</conf-loc>
<conf-date>18–20 June 2003</conf-date>
<fpage>736</fpage>
<lpage>743</lpage>
</element-citation>
</ref>
<ref id="b58-sensors-12-01771">
<label>58.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Oppenheim</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Lim</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>The importance of phase in signals</article-title>
<source>Proc. IEEE</source>
<year>1981</year>
<volume>69</volume>
<fpage>529</fpage>
<lpage>541</lpage>
</element-citation>
</ref>
<ref id="b59-sensors-12-01771">
<label>59.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tomasi</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Vanegas</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Barranco</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Diaz</surname>
<given-names>J.</given-names>
</name>
<name>
<surname>Ros</surname>
<given-names>E.</given-names>
</name>
</person-group>
<article-title>Real-time architecture for a robust multi-scale stereo engine on FPGA</article-title>
<source>IEEE Trans. Very Large Scale Integr. (VLSI) Syst</source>
<year>2011</year>
<pub-id pub-id-type="doi">10.1109/TVLSI.2011.2172007</pub-id>
</element-citation>
</ref>
<ref id="b60-sensors-12-01771">
<label>60.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fleet</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Jepson</surname>
<given-names>A.</given-names>
</name>
</person-group>
<article-title>Stability of phase information</article-title>
<source>IEEE Trans. Pattern Anal. Mach. Intell</source>
<year>1993</year>
<volume>15</volume>
<fpage>1253</fpage>
<lpage>1268</lpage>
</element-citation>
</ref>
<ref id="b61-sensors-12-01771">
<label>61.</label>
<element-citation publication-type="journal">
<person-group person-group-type="author">
<name>
<surname>Bernardino</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Santos-Victor</surname>
<given-names>J.</given-names>
</name>
</person-group>
<article-title>Binocular tracking: Integrating perception and control</article-title>
<source>IEEE Trans. Robot. Autom</source>
<year>1999</year>
<volume>15</volume>
<fpage>1080</fpage>
<lpage>1094</lpage>
</element-citation>
</ref>
<ref id="b62-sensors-12-01771">
<label>62.</label>
<element-citation publication-type="book">
<person-group person-group-type="author">
<name>
<surname>Sapienza</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Hansard</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Horaud</surname>
<given-names>R.</given-names>
</name>
</person-group>
<source>Real-Time 3D Reconstruction and Fixation with an Active Binocular Head</source>
<comment>Technical Report;</comment>
<publisher-name>INRIA</publisher-name>
<publisher-loc>Le Chesnay Cedex, France</publisher-loc>
<year>2011</year>
</element-citation>
</ref>
</ref-list>
</back>
<floats-group>
<fig id="f1-sensors-12-01771" position="float">
<label>Figure 1.</label>
<caption>
<p>Epipolar geometry for a pair of cameras.
<bold>Left:</bold>
<italic>P</italic>
corresponds to (
<italic>x
<sub>L</sub>
, y</italic>
) and (
<italic>x
<sub>R</sub>
, y</italic>
) coordinates for the left and right image planes respectively.
<bold>Right:</bold>
The same
<italic>P</italic>
point corresponds to different
<italic>x</italic>
and
<italic>y</italic>
coordinates on each image plane.
<italic>Ep
<sub>L</sub>
</italic>
and
<italic>Ep
<sub>R</sub>
</italic>
are the epipolar lines,
<italic>Cam
<sub>L</sub>
</italic>
and
<italic>Cam
<sub>R</sub>
</italic>
, the camera optical centers, and
<italic>E
<sub>R</sub>
</italic>
and
<italic>E
<sub>L</sub>
</italic>
stand for the epipoles.</p>
</caption>
<graphic xlink:href="sensors-12-01771f1"></graphic>
</fig>
<fig id="f2-sensors-12-01771" position="float">
<label>Figure 2.</label>
<caption>
<p>Hardware architecture of the iCub head. On the left, the architecture with the two DSPs, the PC connected to the CAN bus, and the inertial sensor are shown. An image of the head is shown on the right.</p>
</caption>
<graphic xlink:href="sensors-12-01771f2"></graphic>
</fig>
<fig id="f3-sensors-12-01771" position="float">
<label>Figure 3.</label>
<caption>
<p>Version, vergence, and tilt angles for the stereo vision system. Top and side views of the camera configuration showing the version, vergence, and tilt angles for each camera.</p>
</caption>
<graphic xlink:href="sensors-12-01771f3"></graphic>
</fig>
<fig id="f4-sensors-12-01771" position="float">
<label>Figure 4.</label>
<caption>
<p>Scheme of the pipelined stages for the Lucas–Kanade vector disparity core. It describes the computation stages (from
<italic>St</italic>
<sub>0</sub>
to
<italic>St</italic>
<sub>4</sub>
) indicating the pipelined stages (in brackets) and the number of parallel datapaths for each one of them.</p>
</caption>
<graphic xlink:href="sensors-12-01771f4"></graphic>
</fig>
<fig id="f5-sensors-12-01771" position="float">
<label>Figure 5.</label>
<caption>
<p>Scheme of the pipelined stages for the phase-based vector disparity core. It describes the computation stages (from
<italic>St</italic>
<sub>0</sub>
to
<italic>St</italic>
<sub>2</sub>
) indicating the pipelined stages (in brackets) and the number of parallel datapaths for each one of them.</p>
</caption>
<graphic xlink:href="sensors-12-01771f5"></graphic>
</fig>
<fig id="f6-sensors-12-01771" position="float">
<label>Figure 6.</label>
<caption>
<p>Hardware system architecture. Right side: the pyramid and its communication with memory. Left side: multi-scale computation (scaling, warping, merging, median filtering and vector disparity computation).</p>
</caption>
<graphic xlink:href="sensors-12-01771f6"></graphic>
</fig>
<fig id="f7-sensors-12-01771" position="float">
<label>Figure 7.</label>
<caption>
<p>Horizontal disparity comparison: Lucas–Kanade
<italic>vs.</italic>
Phase-based and Hardware
<italic>vs.</italic>
Software versions (MAE and density).</p>
</caption>
<graphic xlink:href="sensors-12-01771f7"></graphic>
</fig>
<fig id="f8-sensors-12-01771" position="float">
<label>Figure 8.</label>
<caption>
<p>Vector disparity comparison: Lucas–Kanade
<italic>vs.</italic>
Phase-based and Hardware
<italic>vs.</italic>
Software versions (AAE and density).</p>
</caption>
<graphic xlink:href="sensors-12-01771f8"></graphic>
</fig>
<fig id="f9-sensors-12-01771" position="float">
<label>Figure 9.</label>
<caption>
<p>Software benchmark results for vector disparity. From left to right: original image, ground-truth, software results for phase-based, and Lucas–Kanade algorithms. The frame codes the vector disparity with a color.</p>
</caption>
<graphic xlink:href="sensors-12-01771f9"></graphic>
</fig>
<fig id="f10-sensors-12-01771" position="float">
<label>Figure 10.</label>
<caption>
<p>Hardware benchmark results for vector disparity. From left to right: original image, ground-truth, hardware results for phase-based, and Lucas–Kanade algorithms. The frame codes the vector disparity with a color.</p>
</caption>
<graphic xlink:href="sensors-12-01771f10"></graphic>
</fig>
<fig id="f11-sensors-12-01771" position="float">
<label>Figure 11.</label>
<caption>
<p>Initial position and fixation for the red plastic bottle example. Disparity components are displayed.</p>
</caption>
<graphic xlink:href="sensors-12-01771f11"></graphic>
</fig>
<fig id="f12-sensors-12-01771" position="float">
<label>Figure 12.</label>
<caption>
<p>Red plastic bottle fixation example: X and Y coordinates for left and right images, horizontal and vertical component disparities and the evolution of version, vergence, and tilt velocities along the time (image resolution is 320 × 240).</p>
</caption>
<graphic xlink:href="sensors-12-01771f12"></graphic>
</fig>
<fig id="f13-sensors-12-01771" position="float">
<label>Figure 13.</label>
<caption>
<p>Blue LED smooth pursuit. At each different phase, we show the left and right images of our system, beginning with the fixation and then, with the pursuit of the target object.</p>
</caption>
<graphic xlink:href="sensors-12-01771f13"></graphic>
</fig>
<table-wrap id="t1-sensors-12-01771" position="float">
<label>Table 1.</label>
<caption>
<p>Disparity performance comparison (works sorted by date of publication). For vector disparity implementations, two PDS values are given: the first considers only 1-D displacement performance and the second takes into account that 2-D matching of the vector methods have a search region that is the squared of the 1-D ones.</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="middle" rowspan="1" colspan="1"></th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Resolution</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Frame rate (fps)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>PDS (×10
<sup>6</sup>
)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Architecture</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Algorithm</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Our phase-based mono-scale core</td>
<td align="center" valign="middle" rowspan="1" colspan="1">640 × 480</td>
<td align="center" valign="middle" rowspan="1" colspan="1">118</td>
<td align="center" valign="middle" rowspan="1" colspan="1">218/1,304</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V4 (36 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">2D Phase-based</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Our Lucas–Kanade mono-scale core</td>
<td align="center" valign="middle" rowspan="1" colspan="1">640 × 480</td>
<td align="center" valign="middle" rowspan="1" colspan="1">267</td>
<td align="center" valign="middle" rowspan="1" colspan="1">492/1,968</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V4 (82 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">2D Lucas–Kanade</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Our phase-based multi-scale system</td>
<td align="center" valign="middle" rowspan="1" colspan="1">640 × 480</td>
<td align="center" valign="middle" rowspan="1" colspan="1">32</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1,887/7,122</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V4 (42 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">2D Phase-based</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Our Lucas–Kanade multi-scale system</td>
<td align="center" valign="middle" rowspan="1" colspan="1">640 × 480</td>
<td align="center" valign="middle" rowspan="1" colspan="1">32</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1,132/4,528</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V4 (41 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">2D Lucas–Kanade</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Tomasi (2010) [
<xref ref-type="bibr" rid="b30-sensors-12-01771">30</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">512 × 512</td>
<td align="center" valign="middle" rowspan="1" colspan="1">28</td>
<td align="center" valign="middle" rowspan="1" colspan="1">939</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V4 (42 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D Phase-based</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Chang (2010) [
<xref ref-type="bibr" rid="b51-sensors-12-01771">51</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">352 × 288</td>
<td align="center" valign="middle" rowspan="1" colspan="1">42</td>
<td align="center" valign="middle" rowspan="1" colspan="1">273</td>
<td align="center" valign="middle" rowspan="1" colspan="1">UMC 90nm Cell</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D Semi-Census</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Hadjitheofanous (2010) [
<xref ref-type="bibr" rid="b31-sensors-12-01771">31</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">320 × 240</td>
<td align="center" valign="middle" rowspan="1" colspan="1">75</td>
<td align="center" valign="middle" rowspan="1" colspan="1">184</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V2 Pro</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D SAD</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Jin (2010) [
<xref ref-type="bibr" rid="b32-sensors-12-01771">32</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">640 × 480</td>
<td align="center" valign="middle" rowspan="1" colspan="1">230</td>
<td align="center" valign="middle" rowspan="1" colspan="1">4,522</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V5 (93.1 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D Census Transform</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Calderon (2010) [
<xref ref-type="bibr" rid="b33-sensors-12-01771">33</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">288 × 352</td>
<td align="center" valign="middle" rowspan="1" colspan="1">142</td>
<td align="center" valign="middle" rowspan="1" colspan="1">2,534</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V2 Pro (174.2 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D BSAD</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Chessa (2009) [
<xref ref-type="bibr" rid="b17-sensors-12-01771">17</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">256 × 256</td>
<td align="center" valign="middle" rowspan="1" colspan="1">7</td>
<td align="center" valign="middle" rowspan="1" colspan="1">59/236</td>
<td align="center" valign="middle" rowspan="1" colspan="1">QuadCore Processor</td>
<td align="center" valign="middle" rowspan="1" colspan="1">2D Energy-based Pop. coding</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Georgoulas (2009) [
<xref ref-type="bibr" rid="b28-sensors-12-01771">28</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">800 × 600</td>
<td align="center" valign="middle" rowspan="1" colspan="1">550</td>
<td align="center" valign="middle" rowspan="1" colspan="1">21,120</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Stratix IV (511 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D SAD</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Ernst (2009) [
<xref ref-type="bibr" rid="b52-sensors-12-01771">52</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">640 × 480</td>
<td align="center" valign="middle" rowspan="1" colspan="1">4.2</td>
<td align="center" valign="middle" rowspan="1" colspan="1">165</td>
<td align="center" valign="middle" rowspan="1" colspan="1">GeForce 8800</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D SGM</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Han (2009) [
<xref ref-type="bibr" rid="b53-sensors-12-01771">53</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">320 × 240</td>
<td align="center" valign="middle" rowspan="1" colspan="1">144</td>
<td align="center" valign="middle" rowspan="1" colspan="1">707</td>
<td align="center" valign="middle" rowspan="1" colspan="1">ASIC (150MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D SAD</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Gibson (2008) [
<xref ref-type="bibr" rid="b54-sensors-12-01771">54</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">450 × 375</td>
<td align="center" valign="middle" rowspan="1" colspan="1">6</td>
<td align="center" valign="middle" rowspan="1" colspan="1">65</td>
<td align="center" valign="middle" rowspan="1" colspan="1">G80 NVIDIA</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D SGM</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Diaz (2006) [
<xref ref-type="bibr" rid="b34-sensors-12-01771">34</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1,280 × 960</td>
<td align="center" valign="middle" rowspan="1" colspan="1">52</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1,885</td>
<td align="center" valign="middle" rowspan="1" colspan="1">Xilinx V2 (65 MHz)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D Phase-based</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">Gong (2005) [
<xref ref-type="bibr" rid="b55-sensors-12-01771">55</xref>
]</td>
<td align="center" valign="middle" rowspan="1" colspan="1">384 × 288</td>
<td align="center" valign="middle" rowspan="1" colspan="1">16</td>
<td align="center" valign="middle" rowspan="1" colspan="1">30–60</td>
<td align="center" valign="middle" rowspan="1" colspan="1">ATI Radeon x800</td>
<td align="center" valign="middle" rowspan="1" colspan="1">1D GORDP</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="t2-sensors-12-01771" position="float">
<label>Table 2.</label>
<caption>
<p>Horizontal disparity performances: PoBP(%) percentage of pixels where MAE >1 and the density between parentheses.</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="top" rowspan="3" colspan="1"></th>
<th colspan="2" align="center" valign="middle" rowspan="1">
<bold>Phase-based</bold>
</th>
<th colspan="2" align="center" valign="middle" rowspan="1">
<bold>Lucas-Kanade</bold>
</th>
</tr>
<tr>
<th colspan="4" align="center" valign="middle" rowspan="1">
<hr></hr>
</th>
</tr>
<tr>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>SW</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>HW</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>SW</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>HW</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">Tsukuba</td>
<td align="center" valign="top" rowspan="1" colspan="1">16.65 (88.05%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">13.76 (63.42%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">21.77 (83.89%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">9.00 (40.89%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">Sawtooth</td>
<td align="center" valign="top" rowspan="1" colspan="1">10.82 (78.11%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">10.58 (45.56%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">27.66 (77.10%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">5.90 (48.79%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">Venus</td>
<td align="center" valign="top" rowspan="1" colspan="1">8.37 (70.99%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">7.84 (38.69%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">18.07 (56.83%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">7.57 (41.78%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">Teddy</td>
<td align="center" valign="top" rowspan="1" colspan="1">25.73 (70.46%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">27.06 (37.55%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">40.91 (66.20%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">25.25 (40.85%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">Cones</td>
<td align="center" valign="top" rowspan="1" colspan="1">27.18 (87.20%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">48.32 (61.10%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">58.06 (75.52%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">40.65 (52.45%)</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="t3-sensors-12-01771" position="float">
<label>Table 3.</label>
<caption>
<p>Vector disparity performances: PoGP(%), defined as the percentage of pixels where AAE < 5 deg. and the density between parentheses.</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="top" rowspan="3" colspan="1"></th>
<th colspan="2" align="center" valign="middle" rowspan="1">
<bold>Phase-based</bold>
</th>
<th colspan="2" align="center" valign="middle" rowspan="1">
<bold>Lucas–Kanade</bold>
</th>
</tr>
<tr>
<th colspan="4" align="center" valign="middle" rowspan="1">
<hr></hr>
</th>
</tr>
<tr>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>SW</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>HW</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>SW</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>HW</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">plane 0H 0V</td>
<td align="center" valign="top" rowspan="1" colspan="1">70.04 (93.66%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">93.77 (91.84%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">67.57 (74.17%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">68.67 (65.88%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">plane 15H 15V</td>
<td align="center" valign="top" rowspan="1" colspan="1">69.99 (67.15%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">73.27 (91.73%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">67.82 (62.55%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">68.82 (49.76%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">desktop00</td>
<td align="center" valign="top" rowspan="1" colspan="1">82.30 (94.84%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">80.48 (93.76%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">79.61 (70.29%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">80.68 (62.97%)</td>
</tr>
<tr>
<td align="left" valign="top" rowspan="1" colspan="1">desktop09</td>
<td align="center" valign="top" rowspan="1" colspan="1">84.24 (93.19%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">86.74 (85.26%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">82.92 (70.16%)</td>
<td align="center" valign="top" rowspan="1" colspan="1">82.99 (62.57%)</td>
</tr>
</tbody>
</table>
</table-wrap>
<table-wrap id="t4-sensors-12-01771" position="float">
<label>Table 4.</label>
<caption>
<p>Hardware resource utilization for the presented complete architecture using a Virtex-4 FX100 FPGA (XC4vfx100).</p>
</caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="left" valign="middle" rowspan="1" colspan="1"></th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>4 input LUTs (out of 84,352)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Slice Flip-Flops (out of 84,352)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Slices (out of 42,716)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>DSP (160)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Block RAM (378)</bold>
</th>
<th align="center" valign="middle" rowspan="1" colspan="1">
<bold>Freq (MHz)</bold>
</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">1D Phase-based system + Rectification</td>
<td align="center" valign="middle" rowspan="1" colspan="1">47,109 (56%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">27,221 (32%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">32,678 (76%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">159 (99%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">88 (23%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">44</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">1D Lucas–Kanade system + Rectification</td>
<td align="center" valign="middle" rowspan="1" colspan="1">55,152 (65%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">35,360 (41%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">38,560 (90%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">154 (96%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">100 (26%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">42</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">2D Phase-based Disp. system</td>
<td align="center" valign="middle" rowspan="1" colspan="1">55,445 (65%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">40,597 (48%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">37,383 (88%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">107 (66%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">126 (33%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">42</td>
</tr>
<tr>
<td align="left" valign="middle" rowspan="1" colspan="1">2D Lucas–Kanade Disp. system</td>
<td align="center" valign="middle" rowspan="1" colspan="1">33,039 (39%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">28,123 (33%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">27,749 (65%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">50 (31%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">148 (39%)</td>
<td align="center" valign="middle" rowspan="1" colspan="1">41</td>
</tr>
</tbody>
</table>
</table-wrap>
</floats-group>
</pmc>
<affiliations>
<list></list>
<tree>
<noCountry>
<name sortKey="Barranco, Francisco" sort="Barranco, Francisco" uniqKey="Barranco F" first="Francisco" last="Barranco">Francisco Barranco</name>
<name sortKey="Diaz, Javier" sort="Diaz, Javier" uniqKey="Diaz J" first="Javier" last="Diaz">Javier Diaz</name>
<name sortKey="Gibaldi, Agostino" sort="Gibaldi, Agostino" uniqKey="Gibaldi A" first="Agostino" last="Gibaldi">Agostino Gibaldi</name>
<name sortKey="Ros, Eduardo" sort="Ros, Eduardo" uniqKey="Ros E" first="Eduardo" last="Ros">Eduardo Ros</name>
<name sortKey="Sabatini, Silvio P" sort="Sabatini, Silvio P" uniqKey="Sabatini S" first="Silvio P." last="Sabatini">Silvio P. Sabatini</name>
</noCountry>
</tree>
</affiliations>
</record>

Pour manipuler ce document sous Unix (Dilib)

EXPLOR_STEP=$WICRI_ROOT/Ticri/CIDE/explor/HapticV1/Data/Pmc/Checkpoint
HfdSelect -h $EXPLOR_STEP/biblio.hfd -nk 001497 | SxmlIndent | more

Ou

HfdSelect -h $EXPLOR_AREA/Data/Pmc/Checkpoint/biblio.hfd -nk 001497 | SxmlIndent | more

Pour mettre un lien sur cette page dans le réseau Wicri

{{Explor lien
   |wiki=    Ticri/CIDE
   |area=    HapticV1
   |flux=    Pmc
   |étape=   Checkpoint
   |type=    RBID
   |clé=     PMC:3304139
   |texte=   Vector Disparity Sensor with Vergence Control for Active Vision Systems
}}

Pour générer des pages wiki

HfdIndexSelect -h $EXPLOR_AREA/Data/Pmc/Checkpoint/RBID.i   -Sk "pubmed:22438737" \
       | HfdSelect -Kh $EXPLOR_AREA/Data/Pmc/Checkpoint/biblio.hfd   \
       | NlmPubMed2Wicri -a HapticV1 

Wicri

This area was generated with Dilib version V0.6.23.
Data generation: Mon Jun 13 01:09:46 2016. Site generation: Wed Mar 6 09:54:07 2024