c++ c image-processing cross-platform performance

Bibliotecas de procesamiento rápido de imágenes C/C++ multiplataforma



image-processing cross-platform (11)

Cuáles son algunas bibliotecas de imágenes multiplataforma y de alto rendimiento para el procesamiento de imágenes (cambio de tamaño y búsqueda de histogramas de color / tono). No se necesita gui Esto es para C / C ++.

Hasta ahora he buscado en

  • OpenCV
  • GIL como parte de Boost
  • Diablo
  • CImg

Mis preguntas

  • ¿Cómo es el rendimiento de los que he enumerado anteriormente?
  • ¿Cuáles son algunas otras bibliotecas?

Tu opinión muy apreciada.


Es posible que desee ver IM . Se basa en varias plataformas y tiene soporte para formatos de archivos de imagen (modulares), una variedad de representaciones de imágenes y una amplia gama de transformaciones y operadores. También está disponible una herramienta GUI, IMLab , para demostrar operadores de procesamiento de imágenes basados ​​en la biblioteca IM.


Hay una biblioteca de procesamiento de imágenes multiplataforma de código abierto simple y gratuita Simd . Como se desprende de su descripción:

Proporciona muchos algoritmos útiles de alto rendimiento para el procesamiento de imágenes, tales como: conversión de formato de píxeles, escalado y filtración de imágenes, extracción de información estadística de imágenes, detección de movimiento.

Los algoritmos se optimizan con el uso de diferentes extensiones de CPU SIMD: SSE, SSE2, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 y AVX-512 para x86 / x64, VMX (Altivec) y VSX (Power7) para PowerPC. NEON para ARM.


No creo haber visto nada mejor en características y rendimiento que HALCON de MVTec . Proporciona todo tipo de algoritmos de visión artificial y procesamiento de imágenes listos para usar y muchos ejemplos de la vida real. La biblioteca usa multihilo tanto como los algoritmos podrían permitir y GPU cuando esté disponible. Es muy multiplataforma y proporciona un IDE fantástico que le permitirá exportar su código de prototipo (algoritmo) a muchos idiomas, incluidos C, C ++, C # y más.

Una de las mejores características de esta biblioteca es cómo tratan los objetos de la región. Es increíblemente inteligente y eficiente tanto para el almacenamiento como para el procesamiento de máscaras. Desafortunadamente, OpenCV tiene mucho que aprender de eso.

El principal problema con este paquete es el precio (estúpidamente alto) pero si está trabajando en un proyecto donde no necesita implementar licencias de tiempo de ejecución (por ejemplo, SaaS), entonces este es el camino a seguir, no busque más si necesita una solución seria procesamiento de imágenes y visión por computadora.


No se olvide de mirar CxImage : lo he usado profesionalmente en aplicaciones de teléfonos móviles intensivas en gráficos desplegadas a nivel mundial, donde funciona perfectamente y tiene tantas funciones. ¡Compruébalo!


También hay VTK y ITK , con una gran cantidad de algoritmos de procesamiento de imágenes múltiples.



Utilizamos Accusoft durante bastante tiempo, pero por razones muy específicas, cambiamos a LeadTools , que solo existe para Windows. Accusoft tiene una interfaz muy clara y mucho más definida que las herramientas de plomo. Ambas bibliotecas son muy robustas y ambas afirman leer más o menos todos los tipos de archivos existentes. Ambos también tienen un soporte bastante receptivo.


OpenCV tiene un rendimiento bastante bueno. Debería ser suficiente para la mayoría de los casos.

Para mejorar el rendimiento, también puede usar OpenCV junto con Intel IPP , que sin embargo es un producto comercial no gratuito. Si OpenCV detecta que IPP está instalado, lo usará siempre que sea posible.

Como tercera opción, puede usar IPP directamente. IPP se diseñó con un alto rendimiento (en arquitecturas Intel) como objetivo. Está optimizado para usar las instrucciones Intel SIMD.


ExactImage es una biblioteca rápida de procesamiento de imágenes C ++. A diferencia de muchos otros marcos de bibliotecas, permite el funcionamiento en varios espacios de color y profundidades de bits de forma nativa, lo que resulta en una baja memoria y requisitos computacionales.



vips , una biblioteca de procesamiento de imágenes científicas C / C ++ multiplataforma gratuita. Es rápido y funciona bien en imágenes muy grandes.

Hice un benchmark muy simple: cargar un tiff RGB de 5.000 x 5.000 píxeles, recortar 100 píxeles de cada borde, reducir 10%, agudizar y guardar de nuevo. En esta prueba trivial al menos, vips es más de tres veces más rápido que cualquier otra cosa que haya intentado.