2011-12-31 25 views
5

Estoy trabajando en el sistema de visión de robot y su objetivo principal es detectar objetos, quiero elegir una de estas bibliotecas (CImg, OpenCV) y tengo conocimiento de ambas.biblioteca de procesamiento de imágenes más rápida?

El robot que estoy utilizando tiene Linux, CPU de 1GHz y 1G RAM y estoy usando C++, el tamaño de la imagen es de 320p.

Quiero tener un procesamiento de imagen en tiempo real cerca de 20 de 25 fotogramas por segundo. En su opinión, qué biblioteca es más poderosa, aunque he probado ambas y tienen el mismo tiempo de proceso, abrir cv es ligeramente mejor y creo que es porque utilizo punteros con código abierto de cv.

Por favor comparta su idea y su razón.

gracias.

+2

Es mejor presentar dicha pregunta de procesamiento de imágenes en el sitio DSP -Q & A en sí mismo. Mire esto: http://dsp.stackexchange.com/ –

Respuesta

5

Creo que posiblemente pueda obtener el mejor rendimiento cuando integre OpenCV con IPP.

Ver esta referencia, http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-open-source-computer-vision-library-opencv-faq/

Aquí es otra referencia http://experienceopencv.blogspot.com/2011/07/speed-up-with-intel-integrated.html

Además, si congela el algoritmo que funciona a la perfección, por lo general se puede aislar a su algoritmo y su forma de trabajo hacia hacer la optimización grave (como optimización de memoria, portar a ensamblaje, etc.) que podría no estar listo para usar.

+0

Pero IPP no es gratis :) – ajlajlajl

+0

Debe verificar que IPP pueda ejecutar en su sistema integrado. OpenCV tiene una gran base de usuarios, así que debe ir con él. –

+0

OpenCV es la respuesta. OpenCV será la biblioteca más rápida y poderosa que pueda usar. – ahoffer

1

Realmente depende de lo que quiere hacer (qué tipo de objetos quiere detectar, precisión, qué algoritmo está usando, etc.) y cuánto tiempo tiene. Si se trata de procesamiento genérico de visión/imagen por computadora, me quedaría con OpenCV. Como dijo Dipan, considere una mayor optimización. En mi experiencia con la optimización para Computer Vision, el cuello de botella usualmente está en el ancho de banda de interconexión de memoria (o en la memoria misma) y por lo tanto es posible que deba intercambiar ciclos (computación) para ahorrar en la comunicación. Comprenda el algoritmo realmente bien para optimizar aún más el algoritmo (que a veces puede dar grandes mejoras en comparación con los compiladores).

Cuestiones relacionadas