miércoles, 10 de abril de 2013

Librerias de visión artificial




Librerias (biblioteca central UNED)

 


Son muchas las librerías que pueden usarse a la hora de desarrollar aplicaciones de visión artificial. 

A continuación citaremos las más importantes: 

 

Es importante elegir una librería como herramienta central a la hora de hacer un desarrollo de visión artificial , no obstante sería un error considerar solo una. Es muy posible que las deficiencias de una pueda ser resueltas por otra, o que para un problema concreto resulte aconsejable usar una librería específica. 

Torch3vision:

Escrita en C++ dispone de procesamiento básico de imágenes, algoritmos de extracción de características, así como detección de caras empleando  Haar-like features. Es libre con licencia BDS. 

En su página podemos encontrar documentación, tutoriales  y algunos ejemplos. El problema es que parece que su desarrollo se encuentra parado, la última versión, la 2.1, data del 2007, toda una eternidad.




VLX:

También esta escrita en C++, incorpora la mayoría de los algoritmos habituales en visión artificial. En realidad no es una única librería, sino más bien un conjunto de ellas que ofrecen una muy completa funcionalidad. Es una opción a tener en cuenta ya que dispone de unas características muy atractivas, una de ellas es la posibilidad de usar únicamente las librerías que nos resulten de utilidad ya que no hay dependencias entre ellas. 

Sigue muy activa y en su página podemos encontrar tutoriales y muy diversa información.



RAVL:

De nuevo escrita en C++, nos proporciona los elementos básicos de una librería de visión artificial. Incorpora algunos elementos diferenciadores tales como soporte para herramientas de audio o interfaces de usuario basadas en GTK. Promete ser de fácil programación y de no requerir grandes conocimientos en C++. 

Actualmente soporta Linux (x86_64/i386) y Windows (solo i386). Su licencia es tipo GNU. 




LTI-lib:

Librería orientada objetos para visión artificial. Dispone de más de 500 clases, entre las que se incluyen clases para  álgebra lineal, clasificación, procesamiento de imágenes y muchas otras características.  

Ha sido testada bajo Linux (gcc) y en Windows NT (Visual C++). Su licencia es GNU Lesser General Public License.

- http://ltilib.sourceforge.net/doc/homepage/index.shtml

OpenCV:

Sin lugar a dudas la más conocida. Más de 500 algoritmos entre los que se incluye funciones de propósito general  para procesamiento de imágenes, descripciones geométricas, segmentación, seguimiento, etc... Bajo mi punto de vista la más completa, activa e imprescindible. Una característica añadida es la posibilidad de emplear las capacidades de computación de las GPU. También permite el uso de las librerías de Intel (Integrated Performance Primitives, IPP) que incluyen una larga lista de funciones optimizadas para procesadores Intel. Si las librerías se encuentran instaladas OpenCV hace uso de las mismas, mejorando la velocidad en los cálculos.

Dispone de muchísima documentación, incluyendo algunos libros. Sobran los ejemplos, dentro y fuera de la página. Está disponible para Linux, Windows y Android. Se puede programar en C++, C, Python y Java. 


Existen algunas librarías más pero no podría decir mucho de ellas. Las citadas son las más completas y seguramente suficientes para la gran mayoría de los propósitos. La información que he ofrecido puede ser es muy somera, pero en los enlaces se podrá localizar toda la información indispensable.

Para comparar de forma más objetiva las distintas librerías podemos recurrir al libro "Learning OpenCV: Computer Vision with the OpenCV Library". Este nos ofrece una evaluación de la velocidad de cálculo para algunos algoritmos habituales, tales como cambiar el tamaño de una imagen, o un Optical Flow para seguimiento de 520 puntos. La siguiente gráfica muestra los resultados, valores mayores indican más tiempo de proceso. El resultado es evidente, OpenCV y OpenCV+IPP ganan por goleada.  
























Las versiones empleadas son un tanto antiguas, OpenCV 1.0, siendo la última versión cuando se escribe esto la 2.4. Debido al gran impulso que esta recibiendo OpenCV estas diferencias seguramente se habrán incrementado. Esto no significa que las librerías más lentas deban desecharse, la comparativa es de velocidad y no de eficiencia. Lo más adecuado sería usar como librería principal OpenCV y auxiliarmente alguna otra cuando encontremos características especiales no presentes en OpenCV.

4 comentarios:

  1. Muchas gracias hombre, empezaré con opencv, un saludo desde Colombia

    ResponderEliminar
  2. Una información muy interesante! Los sistemas de vision artificial cada vez tienen más aplicaciones en muchos ámbitos tanto de la industria como de la ciencia o seguridad. Saludos!

    ResponderEliminar
  3. Recopilar todo este tipo de información es muy útil. Estoy de acuerdo con Martina, todo lo que mencionas tiene muchas aplicaciones en el software de visión artificial. Me alegra apreciar la rapidez con la que vamos avanzando. Un saludo

    ResponderEliminar