Hola,<br><br><div>Respondo por partes:</div><div><br><div class="gmail_quote">2010/12/10 redouane kachach <span dir="ltr">&lt;<a href="mailto:redo.robot@gmail.com">redo.robot@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hola David,<div><br></div><div>Del EldeCare no tengo mucha idea así que no puedo aportar mucho. Solo por curiosidad en los parámetros que has puesto que significan la (w,h)? <font face="sans-serif"><span style="line-height:19px">Te refieres al bonding-box del objeto?</span></font></div>


<div><font face="sans-serif"><span style="line-height:19px"><br></span></font></div></blockquote><div><br></div><div>El último algoritmo de ElderCare hace el tracking de prismas que se definen por el centro,largo,ancho y alto (este se me ha olvidado, lo apaño). Es una descripción de alto nivel, pero permite ver que metemos y que sacamos. Con el algoritmo que uses en el clasificador deberías hacer lo mismo. Empieza por alto nivel, y si luego quieres describir algún otro algoritmo usado por este hazlo a parte.</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div><font face="sans-serif"><span style="line-height:19px"></span></font></div><div>Sobre el CarClassifier mi idea es re-escribirlo desde zero en C++ utilizando los patrones de diseño que propones para la arquitectura y tirando de OpenCV cuando haga falta. Tengo que pensar </div>


<div>un poco en como quedara la cosa ya que mi idea es separarlo en dos componentes tracker y classifier y así el primero podrá ser utilizado como componente por separado. Pero no tengo claro </div><div>si esta separación va ser sencilla y en su caso el impacto que tendrá en el tiempo de ejecución total. Teniendo en cuenta que en este caso como en el CarSpeed las cosas tienen que correr en </div>


<div>tiempo-real así que habrá que aplicar todas las optimizaciones posibles,</div><div><br></div></blockquote><div><br></div><div>Me parece buena la idea de separarlo, será más fácil de probar luego y sobre todo lo podremos reutilizar. En cuanto a la unidad funcional no la basaría en componentes, si no en librerías (aunque luego hagas un componente si quieres...). De esta manera tendremos software mas manejable y reutilizable. Además es cierto lo que dices, necesitamos tiempo real o lo más parecido que podamos y la comunicación via componentes nos va a limitar. Lo mejor será meterlo todo en el mismo componente con llamadas locales de las de toda la vida.</div>
<div><br></div><div>Importante que uses OpenCV y STL para todo lo que puedas. También te invito a que eches un ojo a los punteros inteligentes incluidos en el TR1 de C++ (#include &lt;tr1/memory&gt; y std::tr1::shared_ptr) pueden ser útiles para manejar memoria más efectivamente.</div>
<meta charset="utf-8"><div><br></div><div> Te propongo que analices los algoritmos que quieres refactorizar y plantees un API basado en el patrón de diseño que comentábamos y lo repasamos juntos.</div><div><br></div><div>
Un saludete,</div><div>David.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div></div><div>Saludos,</div><div>Redo.</div><div><br></div>
<div><div class="gmail_quote">2010/12/1 David Lobato <span dir="ltr">&lt;<a href="mailto:dav.lobato@gmail.com" target="_blank">dav.lobato@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div class="h5">Hola,<div><br></div><div>El análisis de alto nivel del algoritmo Eldercare sería el siguiente:</div>
<div><br></div><div>

<a href="https://jde.gsyc.es/index.php/Eldercare_Algorithm" target="_blank">https://jde.gsyc.es/index.php/Eldercare_Algorithm</a></div>
<div><br></div><div>Sólo he tenido en cuenta las entradas y las salidas. Queda refinar el apartado de parámetro de configuración.</div><div><br></div><div>A partir de esto, podemos generar el API de alto nivel para usar el algoritmo.</div>



<div><br></div><div>¿Comentarios?<br><br><div class="gmail_quote">2010/11/30 David Lobato <span dir="ltr">&lt;<a href="mailto:dav.lobato@gmail.com" target="_blank">dav.lobato@gmail.com</a>&gt;</span><div><div></div><div>


<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hola,<div><br></div><div>Este mensaje va dirigido a los que estáis liados o vais a estarlo en breve con Eldercare y Carclassifier, aunque si alguien quiere añadir o comentar algo será bienvenido.</div><div><br></div><div>



Creo que el primer paso que debemos dar antes de añadir nueva funcionalidad a lo que ya existe es refactorizar los algoritmos de modo que los empaquetemos en sendas librerías que nos faciliten su uso/mantenimiento posteriormente.</div>




<div><br></div><div>El estado actual de Eldercare (y supongo que también del classifier) es un conjunto de funciones, alguna clase y muchas variables globales, que hacen un poco complicado ver que está sucediendo y mucho más depurar los errores. Además de estar bastante cohesionado con la interfaz gráfica.</div>




<div><br></div><div>La idea es sacar toda la funcionalidad del algoritmo y encapsularla, definiendo un API para su uso. En mi TFM [1] describía un patrón de diseño para algoritmos iterativos (derivado de patrón Strategy) que creo encaja en la mayoría de algoritmos que hacemos, y sin duda encaja en el de eldercare y carclassifier. Así que creo que puede ser un punto de partida para ir definiendo las clases que tendrá cada algoritmo.</div>




<div><br></div><div>El método de trabajo para refactorizar un algoritmo de los que tenemos hasta la fecha es simple:</div><div><ol><li>Analizar sus entradas, salidas y parámetros de configuración</li><li>Declarar las clases en función de lo encontrado anteriormente (.h)</li>




<li>Definir las clases usando el código que ya tenemos (.cpp)</li></ol><div>Los puntos 1 y 2 podemos ir tratándolos en común para llegar a una solución consensuada. Si os parece empiezo con el punto 1 de Eldercare y continuamos juntos.</div>




</div><div><br></div><div>Comentarios??</div><div><br></div><div>Un saludo,</div><div>David.</div><div><br></div><div><br></div><div>[1] <a href="http://svn.jderobot.org/users/dlobato/tfm/trunk/memoria/jderobot5_thesis.pdf" target="_blank">http://svn.jderobot.org/users/dlobato/tfm/trunk/memoria/jderobot5_thesis.pdf</a><br clear="all">




<br>-- <br><div>David Lobato Bravo</div><div><br></div><div>Universidad Rey Juan Carlos</div><div>c/Tulipan s/n</div><div>28933 Móstoles</div><div>Madrid, Spain</div><div><a href="http://jderobot.org" target="_blank">http://jderobot.org</a></div>




<div><a href="http://es.linkedin.com/in/davidlobato" target="_blank">http://es.linkedin.com/in/davidlobato</a></div><br>
</div>
</blockquote></div></div></div><div><div></div><div><br><br clear="all"><br>-- <br><div>David Lobato Bravo</div><div><br></div><div>Universidad Rey Juan Carlos</div><div>c/Tulipan s/n</div><div>28933 Móstoles</div>

<div>Madrid, Spain</div><div><a href="http://jderobot.org" target="_blank">http://jderobot.org</a></div>
<div><a href="http://es.linkedin.com/in/davidlobato" target="_blank">http://es.linkedin.com/in/davidlobato</a></div><br>
</div></div></div>
<br></div></div><div class="im">_______________________________________________<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></div></blockquote></div><br></div>
</blockquote></div><br><br clear="all"><br>-- <br><div>David Lobato Bravo</div><div><br></div><div>Universidad Rey Juan Carlos</div><div>c/Tulipan s/n</div><div>28933 Móstoles</div><div>Madrid, Spain</div><div><a href="http://jderobot.org" target="_blank">http://jderobot.org</a></div>
<div><a href="http://es.linkedin.com/in/davidlobato" target="_blank">http://es.linkedin.com/in/davidlobato</a></div><br>
</div>