<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Neurosci.</journal-id>
<journal-title>Frontiers in Neuroscience</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Neurosci.</abbrev-journal-title>
<issn pub-type="epub">1662-453X</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fnins.2016.00596</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Neuroscience</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Event-Based 3D Motion Flow Estimation Using 4D Spatio Temporal Subspaces Properties</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name><surname>Ieng</surname> <given-names>Sio-Hoi</given-names></name>
<xref ref-type="author-notes" rid="fn001"><sup>&#x0002A;</sup></xref>
<uri xlink:href="http://loop.frontiersin.org/people/32893/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Carneiro</surname> <given-names>Jo&#x000E3;o</given-names></name>
</contrib>
<contrib contrib-type="author">
<name><surname>Benosman</surname> <given-names>Ryad B.</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/94237/overview"/>
</contrib>
</contrib-group>
<aff><institution>Institut National de la Sant&#x000E9; et de la Recherche M&#x000E9;dicale, UMRI S 968; Sorbonne Universit&#x000E9;, University of Pierre and Marie Curie, Univ Paris 06, UMR S 968; Centre National de la Recherche Scientifique, UMR 7210, Institut de la Vision</institution> <country>Paris, France</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Jorg Conradt, Technische Universit&#x000E4;t M&#x000FC;nchen, Germany</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Sadique Sheik, University of California, San Diego, USA; Soumyajit Mandal, Case Western Reserve University, USA</p></fn>
<fn fn-type="corresp" id="fn001"><p>&#x0002A;Correspondence: Sio-Hoi Ieng <email>sio-hoi.ieng&#x00040;upmc.fr</email></p></fn>
<fn fn-type="other" id="fn002"><p>This article was submitted to Neuromorphic Engineering, a section of the journal Frontiers in Neuroscience</p></fn></author-notes>
<pub-date pub-type="epub">
<day>06</day>
<month>02</month>
<year>2017</year>
</pub-date>
<pub-date pub-type="collection">
<year>2016</year>
</pub-date>
<volume>10</volume>
<elocation-id>596</elocation-id>
<history>
<date date-type="received">
<day>08</day>
<month>09</month>
<year>2016</year>
</date>
<date date-type="accepted">
<day>14</day>
<month>12</month>
<year>2016</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2017 Ieng, Carneiro and Benosman.</copyright-statement>
<copyright-year>2017</copyright-year>
<copyright-holder>Ieng, Carneiro and Benosman</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) or licensor are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>State of the art scene flow estimation techniques are based on projections of the 3D motion on image using luminance&#x02014;sampled at the frame rate of the cameras&#x02014;as the principal source of information. We introduce in this paper a pure time based approach to estimate the flow from 3D point clouds primarily output by neuromorphic event-based stereo camera rigs, or by any existing 3D depth sensor even if it does not provide nor use luminance. This method formulates the scene flow problem by applying a local piecewise regularization of the scene flow. The formulation provides a unifying framework to estimate scene flow from synchronous and asynchronous 3D point clouds. It relies on the properties of 4D space time using a decomposition into its subspaces. This method naturally exploits the properties of the neuromorphic asynchronous event based vision sensors that allows continuous time 3D point clouds reconstruction. The approach can also handle the motion of deformable object. Experiments using different 3D sensors are presented.</p>
</abstract>
<kwd-group>
<kwd>neuromorphic vision</kwd>
<kwd>event-based sensing</kwd>
<kwd>scene flow</kwd>
<kwd>3D point clouds</kwd>
<kwd>motion estimation</kwd>
<kwd>motion from structure</kwd>
</kwd-group>
<contract-num rid="cn001">ANR-10-LABX-65</contract-num>
<contract-sponsor id="cn001">Agence Nationale de la Recherche<named-content content-type="fundref-id">10.13039/501100001665</named-content></contract-sponsor>
<counts>
<fig-count count="15"/>
<table-count count="3"/>
<equation-count count="25"/>
<ref-count count="33"/>
<page-count count="15"/>
<word-count count="8954"/>
</counts>
</article-meta>
</front>
<body>
<sec sec-type="intro" id="s1">
<title>1. Introduction</title>
<sec>
<title>1.1. Scene flow</title>
<p>The motion of 3D structures is an important information to extract from a scene to build geometric and dynamic descriptions of its content. Such information is also essential to a large set of vision applications such as: virtual reality synthesis, scene segmentation and autonomous navigation. Scene flows are vector fields that map points of a 3D structure to their instantaneous velocity vectors. Because of this close relationship, estimating the scene flow usually implies to estimating the structure and vice-versa.</p>
<p>The Structure From Motion (SFM) is one of the classical computer vision problems that have been largely studied during the past few decades by the machine vision community (Maybank, <xref ref-type="bibr" rid="B19">1993</xref>). However, SFM&#x00027;s high vulnerability to images&#x00027; noise and to camera calibration errors raised questions regarding its applicability in real-world scenarios (Tomasi and Zhang, <xref ref-type="bibr" rid="B28">1995</xref>). Currently, with the increasing demand for realistic and high definition 3D content, many ready-to-use sensors are now able to provide dense 3D points clouds in real-time (such as: laser range-finders, structured light vision sensors,&#x02026;). These devices allow to decouple the structure reconstruction from the motion estimation and to focus the effort on motion extraction and its characterization.</p>
<p>To achieve dense scene flow estimation, state-of-the-art techniques estimate depth maps and compute optical flows for each camera separately. In a second stage they combine both to estimate the 3D flow. This approach parametrizes the motion problem on the image plane, i.e., in 2D and is the most commonly found in the existing literature (Vedula et al., <xref ref-type="bibr" rid="B30">1999</xref>; Zhang et al., <xref ref-type="bibr" rid="B33">2001</xref>; Isard and MacCormick, <xref ref-type="bibr" rid="B15">2006</xref>; Wedel et al., <xref ref-type="bibr" rid="B31">2011</xref>). A 2D parametrization is however more prone to discontinuities since a smooth 3D signal may be projected into a discontinuous 2D signal due to occlusions.</p>
<p>In Basha et al. (<xref ref-type="bibr" rid="B2">2013</xref>), the depth map and the optical flow are solved simultaneously rather than in a sequential manner, as authors argue, for a better coupling between spatial and temporal information. In Hadfield and Bowden (<xref ref-type="bibr" rid="B11">2014</xref>) and Park et al. (<xref ref-type="bibr" rid="B22">2012</xref>), the motion flow is extracted and refined directly from the 3D points clouds by using particle filtering or tensor voting techniques. Optical flows are only estimated for comparison purposes or for initial scene flow estimation.</p>
<p>A second requirement for obtaining dense flow estimation is to introduce some form of regularization. For that purpose, one recurrent hypothesis is to assume local rigid body motion and therefore induce local constant velocity, i.e., points on a non-deformable surface will have the same velocity. Regularization is often performed by minimizing an energy function with variational formulations (Zhang et al., <xref ref-type="bibr" rid="B33">2001</xref>; Min and Sohn, <xref ref-type="bibr" rid="B20">2006</xref>; Huguet and Devernay, <xref ref-type="bibr" rid="B14">2007</xref>). Energy minimization has proven to be a successful technique for both 2D and 3D flow parametrization. It is however computationally greedy and it makes it difficult to achieve real-time estimation without embedding a dedicated powerful computational unit (e.g., GPU). Scene flow can also be computed from local descriptors of reconstructed surfaces such as surfel that encodes the local geometry and the reflectance information of the shapes (Carceroni and Kutulakos, <xref ref-type="bibr" rid="B6">2002</xref>). Motion is then estimated in an integrative manner by matching descriptors over time. Several authors adopted the same idea of addressing the scene flow as a problem of characterization and tracking 3D surfaces over time. Varanasi et al. (<xref ref-type="bibr" rid="B29">2008</xref>) proposes to describe and track the surfaces by sparse features matching and extend this to a dense estimation using smoothing operations based on the Laplacian diffusion. Patch based techniques have also been used in Popham et al. (<xref ref-type="bibr" rid="B23">2010</xref>) and Cagniart et al. (<xref ref-type="bibr" rid="B5">2010</xref>) to split complex surfaces into simpler ones. Their matching and relative pose estimation for each patch allows to estimate the scene flow densely.</p>
<p>This paper introduces a new solution to estimate scene flow using properties of 4D (3D space&#x0002B;time) spaces without the need to use luminance. We will show that the use of the time allows to go beyond the conventional framework that relies on the combined use of luminance and depth information (Herbst et al., <xref ref-type="bibr" rid="B13">2013</xref>). The paper is initially intended to operate on high temporal resolution 3D depth information output from a binocular neuromorphic event-based camera stereo rig. As introduced in Rogister et al. (<xref ref-type="bibr" rid="B25">2012</xref>) and Carneiro et al. (<xref ref-type="bibr" rid="B7">2013</xref>), event-based cameras allow to estimate depth and produce 3D point clouds at unprecedented accuracy (&#x0003E;1 kHz in real-time) at very low computational and energy cost using conventional processing hardware. We will show that the method can be used even in the case of lower temporal resolution and it can be applied to any 3D data such as the ones output from: RGB-D cameras (Khoshelham and Elberink, <xref ref-type="bibr" rid="B16">2012</xref>), time-of-flight range-imaging sensors (Hansard et al., <xref ref-type="bibr" rid="B12">2012</xref>), laser range finder and even conventional camera based systems that are also able to provide robust 3D reconstructions with a reasonable accuracy using optimized implementations. It is however important to notice that beyond the heavy computational and energy requirement, all these techniques rarely exceed frame rates beyond 90 Hz.</p>
<p>We will then show that the use of timed 4D spaces (3D space &#x0002B; time) allow to derive more efficient techniques than state of art techniques. The method assumes locally non-deformable spatiotemporal surfaces swept by 3D moving structures. We show that under such hypothesis, the velocity estimation is reduced to a one dimensional search over &#x0211D;, the set of real numbers, and the dense estimation is directly achieved using local spatiotemporal planes. An additional advantage is its ability to determine velocities collinear to moving edges assuming it is possible to identify local 3D structures across the trajectory. This work can be seen as a generalization of the previous work on the event-based estimation of 2D visual motion flow (Benosman et al., <xref ref-type="bibr" rid="B3">2014</xref>) to higher dimensional spaces.</p>
</sec>
<sec>
<title>1.2. Asynchronous event-based vision</title>
<p>Biological retinas do not encode visual scenes as collection of static frames, but rather as a continuous stream of asynchronous spikes. Neuromorphic vision sensors replicate partially this mechanism by encoding visual information with high temporal resolution asynchronous streams of events. Since the pioneering work of Mahowald (<xref ref-type="bibr" rid="B18">1992</xref>) that built the first retina on silicon, several major improvements have been made for what is now refered to as the &#x0201C;neuromorphic silicon retinas.&#x0201D; One of the most important achievements is the Dynamic Vision Sensor (DVS) (Lichtsteiner et al., <xref ref-type="bibr" rid="B17">2008</xref>), a 128 &#x000D7; 128 pixel resolution sensor which encodes light intensity changes into a stream of asynchronous events. Each pixel responds independently to contrast changes producing ON and OFF events (respectively to increase or decrease in light intensity) at microsecond resolution.</p>
<p>Posch et al. designed the Asynchronous Time-based Imaging Sensor (ATIS) (Posch et al., <xref ref-type="bibr" rid="B24">2011</xref>), a 302 &#x000D7; 240 pixel resolution sensor which measures absolute luminance information when a contrast change event occurs. The sensor provides a 143 dB dynamic range gray-level information asynchronously encoded as the temporal difference of two exposure measurement events. Its typical temporal accuracy is around 1&#x003BC;s. The reader can refer to Delbr&#x000FC;ck et al. (<xref ref-type="bibr" rid="B8">2010</xref>) for a complete review of the existing neuromorphic visual sensors.</p>
</sec>
</sec>
<sec sec-type="materials and methods" id="s2">
<title>2. Materials and methods</title>
<sec>
<title>2.1. Scene flow parametrization</title>
<p>We define a 3D event as a 4-components vector (<italic>x, y, z, t</italic>)<sup><italic>T</italic></sup>. It can be increased to 5 components if the luminance information is available. Let us consider a smooth edge <inline-formula><mml:math id="M1"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> which can be assumed planar within a small enough spatial neighborhood. If the velocity of <inline-formula><mml:math id="M2"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> is constant, then as time increases, the edge generates a ruled surface <inline-formula><mml:math id="M3"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula> in the direction of the velocity <bold>v</bold>. The surface can be algebraically defined by the equation:</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M4"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mo>:</mml:mo><mml:msup><mml:mi>&#x0211D;</mml:mi><mml:mn>3</mml:mn></mml:msup><mml:mo>&#x000D7;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msup><mml:mi>&#x0211D;</mml:mi><mml:mo>+</mml:mo></mml:msup><mml:mtext>&#x02009;&#x02009;&#x02009;&#x02009;</mml:mtext><mml:mo>&#x02192;</mml:mo><mml:mtext>&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;</mml:mtext><mml:mi>&#x0211D;</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;</mml:mtext><mml:mo stretchy='false'>(</mml:mo><mml:mi>x</mml:mi><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>y</mml:mi><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>z</mml:mi><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x021A6;</mml:mo><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mo>+</mml:mo><mml:mi>t</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M5"><mml:mstyle mathvariant="bold"><mml:mtext>p</mml:mtext></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula>. Figure <xref ref-type="fig" rid="F1">1</xref> shows an illustration of such ruled surface.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p><bold>The non-deformable surface hypothesis allows to assume the velocity v is locally constant</bold>. The surface <inline-formula><mml:math id="M6"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula> swept by the edge <inline-formula><mml:math id="M7"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> in the direction <bold>v</bold> is a ruled surface whose tangent plane &#x003C4;<sub><italic>p</italic></sub> at <bold>p</bold> allows to recovering <bold>v</bold> if sufficient geometric constraints can be derived. The vector <bold>n</bold> is the normal to &#x003C4;<sub><italic>p</italic></sub>.</p></caption>
<graphic xlink:href="fnins-10-00596-g0001.tif"/>
</fig>
<p>The velocity vector is according to Equation (1) the directrix of the ruled surface swept by the edge, hence the estimation of <bold>v</bold> is equivalent to determining the surface&#x00027;s directrix. In addition to Equation (1), if the surface is smooth (i.e., of class <inline-formula><mml:math id="M8"><mml:msup><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> at least), we get a second equation satisfied by <bold>v</bold>:</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M9"><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02207;</mml:mo><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>because the directrix <bold>v</bold> is contained in the tangent plane <inline-formula><mml:math id="M10"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">T</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>p</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> (Sommerville, <xref ref-type="bibr" rid="B26">1934</xref>). <inline-formula><mml:math id="M11"><mml:mo>&#x02207;</mml:mo><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula> refers to the gradient of <inline-formula><mml:math id="M12"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula>. Only the direction of <bold>v</bold> can be deduced from the two scalar equations since <bold>v</bold> has 3 components. Its norm can be set arbitrarily to 1. To determine the exact amplitude, additional constraints are required. A possible way to estimate amplitudes is to apply a shape registration technique, since the velocity vector is the vector joining the two consecutive positions of the shape when it moves. We then propose to estimate the velocity in a two steps operation:</p>
<list list-type="order">
<list-item><p>a local fitting of a smooth surface to the 3D points clouds is operated to derive as much equations similar to (1) and (2) as possible,</p></list-item>
<list-item><p><bold>v</bold> is then estimated from the equations established in step 1 by adding a shape registration algorithm.</p></list-item>
</list>
<p>To get enough equations to estimate <bold>v</bold>, we propose to study three surfaces derived from <inline-formula><mml:math id="M13"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula>. Let <inline-formula><mml:math id="M14"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula><mml:math id="M15"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula><mml:math id="M16"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> be respectively the surfaces built from Equation (1) in each coordinate frame (<italic>X, Y, T</italic>), (<italic>Y, Z, T</italic>), and (<italic>Z, X, T</italic>). Because of the constant velocity hypothesis, we get three surfaces with implicit equations of the form:
<disp-formula id="E3"><label>(3)</label><mml:math id="M17"><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>p</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>+</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mi>t</mml:mi><mml:mtext>&#x02009;</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
where (<italic>i, j</italic>) is any pair of elements in {(<italic>x, y</italic>), (<italic>y, z</italic>), (<italic>z, x</italic>)} and <italic>k</italic> indexes the <italic>k</italic><sup><italic>th</italic></sup> element of this list e.g., if <italic>k</italic> &#x0003D; 1, (<italic>i, j</italic>) &#x0003D; (<italic>x, y</italic>). This means we are working with the <italic>x, y</italic> and <italic>t</italic> components of <italic>S</italic>.</p>
<p>These surfaces are also ruled surfaces of respective directrices (<italic>v<sub>x</sub></italic>,<italic>v<sub>y</sub></italic>, 1)<italic><sup>T</sup></italic>, (<italic>v<sub>y</sub></italic>,<italic>v<sub>z</sub></italic>, 1)<italic><sup>T</sup></italic> and (<italic>v<sub>z</sub></italic>,<italic>v<sub>x</sub></italic>, 1)<italic><sup>T</sup></italic> and their generatrices are the restrictions of <inline-formula><mml:math id="M18"><mml:mi mathvariant='-tex-caligraphic'>C</mml:mi></mml:math></inline-formula> to (<italic>X</italic>, <italic>Y</italic>, <italic>T</italic>), (<italic>Y</italic>, <italic>Z</italic>, <italic>T</italic>) and (<italic>Z</italic>, <italic>X</italic>, <italic>T</italic>). For the same reason, given Equation (2), we can establish for each <inline-formula><mml:math id="M19"><mml:msub><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> the equation:</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M20"><mml:mrow><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:mo>&#x02207;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:mfrac><mml:msub><mml:mi>v</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:mfrac><mml:msub><mml:mi>v</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mfrac><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mfrac><mml:mo>=</mml:mo><mml:mn>0.</mml:mn></mml:mrow></mml:math></disp-formula>
<p>As illustrated by Figure <xref ref-type="fig" rid="F2">2</xref>, we now have three geometric constraints, which can be rearranged into a matrix form:</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M21"><mml:mrow><mml:munder><mml:munder><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>y</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mn>2</mml:mn><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mn>3</mml:mn><mml:mo>,</mml:mo><mml:mi>z</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mi>M</mml:mi></mml:munder><mml:mtext>&#x02009;</mml:mtext><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x02212;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>/</mml:mo><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>/</mml:mo><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>&#x02202;</mml:mo><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>/</mml:mo><mml:mo>&#x02202;</mml:mo><mml:mi>t</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>with the convention that <inline-formula><mml:math id="M22"><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mrow><mml:mi>k</mml:mi><mml:mo>,</mml:mo><mml:mi>x</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:math></inline-formula> (respectively <italic>y, z</italic>) is the partial derivative with respect to <italic>x</italic> (respectively <italic>y</italic>,<italic>z</italic>). To determine <bold>v</bold>, the ideal case would be to have <italic>M</italic> invertible i.e., it is full ranked. There is no obvious way to tell from the general expression of <italic>M</italic>.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>(A)</bold> A 3D edge <inline-formula><mml:math id="M23"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> moving at constant velocity <bold>v</bold> is projected as 2D curves in each of the three planes (<italic>O, X, Y</italic>), (<italic>O, Y, Z</italic>) and (<italic>O, Z, X</italic>). <bold>(B)</bold> Each of the projected curve <italic>C</italic><sub><italic>u</italic></sub> for 1 &#x02264; <italic>u</italic> &#x02264; 3 is also moving at constant speed <bold>v</bold><italic><sub>u</sub></italic> &#x0003D; (<italic>v<sub>i</sub></italic>, <italic>v<sub>j</sub></italic>, 1)<italic><sup>T</sup></italic> in the coordinate frames (<italic>ijT</italic>) ((<italic>i, j</italic>) being any element in the set {(<italic>x, y</italic>), (<italic>y, z</italic>), (<italic>z, x</italic>)}) and is sweeping a ruled surface as t increases.</p></caption>
<graphic xlink:href="fnins-10-00596-g0002.tif"/>
</fig>
</sec>
<sec>
<title>2.2. Plane approximation</title>
<p>Solving Equation (5) for <bold>v</bold> cannot be done without knowing the analytic equations of <inline-formula><mml:math id="M24"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, so we propose to apply a local plane fitting to establish the matrix <italic>M</italic>. The choice of a plane instead of a more complex surface is motivated by the fitting simplicity and its computational cost even though planes give rise to rank-2 matrices <italic>M</italic>, as it will be shown further.</p>
<p>Let &#x003A0;<sub>1</sub>, &#x003A0;<sub>2</sub>, and &#x003A0;<sub>3</sub> be the planes that are fitted locally to the surfaces <inline-formula><mml:math id="M25"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, <inline-formula><mml:math id="M26"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, and <inline-formula><mml:math id="M27"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> respectively. They then can be locally expressed using the plane&#x00027;s implicit equation as:
<disp-formula id="E6"><label>(6)</label><mml:math id="M28"><mml:mrow><mml:msub><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy='false'>(</mml:mo><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:msub><mml:mi>&#x003A0;</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>1</mml:mn></mml:mstyle></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mi>i</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>j</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mi>t</mml:mi></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
where <inline-formula><mml:math id="M29"><mml:mrow><mml:msup><mml:mrow><mml:msub><mml:mi>&#x003A0;</mml:mi><mml:mi>k</mml:mi></mml:msub></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>=</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi>b</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi>c</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:msub><mml:mi>d</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow></mml:math></inline-formula>, for 1 &#x02264; <italic>k</italic> &#x02264; 3.</p>
<p>If we derive Equation (6) with respect to each of the spatial and temporal components and for each <inline-formula><mml:math id="M30"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, then Equation (5) becomes</p>
<disp-formula id="E7"><label>(7)</label><mml:math id="M31"><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mtd><mml:mtd><mml:mn>0</mml:mn></mml:mtd><mml:mtd><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mtext>&#x02009;&#x02009;</mml:mtext><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
</sec>
<sec>
<title>2.3. Rank of <italic>M</italic></title>
<p>Under the local plane hypothesis we previously made, it is possible to determine the rank of <italic>M</italic>. For that purpose, we assume the hypothesis that the edge <inline-formula><mml:math id="M32"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> is a straight line segment defined by a point <bold>p</bold><sub>0</sub>, a direction vector <bold>u</bold>, and parametrized by a real &#x003B1;:</p>
<disp-formula id="E8"><label>(8)</label><mml:math id="M33"><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:mi mathvariant='-tex-caligraphic'>C</mml:mi><mml:mo>&#x021D2;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mn>0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>u</mml:mi></mml:mstyle><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>and the equation of <inline-formula><mml:math id="M34"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula> is changed into:</p>
<disp-formula id="E9"><label>(9)</label><mml:math id="M35"><mml:mrow><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mo>,</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mi mathvariant='-tex-caligraphic'>S</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mn>0</mml:mn></mml:msub><mml:mo>+</mml:mo><mml:mi>&#x003B1;</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>u</mml:mi></mml:mstyle><mml:mo>+</mml:mo><mml:mi>t</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mn>0.</mml:mn></mml:mrow></mml:math></disp-formula>
<p>Figure <xref ref-type="fig" rid="F3">3</xref> depicts the case where <inline-formula><mml:math id="M36"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> is a line and the resulting ruled surface <inline-formula><mml:math id="M37"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">S</mml:mi></mml:mrow></mml:math></inline-formula>, obtained by sweeping lines in the direction of <bold>v</bold> is a plane. The vector (<italic>u<sub>i</sub></italic>, <italic>u<sub>j</sub></italic>, 0)<italic><sup>T</sup></italic> is by construction parallel to <bold>&#x003A0;</bold><sub><italic>k</italic></sub>, then:
<disp-formula id="E10"><label>(10)</label><mml:math id="M38"><mml:mrow><mml:msubsup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>n</mml:mi></mml:mstyle><mml:mi>k</mml:mi><mml:mi>T</mml:mi></mml:msubsup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>u</mml:mi><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
where <bold>n</bold><italic><sub>k</sub></italic> &#x0003D; (<italic>a<sub>k</sub></italic>, <italic>b<sub>k</sub></italic>, <italic>c<sub>k</sub></italic>)<italic><sup>T</sup></italic> is the normal to <bold>&#x003A0;</bold><sub><italic>k</italic></sub>. The three similar equations for the three possible <italic>k</italic> lead to:
<disp-formula id="E11"><label>(11)</label><mml:math id="M39"><mml:mrow><mml:mi>M</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>u</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mn>0.</mml:mn></mml:mrow></mml:math></disp-formula>
This shows <bold>u</bold> as an element of the kernel of <italic>M</italic>. <bold>u</bold> is not the null vector because <inline-formula><mml:math id="M40"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">C</mml:mi></mml:mrow></mml:math></inline-formula> is not reduced to a point, thus <italic>M</italic> is non-invertible and the rank of <italic>M</italic> is not larger than 2. The rank deficiency of <italic>M</italic> means we only have two linearly independent scalar equations from Equation (7), however we can still express two of the velocity components as functions of the last one, e.g., <italic>v</italic><sub><italic>x</italic></sub>:</p>
<disp-formula id="E12"><label>(12)</label><mml:math id="M41"><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:munder><mml:munder><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mn>1</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle></mml:munder><mml:mo>+</mml:mo><mml:munder><mml:munder><mml:mrow><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:msub><mml:mi>c</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy='true'>&#x0FE38;</mml:mo></mml:munder><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>r</mml:mi></mml:mstyle></mml:munder><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M42"><mml:mrow><mml:mi>M</mml:mi><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mrow><mml:mfrac><mml:mrow><mml:mi>det</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>M</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:mtable><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mn>0</mml:mn></mml:mtd></mml:mtr></mml:mtable></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:math></inline-formula></p>
<p>This last equation shows that <bold>q</bold> is collinear to <bold>u</bold> if <italic>M</italic> is rank 2, hence we deduce from Equation (7) that <italic>M</italic><bold>r</bold> &#x0003D; (<italic>c</italic><sub>1</sub>, <italic>c</italic><sub>2</sub>, <italic>c</italic><sub>3</sub>)<italic><sup>T</sup></italic>.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p><bold>The local fitting of a plane to the point cloud allows approximating the plane tangent to the surface swept by an edge as it moves</bold>. If the velocity is constant, the so built surface is called ruled surface and the velocity vector <bold>v</bold> is its directrix. To estimate <bold>v</bold>, it is, up to approximation errors, equivalent to working on the tangent plane.</p></caption>
<graphic xlink:href="fnins-10-00596-g0003.tif"/>
</fig>
<p><italic>Remark 1. <italic>M</italic>&#x00027;s rank can only be reduced to one if there is no spatial translation. The swept structures in the subspaces defined by (<italic>ijT</italic>) are vertical lines. Such a case is a particular case which is detected when no ruled surface is generated. It does not concern structures undergoing rotations since points not on the rotation axis will have a non null tangential velocity</italic>.</p>
<p><italic>Remark 2. Expressing <bold>v</bold> as a one parameter vector fails if and only if the rank of <italic>M</italic> is less than 2 i.e., if edges do not generate planes. However, some plane configurations require larger effort to achieve the closed form of <bold>v</bold> such as the case where the plane is perpendicular to one of the spatial frame axes. For example, when the <italic>X</italic>-axis is normal to the plane, Equation (12) is not valid as <italic>b</italic><sub>1</sub> and <italic>a</italic><sub>3</sub> are equal to zero. This problem can be solved by expressing <bold>v</bold> either as a function of <italic>v</italic><sub><italic>y</italic></sub> or <italic>v</italic><sub><italic>z</italic></sub>. In that case, we can see that <italic>v</italic><sub><italic>x</italic></sub> &#x0003D; &#x02212;<italic>c</italic><sub>3</sub>/<italic>b</italic><sub>3</sub> and <italic>v</italic><sub><italic>z</italic></sub> is a function of <italic>v</italic><sub><italic>y</italic></sub>. The problem of finding <bold>v</bold> is again reduced to the search for the correct value of one of its component</italic>.</p>
</sec>
<sec>
<title>2.4. Velocity estimation</title>
<p>As shown in the previous section, from Equation (12), the assumption of local constant velocity motion of straight edges allows to establish a simple linear relation between the velocity vector and the surface swept by the edge points. Estimating the velocity becomes equivalent to identifying the correct real value <italic>v</italic><sub><italic>x</italic></sub>. This is a registration problem for which we need to initiate the point cloud within a spatio-temporal neighborhood as a given structure. We then translate it according to vectors <bold>v</bold>, parametrized by <italic>v</italic><sub><italic>x</italic></sub>. A matching operation is then performed for several sampled values of <italic>v</italic><sub><italic>x</italic></sub>, the correct <italic>v</italic><sub><italic>x</italic></sub> is the one producing the smallest matching error at the time and location given by the velocity vector (see Figure <xref ref-type="fig" rid="F4">4</xref>). The procedure to estimate the velocity via the shape registration is explained in detail by Algorithm 1: the search for <bold>v</bold> is now a minimization problem of a error cost function <italic>E</italic>, which is built as explained in the next section.</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p><bold>The velocity is to be determined locally along a line spanned by u and passing by p &#x0002B; r</bold>. This is achieved by matching local structure defined by a set of 3D points (gray cubes in the figure).</p></caption>
<graphic xlink:href="fnins-10-00596-g0004.tif"/>
</fig>
<table-wrap position="float">
<label>Algorithm 1</label>
<caption><p><bold>3D flow algorithm</bold>.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top"><bold>Require:</bold> &#x000A0;Stream of 3D events obtained from third-party device/algortihm</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;1: &#x000A0;for <bold>each</bold> 3D event (<bold>p</bold>, <italic>t</italic>) <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;2: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Determine the spatio-temporal neighborhood of 3D event close to (<bold>p</bold>, <italic>t</italic>).</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;3: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Fit 3 planes <inline-formula><mml:math id="M43"><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x03A0;</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>1</mml:mn></mml:mstyle></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x03A0;</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>2</mml:mn></mml:mstyle></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>2</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup><mml:mo>,</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x03A0;</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>3</mml:mn></mml:mstyle></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>b</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>d</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula> using a least-square technique to minimize the three scalars:</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;4:</td>
</tr>
<tr>
<td>
<disp-formula id="E13"><mml:math id="M44"><mml:mrow><mml:mo>&#x0007C;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x003A0;</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>1</mml:mn></mml:mstyle></mml:msub><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x000A0;,&#x000A0;</mml:mtext><mml:mo>&#x0007C;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x003A0;</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>2</mml:mn></mml:mstyle></mml:msub><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x000A0;,&#x000A0;</mml:mtext><mml:mo>&#x0007C;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>y</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>p</mml:mi><mml:mi>z</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mn>1</mml:mn><mml:mo stretchy='false'>)</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>&#x003A0;</mml:mi></mml:mstyle><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mn>3</mml:mn></mml:mstyle></mml:msub><mml:mo>&#x0007C;</mml:mo></mml:mrow></mml:math></disp-formula>
</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;5: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Initialize a large enough interval <italic>R</italic> &#x0003D; [<italic>R</italic><sub>1</sub>, <italic>R</italic><sub><italic>r</italic></sub>] of length <italic>l</italic> such that &#x01E7D;<sub><italic>x</italic></sub> &#x02208; <italic>R</italic>. Set n &#x0003D; 1.</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;6: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>while</bold> <italic>E</italic> &#x0003E; threshold <bold>and</bold> <italic>n</italic> &#x0003C; max-iteration <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;7: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Divide <italic>R</italic> into <italic>r</italic> intervals <italic>R</italic><sub><italic>k</italic></sub> of size <inline-formula><mml:math id="M45"><mml:mfrac><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mi>r</mml:mi></mml:mrow></mml:mfrac></mml:math></inline-formula> and define the set {<italic>v</italic><sub><italic>k</italic></sub>} such that <italic>v</italic><sub><italic>k</italic></sub> is the center of <italic>R</italic><sub><italic>k</italic></sub>.</td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;8: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>for</bold> each <italic>v</italic><sub><italic>k</italic></sub> <bold>do</bold></td>
</tr>
<tr>
<td align="left" valign="top">&#x000A0;&#x000A0;9: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Compute <italic>E</italic><sub><italic>k</italic></sub> according to Algorithm 2,</td>
</tr>
<tr>
<td align="left" valign="top">10: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>if</bold> <italic>E</italic><sub><italic>k</italic></sub> is minimal <bold>then</bold></td>
</tr>
<tr>
<td align="left" valign="top">11: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Update <italic>E</italic> &#x02190; <italic>E</italic><sub><italic>k</italic></sub>,</td>
</tr>
<tr>
<td align="left" valign="top">12: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Update <italic>l</italic> &#x02190; <italic>l</italic>(<italic>r</italic> &#x02212; 1)/<italic>r</italic>,</td>
</tr>
<tr>
<td align="left" valign="top">13: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Update <inline-formula><mml:math id="M46"><mml:mi>R</mml:mi><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mfrac><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>R</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mfrac><mml:mrow><mml:mi>l</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:math></inline-formula>.</td>
</tr>
<tr>
<td align="left" valign="top">14: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Compute <bold>v</bold>:</td>
</tr>
<tr>
<td>
<disp-formula id="E14"><mml:math id="M47"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>1</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mfrac><mml:mo>,</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mfrac><mml:mrow><mml:msub><mml:mi>b</mml:mi><mml:mn>3</mml:mn></mml:msub><mml:msub><mml:mi>v</mml:mi><mml:mi>k</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>c</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></disp-formula>
</td>
</tr>
<tr>
<td align="left" valign="top">15: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;Update <italic>n</italic> &#x02190; <italic>n</italic> &#x0002B; 1.</td>
</tr>
<tr>
<td align="left" valign="top">16: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end if</bold></td>
</tr>
<tr>
<td align="left" valign="top">17: &#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;&#x000A0;<bold>end for</bold></td>
</tr>
<tr>
<td align="left" valign="top">18: &#x000A0;&#x000A0;&#x000A0;<bold>end while</bold></td>
</tr>
<tr>
<td align="left" valign="top">19: &#x000A0;&#x000A0;&#x000A0;Return <bold>v</bold></td>
</tr>
<tr>
<td align="left" valign="top">20: &#x000A0;end <bold>for</bold></td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>2.5. Error cost function</title>
<p>A local point cloud centered on the event (<bold>p</bold>1, <italic>t</italic>1)<italic><sup>T</sup></italic>, is temporally consistent in the sense that any of its element will be captured at closely the same time. If in addition, the luminance <italic>L</italic> of the events is available, then the cloud local rigidity also ensures that <italic>L</italic> is consistent independently of time. We can therefore state that when the point cloud that moves from <bold>p</bold><sub>1</sub> at <italic>t</italic><sub>1</sub> to <bold>p</bold><sub>2</sub> at <italic>t</italic><sub>2</sub>, the local geometric structure and the luminance should be preserved. We can formalize the structure matching operation as a minimization of the energy <italic>E</italic> problem and stated as follows:</p>
<disp-formula id="E15"><mml:math id="M48"><mml:mrow><mml:mi>E</mml:mi><mml:mo>=</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>S</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:msub><mml:mi>E</mml:mi><mml:mi>L</mml:mi></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
<p>where <italic>E</italic><sub><italic>S</italic></sub>, <italic>E</italic><sub><italic>T</italic></sub>, and <italic>E</italic><sub><italic>L</italic></sub> are respectively the geometric, the temporal and the luminance energies. <italic>E</italic><sub><italic>T</italic></sub> and <italic>E</italic><sub><italic>S</italic></sub> are minimal as long as the cloud is not deforming when it moves from <bold>p</bold><sub>1</sub> to <bold>p</bold><sub>2</sub>. If the events&#x00027; brightness is also preserved during this motion then <italic>E</italic><sub><italic>L</italic></sub> is also minimal.</p>
<p>We define the 3D events cloud <italic>S</italic>(<bold>p</bold><sub><italic>i</italic></sub>, <italic>t</italic><sub><italic>i</italic></sub>) as:</p>
<disp-formula id="E16"><label>(14)</label><mml:math id="M49"><mml:mtable columnalign='left'><mml:mtr><mml:mtd><mml:mi>S</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>=</mml:mo><mml:mo>&#x0007B;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mi>&#x0211D;</mml:mi><mml:mn>3</mml:mn></mml:msup><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mtext>&#x02009;</mml:mtext><mml:mo>&#x02264;</mml:mo><mml:msub><mml:mo>&#x00394;</mml:mo><mml:mi>s</mml:mi></mml:msub><mml:mtext>&#x02009;&#x02009;</mml:mtext><mml:mo>,</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02264;</mml:mo><mml:msub><mml:mo>&#x00394;</mml:mo><mml:mi>t</mml:mi></mml:msub></mml:mtd></mml:mtr><mml:mtr><mml:mtd><mml:mtext>&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;&#x02009;and&#x02009;</mml:mtext><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo>&#x0003E;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x0007D;</mml:mo><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>This set contains all 3D points spatiotemporally close to <bold>p</bold><sub><italic>i</italic></sub> i.e., points within a neighborhood of <bold>p</bold><sub><italic>i</italic></sub> of radius &#x00394;<sub><italic>s</italic></sub> in space and length &#x00394;<sub><italic>t</italic></sub> in time. The energy cost associated to each sampled velocity vector for a given point <bold>p</bold><sub>0</sub> is computed according to Algorithm 2.</p>
<table-wrap position="float">
<label>Algorithm 2</label>
<caption><p><bold>Energy cost computation</bold>.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="top">Require: <bold>p</bold><sub>0</sub>, the set <italic>S</italic>(<bold>p</bold><sub>0</sub>), <italic>v</italic><sub><italic>x</italic></sub>.</td>
</tr>
<tr>
<td align="left" valign="top"><list list-type="simple">
<list-item><p>1: Apply Equation 12 with the given <italic>v</italic><sub><italic>x</italic></sub> to build vector <bold>v</bold>.</p></list-item>
<list-item><p>2: Define <italic>S</italic>(<bold>p</bold><sub>0</sub>) &#x0002B; <bold>v</bold>, the translated local structure <italic>S</italic>(<bold>p</bold><sub>0</sub>) by <bold>v</bold>. Define <italic>S</italic>(<bold>p</bold><sub>0</sub> &#x0002B; <bold>v</bold>) the set of points that occur in the neighborhood of <bold>p</bold><sub>0</sub> &#x0002B; <bold>v</bold> at <italic>t</italic><sub><italic>i</italic></sub> &#x0002B; <italic>dt</italic>.</p></list-item>
<list-item><p>3: With the convention that <bold>p</bold><sub><italic>i</italic></sub> &#x02208; <italic>S</italic>(<bold>p</bold><sub>0</sub>) &#x0002B; <bold>v</bold>, and<bold>q</bold><sub><italic>j</italic></sub> &#x02208; <italic>S</italic>(<bold>p</bold><sub>0</sub> &#x0002B; <bold>v</bold>), we compute the energy function <italic>E</italic>(<bold>v</bold>) with:</p></list-item>
<list-item><p><disp-formula id="E17"><label>(15)</label><mml:math id="M50"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>S</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mi>n</mml:mi></mml:mfrac><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>=</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mrow><mml:munder><mml:mrow><mml:mi>min</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:munder></mml:mrow></mml:mstyle><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item><p><disp-formula id="E18"><label>(16)</label><mml:math id="M51"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>T</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mn>1</mml:mn><mml:mi>n</mml:mi></mml:mfrac><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mtext>&#x0200A;</mml:mtext><mml:mo>=</mml:mo><mml:mtext>&#x0200A;</mml:mtext><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mrow><mml:munder><mml:mrow><mml:mi>min</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:munder></mml:mrow></mml:mstyle><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mi>t</mml:mi><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item><p>where <italic>t</italic><sub><italic>j</italic></sub> is the time at which <bold>q</bold><sub><italic>j</italic></sub> occured.</p></list-item>
<list-item><p>4: &#x000A0;Finally, if luminance is available:</p></list-item>
<list-item><p><disp-formula id="E19"><label>(17)</label><mml:math id="M52"><mml:mrow><mml:msub><mml:mi>E</mml:mi><mml:mi>L</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>n</mml:mi></mml:munderover><mml:mrow><mml:munder><mml:mrow><mml:mi>min</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub></mml:mrow></mml:munder></mml:mrow></mml:mstyle><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:mi>L</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x02212;</mml:mo><mml:mi>L</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>j</mml:mi></mml:msub><mml:mo stretchy='false'>)</mml:mo><mml:mo stretchy='false'>&#x0007C;</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula></p></list-item>
<list-item><p>5: &#x000A0;Return <italic>E</italic>.</p></list-item></list>
</td>
</tr>
</tbody>
</table>
</table-wrap>
<p><italic>E</italic><sub><italic>L</italic></sub> is the sum of the smallest luminance difference between all pairs of (<bold>p</bold><sub><italic>i</italic></sub>, <bold>q</bold><sub><italic>j</italic></sub>) and <italic>E</italic><sub><italic>S</italic></sub> is the mean value of the smallest distances of each <bold>p</bold><sub><italic>i</italic></sub> to each <bold>q</bold><sub><italic>j</italic></sub>. It is also called the mean closest point between both points clouds and is a dissimilarity measure often used for example in the Iterative Closest Point (ICP) problem (Besl and McKay, <xref ref-type="bibr" rid="B4">1992</xref>). The correct <bold>v</bold> is given by the value <italic>v</italic><sub><italic>x</italic></sub> which minimizes the energy function <italic>E</italic>:</p>
<disp-formula id="E20"><label>(18)</label><mml:math id="M53"><mml:mrow><mml:msub><mml:mover accent='true'><mml:mi>v</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover><mml:mi>x</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mrow><mml:mtext>argmin</mml:mtext></mml:mrow><mml:mrow><mml:msub><mml:mi>v</mml:mi><mml:mi>x</mml:mi></mml:msub><mml:mo>&#x02208;</mml:mo><mml:mi>&#x0211D;</mml:mi></mml:mrow></mml:munder><mml:mi>E</mml:mi><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
<p>More elaborate registration techniques to track deformable 3D surfaces may be used for this matching operation. We can mention the most notable ones, Starck and Hilton (<xref ref-type="bibr" rid="B27">2007</xref>), Ahmed et al. (<xref ref-type="bibr" rid="B1">2008</xref>), and Zeng et al. (<xref ref-type="bibr" rid="B32">2010</xref>), that are not using any shapes prior. Accurate registrations are achieved by combined use of several surface features, followed by a coarse to fine scheme. These techniques are however not suitable in their actual form for processing textureless and event-based inputs.</p>
<p>To minimize <italic>E</italic> with respect to <italic>v</italic><sub><italic>x</italic></sub>, we also applied a dichotomic search strategy to sample possible values of <italic>v</italic><sub><italic>x</italic></sub> and match local 3D structure accordingly. Let <italic>R</italic> &#x0003D; [<italic>R</italic><sub>1</sub>, <italic>R</italic><sub><italic>r</italic></sub>] be a real interval that is set large enough at the beginning of the search to make sure it contains &#x01E7D;<sub><italic>x</italic></sub>. Fixing <italic>R</italic> large enough is only necessary when no recent past estimations of the velocity have been calculated at <bold>p</bold><sub><italic>i</italic></sub>, otherwise the length of <italic>R</italic> is defined from the previous estimation of <italic>v</italic><sub><italic>x</italic></sub>. To determine precisely &#x01E7D;<sub><italic>x</italic></sub>, <italic>R</italic> is subdivided into <italic>r</italic> equal length intervals and the centers of all intervals give a set of possible values for <italic>v</italic><sub><italic>x</italic></sub>. The error cost function is computed for each <italic>v</italic><sub><italic>x</italic></sub> and the interval producing the smallest <italic>E</italic> is used to update <italic>R</italic>.</p>
<p>This operation is iterated until <italic>E</italic> is below a preset threshold and after a minimum number of iterations. This threshold is defined experimentally with the purpose of optimizing the structure matching process by limiting the search to an acceptable matching error. This threshold can be related to the point cloud density and if it is set to zero, then the maximum number of matching iterations is always performed. <italic>r</italic> is usually set to 5, however it can be larger. Estimation accuracy increases with <italic>r</italic> but at the cost of longer processing time.</p>
</sec>
<sec>
<title>2.6. Optimal spatiotemporal neighborhood</title>
<p>The correct estimation of the velocity is conditioned by the spatiotemporal neighborhood, defined as the spatiotemporal volume of dimensions (&#x00394;<sub><italic>x</italic></sub>&#x000D7;&#x00394;<sub><italic>y</italic></sub>&#x000D7;&#x00394;<sub><italic>z</italic></sub>&#x000D7;&#x00394;<sub><italic>t</italic></sub>), in which the 3D point cloud has moved from time <italic>t</italic> to <italic>t</italic> &#x0002B; <italic>dt</italic>. A large neighborhood will allow to find the correct match, but at the cost of processing a large set of data, on the contrary, a too small one will not allow to match the local structures. The spatiotemporal neighborhood must also be resized automatically and dynamically in accordance to the 3D points&#x00027; velocity. In our implementation, we deal with the problem by adjusting a linear function on the neighborhood size e.g., <bold>s</bold><sub><italic>k</italic></sub> &#x0003D; (&#x00394;<italic><sub>x</sub></italic>, &#x00394;<italic><sub>y</sub></italic>, &#x00394;<italic><sub>z</sub></italic>, &#x00394;<italic><sub>t</sub></italic>)<italic><sup>T</sup></italic> is a linear combination of the m previous values <bold>s</bold><sub><italic>k</italic>&#x02212;1</sub>, &#x02026;, <bold>s</bold><sub><italic>k</italic>&#x02212;<italic>m</italic></sub>:
<disp-formula id="E21"><label>(19)</label><mml:math id="M54"><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>s</mml:mi></mml:mstyle><mml:mi>k</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle='true'><mml:munderover><mml:mo>&#x02211;</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mi>m</mml:mi></mml:munderover><mml:mrow><mml:msub><mml:mi>a</mml:mi><mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mstyle><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>s</mml:mi></mml:mstyle><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x02212;</mml:mo><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mrow></mml:math></disp-formula>
where the coefficients <italic>a</italic><sub><italic>i</italic></sub> are estimated with a standard linear prediction coding scheme (Durbin, <xref ref-type="bibr" rid="B9">1959</xref>). The value of <italic>m</italic> is usually set to 5 according to experimental results while the initial value <bold>s</bold><sub>0</sub> is deduced from the coarse estimation of the initial velocity i.e., the mean translation between the first two frames. Thus, we have <inline-formula><mml:math id="M55"><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>s</mml:mi></mml:mstyle><mml:mn>0</mml:mn></mml:msub><mml:mo>=</mml:mo><mml:msup><mml:mrow><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mn>0</mml:mn></mml:msub><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo>,</mml:mo><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo></mml:mrow><mml:mi>T</mml:mi></mml:msup></mml:mrow></mml:math></inline-formula>, assuming <bold>v</bold><sub>0</sub> is the initial estimate of the velocity.</p>
<p>The asynchronous 3D flow extraction from points clouds can be achieve by implementing Algorithms 1, 2 and improved if necessary with the optimal neighborhood estimation. This proposed approach does not require clusters of 3D points captured at the same <italic>t</italic> as one uses to have with frame-based reconstructions, yet it can still be applied if the inputs are frame-based.</p>
</sec>
</sec>
<sec sec-type="results" id="s3">
<title>3. Results</title>
<p>The first set of experiments are performed on synthetic scenes, where both 3D structures and motion (velocity and trajectory) are known. These results measure the theoretical performance (without noise or reconstruction errors) of our method through comparison between estimated velocity vectors and the known motion.</p>
<p>The second set of experiments are performed on natural scenes, with the purpose of showing the performance of the event-based fitting method when dealing with real data. The algorithm is applied to two sources of 3D data: a Microsoft Kinect (an RGBD sensor that outputs frames of 3D points aligned with RGB information) and an asynchronous event-based 3D reconstruction system as introduced in Carneiro et al. (<xref ref-type="bibr" rid="B7">2013</xref>).</p>
<sec>
<title>3.1. Simulated scenes</title>
<p>Four simulated scenes are synthetized: (Figure <xref ref-type="fig" rid="F5">5</xref>) a smooth translation of a wire cube at constant amplitude; (Figure <xref ref-type="fig" rid="F6">6</xref>) a 3D car model undergoing a straight translation at 10 m per second; (Figure <xref ref-type="fig" rid="F7">7</xref>) the same 3D car model describing a circular motion; (Figure <xref ref-type="fig" rid="F8">8</xref>) a pure rotation of a sphere at constant angular speed.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p><bold>(Top)</bold> Scene flow of a cube with the color coding time, as the cube moves from right to left. <bold>(Center and Bottom)</bold> Angular and endpoint errors of the estimated velocity field. The patches of planes are underlined to show the locally constant velocity assumption. For visibility purpose, the velocity is only shown for two edges. All axes are expressed in length unit except for the angle color scale.</p></caption>
<graphic xlink:href="fnins-10-00596-g0005.tif"/>
</fig>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p><bold>(Top)</bold> Constant velocity translation with the color coding time, as the car moves in a straight line from left to right at 10<italic>m</italic>/<italic>s</italic>. The estimated velocity is shown on the right. <bold>(Bottom)</bold> Angular and endpoint errors of the estimated velocity field with the 3D flow technique.</p></caption>
<graphic xlink:href="fnins-10-00596-g0006.tif"/>
</fig>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p><bold>(Top)</bold> Circular motion with no tangential acceleration: the car&#x00027;s trajectory is outlined via the velocity estimation. <bold>(Bottom)</bold> Angular and endpoint errors of the estimated velocity field.</p></caption>
<graphic xlink:href="fnins-10-00596-g0007.tif"/>
</fig>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p><bold>Scene flow of a rotating sphere. (Top)</bold> Time color coded representation of the sphere and the velocity field are represented on the top row. Angular and endpoint errors of the estimated velocity field are shown for two points of view. Error are shown in absolute values: the endpoint errors are not exceeding 0.1 length unit in the dark blue regions and is higher as we are close to the poles because of the high density of samples for which the fitting parameters are no optimal enough.</p></caption>
<graphic xlink:href="fnins-10-00596-g0008.tif"/>
</fig>
<p>For each scene, the velocity flow is computed using the geometric structure information alone (only the 3D points&#x00027; positions and timestamps are given in the simulation). The energy cost function in Algorithm 2 is reduced to <italic>E</italic><sub><italic>s</italic></sub>. The flow performance is measured by two quantities conventionally used to validate optical flow, the angular error, which is the angle defined by the estimated normalized velocity vector <inline-formula><mml:math id="M56"><mml:mover accent="true"><mml:mrow><mml:mstyle mathvariant="bold"><mml:mtext>v</mml:mtext></mml:mstyle></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:math></inline-formula> and the ground-truth <bold>v</bold>. The angle is given by the inverse cosine of the scalar product of 2 vectors:
<disp-formula id="E22"><label>(20)</label><mml:math id="M57"><mml:mrow><mml:mi>arccos</mml:mi><mml:mrow><mml:mo>(</mml:mo><mml:mrow><mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mi>v</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover></mml:mstyle><mml:mi>T</mml:mi></mml:msup><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>/</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mi>v</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover></mml:mstyle><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>&#x0007C;</mml:mo></mml:mrow><mml:mo>)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
This measure has been introduced in Fleet and Jepson (<xref ref-type="bibr" rid="B10">1990</xref>) to assess the accuracy of the flow direction. However, the angular error can be biased by large velocity vectors for which the differences in amplitude can be significant and in the same time, the angular errors are small. In that sense the angular error is favoring the large motion over the smaller ones. To compensate for that bias, a second performance measure, the endpoint error, introduced by Otte and Nagel (<xref ref-type="bibr" rid="B21">1994</xref>) is conjointly used. This endpoint error is the norm of the difference between the estimated velocity and the real one:
<disp-formula id="E23"><label>(21)</label><mml:math id="M58"><mml:mrow><mml:mo>&#x0007C;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mover accent='true'><mml:mi>v</mml:mi><mml:mo>&#x002DC;</mml:mo></mml:mover></mml:mstyle><mml:mo>&#x0007C;</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
Both estimated angular error and endpoint error are represented with a color scaled representation (Figures <xref ref-type="fig" rid="F5">5</xref>&#x02013;<bold>15</bold>). For the moving cube, the maximal error occurs at the beginning of the motion and is due to the fitting spatio-temporal neighborhood, chosen as the best compromise for the entire motion.</p>
<p>The results on synthetic data, summarized in Table <xref ref-type="table" rid="T1">1</xref>, show the ability of the method to estimate densely and smoothly the velocity field. The rotating sphere is a challenging because the 3D points composing the surface are not spatially uniform. The non uniform acceleration on the sphere also implies non uniform tangential velocity of 3D points on which we fit the local planes. This explains why the velocity estimation is slightly less accurate for rotations. For translations (cube and car), the velocity is estimated with higher accuracy since the direction has a mean angular error of 0.04 <italic>rad</italic> (with a peak value of 0.1 <italic>rad</italic>) and a mean endpoint error of 0.8%, with a peak value of 1.2% when normalized by the ground-truth objects sizes (respectively the cube edge length, the sphere diameter, and the length of the car). For rotations, the accuracy has the same order of magnitude: around 0.15 <italic>rad</italic> and 2.2% for respectively the angular and the endpoint error.</p>
<table-wrap position="float" id="T1">
<label>Table 1</label>
<caption><p><bold>Average motion estimation errors for the synthetic scenes</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th/>
<th valign="top" align="center"><bold>Cube translation</bold></th>
<th valign="top" align="center"><bold>Car cst. translation</bold></th>
<th valign="top" align="center"><bold>Car circular motion</bold></th>
<th valign="top" align="center"><bold>Rotating sphere</bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">Angular error (rad)</td>
<td valign="top" align="center">0.04</td>
<td valign="top" align="center">0.03</td>
<td valign="top" align="center">0.15</td>
<td valign="top" align="center">0.15</td>
</tr>
<tr>
<td valign="top" align="left">Endpoint error (%)</td>
<td valign="top" align="center">0.8</td>
<td valign="top" align="center">1.5</td>
<td valign="top" align="center">2.2</td>
<td valign="top" align="center">2</td>
</tr>
</tbody>
</table>
</table-wrap>
</sec>
<sec>
<title>3.2. Natural scenes</title>
<p>The second set of results is obtained from real scenes showing a moving person in the scene. The 3D point clouds are provided by a Kinect sensor that also measures the RGB intensity. The Kinect provides depth information for every detected pixel. The background pixels representing the room&#x00027;s walls are removed via depth segmentation. In these sequences, the person is a nice example of a deformable target with limbs moving at different non-constant velocities. However, the local constant speed hypothesis holds. It is sufficient to allow a smooth estimation of the scene flow. Scene flows estimations are given as two sets of results. The first one uses only geometric constraints, when the scene luminance is not available for the structure registration operation. The second set uses the additional information brought by the luminance in addition to the geometry.</p>
<p>The flow estimation for each sequence is assessed in two ways:</p>
<list list-type="order">
<list-item><p>A reference speed is established using the person&#x00027;s head to compute speed across frames. The head&#x00027;s position at time <italic>t</italic> is annotated manually to build a reference motion scene. This is then used as ground-truth to evaluate the event-based fitting method.</p></list-item>
<list-item><p>If <italic>S</italic>(<italic>t</italic>) designates an arbitrary point cloud in the scene at time <italic>t</italic> then <italic>S</italic>(<italic>t</italic>)&#x0002B;<bold>v</bold><italic>dt</italic> is the morphing of <italic>S</italic>(<italic>t</italic>) by the translation vector <bold>v</bold><italic>dt</italic>.</p>
<p>Let <bold>p</bold><sub><italic>i</italic></sub> &#x02208; <italic>S</italic>(<italic>t</italic>) and <bold>q</bold><sub><italic>i</italic></sub> &#x02208; <italic>S</italic>(<italic>t</italic>) &#x0002B; <bold>v</bold><italic>dt</italic> such that:
<disp-formula id="E24"><label>(22)</label><mml:math id="M59"><mml:mrow><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>=</mml:mo><mml:munder><mml:mrow><mml:mi>a</mml:mi><mml:mi>r</mml:mi><mml:mi>g</mml:mi><mml:mi>m</mml:mi><mml:mi>i</mml:mi><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mo>&#x02208;</mml:mo><mml:mi>S</mml:mi><mml:mo stretchy='false'>(</mml:mo><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>+</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi></mml:mrow></mml:munder><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mo>&#x02212;</mml:mo><mml:mo stretchy='false'>(</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>+</mml:mo><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>v</mml:mi></mml:mstyle><mml:mi>d</mml:mi><mml:mi>t</mml:mi><mml:mo stretchy='false'>)</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
We define the morphing error as the mean error of each pair (<bold>p</bold><sub><italic>i</italic></sub>, <bold>q</bold><sub><italic>i</italic></sub>):
<disp-formula id="E25"><label>(23)</label><mml:math id="M60"><mml:mrow><mml:mfrac><mml:mn>1</mml:mn><mml:mi>N</mml:mi></mml:mfrac><mml:mstyle displaystyle='true'><mml:munder><mml:mo>&#x02211;</mml:mo><mml:mi>i</mml:mi></mml:munder><mml:mo>&#x0007C;</mml:mo></mml:mstyle><mml:mo>&#x0007C;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>p</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x02212;</mml:mo><mml:msub><mml:mstyle mathvariant='bold' mathsize='normal'><mml:mi>q</mml:mi></mml:mstyle><mml:mi>i</mml:mi></mml:msub><mml:mo>&#x0007C;</mml:mo><mml:mo>&#x0007C;</mml:mo><mml:mo>.</mml:mo></mml:mrow></mml:math></disp-formula>
This morphing error, normalized by the mean ground-truth velocity amplitude (provided by tracking limbs from the Kinect output for the 3 sequences), is used as the second performance measurement for the rest of the paper.</p></list-item>
</list>
<sec>
<title>3.2.1. First sequence</title>
<p>In the first sequence, shown in Figure <xref ref-type="fig" rid="F9">9</xref>, a person walks in front of the cameras at a constant pace. The velocities&#x00027; amplitudes, and the directions are shown separately for both estimations without using luminance information. These figures show the performance of the algorithm in the presence of a deformable object. The limbs, in particular, the legs and the fingertips which are subject to the largest velocity changes show clear phases of acceleration: when the legs reach the end of the step, the speed is close to zero (1st and 3rd images), it reaches a maximal value when the legs are in the middle of the step (5th image). The velocity changes are also visible in the color coded motion directions: the silhouettes are not all green as the hands swing. The floor, as it is scanned by the Kinect sensor, was also processed by the algorithm. The estimated speeds are largely coherent with what it is expected: they are close to zero, thus negligible with respect to the moving person. The measured velocity variation (in amplitude and direction) from the floor are mainly due to several sources of noise coming from the sensor itself, the lighting change induced by the motion, etc. The background wall has been removed using depth information before the scene flow estimation is applied. This eliminates any non relevant events/pixel changes due to shadows.</p>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p><bold>Sequence of a person walking at constant speed across the scene</bold>. The amplitude of each 3D point is color-coded and shows that the event-based plane fitting technique is able to estimate non rigid object velocity without and with luminance. A color scale is also used for the flow directions. One can see the person going from the right to the left as confirmed by the color (green in the color scale i.e., an angle of 180&#x000B0;). Again, we can observe that directions can be accurately estimated by using only time and geometry. The addition of luminance provides slight improvements.</p></caption>
<graphic xlink:href="fnins-10-00596-g0009.tif"/>
</fig>
<p>In this experiment, the person walks across the scene, in front of the cameras at a constant speed of 1<italic>m</italic>/<italic>s</italic>. This reference speed is measured by manually segmenting the head&#x00027;s point cloud for each frame. The speed is also extracted for the head from the estimated 3D flow with Algorithm 1. The top row of <bold>Figure 11</bold> shows both speed curves, plot together. Square markers represent the reference speed, circle markers show the speed estimated without luminance information while the diamond markers represent the result achieved with the luminance (through the term <italic>E</italic><sub><italic>L</italic></sub> in Equation 13). The speed estimated from the geometric constraint has a mean value of 0.99<italic>m</italic>.<italic>s</italic><sup>&#x02212;1</sup> and the one using luminance is around 1.2<italic>m</italic>.<italic>s</italic><sup>&#x02212;1</sup>. The relative mean difference between the two estimations is around 17%. This shows that both estimates are coherent.</p>
<p>The small fluctuations of the estimated speed are not surprising as the trajectory of the head is not a straight translation: body weight transfer happens at each step and it modifies subsequently the head velocity in amplitude and direction. Finally, the color coded flow directions are consistent. Results show that the flow is pointing at 180&#x000B0;, i.e., from right to left for most of the body except for the person&#x00027;s hands. Floor&#x00027;s directions however have a random distribution. We can explain this result by two causes: noise in the acquired data as the floor is a matt surface diffusing randomly the neon lighting and the shape registration procedure in the algorithm which is unlikely to register correctly structures on a uniform surface.</p>
</sec>
<sec>
<title>3.2.2. Second sequence</title>
<p>In the second sequence (Figure <xref ref-type="fig" rid="F10">10</xref>), a more complex motion is tested, showing a person jumping. The velocity amplitude changes several times throughout the sequence: it increases at the beginning and reaches a maximum, then decreases to 0 when the person is at the top of its trajectory. The amplitude then increases again during the fall until he reaches the ground. This sequence of speed change is shown at the bottom row of Figure <xref ref-type="fig" rid="F11">11</xref>. Similarly to the walking sequence, both reference speed curves and estimation are shown together. However, in this experiment, it is more difficult to assess the accuracy of the estimation since the reference speed itself is built with a low accuracy. This is due to the difficulty to manually segment the head&#x00027;s 3D point since the speed changes too quickly.</p>
<fig id="F10" position="float">
<label>Figure 10</label>
<caption><p><bold>Sequence of a jumping person</bold>. This is a complex motion which comprises several rapid changes of the velocity in direction and amplitude. The amplitude plot of the velocity for each 3D points is color-coded. Parts of the body can be segmented according to the velocity e.g., the arms, the legs and rest of the body which have distinctive amplitude. The color coded flow directions (expressed in degree) are well estimated as we can see for the whole body, the direction is pointing up (i.e., angle close to 90&#x000B0;) and pointing to the bottom when the person is falling (i.e., angle around &#x02212;90&#x000B0;).</p></caption>
<graphic xlink:href="fnins-10-00596-g0010.tif"/>
</fig>
<fig id="F11" position="float">
<label>Figure 11</label>
<caption><p><bold>Mean velocity computed for the head in the walking (top)</bold> and the jumping <bold>(bottom)</bold> sequences. The circle curves are estimations achieved by time and geometric information. The diamond curves are results one gets when luminance is used for the structure registration. Finally, the square curve represents the velocity of the manually segmented head&#x00027;s 3D points.</p></caption>
<graphic xlink:href="fnins-10-00596-g0011.tif"/>
</fig>
<p>The jumping sequence is an ideal example of a non-rigid body moving at a totally unconstrained speed. The arms, in particular, show the largest velocity changes since the person swings them to gather momentum from the first half of the jump and he folds them back once the body begins to fall. In this sequence one can also observe the velocity estimated for the floor which is again mostly equal to zero, except at the right under the jumping point because of the moving shadow of the person. The velocities are pointing mainly up (i.e., angle of 90&#x000B0;) during the ascending phase and pointing down when he is falling (i.e., angle of &#x02212;90&#x000B0;).</p>
<p>For both walking and jumping sequences, a higher accuracy is achieved in estimating the velocity when luminance is used, as shown in Table <xref ref-type="table" rid="T2">2</xref> for five frames taken from the sequences. The mean morphing error is below 3% for the walking sequence and slightly higher than 2% for the jumping one when luminance information is used. The estimation performance is slightly lower when the luminance is removed. In these cases, the morphing errors increase respectively to 5 and 7%. Two main observations should be retained from these results: first, morphed point clouds still consist of well defined objects. This shows the computed motion is consistent for the full scene as morphing objects do not produce incoherent shapes. Secondly, the estimated scene flow is shown being consistent with the real motion since <italic>S</italic>(<italic>t</italic>)&#x0002B;<bold>v</bold><italic>dt</italic>, the morphed point cloud, matches correctly <italic>S</italic>(<italic>t</italic> &#x0002B; <italic>dt</italic>), the point cloud at <italic>t</italic>&#x0002B;<italic>dt</italic>.</p>
<table-wrap position="float" id="T2">
<label>Table 2</label>
<caption><p><bold>Morphing error for several sets of five randomly selected times in the sequences</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="center" colspan="5" style="border-bottom: thin solid #000000;"><bold>Morphing error (ratio)</bold></th>
</tr>
<tr>
<th valign="top" align="left"><bold>Frame</bold></th>
<th valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>Walking</bold></th>
<th valign="top" align="center" colspan="2" style="border-bottom: thin solid #000000;"><bold>Jumping</bold></th>
</tr>
<tr>
<th/>
<th valign="top" align="center"><bold>Without <italic><bold>L</bold></italic></bold></th>
<th valign="top" align="center"><bold>With <italic><bold>L</bold></italic></bold></th>
<th valign="top" align="center"><bold>Without <italic><bold>L</bold></italic></bold></th>
<th valign="top" align="center"><bold>With <italic><bold>L</bold></italic></bold></th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center">0.0542</td>
<td valign="top" align="center">0.0214</td>
<td valign="top" align="center">0.0250</td>
<td valign="top" align="center">0.0131</td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">0.0695</td>
<td valign="top" align="center">0.0277</td>
<td valign="top" align="center">0.0635</td>
<td valign="top" align="center">0.0270</td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center">0.0786</td>
<td valign="top" align="center">0.0221</td>
<td valign="top" align="center">0.0698</td>
<td valign="top" align="center">0.0414</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">0.0863</td>
<td valign="top" align="center">0.0424</td>
<td valign="top" align="center">0.0510</td>
<td valign="top" align="center">0.0128</td>
</tr>
<tr style="border-bottom: thin solid #000000;">
<td valign="top" align="left">5</td>
<td valign="top" align="center">0.0433</td>
<td valign="top" align="center">0.0278</td>
<td valign="top" align="center">0.0481</td>
<td valign="top" align="center">0.0143</td>
</tr> <tr>
<td valign="top" align="left">Mean</td>
<td valign="top" align="center">0.0664</td>
<td valign="top" align="center">0.0283</td>
<td valign="top" align="center">0.0515</td>
<td valign="top" align="center">0.0217</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><italic>Errors are measured with and without luminance information. In the first case, the mean error are around 6.6 and 5.2% respectively. These ratios are improved to 2.8 and 2.2% when luminance is added i.e., errors are reduced by a factor close to 2.</italic></p>
</table-wrap-foot>
</table-wrap>
</sec>
</sec>
<sec>
<title>3.3. 3D point clouds from event-based vision sensors</title>
<p>This subsection provides the 3D scene flow using event-based cameras (DVS) as described in Carneiro et al. (<xref ref-type="bibr" rid="B7">2013</xref>). Computed 3D data have a high resolution of 1&#x003BC;<italic>s</italic>. The input to the scene flow estimation are asynchronous 3D point clouds of a hand closing and opening in front of the stereo rig, while the second sequence is a moving face captured by the same stereo rig. The hand speed is of the order of one meter per second while the face moved slower (several cm per second). The first sequence&#x00027;s results are shown in Figures <xref ref-type="fig" rid="F12">12</xref>, <xref ref-type="fig" rid="F13">13</xref>. The events generated by the hand&#x00027;s contours are sufficient to estimate 3D flow estimation. The direction and amplitude are consistent with the motion. The mean morphing error, (8.7%), is at the same order of magnitude than the previous experiments.</p>
<fig id="F12" position="float">
<label>Figure 12</label>
<caption><p><bold>A sequence of a moving hand acquired using a stereo-rig composed of event-based silicon retinas (DVS) as sets of event {(p, <italic>t</italic>)}</bold>. No luminance information is available from these sensors. In <bold>(A,B)</bold> color-coded plots of the estimated amplitude and direction of the velocity for each reconstructed 3D points. In contrast with the previous resultsare shown, they correspond to the locations of dense 3D points. The motion is a smooth translation from left to right as shown by the direction plots pointing toward 45&#x000B0;.</p></caption>
<graphic xlink:href="fnins-10-00596-g0012.tif"/>
</fig>
<fig id="F13" position="float">
<label>Figure 13</label>
<caption><p><bold>Morphing error for the event-based 3D point clouds of a waving hand calculated for a set of randomly selected times</bold>. The Mean error is around 8.7%, this is consistant with previous estimations if no intensity information is used or available.</p></caption>
<graphic xlink:href="fnins-10-00596-g0013.tif"/>
</fig>
<p>The second 3D scene flow estimation from the event-based cameras are shown without providing morphing error for readability reason. The second sequence shows a face moving in front of the event-based cameras. The color-coded flow are shown in Figure <xref ref-type="fig" rid="F14">14</xref> with row (a) color-coding the flow&#x00027;s directions while (b), shows the motion amplitudes.</p>
<fig id="F14" position="float">
<label>Figure 14</label>
<caption><p><bold>Sequence of a moving face 3D point clouds computed using event-based cameras</bold>. <bold>(A)</bold> Shows the color coded flow&#x00027;s amplitude while <bold>(B)</bold> is its color coded directions in a fronto parallel plane. The computed flow outlines the actual motion of the face that rotates from right to left: temples motion is pointing to 30&#x000B0; (blue) while the glasses motion is almost horizontal and pointing to the right (dark red). The global motion is close to be constant over the samples shown by the figure. The amplitude is expressed in cm/s.</p></caption>
<graphic xlink:href="fnins-10-00596-g0014.tif"/>
</fig>
</sec>
<sec>
<title>3.4. Comparison to the particle filter scene flow estimation</title>
<p>This third set of results obtained with the event-based plane fitting technique (without luminance information) is compared to the method published in Hadfield and Bowden (<xref ref-type="bibr" rid="B11">2014</xref>). This paper models a set of moving 3D points using a particle filter that supports multiple motion hypotheses to estimate the 3D scene flow from the 3D points provided by a Kinect.</p>
<p>The sequence and its estimated scene flow presented in Hadfield and Bowden (<xref ref-type="bibr" rid="B11">2014</xref>) were kindly provided by the authors and are shown as output without additional processing. Figure <xref ref-type="fig" rid="F15">15</xref> shows samples of this sequence along with the estimated 3D scene flow: the velocity amplitude and direction are shown in two separate color-coded representations for the two methods. One can notice that the event-based plane fitting method produces smoother results that are consistant with the scene content, especially the velocity is expected to be maximal at the foot when the kick is accomplished.</p>
<fig id="F15" position="float">
<label>Figure 15</label>
<caption><p><bold>Sequence of a person performing a kick</bold>. The amplitude of each 3D point is color-coded and shows respectively the flow amplitude estimation using the event-based plane fitting and the particle filter method proposed in Hadfield and Bowden (<xref ref-type="bibr" rid="B11">2014</xref>). The flow direction estimation from the event-based plane fitting and the particle filter methods are shown in the 2 last lines.</p></caption>
<graphic xlink:href="fnins-10-00596-g0015.tif"/>
</fig>
<p>We provide the morphing error in Table <xref ref-type="table" rid="T3">3</xref>. It shows the error computed for 5 frames taken at some arbitrary regular time interval, using both method. This is consistant with the previous analysis showing that the event-based plane fitting method&#x00027;s performance is higher than the state-of-the-art frame-based technique. Unsurprisingly, the overall estimation accuracy for both methods is lower than the previous experiments mainly because the Kinect&#x00027;s inability to accurately capture fast motions that give rise to blurry images.</p>
<table-wrap position="float" id="T3">
<label>Table 3</label>
<caption><p><bold>Event-based plane fitting technique compared to particle filtering technique</bold>.</p></caption>
<table frame="hsides" rules="groups">
<thead><tr>
<th valign="top" align="center" colspan="3" style="border-bottom: thin solid #000000;"><bold>Morphing error (ratio)</bold></th>
</tr>
</thead>
<tbody>
<tr style="border-bottom: thin solid #000000;">
<td valign="top" align="left"><bold>Frame</bold></td>
<td valign="top" align="center"><bold>Plane fitting</bold></td>
<td valign="top" align="center"><bold>Scene particle</bold></td>
</tr>
<tr>
<td valign="top" align="left">1</td>
<td valign="top" align="center">0.0124</td>
<td valign="top" align="center">0.0265</td>
</tr>
<tr>
<td valign="top" align="left">2</td>
<td valign="top" align="center">0.0382</td>
<td valign="top" align="center">0.0461</td>
</tr>
<tr>
<td valign="top" align="left">3</td>
<td valign="top" align="center">0.0496</td>
<td valign="top" align="center">0.0505</td>
</tr>
<tr>
<td valign="top" align="left">4</td>
<td valign="top" align="center">0.0344</td>
<td valign="top" align="center">0.0378</td>
</tr>
<tr style="border-bottom: thin solid #000000;">
<td valign="top" align="left">5</td>
<td valign="top" align="center">0.0436</td>
<td valign="top" align="center">0.0480</td>
</tr>
<tr>
<td valign="top" align="left">Mean</td>
<td valign="top" align="center">0.0356</td>
<td valign="top" align="center">0.0418</td>
</tr>
</tbody>
</table>
<table-wrap-foot>
<p><italic>Errors are normalized by the mean velocity of the left leg</italic>.</p>
</table-wrap-foot>
</table-wrap>
</sec>
</sec>
<sec sec-type="discussion" id="s4">
<title>4. Discussion</title>
<p>This paper introduced a new technique of dense 3D scene flow estimation. This is so far, the first 3D scene flow algorithm developed for asynchronous sensing using event-based cameras. The event-based formulation of the flow applies the rule of &#x0201C;one event equals one computation&#x0201D; that allows an incremental update of the 3D scene flow in an almost continuous manner. This formulation allows also a straightforward extension to frame-based representation as long as time is used as the main computation feature.</p>
<p>The motion inference and 3D reconstruction from multiple cameras are usually coupled tasks in frame-based computer vision. They are solved by stereovision mechanisms which require highly accurate calibration operation. Conventionally, the dense scene flow is estimated and refined from the dense optical flow which is its projection on the image planes in an iterative feedback loop scheme. The scene flow computation is therefore a complex problem which is an optimization problem under several conflicting constraints.</p>
<p>The proposed technique is based on the local constant motion of the 3D point clouds and on their locally non deformable geometry. These hypotheses, when satisfied, tell us that an object moving through space, locally generates ruled surfaces from which the velocity vectors can be extracted. The solution we proposed is simple as it constraints the 3D velocity estimation to a search for a parametrization value over the set of real numbers. To achieve this search, we developed a local 3D structure matching strategy using the geometric consistency and when it is available, luminance as an additional constraint to identify structures across time. Experimental results obtained from synthetic and natural scenes show the technique to be particularly suitable in estimating the velocity vectors of deformable objects, undergoing arbitrary unconstrained motions. This approach allows flow estimation from any data output by sensors that capture the spatiotemporal information that but do not necessarily provide nor use luminance such as range finders (e.g., the LiDAR).</p>
<p>The method also provides a dense estimation of the velocity field as an alternative method to using a variational formulation (a very powerful but also highly computationally demanding technique) for flow estimation. Since the plane fitting we applied for the flow regularization is relatively inexpensive operation, the resources are mainly needed for the structure matching operation. We can sketch an idea about the complexity of that matching operation according to Algorithm 1:
<list list-type="bullet">
<list-item><p>There are 2 nested loops (line 6 and 8 in the algorithm), if we assume that the while loop is satisfied in <italic>n</italic> iterations and that we have <italic>n</italic> values of <italic>v</italic><sub><italic>k</italic></sub> to test in the for loop, then the algorithm is at least in <inline-formula><mml:math id="M61"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p></list-item>
<list-item><p>In the case of a stream of <italic>z</italic> events, the complexity is in <inline-formula><mml:math id="M62"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo>.</mml:mo><mml:msup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p></list-item>
</list></p>
<p>From that perspective, the complete scene flow algorithm&#x02018; complexity is at least in <inline-formula><mml:math id="M63"><mml:mrow><mml:mi mathvariant="-tex-caligraphic">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>z</mml:mi><mml:mo>.</mml:mo><mml:msup><mml:mrow><mml:mi>n</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. We can reasonably state that this is still less complex compared to conventional scene flow estimation techniques based on particular filter or variational approaches.</p>
</sec>
<sec id="s5">
<title>Author contributions</title>
<p>SI: drafting the work and revised the final version for submission. JC: conception and design of the work; data acquisition and analysis; drafting the paper. RB: drafting the work and revising it critically.</p>
<sec>
<title>Conflict of interest statement</title>
<p>The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
</sec>
</body>
<back>
<ack>
<p>The authors are grateful to Simon Hadfield for providing us data and results without which we could not have achieve in a short time accurate comparison results. They also thank Marc Osswald for providing additional 3D event-based point clouds used in the paper. Finally, this work was supported by the LABEX LIFESENSES [ANR-10-LABX-65] which is supported by French state funds managed by the ANR within the Investissements d&#x00027;Avenir programme [ANR-11-IDEX-0004-02].</p>
</ack>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Ahmed</surname> <given-names>N.</given-names></name> <name><surname>Theobalt</surname> <given-names>C.</given-names></name> <name><surname>Rossl</surname> <given-names>C.</given-names></name> <name><surname>Thrun</surname> <given-names>S.</given-names></name> <name><surname>Seidel</surname> <given-names>H.-P.</given-names></name></person-group> (<year>2008</year>). <article-title>Dense correspondence finding for parametrization-free animation reconstruction from video</article-title>, in <source>Conference on Commputer Vision and Pattern Recognition</source> (<publisher-loc>Miami Beach, FL</publisher-loc>). <pub-id pub-id-type="doi">10.1109/cvpr.2008.4587758</pub-id></citation>
</ref>
<ref id="B2">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Basha</surname> <given-names>T.</given-names></name> <name><surname>Moses</surname> <given-names>Y.</given-names></name> <name><surname>Kiryati</surname> <given-names>N.</given-names></name></person-group> (<year>2013</year>). <article-title>Multi-view scene flow estimation: a view centered variational approach</article-title>. <source>Int. J. Comput. Vis.</source> <volume>101</volume>, <fpage>6</fpage>&#x02013;<lpage>21</lpage>. <pub-id pub-id-type="doi">10.1007/s11263-012-0542-7</pub-id></citation>
</ref>
<ref id="B3">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Benosman</surname> <given-names>R.</given-names></name> <name><surname>Clercq</surname> <given-names>C.</given-names></name> <name><surname>Lagorce</surname> <given-names>X.</given-names></name> <name><surname>Ieng</surname> <given-names>S.-H.</given-names></name> <name><surname>Bartolozzi</surname> <given-names>C.</given-names></name></person-group> (<year>2014</year>). <article-title>Event-based visual flow</article-title>. <source>IEEE Trans Neural Netw Learn Syst.</source> <volume>25</volume>, <fpage>407</fpage>&#x02013;<lpage>417</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2013.2273537</pub-id><pub-id pub-id-type="pmid">24807038</pub-id></citation>
</ref>
<ref id="B4">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Besl</surname> <given-names>P.</given-names></name> <name><surname>McKay</surname> <given-names>H.</given-names></name></person-group> (<year>1992</year>). <article-title>A method for registration of 3-D shapes</article-title>. <source>IEEE Trans. Patt. Anal. Mach. Intell.</source> <volume>14</volume>, <fpage>239</fpage>&#x02013;<lpage>256</lpage>. <pub-id pub-id-type="doi">10.1109/34.121791</pub-id></citation>
</ref>
<ref id="B5">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Cagniart</surname> <given-names>C.</given-names></name> <name><surname>Boyer</surname> <given-names>E.</given-names></name> <name><surname>Ilic</surname> <given-names>S.</given-names></name></person-group> (<year>2010</year>). <article-title>Free-form mesh tracking: a patch-based approach</article-title>, in <source>Conference on Vision and Pattern Recognition</source> (<publisher-loc>San Francisco, CA</publisher-loc>). <pub-id pub-id-type="doi">10.1109/cvpr.2010.5539814</pub-id></citation>
</ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Carceroni</surname> <given-names>R.</given-names></name> <name><surname>Kutulakos</surname> <given-names>K.</given-names></name></person-group> (<year>2002</year>). <article-title>Multi-view scene capture by surfel sampling: from video streams to non-rigid 3D motion, shape and reflectance</article-title>. <source>Int. J. Comput. Vis.</source> <volume>49</volume>, <fpage>175</fpage>&#x02013;<lpage>214</lpage>. <pub-id pub-id-type="doi">10.1023/A:1020145606604</pub-id></citation>
</ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Carneiro</surname> <given-names>J.</given-names></name> <name><surname>Ieng</surname> <given-names>S.-H.</given-names></name> <name><surname>Benosman</surname> <given-names>R.</given-names></name></person-group> (<year>2013</year>). <article-title>Asynchronous event-based 3D reconstruction from neuromorphic retinas</article-title>. <source>Neural Netw</source>. <volume>45</volume>, <fpage>27</fpage>&#x02013;<lpage>38</lpage>. <pub-id pub-id-type="doi">10.1016/j.neunet.2013.03.006</pub-id></citation>
</ref>
<ref id="B8">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Delbr&#x000FC;ck</surname> <given-names>T.</given-names></name> <name><surname>Linares-Barranco</surname> <given-names>B.</given-names></name> <name><surname>Culurciello</surname> <given-names>E.</given-names></name> <name><surname>Posch</surname> <given-names>C.</given-names></name></person-group> (<year>2010</year>). <article-title>Activity-driven, event-based vision sensors</article-title>, in <source>International Symposium on Circuits and Systems</source> (<publisher-loc>Paris</publisher-loc>: <publisher-name>IEEE</publisher-name>), <fpage>2426</fpage>&#x02013;<lpage>2429</lpage>. <pub-id pub-id-type="pmid">27411216</pub-id></citation>
</ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Durbin</surname> <given-names>J.</given-names></name></person-group> (<year>1959</year>). <article-title>Efficient estimation of parameters in moving average models</article-title>. <source>Biometrica</source> <volume>46</volume>, <fpage>306</fpage>&#x02013;<lpage>317</lpage>. <pub-id pub-id-type="doi">10.1093/biomet/46.3-4.306</pub-id></citation>
</ref>
<ref id="B10">
<citation citation-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.</given-names></name></person-group> (<year>1990</year>). <article-title>Computation of component image velocity from local phase information</article-title>. <source>Int. J. Comput. Vis.</source> <volume>5</volume>, <fpage>77</fpage>&#x02013;<lpage>104</lpage>. <pub-id pub-id-type="doi">10.1007/BF00056772</pub-id></citation>
</ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Hadfield</surname> <given-names>S.</given-names></name> <name><surname>Bowden</surname> <given-names>R.</given-names></name></person-group> (<year>2014</year>). <article-title>Scene particles: unregularized particle based scene flow estimation</article-title>. <source>IEEE Trans Patt. Anal. Mach. Intell.</source> <volume>36</volume>, <fpage>564</fpage>&#x02013;<lpage>576</lpage>. <pub-id pub-id-type="doi">10.1109/TPAMI.2013.162</pub-id><pub-id pub-id-type="pmid">24457511</pub-id></citation>
</ref>
<ref id="B12">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Hansard</surname> <given-names>M.</given-names></name> <name><surname>Lee</surname> <given-names>S.</given-names></name> <name><surname>Choi</surname> <given-names>O.</given-names></name> <name><surname>Horaud</surname> <given-names>R.</given-names></name></person-group> (<year>2012</year>). <source>Time-of-Flight Cameras: Principles, Methods and Applications</source>. <publisher-loc>Paris</publisher-loc>: <publisher-name>Springer Briefs in Computer Science</publisher-name>.</citation>
</ref>
<ref id="B13">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Herbst</surname> <given-names>E.</given-names></name> <name><surname>Ren</surname> <given-names>X.</given-names></name> <name><surname>Fox</surname> <given-names>D.</given-names></name></person-group> (<year>2013</year>). <article-title>RGB-D flow: Dense 3-D motion estimation using color and depth</article-title>, in <source>IEEE International Conference on Robotics and Automation</source> (<publisher-loc>Karlsruhe</publisher-loc>: <publisher-name>ICRA</publisher-name>). <pub-id pub-id-type="doi">10.1109/icra.2013.6630885</pub-id></citation>
</ref>
<ref id="B14">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Huguet</surname> <given-names>F.</given-names></name> <name><surname>Devernay</surname> <given-names>F.</given-names></name></person-group> (<year>2007</year>). <article-title>A variational method for scene flow estimation from stereo sequences</article-title>, in <source>International Conference on Computer Vision</source> (<publisher-loc>New York, NY</publisher-loc>: <publisher-name>Springer; IEEE</publisher-name>), <fpage>1</fpage>&#x02013;<lpage>7</lpage>. <pub-id pub-id-type="doi">10.1109/iccv.2007.4409000</pub-id></citation>
</ref>
<ref id="B15">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Isard</surname> <given-names>M.</given-names></name> <name><surname>MacCormick</surname> <given-names>J.</given-names></name></person-group> (<year>2006</year>). <article-title>Dense motion and disparity estimation via loopy belief propagation</article-title>, in <source>Proceedings of the 7th Asian conference on Computer Vision - Volume Part II, ACCV&#x00027;06</source> (<publisher-loc>Berlin; Heidelberg</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>), <fpage>32</fpage>&#x02013;<lpage>41</lpage>. <pub-id pub-id-type="doi">10.1007/11612704_4</pub-id></citation>
</ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Khoshelham</surname> <given-names>K.</given-names></name> <name><surname>Elberink</surname> <given-names>S. O.</given-names></name></person-group> (<year>2012</year>). <article-title>Accuracy and resolution of kinect depth data for indoor mapping applications</article-title>. <source>Sensors</source> <volume>12</volume>, <fpage>1437</fpage>&#x02013;<lpage>1454</lpage>. <pub-id pub-id-type="doi">10.3390/s120201437</pub-id><pub-id pub-id-type="pmid">22438718</pub-id></citation>
</ref>
<ref id="B17">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lichtsteiner</surname> <given-names>P.</given-names></name> <name><surname>Posch</surname> <given-names>C.</given-names></name> <name><surname>Delbruck</surname> <given-names>T.</given-names></name></person-group> (<year>2008</year>). <article-title>A 128 &#x000D7; 128 120 DB 15 &#x003BC;s latency asynchronous temporal contrast vision sensor</article-title>. <source>IEEE J. Solid State Circ.</source> <volume>43</volume>, <fpage>566</fpage>&#x02013;<lpage>576</lpage>. <pub-id pub-id-type="doi">10.1109/JSSC.2007.914337</pub-id></citation>
</ref>
<ref id="B18">
<citation citation-type="thesis"><person-group person-group-type="author"><name><surname>Mahowald</surname> <given-names>M.</given-names></name></person-group> (<year>1992</year>). <source>VLSI Analogs of Neuronal Visual Processing: A Synthesis of Form and Function</source>. Ph.D. thesis, <publisher-name>California Institut of Technology</publisher-name>.</citation>
</ref>
<ref id="B19">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Maybank</surname> <given-names>S.</given-names></name></person-group> (<year>1993</year>). <source>Theory of Reconstruction from Image Motion</source>. Springer series in information sciences. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>. <pub-id pub-id-type="doi">10.1007/978-3-642-77557-4</pub-id></citation>
</ref>
<ref id="B20">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Min</surname> <given-names>D.</given-names></name> <name><surname>Sohn</surname> <given-names>K.</given-names></name></person-group> (<year>2006</year>). <article-title>Edge-preserving simultaneous joint motion-disparity estimation</article-title>, in <source>Proceedings of the 18th International Conference on Pattern Recognition - Volume 02, ICPR &#x00027;06</source> (<publisher-loc>Washington, DC</publisher-loc>: <publisher-name>IEEE Computer Society</publisher-name>), <fpage>74</fpage>&#x02013;<lpage>77</lpage>.</citation>
</ref>
<ref id="B21">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Otte</surname> <given-names>M.</given-names></name> <name><surname>Nagel</surname> <given-names>H.-H.</given-names></name></person-group> (<year>1994</year>). <article-title>Optical flow estimation: advances and comparisons</article-title>, in <source>Computer Vision &#x02014; ECCV &#x00027;94, Volume 800 of Lecture Notes in Computer Science</source>, ed <person-group person-group-type="editor"><name><surname>Eklundh</surname> <given-names>J.-O.</given-names></name></person-group> (<publisher-loc>Berlin; Heidelberg</publisher-loc>: <publisher-name>Springer</publisher-name>), <fpage>49</fpage>&#x02013;<lpage>60</lpage>.</citation>
</ref>
<ref id="B22">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Park</surname> <given-names>J.</given-names></name> <name><surname>Oh</surname> <given-names>T.</given-names></name> <name><surname>Jung</surname> <given-names>J.</given-names></name> <name><surname>Tai</surname> <given-names>Y.</given-names></name> <name><surname>Kweon</surname> <given-names>I.</given-names></name></person-group> (<year>2012</year>). <article-title>A tensor voting approach for multi-view 3D scene flow estimation and refinement</article-title>, in <source>European Converence on Computer Vision</source> (<publisher-loc>Florence</publisher-loc>).</citation>
</ref>
<ref id="B23">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Popham</surname> <given-names>T.</given-names></name> <name><surname>Bahalerao</surname> <given-names>A.</given-names></name> <name><surname>Wilson</surname> <given-names>R.</given-names></name></person-group> (<year>2010</year>). <article-title>Multi-frame scene-flow estimation using a patch model and smooth motion prior</article-title>, in <source>Proceedings of the BMVC 2010 UK Postgraduate Workshop</source> (<publisher-loc>Aberystwyth</publisher-loc>).</citation>
</ref>
<ref id="B24">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Posch</surname> <given-names>C.</given-names></name> <name><surname>Matolin</surname> <given-names>D.</given-names></name> <name><surname>Wohlgenannt</surname> <given-names>R.</given-names></name></person-group> (<year>2011</year>). <article-title>A QVGA 143 dB dynamic range frame-free PWM image sensor with lossless pixel-level video compression and time-domain CDS</article-title>. <source>IEEE J. Solid State Circ.</source> <volume>46</volume>, <fpage>259</fpage>&#x02013;<lpage>275</lpage>. <pub-id pub-id-type="doi">10.1109/JSSC.2010.2085952</pub-id></citation>
</ref>
<ref id="B25">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rogister</surname> <given-names>P.</given-names></name> <name><surname>Benosman</surname> <given-names>R.</given-names></name> <name><surname>Ieng</surname> <given-names>S.-H.</given-names></name> <name><surname>Lichtsteiner</surname> <given-names>P.</given-names></name> <name><surname>Delbr&#x000FC;ck</surname> <given-names>T.</given-names></name></person-group> (<year>2012</year>). <article-title>Asynchronous event-based binocular stereo matching</article-title>. <source>IEEE Trans. Neural Netw. Learning Syst.</source> <volume>23</volume>, <fpage>347</fpage>&#x02013;<lpage>353</lpage>. <pub-id pub-id-type="doi">10.1109/TNNLS.2011.2180025</pub-id><pub-id pub-id-type="pmid">24808513</pub-id></citation>
</ref>
<ref id="B26">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Sommerville</surname> <given-names>D.</given-names></name></person-group> (<year>1934</year>). <source>Analytic Geometry of Three Dimensions</source>. <publisher-loc>Cambridge</publisher-loc>: <publisher-name>Cambridge University Press</publisher-name>.</citation>
</ref>
<ref id="B27">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Starck</surname> <given-names>J.</given-names></name> <name><surname>Hilton</surname> <given-names>A.</given-names></name></person-group> (<year>2007</year>). <article-title>Correspondence labelling for wide-timeframe free-form surface matching</article-title>, in <source>International Conference on Computer Vision</source> (<publisher-loc>Rio de Janeiro</publisher-loc>). <pub-id pub-id-type="doi">10.1109/iccv.2007.4409108</pub-id></citation>
</ref>
<ref id="B28">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Tomasi</surname> <given-names>C.</given-names></name> <name><surname>Zhang</surname> <given-names>J.</given-names></name></person-group> (<year>1995</year>). <article-title>Is structure-from-motion worth pursuing?</article-title>, in <source>Proceedings of the Seventh International Symposium on Robotics Research</source>. (<publisher-name>Springer</publisher-name>: <publisher-loc>London</publisher-loc>).</citation>
</ref>
<ref id="B29">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Varanasi</surname> <given-names>K.</given-names></name> <name><surname>Zaharescu</surname> <given-names>A.</given-names></name> <name><surname>Boyer</surname> <given-names>E.</given-names></name> <name><surname>Horaud</surname> <given-names>R.</given-names></name></person-group> (<year>2008</year>). <article-title>Temporal surface tracking using mesh evolution</article-title>, in <source>European Conference on Computer Vision</source> (<publisher-loc>Marseille</publisher-loc>).</citation>
</ref>
<ref id="B30">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Vedula</surname> <given-names>S.</given-names></name> <name><surname>Rander</surname> <given-names>P.</given-names></name> <name><surname>Collins</surname> <given-names>R.</given-names></name> <name><surname>Kanade</surname> <given-names>T.</given-names></name></person-group> (<year>1999</year>). <article-title>Three-dimensional scene flow</article-title>, in <source>International Conference on Computer Vision</source>, <volume>Vol. 27-3</volume>, (<publisher-loc>Toronto, ON</publisher-loc>) <fpage>475</fpage>&#x02013;<lpage>480</lpage>. <pub-id pub-id-type="doi">10.1109/iccv.1999.790293</pub-id></citation>
</ref>
<ref id="B31">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wedel</surname> <given-names>A.</given-names></name> <name><surname>Brox</surname> <given-names>T.</given-names></name> <name><surname>Vaudrey</surname> <given-names>T.</given-names></name> <name><surname>Rabe</surname> <given-names>C.</given-names></name> <name><surname>Franke</surname> <given-names>U.</given-names></name> <name><surname>Cremers</surname> <given-names>D.</given-names></name></person-group> (<year>2011</year>). <article-title>Stereoscopic scene flow computation for 3D motion understanding</article-title>. <source>Int. J. Comput. Vision</source> <volume>95</volume>, <fpage>29</fpage>&#x02013;<lpage>51</lpage>. <pub-id pub-id-type="doi">10.1007/s11263-010-0404-0</pub-id></citation>
</ref>
<ref id="B32">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zeng</surname> <given-names>Y.</given-names></name> <name><surname>Wang</surname> <given-names>C.</given-names></name> <name><surname>Wang</surname> <given-names>Y.</given-names></name></person-group> (<year>2010</year>). <article-title>Dense non-rigid surface registration using high-order graph matching</article-title>, in <source>International Conference on Computer Vision</source> (<publisher-loc>San Francisco, CA</publisher-loc>).</citation>
</ref>
<ref id="B33">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Zhang</surname> <given-names>Y.</given-names></name> <name><surname>Kambhamettu</surname> <given-names>C.</given-names></name> <name><surname>Kambhamettu</surname> <given-names>R.</given-names></name></person-group> (<year>2001</year>). <article-title>On 3D scene flow and structure estimation</article-title>, in <source>IEEE Conference on Computer Vision and Pattern Recognition</source> (<publisher-loc>Kauai</publisher-loc>), <fpage>778</fpage>&#x02013;<lpage>785</lpage>. <pub-id pub-id-type="doi">10.1109/cvpr.2001.991044</pub-id></citation>
</ref>
</ref-list>
</back>
</article>