<br><br><div class="gmail_quote">---------- Mensaje reenviado ----------<br>De: <b class="gmail_sendername">Juan José García Cantero</b> <span dir="ltr">&lt;<a href="mailto:jj.garciac21@gmail.com">jj.garciac21@gmail.com</a>&gt;</span><br>
Fecha: 19 de marzo de 2013 17:08<br>Asunto: Re: [Jderobot-dev] Plugin para kinect en gazebo 1.4, posible cambio en imagen de profundidad para kinectServer<br>Para: Alejandro Hernández &lt;<a href="mailto:ahcorde@gmail.com">ahcorde@gmail.com</a>&gt;<br>
<br><br>Hola Alex,<div>en cuanto a plugin creo que te refieres a las lineas negras del suelo, es así? le echare un ojo. Y en cuanto al color en los componentes, a mi si me muestran los colores, si puedes dime en componentes mas concretamente para poder echarle un vistazo también.</div>

<div><br></div><div>Gracias por tu respuesta.</div><div>Un saludo!</div><div><br><div class="gmail_quote">El 19 de marzo de 2013 12:54, Alejandro Hernández <span dir="ltr">&lt;<a href="mailto:ahcorde@gmail.com" target="_blank">ahcorde@gmail.com</a>&gt;</span> escribió:<div>
<div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola Juanjo,<div><br></div><div>estoy ejecutando tu <b>plugin</b> de Kinect y tiene muy buena pinta. Aunque hay una cosa que no me cuadran de todo. En el suelo aparecen unas lineas que en la realidad no están.</div>

<div><br>

</div><div>También he probado alguno de tus componentes como el visualizar de color, pero no me salen las cosas con su color. </div><div><br></div><div>Solventando esta par de cosillas subimos las modificaciones al repositorio oficial.</div>


<div><br></div><div>Álex.</div><div><br></div><div><br><div class="gmail_quote">El 16 de marzo de 2013 14:58, Juan José García Cantero <span dir="ltr">&lt;<a href="mailto:jj.garciac21@gmail.com" target="_blank">jj.garciac21@gmail.com</a>&gt;</span> escribió:<br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><span style="border-collapse:collapse;color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px">Hola a todos,<div>



<br></div><div>escribo este mail para tratar dos temas:</div><div><br></div>
<div>    I. Si habéis probado el kinectPlugin del repositorio oficial jderobot veréis que en Gazebo 1.4 para Ubuntu 12.04 este plugin no funciona correctamente, esto es debido a la incompatibilidad con las librerías de anteriores versiones de Ubuntu, para solucionar esto propongo el plugin que yo mismo he remodelado, podéis encontrarlo aquí: <a href="https://svn.jderobot.org/users/jj.garciac21/pfc/trunk/src/kinectPlugin/" style="color:rgb(17,85,204)" target="_blank">https://svn.jderobot.org/users/jj.garciac21/pfc/trunk/src/kinectPlugin/</a> echadle un vistazo y decid que os parece. Además aquí tenéis un mundo para utilizar este plugin en gazebo 1.3 o superiores: <a href="https://svn.jderobot.org/users/jj.garciac21/pfc/trunk/worlds/kinect_simple.world" style="color:rgb(17,85,204)" target="_blank">https://svn.jderobot.org/users/jj.garciac21/pfc/trunk/worlds/kinect_simple.world</a></div>






<div><br></div><div>   II. A la hora de servir la imagen de profundidad tanto en kinectServer como en el kinectPlugin se esta utilizando el siguiente método para hacer la conversión de distancia a componentes RGB:</div><div>






<span style="font-family:Times;font-size:medium"><pre style="white-space:pre-wrap;word-wrap:break-word">void depth2rgb( const XnDepthPixel*  Xn_disparity, cv::Mat image){
   int i;
   //const unsigned short *disparity = Xn_disparity;
    
   for (i=0; i&lt;image.rows* image.cols; i++) {
      //std::cout &lt;&lt; i &lt;&lt; std::endl;
      int pval = depth[Xn_disparity[i]];
      int lb = pval &amp; 0xff;
      switch (pval&gt;&gt;8) {
              case 0:
                      image.data[3*i+0] = 255;
                      image.data[3*i+1] = 255-lb;
                      image.data[3*i+2] = 255-lb;
                      break;
              case 1:
                      image.data[3*i+0] = 255;
                      image.data[3*i+1] = lb;
                      image.data[3*i+2] = 0;
                      break;
              case 2:
                      image.data[3*i+0] = 255-lb;
                      image.data[3*i+1] = 255;
                      image.data[3*i+2] = 0;
                      break;
              case 3:
                      image.data[3*i+0] = 0;
                      image.data[3*i+1] = 255;
                      image.data[3*i+2] = lb;
                      break;
              case 4:
                      image.data[3*i+0] = 0;
                      image.data[3*i+1] = 255-lb;
                      image.data[3*i+2] = 255;
                      break;
              case 5:
                      image.data[3*i+0] = 0;
                      image.data[3*i+1] = 0;
                      image.data[3*i+2] = 255-lb;
                      break;
              default:
                      image.data[3*i+0] = 0;
                      image.data[3*i+1] = 0;
                      image.data[3*i+2] = 0;
                      break;
      }
   }
}</pre><pre style="white-space:pre-wrap;word-wrap:break-word">he percibido que mediante este método no se están dando los valores reales de profundidad, por ello propongo el siguiente método:</pre><pre style="white-space:pre-wrap;word-wrap:break-word">
<br></pre></span><span style="font-family:Times;font-size:medium"><pre style="white-space:pre-wrap;word-wrap:break-word">void KinectPlugin::depth2rgb(cv::Mat image){
   //const unsigned short *disparity = Xn_disparity;
   imageDepth.create(image.rows,image.cols,CV_8UC3);
   float * data= (float*)image.data;
   for (int i=0; i&lt;image.rows* image.cols; i++) {
      //std::cout &lt;&lt; i &lt;&lt; std::endl;
      int val = (int)(data[i]*1000);
                  imageDepth.data[3*i+0] = (float)val/10000*255;;
                  imageDepth.data[3*i+1] = val&gt;&gt;8;
                  imageDepth.data[3*i+2] = val&amp;0xff;
            
   }
}</pre><pre style="white-space:pre-wrap;word-wrap:break-word"><br></pre><pre style="white-space:pre-wrap;word-wrap:break-word">en este dividimos la distancia dada en un int con rango de 0 10000 en dos bytes el de mas peso le metemos en el componente g, y el de menos peso en el componente b de la imagen, ademas tenemos la componente r para mandar el valor de la distancia en escala de grises para mostrar si se quisiera la imagen directamente, un método para volver a tomar el dato de distancia en su formato original podría ser este:</pre>






<pre style="white-space:pre-wrap;word-wrap:break-word"><br></pre></span><span style="font-family:Times;font-size:medium"><pre style="white-space:pre-wrap;word-wrap:break-word">  float Control::get_distance(int i)
  {
    float distance= ((int)imageDataDepth-&gt;pixelData[3*i+1]&lt;&lt;8)|(int)imageDataDepth-&gt;pixelData[3*i+2];
    return distance;
  }</pre></span></div><div>Comentadme que os parecen estos dos temas.</div><div><br></div><div>Un saludo</div><div><br></div><div>Juanjo</div><div><br></div><div><br></div></span>
<br></div></div>_______________________________________________<br>
Jde-developers mailing list<br>
<a href="mailto:Jde-developers@gsyc.es" target="_blank">Jde-developers@gsyc.es</a><br>
<a href="http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers" target="_blank">http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers</a><br>
<br></blockquote></div><span><font color="#888888"><br><br clear="all"><div><br></div>-- <br>Alejandro Hernández Cordero<div><br></div><div><a href="http://www.linkedin.com/in/ahcorde/en" target="_blank"><img src="http://www.linkedin.com/favicon.ico"></a> <a href="https://twitter.com/ahcorde" target="_blank"><img src="http://www.twitter.com/favicon.ico"></a> <a href="https://plus.google.com/u/0/114434050324725472734/posts" target="_blank"><img src="https://ssl.gstatic.com/s2/oz/images/favicon.ico"></a> <a href="http://github.com/ahcorde" target="_blank"><img src="https://github.com/favicon.ico"></a><br>



</div><div><br></div><div>Play and visit my Curriculum vitae -&gt; <a href="https://googledrive.com/host/0BytBL_SySiIjX19Pd1o5dlZaRHc/Game.html" target="_blank">https://googledrive.com/host/0BytBL_SySiIjX19Pd1o5dlZaRHc/Game.html</a></div>




</font></span></div>
</blockquote></div></div></div><br></div>
</div><br>