Codificación de procesamiento de imagen

12

Me preguntaba cuál es el mejor lenguaje para el procesamiento de imágenes. Sé que MATLAB tiene una buena biblioteca y comunidad de usuarios para ello. No lo he comprobado, también está allí para Python.

¿Cuál es el lenguaje más eficiente para esto?

fénix
fuente

Respuestas:

12

No se trata solo del lenguaje de programación sino de la biblioteca que está utilizando. Puedo pensar en lo siguiente:

MATLAB : las capacidades de procesamiento de imágenes están bastante bien, pero para un procesamiento más avanzado y en tiempo real necesitaría algunas cosas de bajo nivel. Además, no ofrece muy buena portabilidad.

Mathematica : bueno para prototipos y visualización rápida, pero eso es todo en mi humilde opinión.

OpenCV : creo que esta es la biblioteca más popular en la comunidad IP. Grandes capacidades ( computación GPU, módulo de Machine Learning, GUI, ¿qué más necesita? ), Rápido y aún en desarrollo (por lo que los errores menores se eliminan muy rápidamente). En cuanto a la comunidad, ¡es grande! Principalmente para la programación C / C ++, pero también Python (probablemente sea adecuado para usted).

JAI : Java Advanced Imaging, solo si te gusta Java. Personalmente no me gusta.

ImageMagick : puede usarlo con muchos lenguajes de programación, consulte la API .

CxImage : bueno si desea crear algo mejor que MS Paint y con alguna funcionalidad de Photoshop.

CImg : obviamente se debe usar con C ++, pero OpenCV es aún mejor.

PIL : biblioteca específica de Python con mucha funcionalidad. Si te gusta, puedes echar un vistazo más de cerca.

SimpleCV : básicamente es un enlace de Python de OpenCV con algunos ajustes. Muy fácil de usar y bastante eficiente.

scikit-image : también biblioteca de Python, pero en mi opinión peor que SimpleCV (aunque mi amigo no estaría de acuerdo con eso). Una ventaja es que incluían el extractor de características DAISY, bastante útil si necesita características densas.

GIL : parte de Boost , pero menos funcional que OpenCV. Aunque si te gusta y utilizas Boost, entonces para algunas funciones básicas debería estar bien.

ResIL - continuación delproyecto DevIL . Una gran ventaja es operar en muchos formatos de archivo, incluidos algunos archivos de juegos.

PINK : originalmente escrito en C ++. Recientemente lo probé y fue muy agradable trabajar con él. Gran integración con Python y rápido en C. incrustada Aparte de eso, tienen muchos algoritmos agradables.

Obviamente, hay muchas más bibliotecas de procesamiento de imágenes, pero estas son con las que tuve contacto. Entonces, si desea comenzar con algo, elija OpenCV (preferiblemente con el marco de trabajo C ++), ¡no se arrepentirá! Por otro lado, si sus habilidades de programación no son sólidas, es posible que desee pensar en usar bibliotecas basadas en Python, realmente fáciles de aprender y configurar.

jojek
fuente
2

MATLAB es el mejor lenguaje para aprender el procesamiento de imágenes. (es mi opinion)

Es fácil de aprender, independiente del hardware, más flexible que cualquier lenguaje compilado, posiblemente más eficiente que los lenguajes de script (debido a sus dlls inherentes optimizados para el procesamiento de señales a nivel de máquina), tiene un buen soporte académico y de ingeniería.

C / C ++ es el mejor lenguaje para crear aplicaciones independientes de procesamiento de imágenes. Bajo su conjunto de IDEs, puede generar código nativo que es el más eficiente. Y los IDE para C ++ proporcionan mejores funciones de depuración a nivel de máquina.

También se están utilizando algunos lenguajes de script. De hecho, son flexibles, portátiles, incluso considerablemente eficientes, sin embargo, la depuración puede no ser fácil a niveles bajos.

También las nuevas capacidades de procesamiento de GPU de CUDA, OpenCL, etc. aumentan drásticamente los rendimientos computacionales. (Sin embargo, son más difíciles de aprender ya que debe tener en cuenta la arquitectura de hardware de la tubería GPU subyacente para hacer uso de cualquier aumento de eficiencia)

Grasa32
fuente
-1

Si desea lanzar sus propios algoritmos o código, incluya OpenCL, ya que muchos núcleos de procesamiento de imágenes son "vergonzosamente paralelos".

O, en Big Iron, Fortran aún supera a la mayoría de los otros idiomas en el rendimiento de vectores numéricos.

hotpaw2
fuente