<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>Vision/MultiCameraCalibration</title><revhistory><revision><revnumber>56</revnumber><date>2015-08-25 18:10:28</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>55</revnumber><date>2015-08-25 17:54:09</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>54</revnumber><date>2015-08-25 17:45:45</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>53</revnumber><date>2015-08-25 17:28:52</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>52</revnumber><date>2015-08-25 17:28:21</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>51</revnumber><date>2015-08-20 18:26:06</date><authorinitials>MartinGriffa</authorinitials></revision><revision><revnumber>50</revnumber><date>2015-08-20 18:25:28</date><authorinitials>MartinGriffa</authorinitials></revision><revision><revnumber>49</revnumber><date>2015-08-20 18:03:40</date><authorinitials>MartinGriffa</authorinitials></revision><revision><revnumber>48</revnumber><date>2015-08-19 20:30:05</date><authorinitials>MartinGriffa</authorinitials></revision><revision><revnumber>47</revnumber><date>2015-08-08 14:08:41</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>46</revnumber><date>2015-08-08 14:01:40</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>45</revnumber><date>2015-08-08 14:00:36</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>44</revnumber><date>2015-08-08 13:58:14</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>43</revnumber><date>2015-08-08 13:46:33</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>42</revnumber><date>2015-08-08 13:45:20</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>41</revnumber><date>2015-08-08 13:23:42</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>40</revnumber><date>2015-08-08 13:17:56</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>39</revnumber><date>2015-08-08 12:59:08</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>38</revnumber><date>2015-08-08 12:53:24</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>37</revnumber><date>2015-08-08 12:25:18</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>36</revnumber><date>2015-08-08 12:23:34</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>35</revnumber><date>2015-08-07 13:47:37</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>34</revnumber><date>2015-08-07 13:46:44</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>33</revnumber><date>2015-08-07 13:45:52</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>32</revnumber><date>2015-08-07 13:44:19</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>31</revnumber><date>2015-08-07 13:43:25</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>30</revnumber><date>2015-08-07 13:32:03</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>29</revnumber><date>2015-08-07 13:28:24</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>28</revnumber><date>2015-08-07 13:27:31</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>27</revnumber><date>2015-08-07 13:24:32</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>26</revnumber><date>2015-08-07 13:23:23</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>25</revnumber><date>2015-08-07 13:21:58</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>24</revnumber><date>2015-08-07 13:11:06</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>23</revnumber><date>2015-08-07 12:57:21</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>22</revnumber><date>2015-08-07 12:55:34</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>21</revnumber><date>2015-08-07 12:49:01</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>20</revnumber><date>2015-08-07 12:17:50</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>19</revnumber><date>2015-08-06 22:24:11</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>18</revnumber><date>2015-08-06 22:21:08</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>17</revnumber><date>2015-08-06 22:20:04</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>16</revnumber><date>2015-08-06 22:19:44</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>15</revnumber><date>2015-08-06 22:16:05</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>14</revnumber><date>2015-08-06 22:09:57</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>13</revnumber><date>2015-08-06 22:09:23</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>12</revnumber><date>2015-08-06 21:51:53</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>11</revnumber><date>2015-08-06 21:36:26</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>10</revnumber><date>2015-08-06 21:21:07</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>9</revnumber><date>2015-08-06 21:05:49</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>8</revnumber><date>2015-08-06 21:04:02</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>7</revnumber><date>2015-08-06 20:55:53</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>6</revnumber><date>2015-08-06 20:53:41</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>5</revnumber><date>2015-08-06 20:52:27</date><authorinitials>JulianPadilla</authorinitials></revision><revision><revnumber>4</revnumber><date>2015-08-06 19:38:47</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>3</revnumber><date>2015-08-06 19:26:07</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>2</revnumber><date>2015-08-06 19:11:26</date><authorinitials>FernandoTrasobares</authorinitials></revision><revision><revnumber>1</revnumber><date>2015-07-29 18:14:51</date><authorinitials>JulianPadilla</authorinitials></revision></revhistory></articleinfo><section><title>Calibración Multi-Cámara (How to)</title><para><inlinemediaobject><imageobject><imagedata depth="16" fileref="https://ciii.frc.utn.edu.ar/wiki/moin_static1910/moniker/img/alert.png" width="16"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> Para descargar el proyecto : <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=calibracion.tar.gz">calibracion.tar.gz</ulink> </para><para><inlinemediaobject><imageobject><imagedata depth="16" fileref="https://ciii.frc.utn.edu.ar/wiki/moin_static1910/moniker/img/alert.png" width="16"/></imageobject><textobject><phrase>/!\</phrase></textobject></inlinemediaobject> Para más información sobre el proyecto: <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/LabElectronica/MultiCameraCalibration#">Calibración de múltiples cámaras</ulink>. </para><section><title>Requisitos</title><para>Para realizar una Calibración de múltiples cámaras, se requiere: un Data Set (Set de imágenes), donde el Fiducial (Patrón), sea visto al menos por un par de cámaras, osea que el Fiducial a detectar esté en un área de visión solapada. También son necesarios la matriz de calbración de la cámara y los coeficientes de distorsión de la lente obtenidos mediante una calibración intrínseca. </para><para>Para realizar el Data Set se propone la utilización del script <code>Captura_multiCamera.py</code> incluído en el directorio <emphasis role="strong"><ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/CreacionDataSet#">CreacionDataSet</ulink></emphasis> del archivo adjunto <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=calibracion.tar.gz">calibracion.tar.gz</ulink>. <code>Captura_multiCamera.py</code> crea en el directorio donde fue ejecutado, un directorio <emphasis role="strong">Capturas_[día]_[mes]_[año]-[índice]</emphasis>(<emphasis>índice:por defecto comienza en 0, de encontrarse continúa la numeración</emphasis>), que contiene directorios <emphasis role="strong">cam[índice]</emphasis>(<emphasis>ïndice: identifica la cámara a la que pertenece el directorio</emphasis>), estos últimos directorios contienen imágenes <emphasis><emphasis role="strong">img[índiceImg]_[índiceCam]</emphasis></emphasis> referente a las cámaras. El código del script posee un encabezado de comentario <emphasis>IP &amp; INICIALIZACION</emphasis>, dentro de este una variable tipo lista <emphasis role="strong">IPoDISP</emphasis> contiene las direcciónes IP (<emphasis>Formato: <ulink url="http://"/>...</emphasis>) o DISPOSITIVOS (<emphasis>/dev/video[índice]</emphasis>) a utilizar. El usuario debe editar e ingresar el/los IP o DISPOSITIVOS que posea. </para><para>Se considera una realización de 20 tomas mínimas. <emphasis role="strong">Utilización:</emphasis>  </para><screen><![CDATA[$ python Captura_multiCamera.py]]></screen><para>Presionar ESC para la toma de cada imagen.  </para><para><emphasis role="strong">Modulos:</emphasis> <emphasis>CAM.py</emphasis>, incluído en <emphasis role="strong"><ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/CreacionDataSet#">CreacionDataSet</ulink></emphasis>. </para><para><emphasis>Aclaración: La captura de imágenes para formar un data set puede realizarse con los medios que el usuario disponga, manteniendo como consideración los nombres de los directorios <emphasis role="strong">cam[índice]</emphasis> y archivos tipo imagen </emphasis><emphasis role="strong">img[índiceImg]_[índiceCam]</emphasis><emphasis>, para el funcionamiento de el script de Calibración de múltiples cámaras.</emphasis> </para><para>Para la obtención de la matriz de calibración y los coeficientes de distorsión se implementó el script <code>Calibración_Fid_Chessboard.py</code> incluído en el directorio <emphasis role="strong"><ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/CreacionDataSet#">CreacionDataSet</ulink></emphasis> del archivo adjunto <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=calibracion.tar.gz">calibracion.tar.gz</ulink>. El script utiliza un conjunto de imágenes donde en su composición se observe un Fiducial (Patron) del tipo Chessboard <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=Chessboard.png">Chessboard.png</ulink>, devolviendo al directorio de imágenes tres archivos con formato <emphasis><ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/NumpyArray#">NumpyArray</ulink></emphasis> correspondientes a la matriz de calibración (<emphasis role="strong">mat_calib.npy</emphasis>), a los coeficientes de distorsión (<emphasis role="strong">coef_dist.npy</emphasis>) y como referencia al error total de la calibración (<emphasis role="strong">Error_total.npy</emphasis>) </para><para><emphasis role="strong">Utilización:</emphasis>  </para><screen><![CDATA[$ python Calibracion_Fid_Chessboard.py -p <path> -a <a> -b <b> -c <c> -t <format>]]></screen><informaltable><tgroup cols="2"><colspec colname="col_0"/><colspec colname="col_1"/><tbody><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para><emphasis role="strong">Parámetros</emphasis></para></entry><entry align="center" colsep="1" rowsep="1"><para><emphasis role="strong">Descripción</emphasis></para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-p</para></entry><entry align="center" colsep="1" rowsep="1"><para>Directorio donde se encuentran las ímagenes</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-a</para></entry><entry align="center" colsep="1" rowsep="1"><para>N° de esquinas interiores verticales</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-b</para></entry><entry align="center" colsep="1" rowsep="1"><para>N° de esquinas interiores horizontales</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-c</para></entry><entry align="center" colsep="1" rowsep="1"><para>Dimension del cuadrado (Lado)</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-t</para></entry><entry align="center" colsep="1" rowsep="1"><para>Formato de las imágenes sin considerar el punto(.) jpg,png,pnm</para></entry></row></tbody></tgroup></informaltable><para><emphasis>Aclaración: la obtención de imágenes puede realizarse con <code>Captura_multiCamera.py</code>, donde el Fiducial se observe en diferentes posiciones y distancias. Como referencia se consideran 20 tomas mínimas por cámara a calibrar.</emphasis> </para></section><section><title>Calibración Extrínseca</title><para>Una vez obtenido el data set de imágenes se puede realizar la calibración extrínseca del conjunto de cámaras. Para ello, se implementó el script <code>calc_multi_ext.py</code> también presente en <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=calibracion.tar.gz">calibracion.tar.gz</ulink> en el directorio <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Calibraci%C3%B3nExtr%C3%ADnseca#">CalibraciónExtrínseca</ulink>. </para><para>Para que el script <code>calc_multi_ext.py</code> funcione, se necesita un data set de imágenes generado por <code>Captura_multiCamera.py</code> ó al menos siguiendo el formato que se indicó anteriormente. Además, en los directorios <emphasis role="strong">cam[índice]</emphasis> debe incluirse las matrices de calibración intrínseca de cada cámara mediante los archivos <emphasis role="strong">mat_calib.npy</emphasis> y <emphasis role="strong">coef_dist.npy</emphasis>. </para><section><title>Módulos</title><para>Es necesario instalar los siguientes módulos: </para><itemizedlist><listitem><para>Numpy  </para></listitem><listitem><para>OpenCV 2.4.3 o superior </para></listitem><listitem><para>Matplotlib </para></listitem></itemizedlist><para>Los demás módulos importados vienen con el proyecto en <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=calibracion.tar.gz">calibracion.tar.gz</ulink>. </para></section><section><title>Utilización</title><para>Para calcular las matrices de calibración extrínseca debe ejecutarse la siguiente línea: </para><screen><![CDATA[$ python calc_multi_ext.py -f [CHESS|CIRCLE|L1|L2] -W <w> -H <h> -S <s> -p <path> -v]]></screen><informaltable><tgroup cols="2"><colspec colname="col_0"/><colspec colname="col_1"/><tbody><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para><emphasis role="strong">Parámetros</emphasis></para></entry><entry align="center" colsep="1" rowsep="1"><para><emphasis role="strong">Descripción</emphasis></para></entry></row><row rowsep="1"><entry align="center" colsep="1" morerows="4" rowsep="1"><para>-f</para></entry><entry align="left" colsep="1" rowsep="1"><para> Indica el tipo de fiducial presente en los data sets. Los valores permitidos son:</para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para><emphasis role="strong">CHESS</emphasis>: en caso de utilizar un Chessboard.</para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para><emphasis role="strong">CIRCLE</emphasis>: en caso de utilizar un patrón de círculos.</para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para><emphasis role="strong">L1</emphasis>: en caso de usar un patrón L tamaño A3. </para></entry></row><row rowsep="1"><entry colsep="1" rowsep="1"><para><emphasis role="strong">L2</emphasis>: en caso de usar un patrón L tamaño A2.</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-W</para></entry><entry colsep="1" rowsep="1"><para> N° de esquinas interiores horizontales en caso de usar un Chessboard ó la cantidad horizontal de círculos al usar patrón de círculos.</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-H</para></entry><entry colsep="1" rowsep="1"><para> N° de esquinas interiores verticales en caso de usar un Chessboard ó la cantidad vertical de círculos al usar patrón de círculos.</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-S</para></entry><entry colsep="1" rowsep="1"><para> Tamaño de los cuadrados del Chessboard ó la distancia vertical entre centros de círculo.</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-p</para></entry><entry colsep="1" rowsep="1"><para> Path al directorio del data set.</para></entry></row><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para>-v</para></entry><entry colsep="1" rowsep="1"><para> Permite ver los resultados de la calibración extrínseca cámara-patrón.</para></entry></row></tbody></tgroup></informaltable></section><section><title>Aclaraciones</title><itemizedlist><listitem><para><code>calc_multi_ext.py</code> se adapta a data sets formados por cualquier cantidad de cámaras con cualquier cantidad de capturas. El requisito es que el fiducial pueda ser reconocido al menos en un par de imágenes. </para></listitem><listitem><para>El script soporta los siguientes tipos de figucial: </para><orderedlist numeration="arabic"><listitem><para><emphasis role="strong">Chessboard</emphasis> [CHESS] <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=Chessboard.png">Chessboard.png</ulink> </para></listitem><listitem><para><emphasis role="strong">Patrón de círculos</emphasis> [CIRCLE] <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=Circle.png">Circle.png</ulink> </para></listitem><listitem><para><emphasis role="strong">Patrón L</emphasis> [L1|L2] <ulink url="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=Fid.png">Fid.png</ulink>   </para></listitem></orderedlist></listitem><listitem><para>La cámara 0 es utilizada como sistema de coordenadas global, es decir que los parámetros de las demás cámaras están referidos a ésta por defecto. En caso de necesitar referir las cámaras a un punto en particular, se deben incluir las líneas comentadas en el script, que inicializan la matriz <emphasis role="strong">Ho</emphasis>. La matriz <emphasis role="strong">Ho</emphasis> debe contener los parámetros extrínsecos de la cámara 0 respecto del punto de referencia global. </para></listitem><listitem><para>Las medidas de los cuadrados del chessboard o la distancia entre centro en el patrón de círculos, deben ingresarse mediante el parámetro <code>-S</code> en la misma unidad que se utilizó durante la calibración intrínseca de las cámaras. </para></listitem></itemizedlist></section></section><section><title>Ejemplo</title><para>A continuación veremos un ejemplo de cómo utilizar el script de calibración extrínseca multicámara. Se usará el data set <emphasis role="strong">capturas_fid</emphasis> presente en el directorio <emphasis role="strong">Ejemplos</emphasis>. Este data set muestra un ejemplo de 3 cámaras dispuestas como se observa en la siguiente figura. </para><informaltable><tgroup cols="1"><colspec colname="col_0" colwidth="100*"/><tbody><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para> <inlinemediaobject><imageobject><imagedata fileref="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=ej1_arreglo.jpg" width="600"/></imageobject><textobject><phrase>ej1_arreglo.jpg</phrase></textobject></inlinemediaobject> </para></entry></row></tbody></tgroup></informaltable><para>Por cada cámara se tomaron 5 capturas de un fiducial del tipo L1 en diferentes posiciones y orientaciones. </para><para>Para verificar el funcionamiento del script ejecutamos la siguiente línea: </para><screen><![CDATA[$ python calc_multi_ext.py -f L1 -p ../Ejemplos/capturas_fid -v]]></screen><para>Al incluir el parámetro <code>-v</code>, el script nos mostrará el resultado de la calibración extrínseca cámara-patrón de cada imagen. Así por ejemplo en la imagen <emphasis role="strong">img1_2</emphasis> el resultado es el siguiente: </para><informaltable><tgroup cols="1"><colspec colname="col_0" colwidth="100*"/><tbody><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para> <inlinemediaobject><imageobject><imagedata fileref="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=img1_2.jpg" width="300"/></imageobject><textobject><phrase>img1_2.jpg</phrase></textobject></inlinemediaobject> </para></entry></row></tbody></tgroup></informaltable><screen><![CDATA[Imagen: img1_2
Detectado: SI
Traslacion: (-18.9981, -9.56605, -95.9049)
Rotacion: (3.3622478363, -26.0702682598, -0.73424646005)]]></screen><para>Al reconocer el patrón el script nos entrega la traslación y la rotación del patrón respecto del sistema de coordenadas de la cámara. La traslación es expresada en la misma unidad con que se realizó la calibración intrínseca, en este caso en cm. En cuanto a la rotación, se expresa en grados respecto de cada uno de los ejes de coordenadas. </para><para>Al finalizar la ejecución del script, se mostrará una representación 3d de la posición y orientación relativa de las cámaras. </para><informaltable><tgroup cols="1"><colspec colname="col_0" colwidth="100*"/><tbody><row rowsep="1"><entry align="center" colsep="1" rowsep="1"><para> <inlinemediaobject><imageobject><imagedata fileref="https://ciii.frc.utn.edu.ar/wiki/Vision/MultiCameraCalibration?action=AttachFile&amp;do=get&amp;target=result1.png" width="600"/></imageobject><textobject><phrase>result1.png</phrase></textobject></inlinemediaobject> </para></entry></row></tbody></tgroup></informaltable><para>A su vez, imprimirá los siguientes resultados: </para><screen><![CDATA[==============================================================================================   
PARAMETROS EXTRINSECOS:
]]><![CDATA[
         Camara 0:
_Traslacion: T(0.0, 0.0, 0.0) --> error = [ 0.  0.  0.]
_Rotacion:   R(0.0, 0.0, 0.0) --> error = [ 0.  0.  0.]
]]><![CDATA[
_H: [[1.0, 0.0, 0.0, 0.0], 
     [0.0, 1.0, 0.0, 0.0], 
     [0.0, 0.0, 1.0, 0.0],
     [0.0, 0.0, 0.0, 1.0]]
]]><![CDATA[
----------------------------------------------------------------------------------------------
         Camara 1:
_Traslacion: T(-55.6037, 0.67739, 23.1036) --> error = [ 0.24797127  2.2620616   0.83135331]
_Rotacion:   R(-2.92169, -23.575, -5.2606) --> error = [ 1.01368535  0.09017722  0.08395476]
]]><![CDATA[
_H: [[0.9126772039092153,  -0.0712668311567275, 0.40241938829421997,   -55.6037025451660], 
     [0.08403358830513508, 0.9963626919122888,  -0.014134329778173749, 0.677389502525329],
     [-0.399948356050854,  0.04671682647271351, 0.9153462701557942,    23.10357093811035], 
     [0.0,                 0.0,                 0.0,                   1.0              ]]
]]><![CDATA[
----------------------------------------------------------------------------------------------
         Camara 2:
_Traslacion: T(57.8944, 1.87501, 22.0916) --> error = [ 0.43438557  0.92514062  0.32592562]
_Rotacion:   R(-3.55962, 20.5784, -1.75286) --> error = [ 0.62093771  0.07284754  0.34228492]
]]><![CDATA[
_H: [[0.9357538808759571,   -0.0523421659613863, -0.34874778985977173, 57.89437484741211],
     [0.028636666046206235, 0.9969361831958894,  -0.07278878475074979, 1.875006437301635],
     [0.35148921295408053,  0.05812540991997393, 0.9343858091111414,   22.09160041809082],
     [0.0,                  0.0,                 0.0,                  1.0              ]]
]]><![CDATA[
----------------------------------------------------------------------------------------------]]></screen><para>Nos entrega la estimación de la traslación, la rotación y la matriz homográfica de cada cámara respecto del sistema de coordenadas global. La traslación se expresa en la misma unidad con que se realizó la calibración intrínseca, en este caso en cm. Por su parte, la rotación, representa los grados de giro respecto de cada eje de coordenadas.  </para><para>Por último, los niveles de error son calculados en base a la varianza que tienen los parámetros extrínsecos, tomando los resultados de todas las capturas.     </para></section></section></article>