6

Estoy buscando aprender un lenguaje de programación (tomar un curso) para usar en el análisis y procesamiento de imágenes. Posiblemente Bioinformática también. ¿A qué idioma debo ir? C o Java? Otros idiomas no son una opción para mí. También explique por qué cualquiera de los idiomas es una mejor opción para mi aplicación.Java o C para procesamiento de imágenes

Respuesta

4

Tiene que equilibrar la potencia de procesamiento sin procesar y el tiempo del desarrollador. Java también se está volviendo bastante rápido y si ha terminado un par de días antes, tiene más tiempo para procesar los datos.

Todo depende del volumen.

Más importante aún, le sugiero que busque las bibliotecas y marcos que ya existen, vea cuál se ajusta más a lo que se necesita hacer y elija el idioma en que se escribió la biblioteca, ya sea C, Java o Fortran.

Para Java, encontré BioJava.org como punto de partida.

4

Java no es demasiado malo para el procesamiento de imágenes. Si gestiona sus objetos de origen de forma adecuada, tendrá la posibilidad de obtener un rendimiento razonable. Algunas de las cosas que me gustan con Java que se relaciona con imágenes:

  1. Java Advanced Imaging
  2. utilidades de gráficos 2D (echar un vistazo a BufferedImages)
  3. ImageJ, etc
  4. conseguir que funcione con JAMA
3

Pídale a alguien en el campo que está trabajando (es decir, la bioinformática)

Para las imágenes solares, la mayoría de el trabajo se realiza en IDL, Fortran, Matlab, Python, C o Perl (PDL). (Aproximadamente en ese orden ... IDL es definitivamente el primero, ya que la mayoría del software de calibración del instrumento está escrito en IDL)

Debido a esto, hay muchos kits de herramientas ya escritos en esos idiomas para nuestro campo. Con frecuencia, con grandes conjuntos de datos de referencia, PI lanza algunos paquetes de software como un ejemplo de cómo interpretar/interactuar con el formato de datos. Solo puedo suponer que la Bioinformática sería similar.

Si terminas yendo por una ruta diferente que el resto del campo, vas a tener muchas más dificultades para trabajar con otros científicos, ya que no puedes compartir el código tan fácilmente.

Nota: Hay varias herramientas de visualización que se han publicado en nuestro campo que se escribieron en Java, pero suponen que las imágenes ya han sido preparadas por algún otro proceso.

0

Lo ideal sería utilizar algo como Java o (incluso mejor) Python para cosas de "alto nivel", y compilar en C las rutinas que requieren mucha potencia de procesamiento (por ejemplo, usando Cython, etc.).

Existen algunas bibliotecas científicas para Python (SciPy y NumPy), y son un buen comienzo, aunque todavía no es sencillo combinar Python y C (es necesario ajustar un poco las cosas).

0

solo mi valor de dos peniques: java no permite el uso de punteros en lugar de C/C++ o C#. Por lo tanto, si va a manipular píxeles directamente, es decir, a escribir sus propias funciones de procesamiento de imágenes, serán mucho más lentas que su equivalente en C++. Por otro lado, C++ es una pesadilla total de un idioma en comparación con Java.le tomará al menos el doble de tiempo escribir el bit equivalente de código en C++. entonces, con todo el aumento de la productividad, puede permitirse comprar una computadora que compensa la diferencia en el tiempo de ejecución ;-)

Sé que otros idiomas no son una opción para usted, pero personalmente puedo recomendar C# for image procesamiento o visión por computadora: permite punteros y, por lo tanto, las funciones IP en C# son solo la mitad de lentas que en C++ (una compensación aceptable, creo) y tiene una excelente integración con C++ nativo y una buena biblioteca contenedora para opencv.

0

Descargo de responsabilidad: Trabajo para TunaCode.

Si tiene que elegir entre diferentes idiomas para comenzar con el procesamiento de imágenes, le recomiendo comenzar con C++. Puede acceder al puntero sin procesar, que es imprescindible si desea operar en píxeles individuales.

A continuación, ¿en qué tipo de imágenes está interesado? Solo por divertidos filtros de imagen o algunas cosas pesadas como la estimación de movimiento, seguimiento y detección, etc. Para eso, recomendaría que eche un vistazo a CUVILib ya que más temprano que tarde, necesitará rendimiento en la funcionalidad de Imágenes y eso es lo que ofrece CUVI. Puede usarlo como independiente si cumple sus propósitos o puede conectarlo con otras bibliotecas como Intel IPP, ITK, OpenCV, etc.

1

La biblioteca más popular de visión artificial (procesamiento de imágenes, análisis de imágenes) es OpenCV que está escrita en C++, pero también se puede usar con Python y Java (OpenCV4Android oficial y JavaCV no oficial).

Existen aplicaciones bioinformáticas que básicamente son procesamiento de imágenes, por lo que OpenCV se encargará de eso. Pero también hay algunos que no lo son, están basados, por ejemplo, en Machine Learning, por lo que si necesita algo más que imágenes/videos relacionados, necesitará otra biblioteca orientada a Bioinformática. Opencv también tiene un módulo de aprendizaje automático, pero está más enfocado a la visión por computadora.

Acerca de los idiomas C vs Java, la mayoría se ha dicho en las otras respuestas. Debo agregar que estas bibliotecas ahora están basadas en C++ y no son simples C. Si sus aplicaciones tienen necesidades de procesamiento en tiempo real, C++ probablemente sea mejor para eso, de lo contrario, Java será más que suficiente, ya que es más amigable.

Cuestiones relacionadas