<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s100807681</article-id>
<article-id pub-id-type="publisher-id">sensors-10-07681</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Mobile Calibration Based on Laser Metrology and Approximation Networks</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Muñoz-Rodriguez</surname><given-names>J. Apolinar</given-names></name></contrib>
<aff id="af1-sensors-10-07681">Centro de Investigaciones en Optica, Loma del Bosque 115, Col. Lomas del campestre, C.P. 37150, Leon, Guanajuato, Mexico; E-Mail: <email>munoza@foton.cio.mx</email>; Tel.: +477-441-4200; Fax: +477-441-4209.</aff></contrib-group>
<pub-date pub-type="collection">
<year>2010</year></pub-date>
<pub-date pub-type="epub">
<day>17</day>
<month>8</month>
<year>2010</year></pub-date>
<volume>10</volume>
<issue>8</issue>
<fpage>7681</fpage>
<lpage>7704</lpage>
<history>
<date date-type="received">
<day>30</day>
<month>6</month>
<year>2010</year></date>
<date date-type="rev-recd">
<day>20</day>
<month>7</month>
<year>2010</year></date>
<date date-type="accepted">
<day>5</day>
<month>8</month>
<year>2010</year></date></history>
<permissions>
<copyright-statement>© 2010 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2010</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>A mobile calibration technique for three-dimensional vision is presented. In this method, vision parameters are computed automatically by approximation networks built based on the position of a camera and image processing of a laser line. The networks also perform three-dimensional visualization. In the proposed system, the setup geometry can be modified online, whereby an online re-calibration is performed based on data provided by the network and the required modifications of extrinsic and intrinsic parameters are thus determined, overcoming any calibration limitations caused by the modification procedure. The mobile calibration also avoids procedures involving references, which are used in traditional online re-calibration methods. The proposed mobile calibration thus improves the accuracy and performance of the three-dimensional vision because online data of calibrated references are not passed on to the vision system. This work represents a contribution to the field of online re-calibration, as verified by a comparison with the results based on lighting methods, which are calibrated and re-calibrated via perspective projection. Processing time is also studied.</p></abstract>
<kwd-group>
<kwd>three-dimensional vision</kwd>
<kwd>laser line projection</kwd>
<kwd>mobile calibration</kwd>
<kwd>Bezier networks</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Nowadays in order to perform three-dimensional vision various lighting methods are used, such as fringe pattern projection, laser line and point projection, all of which require some form of calibration. Calibration for lighting methods is performed via perspective projection models [<xref ref-type="bibr" rid="b1-sensors-10-07681">1</xref>]. In fringe projection, the calibration is performed based on calibrated references via perspective projection [<xref ref-type="bibr" rid="b2-sensors-10-07681">2</xref>,<xref ref-type="bibr" rid="b3-sensors-10-07681">3</xref>]. In this method, the three-dimensional vision is achieved by a phase detection algorithm. In line and point projection, the calibration is also achieved by perspective projection and the use of calibrated references [<xref ref-type="bibr" rid="b4-sensors-10-07681">4</xref>,<xref ref-type="bibr" rid="b5-sensors-10-07681">5</xref>], but here, the three-dimensional vision is performed by laser triangulation.</p>
<p>In the calibration and re-calibration of lighting methods, several methods based on perspective projection have been developed. One calibration method is performed by projecting a laser line on black and white rectangles [<xref ref-type="bibr" rid="b6-sensors-10-07681">6</xref>,<xref ref-type="bibr" rid="b7-sensors-10-07681">7</xref>]. The perspective projection is determined by matching the line to the known rectangles. A stereo calibration determines the perspective projection by matching a line of a grating and the use of epipolar geometry [<xref ref-type="bibr" rid="b8-sensors-10-07681">8</xref>]. A paint brush method performs the calibration by projecting a line on two reference planes [<xref ref-type="bibr" rid="b9-sensors-10-07681">9</xref>]. By detecting the line on these references, the perspective projection is determined via least squares. A lighting method performs the calibration based on the coordinates of a laser line [<xref ref-type="bibr" rid="b10-sensors-10-07681">10</xref>]. Here, perspective projection is determined by transforming the laser line coordinates to real world coordinates. A zigzag method performs the calibration by detecting a laser line on zigzag references [<xref ref-type="bibr" rid="b11-sensors-10-07681">11</xref>,<xref ref-type="bibr" rid="b12-sensors-10-07681">12</xref>]. Based on these references, the perspective projection is obtained via a transformation matrix. A vision sensor performs the calibration by projecting a laser line on a reference plane [<xref ref-type="bibr" rid="b13-sensors-10-07681">13</xref>–<xref ref-type="bibr" rid="b17-sensors-10-07681">17</xref>]. In this case, the perspective projection is determined by detecting the line on this reference plane. A structure light system performs the calibration by projecting a pattern of spots on a reference plane [<xref ref-type="bibr" rid="b18-sensors-10-07681">18</xref>,<xref ref-type="bibr" rid="b19-sensors-10-07681">19</xref>]. The perspective projection is determined by detecting the spots on this plane. Another type of calibration is performed by projecting a spots pattern and a fringe pattern [<xref ref-type="bibr" rid="b20-sensors-10-07681">20</xref>]. In this method, the perspective projection is determined by detecting the point-to-line correspondence on a plane. Re-calibration methods have also been implemented to change the vision parameters when the base setup is modified. One such re-calibration method is performed by detecting a pattern of lines on a reference plane to determine the perspective projection [<xref ref-type="bibr" rid="b21-sensors-10-07681">21</xref>]. Self re-calibration methods have been implemented via plane-based homography [<xref ref-type="bibr" rid="b22-sensors-10-07681">22</xref>–<xref ref-type="bibr" rid="b24-sensors-10-07681">24</xref>], in which the perspective projection is determined by matching the light pattern on a reference plane.</p>
<p>Online re-calibration methods have also been developed to change the vision parameters during vision task [<xref ref-type="bibr" rid="b25-sensors-10-07681">25</xref>–<xref ref-type="bibr" rid="b27-sensors-10-07681">27</xref>]. In these methods, the perspective projection is determined by matching the light pattern on a reference plane. In the above mentioned techniques, the vision system does not provide the data to perform the re-calibration. Typically, these online re-calibration techniques are performed by detecting a light pattern on a reference. However, in several applications such references do not exist during the vision task, so the mentioned techniques are limited by the availability of light pattern references. To overcome these limitations, a re-calibration method without online references is necessary to facilitate online modifications of the setup geometry.</p>
<p>The proposed mobile calibration is performed by means of a Bezier network, which provides the data needed for online re-calibration, and laser line imaging. In this procedure, the camera orientation, focal distance, setup distances, pixel scale and image centre are determined. In addition three-dimensional vision is performed by the network via line shifting, whereby the network retrieves the surface depth and provides the data for the re-calibration when the setup geometry is modified online, the extrinsic and intrinsic parameters are thus re-calibrated online and the need for references is avoided. Consequently, the mobile calibration improves the performance and the accuracy of the online re-calibration. All this constitutes a contribution to the field of re-calibration of lighting methods. This contribution is elucidated by an evaluation based on the calibration and re-calibration of lighting methods. This evaluation is based on the root mean squared of error using a contact method as reference. Finally, the processing time to produce three-dimensional visualization is also determined.</p></sec>
<sec>
<label>2.</label>
<title>Basic Theory</title>
<p>In lighting methods calibration is performed based on perspective projection [<xref ref-type="bibr" rid="b6-sensors-10-07681">6</xref>–<xref ref-type="bibr" rid="b24-sensors-10-07681">24</xref>]. This procedure is carried out by means of calibrated references and a transformation matrix. Typically, the perspective projection model is determined based in the geometry shown in <xref ref-type="fig" rid="f1-sensors-10-07681">Figure 1</xref>. In this geometry, a point <italic>P<sub>w</sub></italic> = (<italic>x<sub>w</sub></italic>, <italic>y<sub>w</sub></italic>, <italic>z<sub>w</sub></italic>) is transformed to the camera coordinates <italic>P<sub>c</sub></italic> = (<italic>x<sub>c</sub></italic>, <italic>y<sub>c</sub></italic>, <italic>z<sub>c</sub></italic>) by <italic>P<sub>c</sub></italic> = <bold>R</bold>·<italic>Pw</italic> + <bold><italic>t</italic></bold>. Where <bold><italic>R</italic></bold> is the rotation matrix and <bold><italic>t</italic></bold> is the translation vector. Here, the transformation <italic>Pc</italic> to the image coordinates (<italic>X<sub>u</sub></italic>, <italic>Y<sub>u</sub></italic>) is given by <italic>X<sub>u</sub></italic> = <italic>fx<sub>c</sub></italic>/<italic>z<sub>c</sub></italic> and <italic>Y<sub>u</sub></italic> = <italic>fy<sub>c</sub></italic>/<italic>z<sub>c</sub></italic> Considering radial distortion, the image coordinates are represented by <italic>X<sub>d</sub></italic> + <italic>D<sub>x</sub></italic> = <italic>X<sub>u</sub></italic> and <italic>Y<sub>d</sub></italic> + <italic>D<sub>y</sub></italic> = <italic>Y<sub>u</sub></italic>, where <italic>D<sub>x</sub></italic> = <italic>X<sub>d</sub></italic> (<italic>δ</italic><sub>1</sub><italic>r</italic><sup>2</sup> + <italic>δ</italic><sub>2</sub><italic>r</italic><sup>4</sup> + …), <italic>D<sub>y</sub></italic> = <italic>Y<sub>d</sub></italic> (<italic>δ</italic><sub>1</sub><italic>r</italic><sup>2</sup> + <italic>δ</italic><sub>2</sub><italic>r</italic><sup>4</sup> + …) and <italic>r</italic> = (<italic>X<sub>d</sub></italic><sup>2</sup> + <italic>Y<sub>d</sub></italic><sup>2</sup>)<sup>1/2</sup>. In these expressions, <italic>X<sub>d</sub></italic> and <italic>Yd</italic> are the distorted coordinates. The pixel coordinates are also converted into real coordinates by means of a scaling factor <italic>η</italic>. Thus, the parameters to be calibrated are the matrix <bold><italic>R</italic></bold>, the vector <bold><italic>t</italic></bold>, the focal length <italic>f</italic>, the distortion coefficient <italic>δ<sub>i</sub></italic>, the image center (<italic>c<sub>x</sub></italic>, <italic>c<sub>y</sub></italic>) and the scaling factor <italic>η</italic>. This procedure is carried out by detecting calibrated references on a reference plane and use of a transformation matrix [<xref ref-type="bibr" rid="b6-sensors-10-07681">6</xref>–<xref ref-type="bibr" rid="b27-sensors-10-07681">27</xref>]. Then, the calibration data are passed to the vision system to perform three-dimensional visualization.</p>
<p>In several applications, the setup geometry is modified online to achieve good sensitivity and to avoid occlusions. In this case, a re-calibration is necessary for each modification [<xref ref-type="bibr" rid="b18-sensors-10-07681">18</xref>,<xref ref-type="bibr" rid="b22-sensors-10-07681">22</xref>]. In perspective projection, the translation vector <bold><italic>t</italic></bold> is the position vector from the <italic>O<sub>w</sub></italic> to <italic>O<sub>c</sub></italic>. This vector has components in the <italic>x</italic>-, <italic>y</italic>- and <italic>z</italic>-axes from the world coordinates <italic>O<sub>w</sub></italic> to the camera coordinates <italic>O<sub>c</sub></italic>. The distances of these components are determined in the initial calibration, but the components of vector <bold><italic>t</italic></bold> are modified when the camera is moved. In this case, these components are re-calibrated via calibrated references to perform the transformation from <italic>P<sub>w</sub></italic> to <italic>P<sub>c</sub></italic> [<xref ref-type="bibr" rid="b23-sensors-10-07681">23</xref>]. The transformation <italic>P<sub>c</sub></italic> = <bold>R</bold>·<italic>Pw</italic> + <bold><italic>t</italic></bold> to the coordinates (<italic>X<sub>u</sub></italic>, <italic>Y<sub>u</sub></italic>) should also be recomputed. However, in several applications calibrated references do not exist during the three-dimensional vision task, so established online re-calibration methods are limited by the availability of known references. To overcome these limitations, a re-calibration method without online references should be implemented.</p>
<p>In the proposed mobile calibration, a Bezier network provides the data to perform the online re-calibration and three-dimensional visualization based on a mobile setup and image processing of a laser line. The mobile setup to perform the three-dimensional vision is shown in <xref ref-type="fig" rid="f2-sensors-10-07681">Figure 2</xref>. This arrangement includes an electromechanical device, a CCD camera, a laser line projector and a computer to process the data. In this setup, the laser line is projected perpendicularly on the surface and the CCD image plane is aligned parallel to the reference plane. In this geometry, the laser line reflected to the CCD camera forms an angle that varies according to the position of the reference plane in the <italic>z</italic>-axis. The orientation of the CCD camera and the laser line orientation are fixed. The alignment of the camera and laser line are described in Section 3. The electromechanical device moves the laser and the camera in the <italic>x</italic>-axis, <italic>y</italic>-axis and <italic>z</italic>-axis. In addition the camera can also be moved toward the laser diode along in the <italic>x</italic>-axis.</p>
<p>In this system, a network computes the surface depth based on the line position. The geometry of this relationship is shown in <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(a)</xref>. In this geometry, the <italic>x</italic>-axis and <italic>y</italic>-axis are located on the reference plane and the <italic>z</italic>-axis is located perpendicularly to the reference plane. The focal length <italic>f</italic> is the distance between the lens and the image plane. The image center is indicated by <italic>x<sub>c</sub></italic> on the <italic>x</italic>-axis. The distance between the laser line and the optical axis is indicated by ℓ<italic><sub>a</sub></italic>. The surface depth is indicated by <italic>h<sub>i</sub></italic> and <italic>z<sub>i</sub></italic> is the distance between the lens and the object surface. The distance from the lens to the reference plane is defined by <italic>D</italic> = <italic>h<sub>i</sub></italic> + <italic>z<sub>i</sub></italic>. In the proposed setup, the distance ℓ<italic><sub>a</sub></italic> and <italic>D</italic> can be modified during the visualization procedure. The laser line coordinates are indicated in the <italic>y</italic>-axis based on the geometry shown in <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(b)</xref>. In this geometry, a point <italic>q<sub>i</sub></italic> of the laser line in the <italic>y</italic>-axis is indicated by <italic>y<sub>i</sub></italic> in the image plane. Thus, the laser line coordinates are determined by <italic>q<sub>i</sub></italic> = <italic>D η</italic> (<italic>y<sub>c</sub></italic> − <italic>y<sub>i</sub></italic>)/<italic>η f</italic>. In this expression <italic>y<sub>i</sub></italic> is the image row and the parameters <italic>D</italic>, <italic>f</italic>, <italic>η</italic>, <italic>y<sub>c</sub></italic> are deduced during the mobile calibration, which is described in Section 4. In perspective projection, the surface depth is computed by <italic>z<sub>i</sub></italic> = (<italic>f</italic>·ℓ<italic><sub>a</sub></italic><italic>)/</italic>(<italic>x<sub>c</sub></italic> − <italic>x<sub>i</sub></italic>) [<xref ref-type="bibr" rid="b1-sensors-10-07681">1</xref>], based on the calibrated <italic>f</italic> and ℓ<italic><sub>a</sub></italic>. In the proposed model, the surface depth is computed based on the line shifting in the image plane. When the laser line is projected on a surface <italic>h<sub>i</sub></italic>, the line position is moved from <italic>x<sub>A</sub></italic> to <italic>x<sub>i</sub></italic> in the image plane. In this case, the line shifting <italic>s<sub>i</sub></italic> is directly proportional to the surface depth <italic>h<sub>i</sub></italic>. This line shifting is described by following expression:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:math></disp-formula></p>
<p>To compute the shift, the line position <italic>x<sub>A</sub></italic> and <italic>x<sub>i</sub></italic> are detected in the image. To carry this out, the intensity maximum is measured in each row of the image. Then, first and second derivatives are computed to obtain the maximum. To detect the maximum, the pixels are approximated to a continuous function by means of Bezier curves [<xref ref-type="bibr" rid="b28-sensors-10-07681">28</xref>]. In this case, the pixels are represented by (<italic>x</italic><sub>0</sub><italic>, I</italic><sub>0</sub>), (<italic>x</italic><sub>1</sub>, <italic>I</italic><sub>1</sub>),......, (<italic>x<sub>n</sub>, I<sub>n</sub></italic>), where <italic>x<sub>i</sub></italic> is the pixel position, <italic>I<sub>i</sub></italic> is the pixel intensity and <italic>n</italic> is the pixel number. The Bezier curves are described by:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable columnalign="left">
<mml:mtr columnalign="left">
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>i</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msup>
<mml:msup>
<mml:mi>u</mml:mi>
<mml:mi>i</mml:mi></mml:msup>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow/></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>i</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>!</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>!</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>i</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>!</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd columnalign="left">
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>By applying the definition of <xref ref-type="disp-formula" rid="FD2">Equation (2)</xref>, two equations are obtained, one for <italic>x</italic> and one for <italic>I</italic>:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mo mathvariant="italic" stretchy="false">(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></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:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>n</mml:mi></mml:msup>
<mml:msup>
<mml:mi>u</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msup>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</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:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msup>
<mml:mi>u</mml:mi>
<mml:mi>   </mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn></mml:msup>
<mml:msup>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi></mml:msup>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo></mml:mrow></mml:msub>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:math></disp-formula>
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mo mathvariant="italic" stretchy="false">(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo mathvariant="italic" stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></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:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>n</mml:mi></mml:msup>
<mml:msup>
<mml:mi>u</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msup>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</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:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msup>
<mml:mi>u</mml:mi>
<mml:mi>   </mml:mi>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>+</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn></mml:msup>
<mml:msup>
<mml:mi>u</mml:mi>
<mml:mi>n</mml:mi></mml:msup>
<mml:msub>
<mml:mi>I</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>,</mml:mo></mml:mrow></mml:msub>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:math></disp-formula></p>
<p><xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> represents the pixel position and <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref> represents the pixel intensity. Based on these equations, a continuous function is fitted from the pixels shown in <xref ref-type="fig" rid="f4-sensors-10-07681">Figure 4</xref>. To carry this out, the positions <italic>x<sub>0</sub></italic>, <italic>x<sub>1</sub></italic>, <italic>x<sub>2</sub></italic>,…, <italic>x<sub>n</sub></italic>, are substituted into <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> and the intensities <italic>I<sub>0</sub></italic>, <italic>I<sub>1</sub></italic>, <italic>I<sub>2</sub></italic>,..,<italic>I<sub>n</sub></italic>, are substituted into <xref ref-type="disp-formula" rid="FD4">Equation (4)</xref>. These two equations are evaluated in the interval 0 ≤ <italic>u</italic> ≤ 1 to fit the curve shown in <xref ref-type="fig" rid="f4-sensors-10-07681">Figure 4</xref>. The result of this curve is a concave function. Therefore, the second derivative <italic>I’</italic>(<italic>u</italic>) is positive and the peak is a global maximum. In this manner, the maximum is computed based on the first derivative <italic>I’</italic>(<italic>u</italic>) = 0 [<xref ref-type="bibr" rid="b29-sensors-10-07681">29</xref>]. To find the derivative <italic>I’</italic>(<italic>u</italic>) = 0, the bisection method is applied [<xref ref-type="bibr" rid="b29-sensors-10-07681">29</xref>]. The Bezier function is defined in the interval 0 ≤ <italic>u</italic> ≤ 1, so the initial value is defined by <italic>u<sub>i</sub></italic> = 0 and the final value is indicated by <italic>u<sub>f</sub></italic> = 1. Then, the middle point is computed by <italic>u</italic>* = (<italic>u<sub>i</sub></italic> + <italic>u<sub>f</sub></italic>)/2 to find a value <italic>u</italic> that converges to the expression <italic>I</italic>′(<italic>u</italic>) = 0. Next the first derivative <italic>I</italic>′(<italic>u</italic>) is evaluated in middle point <italic>u</italic>*. If the derivative <italic>I’</italic>(<italic>u</italic> = <italic>u</italic>*) is positive, then <italic>u<sub>i</sub></italic> = <italic>u</italic>*. If the derivative <italic>I’</italic>(<italic>u</italic> = <italic>u</italic>*) is negative, then <italic>u<sub>f</sub></italic> = <italic>u</italic>*. The next middle point <italic>u</italic>* is obtained from the last pair of values <italic>u<sub>i</sub></italic> and <italic>u<sub>f</sub></italic>. These steps are repeated until <italic>I</italic>′(<italic>u</italic>) = 0 is found based on some set tolerance value. The value <italic>u</italic> = <italic>u</italic>* where <italic>I</italic>′(<italic>u</italic>) = 0 is substituted into <xref ref-type="disp-formula" rid="FD3">Equation (3)</xref> to determine the position of the intensity maximum <italic>x</italic>(<italic>u</italic>). The result is <italic>x</italic>(<italic>u</italic>) = 34.274 and the laser line position is <italic>x<sub>i</sub></italic> = 34.274 pixels, as shown in <xref ref-type="fig" rid="f4-sensors-10-07681">Figure 4</xref>. Thus, the laser line position is detected. The Bezier network to perform the three-dimensional vision and calibration is described in Section 3.</p></sec>
<sec>
<label>3.</label>
<title>Network Structure for Depth Contouring</title>
<p>The three-dimensional vision is performed by a Bezier network based on the line shifting. This network is built based on an image plane parallel to the reference plane in the <italic>x</italic>-axis and <italic>y</italic>-axis. Based on the geometry of <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(a)</xref>, the laser line is perpendicular to the reference plane in the <italic>x</italic>-axis. In this case, the line position along the <italic>x</italic>-axis is constant for any surface depth <italic>h<sub>i</sub></italic>. By means of this criterion, the laser line is aligned perpendicularly to the <italic>x</italic>-axis. To carry this out, the laser line is projected on a peak reference along the <italic>y</italic>-axis. <xref ref-type="fig" rid="f5-sensors-10-07681">Figure 5(a)</xref> shows the laser line aligned in the <italic>y</italic>-axis on the peak reference. Then, the reference plane is moved in the <italic>z</italic>-axis, as shown in <xref ref-type="fig" rid="f5-sensors-10-07681">Figure 5(b)</xref>. By rotating the laser diode in 0.0896 degree steps, the laser line is positioned in the reference for any depth <italic>h<sub>i</sub></italic> of the reference plane. By image processing, the reference position and the line position are detected in each displacement of depth <italic>h<sub>i</sub></italic>. In this case, the line position is the same in the <italic>x</italic>-axis for any position of the reference plane. Thus, a perpendicular laser line to the reference plane in the <italic>x</italic>-axis is achieved. Now, the image plane is aligned parallel to the reference plane in the <italic>x</italic>-axis. Based on the setup geometry of <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(a)</xref>, the term (<italic>k<sub>i</sub></italic>/<italic>h<sub>i</sub></italic>) = [<italic>ℓ<sub>a</sub></italic>/(<italic>D</italic> − <italic>h<sub>i</sub></italic>)] = [(<italic>ηx<sub>c</sub></italic> − <italic>ηx<sub>i</sub></italic>)/<italic>η f</italic>] is obtained. In this term, <italic>η</italic> is the scale factor in millimeters, <italic>f</italic> is in pixels and (<italic>x<sub>c</sub></italic> − <italic>x<sub>i</sub></italic>) = <italic>s<sub>i</sub></italic> + (<italic>x<sub>c</sub></italic> − <italic>x<sub>A</sub></italic>). Thus, the following expression for the line shifting is obtained:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mi>f</mml:mi></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mi>f</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>In <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref> <italic>f</italic>, <italic>x</italic><sub>c</sub>, and <italic>x<sub>A</sub></italic> are constants. In this case, a linear <italic>h<sub>i</sub></italic> produces a linear <italic>s<sub>i</sub></italic>. Conversely, a linear <italic>s<sub>i</sub></italic> produces a linear <italic>k<sub>i</sub></italic>. Therefore d<italic>k</italic>/d<italic>s</italic>, the derivative of <italic>k<sub>i</sub></italic> with respect to <italic>s<sub>i</sub></italic>, is a constant. Another camera orientation is an optical axis not perpendicular to the reference plane. In this case, a linear <italic>s<sub>i</sub></italic> does not produce a linear <italic>k<sub>i</sub></italic> and the derivative d<italic>k</italic>/d<italic>s</italic> is not a constant.</p>
<p>The camera orientation along the <italic>y</italic>-axis is performed based on the geometry of <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(b)</xref>. In this geometry, a line pattern is moved in steps <italic>y<sub>i</sub></italic> in the image plane in the <italic>y</italic>-axis based on depth <italic>h<sub>i</sub></italic>. In this geometry, the optical axis is perpendicular to the reference plane and the term (<italic>q<sub>i</sub></italic>/<italic>h<sub>i</sub></italic>) = [<italic>ℓ<sub>b</sub></italic>/(<italic>D</italic> − <italic>h<sub>i</sub></italic>)] = [<italic>η</italic> (<italic>y<sub>c</sub></italic> − <italic>y<sub>i</sub></italic>)/<italic>η f</italic>] is obtained. Here, the position of the pattern shifting is computed by <italic>t<sub>i</sub></italic> = (<italic>y<sub>0</sub></italic> − <italic>y<sub>i</sub></italic>) = (<italic>y<sub>c</sub></italic> − <italic>y<sub>i</sub></italic>) − (<italic>y<sub>c</sub></italic> − <italic>y<sub>A</sub></italic>). Thus, the following expression is obtained:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>q</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mi>f</mml:mi></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<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:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mi>f</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>In <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref> <italic>f</italic>, <italic>y</italic><sub>c</sub> and <italic>y<sub>A</sub></italic> are constant. In this case, a linear <italic>h<sub>i</sub></italic> produces a linear <italic>t<sub>i</sub></italic>. A linear <italic>t<sub>i</sub></italic> also produces a linear <italic>q<sub>i</sub></italic>, so the derivative d<italic>q</italic>/d<italic>t</italic> is a constant. In this manner, the camera orientation is defined by the d<italic>k</italic>/d<italic>s</italic> = constant and d<italic>q</italic>/d<italic>t</italic> = constant. Due to the distortion, these derivatives are not exactly a constant, but they may be considered constant. For the camera orientation in the <italic>x</italic>-axis, the reference plane is moved from <italic>h<sub>0</sub></italic> to <italic>h</italic><sub>1</sub>, <italic>h</italic><sub>2</sub>, <italic>h</italic><sub>3</sub>,…, <italic>h<sub>n</sub></italic> by means of the electromechanical device. For each depth <italic>h<sub>i</sub></italic>, the line position <italic>x<sub>i</sub></italic> is computed by the procedure described in Section 2. Then, the shifting <italic>s<sub>i</sub></italic> is computed via <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref>, the derivative d<italic>k</italic>/d<italic>s</italic> is computed and it is evaluated with respect to the derivative d<italic>k<sub>1</sub></italic>/d<italic>s</italic>. If d<italic>k</italic>/d<italic>s</italic> is bigger than d<italic>k<sub>1</sub></italic>/d<italic>s</italic> the camera is rotated to the right in steps of 0.0896 degree. Again, the reference plane is moved from <italic>h<sub>0</sub></italic> to <italic>h</italic><sub>1</sub>, <italic>h</italic><sub>2</sub>, <italic>h</italic><sub>3</sub>,…, <italic>h<sub>n</sub></italic> and the derivative is computed. If d<italic>k</italic>/d<italic>s</italic> is less than d<italic>k<sub>1</sub></italic>/d<italic>s</italic> the camera is moved in the opposite direction. The rotation to the left and right is repeated until the minimum error of derivative d<italic>k</italic>/d<italic>s</italic> respect to d<italic>k<sub>1</sub></italic>/d<italic>s</italic> is found. In this case, the derivative d<italic>k</italic>/d<italic>s</italic> is not exactly a constant, but it is close to constant. This criterion is illustrated by the derivative shown by the solid line in <xref ref-type="fig" rid="f6-sensors-10-07681">Figure 6</xref>, where the dashed line represents d<italic>k</italic>/d<italic>s</italic> of an optical axis aligned at an angle smaller than 90°. The dotted line is d<italic>k</italic>/d<italic>s</italic> of an optical axis aligned at an angle greater han 90°.</p>
<p>For the <italic>y</italic>-axis camera orientation, the d<italic>q</italic>/d<italic>t</italic> is computed. To carry this out, the position <italic>t<sub>i</sub></italic> is computed in the image plane based on <italic>h<sub>i</sub></italic>. This is done by detecting the corner of the laser line in the <italic>y</italic>-axis via edge detection. <xref ref-type="fig" rid="f7-sensors-10-07681">Figure 7(a)</xref> shows the corner position <italic>y<sub>0</sub></italic> of the line in the <italic>y</italic>-axis at the reference plane <italic>h</italic><sub>0</sub>. Then, the reference plane is moved in the <italic>z</italic>-axis and the corner is detected to obtain <italic>y<sub>1</sub></italic>. This procedure is repeated to obtain <italic>y</italic><sub>2</sub>, <italic>y</italic><sub>3</sub>,…, <italic>y<sub>n</sub></italic>. <xref ref-type="fig" rid="f7-sensors-10-07681">Figure 7(b)</xref> shows the corner position <italic>y</italic><sub>10</sub> of the line in <italic>y</italic>-axis at the reference plane <italic>h</italic><sub>10</sub>. Based on these data, <italic>t<sub>i</sub></italic> and the derivative d<italic>q</italic>/d<italic>t</italic> are computed. Then, this derivative is evaluated with respect to the derivative d<italic>q<sub>1</sub></italic>/d<italic>t</italic>. The camera is rotated in the <italic>y</italic>-axis to the right or the left in the same manner as it was rotated in the orientation in the <italic>x</italic>-axis.</p>
<p>The derivative d<italic>q</italic>/d<italic>t</italic> obtained in this procedure is not exactly a constant, but again it is close to being a constant. Therefore, the camera parallel to the reference plane is defined when the d<italic>k</italic>/d<italic>s</italic> and d<italic>q</italic>/d<italic>t</italic> are very close to a constant according to a tolerance. In this manner, the image plane has been aligned parallel to the reference plane. From here, the alignment of the laser line is achieved perpendicular to the reference plane and the camera is fixed. Based on an image plane parallel to the reference plane, the network is built. To carry this out, the data of the camera alignment <italic>h<sub>i</sub></italic> and <italic>s<sub>i</sub></italic> are used. The structure of the proposed network is shown in <xref ref-type="fig" rid="f8-sensors-10-07681">Figure 8</xref>. This network consists of an input vector, two parametric inputs, a hidden layer and an output layer. Each layer of the network is constructed as follows: the input includes the depth <italic>h<sub>i</sub></italic>, the line shifting <italic>s<sub>i</sub></italic> and the parametric values (<italic>u</italic>, <italic>v</italic>). The depth data <italic>h<sub>0</sub></italic>, <italic>h</italic><sub>1</sub>, <italic>h</italic><sub>2</sub>,…, <italic>h<sub>n</sub></italic> and the line shifting data <italic>s<sub>0</sub></italic>, <italic>s</italic><sub>1</sub>, <italic>s</italic><sub>2</sub>,…, <italic>s<sub>n</sub></italic> are obtained in the camera alignment by moving the reference plane in the z-axis. Thus, the line shifting <italic>s<sub>i</sub></italic> is directly proportional to the surface depth <italic>h<sub>i</sub></italic>. In this case, the line shifting is represented by a parametric value <italic>u</italic> by the next linear combination (LC):
<disp-formula id="FD7">
<label>(7)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mi>s</mml:mi></mml:mrow></mml:math></disp-formula>where <italic>a</italic><sub>0</sub> and <italic>a</italic><sub>1</sub> are constants to be determined. By means of two values <italic>s<sub>i</sub></italic> and its respective value <italic>u</italic>, <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref> is determined. The Bezier curves are defined in the interval 0 ≤ <italic>u</italic> ≤ 1. Therefore, <italic>u</italic> = 0 for the first line shifting and <italic>u</italic> = 1 for the last shifting <italic>s<sub>n</sub></italic>. Substituting these values in <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>, two equations with two unknown constants are obtained. Solving these equations, <italic>a</italic><sub>0</sub> and <italic>a</italic><sub>1</sub> are determined. Thus, for each shifting <italic>s<sub>i</sub></italic>, a value <italic>u</italic> is computed via <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>.</p>
<p>The coordinate <italic>y<sub>i</sub></italic> corresponds to each row of the laser line image. This coordinate is represented by a parametric value <italic>v</italic> by the following expression:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>v</mml:mi>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mi>y</mml:mi></mml:mrow></mml:math></disp-formula>where <italic>b</italic><sub>0</sub> and <italic>b</italic><sub>1</sub> are constants to be determined. Using two values <italic>y<sub>i</sub></italic> and its respective <italic>v</italic>, <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref> is determined. Bezier curves are defined in the interval 0 ≤ <italic>v</italic> ≤ 1. In this case, <italic>v</italic> = 0 for <italic>y<sub>0</sub></italic> and <italic>v</italic> = 1 for <italic>y<sub>n</sub></italic>. Substituting these two values in <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>, two equations with two unknown constants are obtained. Solving these equations, <italic>b</italic><sub>0</sub> and <italic>b</italic><sub>1</sub> are determined. Thus, for each coordinate <italic>y<sub>i</sub></italic>, a value <italic>v</italic> is computed via <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>. The hidden layer is built by a Bezier basis function, which is described by:
<disp-formula id="FD9">
<label>(9)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>ℬ</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula>where 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<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:mi>n</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>i</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msup>
<mml:mi>u</mml:mi>
<mml:mi>i</mml:mi></mml:msup>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>i</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<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:mi>m</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>j</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mi>u</mml:mi></mml:mrow>
<mml:mi>j</mml:mi></mml:msup>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>−</mml:mo>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>j</mml:mi></mml:mrow></mml:msup></mml:mrow></mml:math></inline-formula>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>n</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>i</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>!</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>!</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>i</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>!</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></inline-formula>, 
<inline-formula>
<mml:math>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mi>m</mml:mi></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi>j</mml:mi></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>!</mml:mo></mml:mrow>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>!</mml:mo>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>j</mml:mi></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>!</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:math></inline-formula>.</p>
<p>The output layer is obtained by the summation of the neurons, which are multiplied by a weight. Thus, the output response is the surface depth given by following expression:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi>ℋ</mml:mi>
<mml:mi>h</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>j</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>m</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">ij</mml:mi></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>j</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>,</mml:mo></mml:mrow></mml:mrow></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo></mml:mtd>
<mml:mtd>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo>
<mml:mo> </mml:mo></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>≤</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>≤</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula>where <italic>w<sub>ij</sub></italic> are the weights, <italic>h<sub>i</sub></italic> is the surface depth, <italic>B<sub>i</sub></italic>(<italic>u</italic>) and <italic>B<sub>j</sub></italic>(<italic>v</italic>) are the Bezier basis function represented by <xref ref-type="disp-formula" rid="FD9">Equation (9)</xref>. To construct the complete network <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>, the appropriate weights <italic>w<sub>ij</sub></italic> should be determined. To carry this out, the network is being forced to produce the correct surface depth <italic>h<sub>i</sub></italic>. This procedure is performed by an adjustment mechanism. Based on the reference data obtained in camera alignment, the initial depth <italic>h<sub>0</sub></italic> = 0 mm, the line position in the image plane is <italic>x<sub>A</sub></italic> = <italic>x</italic><sub>0</sub> and <italic>s<sub>0</sub></italic> = 0. The line position <italic>x<sub>0</sub></italic> in <italic>x</italic>-axis is shown in <xref ref-type="fig" rid="f7-sensors-10-07681">Figure 7(a)</xref>. In the camera alignment, the reference plane is moved in the <italic>z</italic>-axis in steps of 2.54 mm. Thus, <italic>h</italic><sub>10</sub> = 25.40 mm and the line position correspond to <italic>x<sub>i</sub></italic> = <italic>x</italic><sub>10</sub> which are shown in <xref ref-type="fig" rid="f7-sensors-10-07681">Figure 7(b)</xref>. Here, the shifting is determined by <italic>s</italic><sub>10</sub> = <italic>x<sub>A</sub></italic> − <italic>x<sub>i</sub></italic>. Then, the <italic>s<sub>i</sub></italic> and its coordinate <italic>y<sub>i</sub></italic> are converted to values (<italic>u</italic>, <italic>v</italic>) via <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref> and <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>, respectively. Then, the depth <italic>h<sub>i</sub></italic> and its coordinates (<italic>u</italic>, <italic>v</italic>) are substituted in <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref> to obtain an output H(<italic>u</italic>, <italic>v</italic>), thus giving the following system of equations:
<disp-formula id="FD11">
<label>(11)</label> 
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn mathvariant="italic">0</mml:mn></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">10</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">10</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd/>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mi>n</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mi>m</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">mn</mml:mi></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd/>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">10</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd/>
<mml:mtd/>
<mml:mtd/>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="normal">H</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>1</mml:mn></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">10</mml:mn></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">0</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">1</mml:mn>
<mml:mi>m</mml:mi></mml:mrow></mml:msub>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>h</mml:mi></mml:mrow>
<mml:mi>n</mml:mi></mml:msub>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>n</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>u</mml:mi>
<mml:mo>)</mml:mo></mml:mrow>
<mml:msub>
<mml:mi>B</mml:mi>
<mml:mi>m</mml:mi></mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mi>v</mml:mi>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>This linear system of <xref ref-type="disp-formula" rid="FD11">Equation (11)</xref> can be represented as:
<disp-formula id="FD12">
<label>(12)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mrow>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn mathvariant="italic">1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>⋮</mml:mo>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mo>⋮</mml:mo>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mo>⋮</mml:mo>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mi>   </mml:mi>
<mml:mn>.....</mml:mn>
<mml:mo>⋮</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">00</mml:mn></mml:msub>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">mn</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn mathvariant="italic">01</mml:mn></mml:msub>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">mn</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub>
<mml:mo>+</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">nm</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>This equation can be rewritten in matrix form as <bold><italic>β</italic> W</bold> = <bold>H</bold>. Thus, the linear system is represented by the following matrix:
<disp-formula id="FD13">
<label>(13)</label>
<mml:math display="block">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>....</mml:mn>
<mml:mi>   </mml:mi>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>0</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>....</mml:mn>
<mml:mi>   </mml:mi>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mn>1</mml:mn>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>m</mml:mi></mml:mrow></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">nm</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>0</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">nm</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">nm</mml:mi>
<mml:mo>,</mml:mo>
<mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mn>....</mml:mn>
<mml:mi>   </mml:mi>
<mml:msub>
<mml:mi>β</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">nm</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi>
<mml:mi>m</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>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>00</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mn>01</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>w</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></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:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mn>00</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mn>01</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mo>⋮</mml:mo></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>H</mml:mi>
<mml:mi mathvariant="italic">nm</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:math></disp-formula></p>
<p>The linear system <xref ref-type="disp-formula" rid="FD13">Equation (13)</xref> is solved by the Chelosky method and the weights <italic>w<sub>ij</sub></italic> are determined. In this manner, the Bezier network H(<italic>u</italic>,<italic>v</italic>) has been completed. The result of this network is a model that computes the surface depth <italic>h</italic>(<italic>x</italic>, <italic>y</italic>) via line shifting. The network is applied to the laser line shown in <xref ref-type="fig" rid="f9-sensors-10-07681">Figure 9(a)</xref> to obtain the surface depth. To carry this out, the shifting <italic>s<sub>i</sub></italic> is detected in each image row <italic>y<sub>i</sub></italic>. Then, the shifting <italic>s<sub>i</sub></italic> and its coordinate <italic>y<sub>i</sub></italic> are converted to a value (<italic>u</italic>, <italic>v</italic>), respectively. Then, these values are substituted in the network <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref> to compute the surface depth shown in <xref ref-type="fig" rid="f9-sensors-10-07681">Figure 9(b)</xref>. In this figure, the symbol “Δ” is the data provided by a coordinate measurement machine (CMM).</p>
<p>To determine the accuracy, the network data are compared with the data provided by the CMM. The accuracy is computed based on a root means squared error (<italic>rms</italic>) [<xref ref-type="bibr" rid="b30-sensors-10-07681">30</xref>] by:
<disp-formula id="FD14">
<label>(14)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi mathvariant="italic">rms</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:mfrac>
<mml:mn>1</mml:mn>
<mml:mi>n</mml:mi></mml:mfrac>
<mml:munderover>
<mml:mo>∑</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:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">ho</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi mathvariant="italic">hc</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:mrow></mml:msqrt></mml:mrow></mml:math></disp-formula>where <italic>ho<sub>i</sub></italic> is the data provided by the CMM, <italic>hc<sub>i</sub></italic> is the calculated data by the network and <italic>n</italic> is the number of data. For the data shown in <xref ref-type="fig" rid="f9-sensors-10-07681">Figure 9(b)</xref>, the error is a <italic>rms</italic> = 0.148 mm. The depth resolution is deduced by the detection of the minimum line shifting <italic>s<sub>i</sub></italic>. In this case, the network is built using the minimum and maximum <italic>s<sub>i</sub></italic> at distance ℓ<italic><sub>a</sub></italic>. For this configuration, a shifting <italic>s<sub>i</sub></italic> = 0.38 pixels is detected from the reference plane. Based on this shifting, the network computes a depth <italic>h</italic> = 0.28 mm. Thus, the small details around <italic>h</italic> = 0.28 mm can be detected and the network sensibility has been determined. The calibration of vision parameters based on the network is described in Section 4.</p></sec>
<sec>
<label>4.</label>
<title>Parameters of the Vision System</title>
<p>In the lighting methods, the calibration is performed based on perspective projection [<xref ref-type="bibr" rid="b6-sensors-10-07681">6</xref>–<xref ref-type="bibr" rid="b22-sensors-10-07681">22</xref>]. In this model, the extrinsic and intrinsic parameters are determined based on calibrated references. Thus, the matrix <bold><italic>R</italic></bold>, vector <bold><italic>t</italic></bold>, focal length <italic>f</italic>, distortion <italic>δ<sub>i</sub></italic>, image center (<italic>c<sub>x</sub></italic>, <italic>c<sub>y</sub></italic>) and the scale factor <italic>η</italic> are calibrated. Typically, these lighting systems do not provide the data needed to perform the re-calibration. Any time the setup is modified a re-calibration should be applied. This procedure provides the vision system with the ability to change the intrinsic and extrinsic parameters. This was tested when the camera position is modified. In this case, the components of vector <bold><italic>t</italic></bold> are changed and the distances from the origin of the world coordinates <italic>O<sub>w</sub></italic> to the camera coordinates <italic>O<sub>c</sub></italic> should be re-calibrated. Recently, self re-calibration and online re-calibration have been developed to change the vision parameters [<xref ref-type="bibr" rid="b22-sensors-10-07681">22</xref>–<xref ref-type="bibr" rid="b27-sensors-10-07681">27</xref>]. In these methods, the data for online re-calibration are determined by detecting a light pattern on calibrated references. This kind of re-calibration is suitable when the references exist during the vision task, but in several applications such references do not exist. In this case, the online re-calibration cannot be completed due to the lack of references and an online re-calibration without references is thus necessary to overcome this.</p>
<p>In the proposed mobile calibration, the data for online re-calibration is provided the Bezier network and laser line imaging, thus avoiding the need for pattern references. The proposed vision system can be moved in the <italic>x</italic>-, <italic>y</italic>- and <italic>z</italic>-axes. In addition the camera can be moved toward the laser line. Here, the setup geometry is modified when the camera is moved in the <italic>z</italic>-axis. The geometry is also modified when the camera is moved toward the laser line. In this case, a mobile calibration is applied to perform the online re-calibration. This procedure is performed based on the setup geometry shown in <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(a)</xref>. Here, the calibration is performed based on the camera being parallel to the reference plane. The triangulation of this geometry is described by the expression of <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref>. Considering radial distortion, the line position is defined by <italic>x<sub>A</sub></italic> = <italic>X<sub>A</sub></italic> + <italic>δx<sub>A</sub></italic> and <italic>x<sub>i</sub></italic> <italic>= X<sub>i</sub></italic> + <italic>δx<sub>i</sub></italic>, respectively, where <italic>X<sub>A</sub></italic> and <italic>X<sub>i</sub></italic> are the undistorted image coordinates and the distortion is indicated by <italic>δx<sub>A</sub></italic> and <italic>δx<sub>i</sub></italic>, respectively. Thus, the line shifting is defined by <italic>S<sub>i</sub></italic> = (<italic>x<sub>c</sub></italic> − <italic>X<sub>i</sub></italic>) − (<italic>x<sub>c</sub></italic> − <italic>X<sub>A</sub></italic>). Therefore, the projection <italic>k<sub>i</sub></italic> <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref> is rewritten as:
<disp-formula id="FD15">
<label>(15)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mi>f</mml:mi></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mi>f</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>The distortion can be described from the terms of <xref ref-type="disp-formula" rid="FD5">Equation (5)</xref> and <xref ref-type="disp-formula" rid="FD15">Equation (15)</xref> by the following expression:
<disp-formula id="FD16">
<label>(16)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mo> </mml:mo>
<mml:mi>K</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">fk</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:mi>δ</mml:mi>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">]</mml:mo></mml:mrow></mml:mfrac></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>From this equation, the distortion <italic>δx<sub>i</sub></italic> is described by:
<disp-formula id="FD17">
<label>(17)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>K</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></disp-formula></p>
<p>The distortion can be determined from the terms of the line shifting <italic>S<sub>i</sub></italic> = (<italic>x<sub>c</sub></italic> − <italic>X<sub>i</sub></italic>) − (<italic>x<sub>c</sub></italic> − <italic>X<sub>A</sub></italic>) and <italic>s<sub>i</sub></italic> = (<italic>x<sub>A</sub></italic> − <italic>x<sub>i</sub></italic>). Here, the first line shifting <italic>s<sub>1</sub></italic> is defined without distortion. In this manner, <italic>S<sub>i</sub></italic> = <italic>i</italic>* <italic>s<sub>1</sub></italic>, <italic>K<sub>i</sub></italic> = <italic>i</italic>* <italic>k</italic><sub>1</sub> and d<italic>K<sub>i</sub></italic>/d<italic>S</italic> = d<italic>k<sub>1</sub></italic>/d<italic>s</italic> for <italic>i</italic> = 1, 2,…, <italic>n</italic>. Based on these criteria, the undistorted shifting is described by the term <italic>i</italic>* <italic>s<sub>1</sub></italic> = (<italic>x<sub>c</sub></italic> − <italic>x<sub>i</sub></italic> + <italic>δx<sub>i</sub></italic>) − (<italic>x<sub>c</sub></italic> − <italic>x<sub>A</sub></italic> + <italic>δx<sub>A</sub></italic>) = (<italic>x<sub>A</sub></italic> − <italic>x<sub>i</sub></italic>) + (<italic>δx<sub>i</sub></italic> − <italic>δx<sub>A</sub></italic>). Thus, the distortion is obtained by <italic>δx<sub>i</sub></italic> = <italic>i</italic>* <italic>s<sub>1</sub></italic> − (<italic>x<sub>A</sub></italic> − <italic>x<sub>1</sub></italic>) + <italic>δx<sub>A</sub></italic>. From this expression, the first line shifting is defined without distortion. Therefore, <italic>δx<sub>A</sub></italic> = 0, <italic>δx<sub>1</sub></italic> = 0, <italic>S<sub>1</sub></italic> = <italic>s<sub>1</sub></italic> and the distortion <italic>δx<sub>1</sub></italic> = <italic>i</italic>* <italic>s<sub>1</sub></italic> − (<italic>x<sub>A</sub></italic> − <italic>x<sub>1</sub></italic>). Thus, the distortion is defined by:
<disp-formula id="FD18">
<label>(18)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mi>s</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mi>   </mml:mi>
<mml:mtext>for</mml:mtext>
<mml:mi>   </mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:math></disp-formula></p>
<p>The <italic>y</italic>-axis distortion is determined based on the setup geometry shown in <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(b)</xref>. The triangulation of this geometry is described by the expression of <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref>. Considering radial distortion, <italic>y<sub>A</sub></italic> = <italic>Y<sub>A</sub></italic> + <italic>δy<sub>A</sub></italic> and <italic>y<sub>i</sub></italic> = <italic>Y<sub>i</sub></italic> + <italic>δy<sub>i</sub></italic>, where <italic>Y<sub>A</sub></italic> and <italic>Y<sub>i</sub></italic> are the undistorted image coordinate and the distortion is indicated by <italic>δy<sub>A</sub></italic> and <italic>δy<sub>i</sub></italic>, respectively. Thus, the pattern shifting is defined by <italic>T<sub>i</sub></italic> = (<italic>y<sub>c</sub></italic> − <italic>Y<sub>A</sub></italic>) − (<italic>y<sub>c</sub></italic> − <italic>Y<sub>i</sub></italic>). In this manner, the projection <italic>q<sub>i</sub></italic> <xref ref-type="disp-formula" rid="FD6">Equation (6)</xref> is rewritten as:
<disp-formula id="FD19">
<label>(19)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mi>Q</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mi>f</mml:mi></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<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:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mi>f</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>The procedure to determine the distortion in <italic>x</italic>-axis is applied to find the distortion <italic>δy<sub>i</sub></italic>. Thus, the distortion in <italic>y</italic>-axis is defined by:
<disp-formula id="FD20">
<label>(20)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>δ</mml:mi>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>*</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mo>−</mml:mo>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mi>   </mml:mi>
<mml:mtext>for</mml:mtext>
<mml:mi>   </mml:mi>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo>,</mml:mo>
<mml:mn>3</mml:mn>
<mml:mo>,</mml:mo>
<mml:mo>…</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>n</mml:mi></mml:mrow></mml:math></disp-formula></p>
<p>In this manner, the distortion has been deduced. Based on an image plane parallel to the reference plane, the vision parameters are deduced. This procedure is carried out based on the setup geometry <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(a)</xref>, which is described by:
<disp-formula id="FD21">
<label>(21)</label>
<mml:math display="block">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>ℓ</mml:mi>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>D</mml:mi>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mi>i</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mi>f</mml:mi></mml:mfrac>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mo stretchy="false">[</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>X</mml:mi>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">]</mml:mo></mml:mrow>
<mml:mi>f</mml:mi></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>In this equation, the constants <italic>D</italic>, <italic>ℓ<sub>a</sub></italic>, <italic>f</italic>, are in millimeters, <italic>x<sub>c</sub></italic> is in pixels and <italic>η</italic> is the scale factor. To determine these parameters, <xref ref-type="disp-formula" rid="FD21">Equation (21)</xref> is rewritten as the following system of equations:
<disp-formula id="FD22">
<label>(22)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>0</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ℓ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mn>0</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ℓ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ℓ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ℓ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:msub>
<mml:mrow>
<mml:mi>ℓ</mml:mi></mml:mrow>
<mml:mi>a</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>S</mml:mi>
<mml:mn>4</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mi>D</mml:mi></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>The values <italic>h</italic><sub>0</sub>, <italic>h</italic><sub>1</sub>,…, <italic>h</italic><sub>4</sub>, are computed by the network based on <italic>s</italic><sub>0</sub>, <italic>s</italic><sub>1</sub>,…, <italic>s</italic><sub>4</sub>. The values <italic>X<sub>A</sub></italic> and <italic>S<sub>i</sub></italic> are computed using the known <italic>s<sub>i</sub></italic>, <italic>δx<sub>A</sub></italic> and <italic>δx<sub>i</sub></italic>, then these values are substituted in <xref ref-type="disp-formula" rid="FD22">Equation (22)</xref> to solve the system of equations and thus determine the constants <italic>D</italic>, <italic>ℓ<sub>a</sub></italic>, <italic>f</italic>, <italic>η</italic>, and <italic>x<sub>c</sub></italic>. The coordinate <italic>y<sub>c</sub></italic> is computed based on the geometry of <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(b)</xref>. Here, the parameters <italic>η</italic>, <italic>T<sub>i</sub></italic> = <italic>I</italic> × <italic>t<sub>1</sub></italic>, <italic>Y<sub>i</sub></italic> are known and <italic>T<sub>i</sub></italic> = <italic>η</italic>(<italic>y<sub>c</sub></italic> − <italic>Y<sub>i+1</sub></italic>) − <italic>η</italic>(<italic>y<sub>c</sub></italic> − <italic>Y<sub>1</sub></italic>). Thus, <italic>y<sub>c</sub></italic> is determined by the following system of equations:
<disp-formula id="FD23">
<label>(23)</label>
<mml:math display="block">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mn mathvariant="italic">2</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mn mathvariant="italic">2</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mn mathvariant="italic">3</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo>−</mml:mo>
<mml:mi>η</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>y</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>Y</mml:mi>
<mml:mn mathvariant="italic">1</mml:mn></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:math></disp-formula></p>
<p>The values <italic>T</italic><sub>1</sub>, <italic>T</italic><sub>2</sub>, <italic>Y<sub>1</sub></italic>, <italic>Y<sub>2</sub></italic> and <italic>Y<sub>3</sub></italic> are collected from the camera orientation in the <italic>y</italic>-axis. These values are substituted in <xref ref-type="disp-formula" rid="FD23">Equation (23)</xref> to solve the system and thus the value <italic>y<sub>c</sub></italic> is determined. The laser line coordinates are determined based on the parameters <italic>D, η</italic>, <italic>y<sub>c</sub></italic>, and <italic>f</italic>. In this case, <italic>y<sub>i</sub></italic> are the image coordinates of the laser line in the <italic>y</italic>-axis. Based on the geometry of <xref ref-type="fig" rid="f3-sensors-10-07681">Figure 3(b)</xref>, the coordinates of laser line in the <italic>y</italic>-axis are determined by the term <italic>q<sub>i</sub></italic> = <italic>D η</italic>(<italic>y<sub>c</sub></italic> − <italic>y<sub>i</sub></italic>)/<italic>η f</italic>. In this manner, the vision parameters have been determined by the data provided by network and image processing. The mobile setup generates online geometric modifications, giving the system the ability to overcome occlusions and attain high sensibility. Typically, the extrinsic parameters are re-calibrated when the camera changes position [<xref ref-type="bibr" rid="b31-sensors-10-07681">31</xref>]. In the reported methods, the online re-calibration depends on the availability of calibrated references [<xref ref-type="bibr" rid="b24-sensors-10-07681">24</xref>–<xref ref-type="bibr" rid="b29-sensors-10-07681">29</xref>]. The proposed mobile calibration avoids the use of references for online re-calibration. In the proposed vision system the setup geometry [<xref ref-type="fig" rid="f10-sensors-10-07681">Figure 10(a)</xref>], is modified when the camera is moved toward the laser line along the <italic>x</italic>-axis, as seen in <xref ref-type="fig" rid="f10-sensors-10-07681">Figure 10(b)</xref>. The setup geometry is also modified when the camera is moved in the <italic>z</italic>-axis [<xref ref-type="fig" rid="f10-sensors-10-07681">Figure 10(c)</xref>]. In these cases, the line shifting magnitude should be re-calibrated online. The distance to the object surface should also be recalibrated online when the camera is moved in the <italic>z</italic>-axis. This procedure is carried out by computing the line shifting factor <italic>α</italic>. From the initial configuration [<xref ref-type="fig" rid="f10-sensors-10-07681">Figure 10(a)</xref>], the expression <italic>tanθ</italic>1 = <italic>η f</italic>/(<italic>X<sub>A</sub></italic> − <italic>x<sub>c</sub></italic>) <italic>η</italic> describes the line position. From the geometry shown in <xref ref-type="fig" rid="f10-sensors-10-07681">Figure 10(b)</xref>, the expression <italic>tanθ</italic><sub>2</sub> = <italic>η f</italic>/(<italic>αX<sub>A</sub></italic> − <italic>x<sub>c</sub></italic>) <italic>η</italic> describes the line position. In these expressions, <italic>f</italic>, <italic>x<sub>c</sub></italic> are known from the initial calibration and <italic>αX<sub>A</sub></italic> is a line position in the new configuration [<xref ref-type="fig" rid="f10-sensors-10-07681">Figure 10(b)</xref>]. Here, the position <italic>αX<sub>A</sub></italic> is defined as the smaller distance obtained from the term (<italic>αX<sub>j</sub></italic> − <italic>x<sub>c</sub></italic>).</p>
<p>In this case, the term <italic>αX<sub>j</sub></italic> is the line position in each row of the image in <italic>y</italic>-axis and the <italic>j</italic>-index is row number of the image. Based on these data, the angles <italic>θ</italic><sub>1</sub> and <italic>θ</italic><sub>2</sub> are computed. Thus, the expression (<italic>X<sub>A</sub></italic> − <italic>x<sub>c</sub></italic>) <italic>tanθ</italic><sub>1</sub> = (<italic>αX<sub>A</sub></italic> − <italic>x<sub>c</sub></italic>) <italic>tanθ</italic><sub>2</sub> is obtained. Therefore, the factor <italic>α</italic> is determined by:
<disp-formula id="FD24">
<label>(24)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>α</mml:mi>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub>
<mml:mo> </mml:mo>
<mml:mtext>tan</mml:mtext>
<mml:mo> </mml:mo>
<mml:msub>
<mml:mrow>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mfrac>
<mml:mo>+</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>x</mml:mi></mml:mrow>
<mml:mi>c</mml:mi></mml:msub></mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>X</mml:mi></mml:mrow>
<mml:mi>A</mml:mi></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:math></disp-formula></p>
<p>Then, the shifting is divided by the factor <italic>α</italic> in the modified configuration. The shift <italic>s<sub>i</sub></italic> is re-calibrated online and thus processed by the network to obtain the surface <italic>h<sub>i</sub></italic>. In this manner, the vision system provides an online re-calibration of line position and the line shifting and the need for calibrated references is avoided. In the perspective projection, the extrinsic and intrinsic parameters change when the camera is moved, therefore components of the translation vector <bold><italic>t</italic></bold> should be re-calibrated to perform the transformation <italic>P<sub>c</sub></italic> = <bold>R</bold>·<italic>Pw</italic> + <bold><italic>t</italic></bold>. Methods such as object-based and plane-based homography have been applied to perform the online re-calibration of vision parameters. Object-based methods perform the re-calibration based on the known marks on the object [<xref ref-type="bibr" rid="b32-sensors-10-07681">32</xref>]. Homography methods perform the re-calibration based on the detection of light pattern references [<xref ref-type="bibr" rid="b22-sensors-10-07681">22</xref>–<xref ref-type="bibr" rid="b24-sensors-10-07681">24</xref>]. These reported methods are limited when the references do not exist during the vision task.</p>
<p>The contribution of the mobile calibration when an occlusion appears during the vision task was also studied. Typically, occlusions appear due to the surface variation and a big distance <italic>ℓ<sub>a</sub></italic>. This criterion is studied based on the geometry shown in <xref ref-type="fig" rid="f11-sensors-10-07681">Figure 11</xref>, in which the point <italic>A</italic> is occluded at the initial configuration when the image plane is placed at (<italic>x</italic><sub>0</sub>, <italic>z</italic><sub>0</sub>). Here, an occlusion is detected when the width of the line is less than three pixels.</p>
<p>To avoid occlusions, the camera is moved away from the surface at (<italic>x</italic><sub>0</sub>, <italic>z</italic><sub>1</sub>) in the <italic>z</italic>-axis or toward the laser line at (<italic>x</italic><sub>1</sub>, <italic>z</italic><sub>0</sub>) in the <italic>x</italic>-axis. Here, an occlusion is detected when the width of the line is smaller than three pixels along the laser line in the <italic>y</italic>-axis. This criterion is established according to a threshold value. When an occlusion appears, the surface scanning is stopped. Then, the camera is moved by one 1.27 mm step toward the laser line. In this camera position, the width of the laser line is evaluated. If the width of laser line is less than three pixels, the camera is moved one step toward the laser line. This procedure is repeated until to the width of the laser line is greater than three pixels. Then, the scanning is continued with the new camera position and the occluded region is thus detected based on a complete laser line. In this case, the shift magnitude is different from the initial configuration, so the shift should be re-calibrated based on the factor <italic>α</italic> via <xref ref-type="disp-formula" rid="FD24">Equation (24)</xref>. Then, the shift <italic>s<sub>i</sub></italic> is processed by the network to compute the object surface. The three-dimensional vision and calibration accuracy are described in Section 5.</p></sec>
<sec sec-type="results">
<label>5.</label>
<title>Experimental Results</title>
<p>The proposed mobile calibration is performed based on Bezier networks and laser line imaging. This automatic technique avoids calibrated references and physical measurements. Here, the three-dimensional visualization is performed by laser scanning in 1.27 mm steps along the <italic>x</italic>-axis. The scanning movement is provided by the electromechanical device, whose minimum step is 0.0245 mm. The positioning accuracy is 0.00147 mm and the positioning repeatability is a standard deviation ± 0.001 mm. The laser line is captured and digitized in 256 gray levels. From each image, the network computes the surface contour based on the line shift <italic>s<sub>i</sub></italic>. The depth resolution provided by the network is around of 0.28 mm. This resolution corresponds to the distances <italic>ℓ<sub>a</sub></italic> = 174.8321 mm and <italic>D</italic> = 380.4126 mm. In this case, the depth resolution varies according to the distances <italic>ℓ<sub>a</sub></italic> and <italic>D</italic>. The depth resolution is increased when <italic>ℓ<sub>a</sub></italic> is increased and <italic>D</italic> is decreased. On the other hand, depth resolution is decreased when <italic>ℓ<sub>a</sub></italic> is decreased and <italic>D</italic> is increased. The image plane parallel to the reference plane provides better sensitivity for a laser line perpendicular to the reference plane. This criterion is proven by the geometry of <xref ref-type="fig" rid="f12-sensors-10-07681">Figure 12</xref>. In this case, the image plane parallel to the reference plane provides a bigger line shift than the rotated image plane, but the rotated image plane provides better sensitivity when the laser line is aligned at an angle. Therefore, the image plane is fixed parallel to the reference plane and perpendicular to the laser line, thus affording the best sensitivity. When the setup geometry is modified, a mobile calibration is performed based on the data provided by the network and image processing. This procedure provides high sensitivity and avoids occlusions. This was verified by the three-dimensional visualization of some surfaces with small and big details.</p>
<p>The first test of the mobile calibration is the three-dimensional visualization of a plastic fruit, shown in <xref ref-type="fig" rid="f13-sensors-10-07681">Figure 13(a)</xref>. To carry this out, the fruit is scanned by the vision system as shown in <xref ref-type="fig" rid="f13-sensors-10-07681">Figure 13(b)</xref>. In this procedure, a set of images is captured by the CCD camera. From each image, the line shift <italic>s<sub>i</sub></italic> is detected via <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref> and converted to a value <italic>u</italic> via <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>. In addition, the coordinate <italic>y<sub>i</sub></italic> of the laser line is converted to a value <italic>v</italic> via <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>. Then, the network computes a transverse section of the object by substituting the values (<italic>u</italic>,<italic>v</italic>) in <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>. In this scanning, an occlusion is detected by the broken line shown in <xref ref-type="fig" rid="f13-sensors-10-07681">Figure 13(c)</xref>. To avoid the occlusion, the camera is moved toward the laser line. In doing so, the initial geometry has been modified, so the line shift should be re-calibrated online based on the factor <italic>α</italic> via <xref ref-type="disp-formula" rid="FD24">Equation (24)</xref>. To carry this out, the line position <italic>αX<sub>j</sub></italic> is detected in each row of the images in the <italic>y</italic>-axis. In this case, the term <italic>αX<sub>j</sub></italic> is the line position and the <italic>j</italic>-index is the row number of the image in the <italic>y</italic>-axis. Here, the position <italic>αX<sub>A</sub></italic> is the smaller distance from the term (<italic>αX<sub>j</sub></italic>−<italic>x<sub>c</sub></italic>). Then, the factor <italic>α</italic> is computed and the line shift is divided by this factor to achieve the online re-calibration and the re-calibrated shift <italic>s<sub>i</sub></italic> is substituted in the network <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref> to compute the surface <italic>h<sub>i</sub></italic>. The whole surface is reconstructed from all depth data provided by the network. Fifty six images were processed to obtain the plastic fruit shown in <xref ref-type="fig" rid="f13-sensors-10-07681">Figure 13(d)</xref>, where the scale of this figure is in mm.</p>
<p>To know the accuracy, a root means squared error (<italic>rms</italic>) is computed via <xref ref-type="disp-formula" rid="FD14">Equation (14)</xref>. To do this the plastic surface is measured by the CMM. This procedure is performed by measuring a transverse section of the object in 8.0 mm steps along the <italic>y</italic>-axis. The transverse section corresponds to the position where the laser line was projected on the <italic>x</italic>-axis. Then, the network computes the surface depth of this transverse section. Forty six transverse sections are measured by the CMM and by the network in steps of 1.27 mm. In this case, the data obtained from the CMM are <italic>n</italic> = 420. Then, error is computed and the result is a <italic>rms</italic> = 0.142 mm.</p>
<p>The second test of the mobile calibration is the vision of a dummy face shown in <xref ref-type="fig" rid="f14-sensors-10-07681">Figure 14(a)</xref>. To carry this out, the dummy face is scanned by the vision system. In this scanning, no reference plane exists. This was established based on the absence of a line at the end and beginning of the image in the <italic>y</italic>-axis. Here, the shifting magnitude is different from the initial configuration, so the line shift should be re-calibrated online. In this case, the line position <italic>αX<sub>j</sub></italic> is detected in each row of the image in the <italic>y</italic>-axis. From these line positions, the position <italic>αX<sub>A</sub></italic> is determined as the minimum distance from the term (<italic>αX<sub>j</sub></italic> − <italic>x<sub>c</sub></italic>). Then, the factor <italic>α</italic> is computed via <xref ref-type="disp-formula" rid="FD24">Equation (24)</xref> and the line shift is divided by this factor <italic>α</italic> to achieve the online re-calibration and the re-calibrated shift <italic>s<sub>i</sub></italic> is converted to a value <italic>u</italic>. In addtion, the coordinate <italic>y<sub>i</sub></italic> of the laser line is converted to a value <italic>v</italic>. Then, the network computes the data <italic>h<sub>i</sub></italic> of a transverse section of the object by substituting the values (<italic>u</italic>,<italic>v</italic>) in <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>.</p>
<p>When the object is scanned, an occlusion is detected based on the broken line shown in <xref ref-type="fig" rid="f14-sensors-10-07681">Figure 14(b)</xref>. To avoid the occlusion, the camera is moved toward the laser line. Since the geometry and the shift magnitude have been modified the mobile calibration performs a second online re-calibration to achieve the three-dimensional vision. To carry it out, the line position <italic>αX<sub>j</sub></italic> is detected in each row of the image in the <italic>y</italic>-axis for the new configuration. From these line positions, the <italic>αX<sub>A</sub></italic> is determined as the minimum from the term (<italic>αX<sub>j</sub></italic> − <italic>x<sub>c</sub></italic>). Then, the factor <italic>α</italic> is computed via <xref ref-type="disp-formula" rid="FD24">Equation (24)</xref>. and the shifting is divided by this factor <italic>α</italic> to achieve the online re-calibration. This re-calibrated shifting <italic>s<sub>i</sub></italic> is converted to a value <italic>u</italic>. The coordinate <italic>y<sub>i</sub></italic> of the laser line is also converted to a value <italic>v</italic>. Then, the network computes the surface depth <italic>h<sub>i</sub></italic> by substituting the values (<italic>u</italic>,<italic>v</italic>) in <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>. In this manner, the whole surface is obtained by all data provided by the network. One hundred and sixteen images are processed to obtain the complete dummy face shown in <xref ref-type="fig" rid="f14-sensors-10-07681">Figure 14(c)</xref>. The scale of this figure is in mm. To know the accuracy, the <italic>rms</italic> is computed via <xref ref-type="disp-formula" rid="FD14">Equation (14)</xref>. To do this, the transverse sections of the dummy face are measured by the CMM and by the network. In this case, sixty two transverse sections are measured by the CMM at 1.00 mm in the <italic>x</italic>-axis to perform the evaluation. From this procedure, the obtained data are <italic>n</italic> = 1,400. Then, the error is computed and the result is a <italic>rms</italic> = 0.155 mm.</p>
<p>The third test of the mobile calibration is the visualization of the flat surface of a metallic piece shown in <xref ref-type="fig" rid="f15-sensors-10-07681">Figure 15(a)</xref>. To carry this out, the metallic piece is scanned by the vision system. In this scanning, no reference plane exists during the vision procedure. This is stated based on the lack of a line at the end and beginning of the <italic>y</italic>-axis in the image. Since the line shift magnitude is different from the initial configuration, mobile calibration is applied to achieve the online re-calibration of the line shift. To do so, the line position <italic>αX<sub>j</sub></italic> is detected in each row of the image in the <italic>y</italic>-axis. In this case, the line position <italic>X<sub>j</sub></italic> is the same along the laser line and <italic>X<sub>0</sub></italic> = <italic>X<sub>1</sub></italic> = <italic>X<sub>2</sub></italic>,…, = <italic>X<sub>n</sub></italic> and the minimum distance from the term (<italic>αX<sub>j</sub></italic> − <italic>x<sub>c</sub></italic>) can be obtained by means of <italic>αX<sub>0</sub></italic>. Therefore, the reference position is determined by <italic>αX<sub>A</sub></italic> = <italic>αX<sub>0</sub></italic>. Then, the factor <italic>α</italic> is computed via <xref ref-type="disp-formula" rid="FD24">Equation (24)</xref> abd the line shift is divided by the factor <italic>α</italic> to achieve the online re-calibration. Then, the re-calibrated shift <italic>s<sub>i</sub></italic> is converted to a value <italic>u</italic> via <xref ref-type="disp-formula" rid="FD7">Equation (7)</xref>. The coordinate <italic>y<sub>i</sub></italic> of the laser line is also converted to a value <italic>v</italic> via <xref ref-type="disp-formula" rid="FD8">Equation (8)</xref>. Then, the network computes the depth <italic>h<sub>i</sub></italic> by substituting the values (<italic>u</italic>,<italic>v</italic>) in <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>. In the scanning, an occlusion is detected based on the missing line shown in <xref ref-type="fig" rid="f15-sensors-10-07681">Figure 15(b)</xref>. To avoid the occlusion, the camera is moved toward the laser line. Here, the geometry and the shift magnitude have been modified, so the mobile calibration performs a second online re-calibration to achieve the three-dimensional visualization. To carry it out, the line position <italic>αX<sub>j</sub></italic> is detected in each row of the image in the <italic>y</italic>-axis. In this case, position <italic>αX<sub>j</sub></italic> is the same along the laser line. Again, the reference position <italic>αX<sub>A</sub></italic> is determined by <italic>αX<sub>A</sub></italic> = <italic>αX<sub>0</sub></italic>. Then, the factor <italic>α</italic> is computed via <xref ref-type="disp-formula" rid="FD24">Equation (24)</xref> and the shift is divided by this factor <italic>α</italic> to achieve the on-line recalibration and the re-calibrated shift <italic>s<sub>i</sub></italic> is then converted to a value <italic>u</italic>. The coordinate <italic>y<sub>i</sub></italic> of the laser line is also converted to a value <italic>v</italic> and the network computes the surface depth <italic>h<sub>i</sub></italic> by substituting the values (<italic>u</italic>,<italic>v</italic>) in <xref ref-type="disp-formula" rid="FD10">Equation (10)</xref>. In this manner, the whole surface is obtained from data provided by the network. Fifty eight images were processed to obtain the metallic piece shown in <xref ref-type="fig" rid="f14-sensors-10-07681">Figure 14(c)</xref>. The scale of this figure is in mm. To know the accuracy, the metallic piece was measured by the CMM. Then, the <italic>rms</italic> is computed using the data provided by the CMM and by the network. In this procedure, the error is computed using <italic>n</italic> = 1,400 and error is a <italic>rms</italic> = 0.155 mm.</p>
<p>The value <italic>n</italic> has a great influence in the precision of the calculated error. To determine if <italic>n</italic> is according to the desired precision, the confidence level [<xref ref-type="bibr" rid="b33-sensors-10-07681">33</xref>] is calculated by:
<disp-formula id="FD25">
<label>(25)</label>
<mml:math display="block">
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mo>=</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo>(</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>α</mml:mi></mml:msub>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>x</mml:mi></mml:msub></mml:mrow>
<mml:mi>e</mml:mi></mml:mfrac></mml:mrow>
<mml:mo>)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:math></disp-formula>where <italic>z<sub>α</sub></italic> is the desired confidence, <italic>e</italic> is the error expressed in percentage, and <italic>σ<sub>x</sub></italic> is standard deviation. Therefore, the confidence level based on the data <italic>n</italic> is described by:
<disp-formula id="FD26">
<label>(26)</label>
<mml:math display="block">
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>z</mml:mi></mml:mrow>
<mml:mi>α</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mi>e</mml:mi>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mi>σ</mml:mi></mml:mrow>
<mml:mi>x</mml:mi></mml:msub></mml:mrow></mml:mfrac>
<mml:msqrt>
<mml:mi>n</mml:mi></mml:msqrt></mml:mrow></mml:math></disp-formula></p>
<p>To know if the chosen <italic>n</italic> is according to the desired confidence, <xref ref-type="disp-formula" rid="FD26">Equation (26)</xref> is applied. The desired confidence is 95%, which corresponds to <italic>z<sub>α</sub></italic> = 1.96 according to the confidence table [<xref ref-type="bibr" rid="b33-sensors-10-07681">33</xref>]. The average of the dummy face height is 44.32 mm. Therefore, the <italic>rms</italic> is an error of 0.0035, which represents a 0.35% error. To determine the error precision, the confidence is calculated via <xref ref-type="disp-formula" rid="FD25">Equation (25)</xref> for <italic>n</italic> = 1,400, <italic>e</italic> = 0.35 and a standard deviation of 6.204. The result is <italic>z<sub>α</sub></italic> = 2.110, which indicates a confidence level over 95%. The confidence levels for the plastic fruit and for the metallic piece are also greater than 95%.</p>
<p>The accuracy provided by the calibration via Bezier networks for the three-dimensional vision is less than 1%. For comparison, the best accuracy of the calibration and online recalibration are mentioned as follows: a stereo calibration via perspective projection for face profiling reports an error over 1% [<xref ref-type="bibr" rid="b8-sensors-10-07681">8</xref>]. A calibration method based on perspective projection and least squares for a laser range scanner reports an error over 1% [<xref ref-type="bibr" rid="b9-sensors-10-07681">9</xref>]. A calibration method based on perspective projection and the invariance of double cross-ratio of the cross-points reports an error of 2% [<xref ref-type="bibr" rid="b16-sensors-10-07681">16</xref>]. A self plane-based homography re-calibration method reports an error of 1% [<xref ref-type="bibr" rid="b23-sensors-10-07681">23</xref>]. An online re-calibration method based on homography and reference plane reports an error of 1.5% [<xref ref-type="bibr" rid="b27-sensors-10-07681">27</xref>]. These results indicate that the proposed mobile calibration provides better accuracy, based on its error of less than 1%. The mobile calibration also avoids external procedures and the need for calibrated references to perform the online re-calibration. The resolution provided by proposed technique is good, according to the calibration methods based on perspective projection using similar distances to our setup [<xref ref-type="bibr" rid="b6-sensors-10-07681">6</xref>–<xref ref-type="bibr" rid="b27-sensors-10-07681">27</xref>]. In these reports, a paint brush laser range scanner reports 0.57 mm as the best resolution [<xref ref-type="bibr" rid="b9-sensors-10-07681">9</xref>]. The measurement range of the proposed technique is in the interval between 0.3 mm and 280.60 mm. According to the above mentioned techniques [<xref ref-type="bibr" rid="b6-sensors-10-07681">6</xref>–<xref ref-type="bibr" rid="b27-sensors-10-07681">27</xref>], the measurement range of the proposed mobile setup is good.</p>
<p>The computer used in this vision system is a 1.8 GHz PC. The capture velocity of the camera is 34 fps. The electromechanical device is moved at 34 steps per second. Each image of laser line is processed by the network in 0.010 s. The shape of the dummy face was reconstructed in 3.88 s, the metallic piece was reconstructed in 3.22 s and the plastic fruit was profiled in 2.59 s. This processing time is good compared to the lighting methods based on perspective projection. To demonstrate this, the processing time of the fast techniques is given as follows: for a paint brush laser range scanner, the reported time to reconstruct a single view is 15 s [<xref ref-type="bibr" rid="b9-sensors-10-07681">9</xref>]. In implementation and experimental studies on fast object modeling based on multiple structured stripes, the reported time to reconstruct a single view of the object is 10 s [<xref ref-type="bibr" rid="b17-sensors-10-07681">17</xref>]. These results indicate that the proposed mobile system provides a fast three-dimensional visualization. In this procedure, physical measurements and calibrated references are avoided to perform online re-calibration of the vision parameters and the distances of the geometry of the setup are not used to compute the surface depth, so the proposed mobile calibration performed online using data provided by the network and image processing is easier than the online re-calibration techniques based on references and perspective projection. In this manner, the vision system achieves good repeatability, corresponding to a standard deviation ± 0.01 mm.</p></sec>
<sec sec-type="conclusions">
<label>6.</label>
<title>Conclusions</title>
<p>A mobile calibration technique for three-dimensional vision has been presented. In this technique, a Bezier network provides the data needed to perform the mobile calibration via image processing. The network also computes the object surface based on the mobile setup. The setup geometry can thus be modified online and the network provides the online re-calibration to needed to accurately perform the three-dimensional visualization. The automatic calibration avoids the need for physical measurements and calibrated references, which are used in the lighting methods based on perspective projection. This improves the performance of the vision system and the accuracy of the three-dimensional visualization. The ability to detect the laser line with a sub-pixel resolution has been achieved by using Bezier curves, and the image processing is achieved with few operations. With the automatic calibration, good repeatability is achieved in each three-dimensional visualization procedure. The technique described here should provide a valuable tool for industrial inspection and reverse engineering tasks.</p></sec></body>
<back>
<ack>
<p>J. Apolinar Muñoz Rodríguez would like to thank to CONCYTEG of Guanajuato State and CONACYT of Mexico, for the partial support of this research.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-10-07681"><label>1.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Klette</surname><given-names>R</given-names></name><name><surname>Schluns</surname><given-names>K</given-names></name><name><surname>Koschan</surname><given-names>A</given-names></name></person-group><source>Computer Vision: Three-Dimensional Data from Images</source><publisher-name>Springer</publisher-name><publisher-loc>Singapore</publisher-loc><year>1998</year><fpage>349</fpage><lpage>367</lpage></citation></ref>
<ref id="b2-sensors-10-07681"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Jia</surname><given-names>P</given-names></name><name><surname>Kofman</surname><given-names>J</given-names></name><name><surname>English</surname><given-names>C</given-names></name></person-group><article-title>Comparison of linear and nonlinear calibration methods for phase measuring profilometry</article-title><source>Opt Eng</source><year>2005</year><volume>46</volume><fpage>043601:1</fpage><lpage>043601:7</lpage></citation></ref>
<ref id="b3-sensors-10-07681"><label>3.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Breque</surname><given-names>C</given-names></name><name><surname>Dupre</surname><given-names>JC</given-names></name><name><surname>Brenand</surname><given-names>F</given-names></name></person-group><article-title>Calibration of a system of projection moiré for relief measuring: biomechanical applications</article-title><source>Opt. Lasers Eng</source><year>2004</year><volume>41</volume><fpage>241</fpage><lpage>260</lpage><pub-id pub-id-type="doi">10.1016/S0143-8166(02)00198-7</pub-id></citation></ref>
<ref id="b4-sensors-10-07681"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Remondino</surname><given-names>F</given-names></name><name><surname>El-Hakim</surname><given-names>S</given-names></name></person-group><article-title>Image-based 3D modelling: a review</article-title><source>Photogrametric Record</source><year>2006</year><volume>21</volume><fpage>269</fpage><lpage>291</lpage><pub-id pub-id-type="doi">10.1111/j.1477-9730.2006.00383.x</pub-id></citation></ref>
<ref id="b5-sensors-10-07681"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Muñoz-Rodríguez</surname><given-names>JA</given-names></name><name><surname>Rodríguez-Vera</surname><given-names>R</given-names></name></person-group><article-title>Evaluation of the light line displacement location for object shape detection</article-title><source>J. Mod. Optic</source><year>2003</year><volume>50</volume><fpage>137</fpage><lpage>154</lpage></citation></ref>
<ref id="b6-sensors-10-07681"><label>6.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Vilaca</surname><given-names>JL</given-names></name><name><surname>Fonceca</surname><given-names>JC</given-names></name><name><surname>Pinho</surname><given-names>AM</given-names></name></person-group><article-title>Calibration procedure for 3D measurement system using two cameras and a laser line</article-title><source>Opt. Laser Technol</source><year>2009</year><volume>41</volume><fpage>112</fpage><lpage>119</lpage><pub-id pub-id-type="doi">10.1016/j.optlastec.2008.05.012</pub-id></citation></ref>
<ref id="b7-sensors-10-07681"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>S</given-names></name><name><surname>Huang</surname><given-names>PS</given-names></name></person-group><article-title>Novel method for structured light system</article-title><source>Opt Eng</source><year>2006</year><volume>45</volume><fpage>083601:1</fpage><lpage>083601:8</lpage></citation></ref>
<ref id="b8-sensors-10-07681"><label>8.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Song</surname><given-names>LM</given-names></name><name><surname>Wang</surname><given-names>DN</given-names></name></person-group><article-title>A novel grating matching method for 3D reconstruction</article-title><source>Ndt. Int</source><year>2006</year><volume>39</volume><fpage>282</fpage><lpage>288</lpage><pub-id pub-id-type="doi">10.1016/j.ndteint.2005.08.006</pub-id></citation></ref>
<ref id="b9-sensors-10-07681"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zagorchev</surname><given-names>L</given-names></name><name><surname>Goshtasby</surname><given-names>A</given-names></name></person-group><article-title>A paintbrush laser range scanner</article-title><source>Comput. Vis. Image Underst</source><year>2006</year><volume>10</volume><fpage>65</fpage><lpage>86</lpage></citation></ref>
<ref id="b10-sensors-10-07681"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Song</surname><given-names>L</given-names></name><name><surname>Qu</surname><given-names>X</given-names></name><name><surname>Yang</surname><given-names>Y</given-names></name></person-group><article-title>Application of structured lighting sensor for on line measurement</article-title><source>Opt. Lasers Eng</source><year>2005</year><volume>43</volume><fpage>1118</fpage><lpage>1126</lpage><pub-id pub-id-type="doi">10.1016/j.optlaseng.2004.06.020</pub-id></citation></ref>
<ref id="b11-sensors-10-07681"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Huuynh</surname><given-names>DQ</given-names></name></person-group><article-title>Calibration a structured light stripe system: a novel approach</article-title><source>Int. J. Comput. Vis</source><year>1999</year><volume>33</volume><fpage>73</fpage><lpage>86</lpage><pub-id pub-id-type="doi">10.1023/A:1008117315311</pub-id></citation></ref>
<ref id="b12-sensors-10-07681"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Liu</surname><given-names>F</given-names></name><name><surname>Duan</surname><given-names>F</given-names></name><name><surname>Ye</surname><given-names>S</given-names></name></person-group><article-title>A new method for calibration of line structured light sensor using zigzag target</article-title><source>Meas. Technol</source><year>1999</year><volume>7</volume><fpage>3</fpage><lpage>6</lpage></citation></ref>
<ref id="b13-sensors-10-07681"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhou</surname><given-names>F</given-names></name><name><surname>Zhang</surname><given-names>G</given-names></name><name><surname>Jiang</surname><given-names>J</given-names></name></person-group><article-title>Constructing feature points for calibration a structured light vision sensor by viewing a plane from unknown orientation</article-title><source>Opt. Lasers Eng</source><year>2005</year><volume>43</volume><fpage>1056</fpage><lpage>1070</lpage><pub-id pub-id-type="doi">10.1016/j.optlaseng.2004.06.015</pub-id></citation></ref>
<ref id="b14-sensors-10-07681"><label>14.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhou</surname><given-names>F</given-names></name><name><surname>Zhang</surname><given-names>G</given-names></name></person-group><article-title>Complete calibration of a structured light stripe vision sensor trough plane target of unknown orientation</article-title><source>Image Vision Comput</source><year>2005</year><volume>23</volume><fpage>59</fpage><lpage>67</lpage><pub-id pub-id-type="doi">10.1016/j.imavis.2004.07.006</pub-id></citation></ref>
<ref id="b15-sensors-10-07681"><label>15.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Mclvor</surname><given-names>AM</given-names></name></person-group><article-title>Nonlinear calibration of a laser stripe profiler</article-title><source>Opt. Eng</source><year>2002</year><volume>41</volume><fpage>205</fpage><lpage>212</lpage><pub-id pub-id-type="doi">10.1117/1.1416694</pub-id></citation></ref>
<ref id="b16-sensors-10-07681"><label>16.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wei</surname><given-names>Z</given-names></name><name><surname>Zhang</surname><given-names>G</given-names></name><name><surname>Xu</surname><given-names>Y</given-names></name></person-group><article-title>Calibration approach for structured-light-stripe vision sensor based on the invariance of double cross-ratio</article-title><source>Opt Eng</source><year>2003</year><fpage>2956</fpage><lpage>2966</lpage></citation></ref>
<ref id="b17-sensors-10-07681"><label>17.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wang</surname><given-names>G</given-names></name><name><surname>Hu</surname><given-names>Z</given-names></name><name><surname>Wu</surname><given-names>F</given-names></name><name><surname>Tsui</surname><given-names>HT</given-names></name></person-group><article-title>Implementation and experimental study on fast object modeling based on multiple structured light stripes</article-title><source>Opt. Lasers Eng</source><year>2004</year><volume>42</volume><fpage>627</fpage><lpage>638</lpage><pub-id pub-id-type="doi">10.1016/j.optlaseng.2004.05.008</pub-id></citation></ref>
<ref id="b18-sensors-10-07681"><label>18.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Doignon</surname><given-names>C</given-names></name><name><surname>Knittel</surname><given-names>D</given-names></name></person-group><article-title>A structured light vision system for out plane vibration frequencies location of moving web</article-title><source>Mach. Vision Appl</source><year>2005</year><volume>16</volume><fpage>289</fpage><lpage>297</lpage><pub-id pub-id-type="doi">10.1007/s00138-005-0183-8</pub-id></citation></ref>
<ref id="b19-sensors-10-07681"><label>19.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname><given-names>X</given-names></name><name><surname>Xi</surname><given-names>J</given-names></name><name><surname>Jin</surname><given-names>Y</given-names></name><name><surname>Sun</surname><given-names>J</given-names></name></person-group><article-title>Accurate calibration for camera projector measurement system based on structured light projection</article-title><source>Opt. Lasers Eng</source><year>2009</year><volume>47</volume><fpage>310</fpage><lpage>319</lpage><pub-id pub-id-type="doi">10.1016/j.optlaseng.2007.12.001</pub-id></citation></ref>
<ref id="b20-sensors-10-07681"><label>20.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname><given-names>Z</given-names></name><name><surname>Shi</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><article-title>Accurate calibration method for a structured light system</article-title><source>Opt Eng</source><year>2008</year><volume>47</volume><fpage>053604:1</fpage><lpage>053604:9</lpage></citation></ref>
<ref id="b21-sensors-10-07681"><label>21.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname><given-names>YF</given-names></name><name><surname>Chen</surname><given-names>SY</given-names></name></person-group><article-title>Automatic recalibration of an active structured light vision system</article-title><source>IEEE Trans. Robot. Automation Mach. Vision Appl</source><year>2003</year><volume>19</volume><fpage>259</fpage><lpage>268</lpage><pub-id pub-id-type="doi">10.1109/TRA.2003.808859</pub-id></citation></ref>
<ref id="b22-sensors-10-07681"><label>22.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>B</given-names></name><name><surname>Li</surname><given-names>YF</given-names></name><name><surname>Wu</surname><given-names>YH</given-names></name></person-group><article-title>Self-recalibration of a structured light system via plane-based homography</article-title><source>Pattern Recogn</source><year>2007</year><volume>40</volume><fpage>1368</fpage><lpage>1377</lpage><pub-id pub-id-type="doi">10.1016/j.patcog.2006.04.001</pub-id></citation></ref>
<ref id="b23-sensors-10-07681"><label>23.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chen</surname><given-names>SY</given-names></name><name><surname>Li</surname><given-names>YF</given-names></name></person-group><article-title>Self-recalibration of a color-encoded light system for automated three-dimensional measurements</article-title><source>Meas. Sci. Technol</source><year>2003</year><volume>14</volume><fpage>33</fpage><lpage>40</lpage><pub-id pub-id-type="doi">10.1088/0957-0233/14/1/305</pub-id></citation></ref>
<ref id="b24-sensors-10-07681"><label>24.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Zhang</surname><given-names>B</given-names></name><name><surname>Li</surname><given-names>Y</given-names></name></person-group><article-title>Dynamic calibration of relative pose and error analysis in a structured light system</article-title><source>J. Opt. Soc. Am. A</source><year>2008</year><volume>25</volume><fpage>612</fpage><lpage>622</lpage><pub-id pub-id-type="doi">10.1364/JOSAA.25.000612</pub-id></citation></ref>
<ref id="b25-sensors-10-07681"><label>25.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Canlin</surname><given-names>L</given-names></name><name><surname>Ping</surname><given-names>L</given-names></name><name><surname>Lizhuang</surname><given-names>M</given-names></name></person-group><article-title>A camera online recalibration framework using SIFT</article-title><source>Visual Comput</source><year>2010</year><volume>26</volume><fpage>227</fpage><lpage>240</lpage><pub-id pub-id-type="doi">10.1007/s00371-009-0400-y</pub-id></citation></ref>
<ref id="b26-sensors-10-07681"><label>26.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Lu</surname><given-names>RS</given-names></name><name><surname>Li</surname><given-names>YF</given-names></name></person-group><article-title>Calibration of a 3D vision system using pattern projection</article-title><source>Sens. Actuat. A-Phys</source><year>2003</year><volume>104</volume><fpage>94</fpage><lpage>102</lpage><pub-id pub-id-type="doi">10.1016/S0924-4247(03)00002-5</pub-id></citation></ref>
<ref id="b27-sensors-10-07681"><label>27.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname><given-names>FY</given-names></name><name><surname>Zhang</surname><given-names>B</given-names></name></person-group><article-title>A method for 3D measurement and reconstruction for active vision</article-title><source>Meas. Sci. Technol</source><year>2004</year><volume>15</volume><fpage>2224</fpage><lpage>2232</lpage><pub-id pub-id-type="doi">10.1088/0957-0233/15/11/007</pub-id></citation></ref>
<ref id="b28-sensors-10-07681"><label>28.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Mortenson</surname><given-names>ME</given-names></name></person-group><source>Geometric Modeling</source><edition>2nd ed</edition><publisher-name>Wiley</publisher-name><publisher-loc>Salt Lake, UT, USA</publisher-loc><year>1997</year><fpage>83</fpage><lpage>105</lpage></citation></ref>
<ref id="b29-sensors-10-07681"><label>29.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Frederick</surname><given-names>H</given-names></name><name><surname>Lieberman</surname><given-names>GJ</given-names></name></person-group><source>Introduction to Operations Research</source><publisher-name>McGraw-Hill</publisher-name><publisher-loc>New York, NY, USA</publisher-loc><year>1982</year><fpage>754</fpage><lpage>758</lpage></citation></ref>
<ref id="b30-sensors-10-07681"><label>30.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Gonzalez</surname><given-names>RC</given-names></name><name><surname>Wintz</surname><given-names>P</given-names></name></person-group><source>Digital image processing</source><edition>2nd ed</edition><publisher-name>Addison-Wesley</publisher-name><publisher-loc>Menlo Park, CA, USA</publisher-loc><year>1987</year><fpage>672</fpage><lpage>675</lpage></citation></ref>
<ref id="b31-sensors-10-07681"><label>31.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Li</surname><given-names>FY</given-names></name><name><surname>Chen</surname><given-names>SY</given-names></name></person-group><article-title>Automatic recalibration of an active structured light vision system</article-title><source>IEEE Trans. Robot</source><year>2003</year><volume>19</volume><fpage>259</fpage><lpage>268</lpage><pub-id pub-id-type="doi">10.1109/TRA.2003.808859</pub-id></citation></ref>
<ref id="b32-sensors-10-07681"><label>32.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Peng</surname><given-names>E</given-names></name><name><surname>Li</surname><given-names>L</given-names></name></person-group><article-title>Camera calibration using one-directional information and its applications in both controlled and uncontrolled environments</article-title><source>Pattern Recogn</source><year>2010</year><volume>43</volume><fpage>1188</fpage><lpage>1198</lpage><pub-id pub-id-type="doi">10.1016/j.patcog.2009.08.003</pub-id></citation></ref>
<ref id="b33-sensors-10-07681"><label>33.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>Freund</surname><given-names>JE</given-names></name></person-group><source>Modern Elementary Statistics</source><publisher-name>Prentice Hall</publisher-name><publisher-loc>Upper Saddle River, NJ, USA</publisher-loc><year>1979</year><fpage>249</fpage><lpage>251</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures</title>
<fig id="f1-sensors-10-07681" position="float">
<label>Figure 1.</label>
<caption>
<p>Geometry of the perspective projection model.</p></caption>
<graphic xlink:href="sensors-10-07681f1.gif"/></fig>
<fig id="f2-sensors-10-07681" position="float">
<label>Figure 2.</label>
<caption>
<p>Mobile setup to perform the three-dimensional visualization.</p></caption>
<graphic xlink:href="sensors-10-07681f2.gif"/></fig>
<fig id="f3-sensors-10-07681" position="float">
<label>Figure 3.</label>
<caption>
<p><bold>(a)</bold> Geometry of an image plane parallel to the reference plane in <italic>x</italic>-axis. <bold>(b)</bold> Geometry of an image plane parallel to the reference plane in <italic>y</italic>-axis.</p></caption>
<graphic xlink:href="sensors-10-07681f3.gif"/></fig>
<fig id="f4-sensors-10-07681" position="float">
<label>Figure 4.</label>
<caption>
<p>Fitted pixels to a continuous function by Bezier curves.</p></caption>
<graphic xlink:href="sensors-10-07681f4.gif"/></fig>
<fig id="f5-sensors-10-07681" position="float">
<label>Figure 5.</label>
<caption>
<p><bold>(a)</bold> Laser line aligned on a peak reference in <italic>y</italic>-axis. <bold>(b)</bold> Setup at different reference plane from the initial configuration.</p></caption>
<graphic xlink:href="sensors-10-07681f5.gif"/></fig>
<fig id="f6-sensors-10-07681" position="float">
<label>Figure 6.</label>
<caption>
<p>Derivative d<italic>k</italic>/d<italic>s</italic> for an optical axis perpendicular and not perpendicular to the <italic>x</italic>-axis.</p></caption>
<graphic xlink:href="sensors-10-07681f6.gif"/></fig>
<fig id="f7-sensors-10-07681" position="float">
<label>Figure 7.</label>
<caption>
<p><bold>(a)</bold> Laser line on the reference plane. <bold>(b)</bold> Laser line at 25.4 mm from the reference plane.</p></caption>
<graphic xlink:href="sensors-10-07681f7.gif"/></fig>
<fig id="f8-sensors-10-07681" position="float">
<label>Figure 8.</label>
<caption>
<p>Structure of the Bezier network.</p></caption>
<graphic xlink:href="sensors-10-07681f8.gif"/></fig>
<fig id="f9-sensors-10-07681" position="float">
<label>Figure 9.</label>
<caption>
<p><bold>(a)</bold> Laser line projected on a surface. <bold>(b)</bold> Surface depth computed by the network form the laser line.</p></caption>
<graphic xlink:href="sensors-10-07681f9.gif"/></fig>
<fig id="f10-sensors-10-07681" position="float">
<label>Figure 10.</label>
<caption>
<p><bold>(a)</bold> Initial geometric configuration. <bold>(b)</bold> Geometry of the camera moved toward the laser line in <italic>x</italic>-axis. <bold>(c)</bold> Geometry of the camera moved toward the object surface in z-axis.</p></caption>
<graphic xlink:href="sensors-10-07681f10.gif"/></fig>
<fig id="f11-sensors-10-07681" position="float">
<label>Figure 11.</label>
<caption>
<p>Geometry of an occlusion in the initial configuration.</p></caption>
<graphic xlink:href="sensors-10-07681f11.gif"/></fig>
<fig id="f12-sensors-10-07681" position="float">
<label>Figure 12.</label>
<caption>
<p>Geometry of an image plane parallel and not parallel to the reference plane.</p></caption>
<graphic xlink:href="sensors-10-07681f12.gif"/></fig>
<fig id="f13-sensors-10-07681" position="float">
<label>Figure 13.</label>
<caption>
<p><bold>(a)</bold> Plastic fruit to be profiled. <bold>(b)</bold> Mobile setup for three-dimensional vision. <bold>(c)</bold> Occlusion based on the broken line. <bold>(d)</bold> Three-dimensional shape of the plastic fruit.</p></caption>
<graphic xlink:href="sensors-10-07681f13.gif"/></fig>
<fig id="f14-sensors-10-07681" position="float">
<label>Figure 14.</label>
<caption>
<p><bold>(a)</bold> Dummy face to be profiled. <bold>(b)</bold> Occlusion based on the broken line. <bold>(c)</bold> Three-dimensional shape of the dummy face.</p></caption>
<graphic xlink:href="sensors-10-07681f14.gif"/></fig>
<fig id="f15-sensors-10-07681" position="float">
<label>Figure 15.</label>
<caption>
<p><bold>(a)</bold> Metallic piece to be profiled. <bold>(b)</bold> Occlusion based on the broken line. <bold>(c)</bold> Three-dimensional shape of the metallic piece.</p></caption>
<graphic xlink:href="sensors-10-07681f15.gif"/></fig></sec></back></article>
