6

Sto cercando di apprendere un linguaggio di programmazione (seguire un corso) da utilizzare nell'analisi e nell'elaborazione delle immagini. Forse anche bioinformatica. In quale lingua dovrei andare? C o Java? Altre lingue non sono un'opzione per me. Spiega anche perché entrambe le lingue sono l'opzione migliore per la mia applicazione.Java o C per l'elaborazione delle immagini

risposta

4

È necessario bilanciare la potenza di elaborazione raw e il tempo di sviluppo. Anche Java sta diventando abbastanza veloce e se hai finito un paio di giorni prima, hai più tempo per elaborare i dati.

Tutto dipende dal volume.

Ancora più importante, ti suggerisco di cercare le librerie e i framework che esistono già, vedere quali sono i più vicini a ciò che deve essere fatto e scegliere qualsiasi lingua sia stata scritta da C, Java o Fortran.

Per Java ho trovato BioJava.org come punto di partenza.

4

Java non è TOOO negativo per l'elaborazione delle immagini. Se gestisci i tuoi oggetti sorgente in modo appropriato, avrai la possibilità di ottenere prestazioni ragionevoli da questo. Alcune delle cose che mi piace con Java che si riferisce ad immagini:

  1. Java Advanced Imaging
  2. grafica 2D utility (uno sguardo ad BufferedImages)
  3. ImageJ, ecc
  4. farlo funzionare con JAMA
3

Chiedere a qualcuno nel campo cui si sta lavorando (vale a dire, la bioinformatica)

Per le immagini solari, la maggior parte dei il lavoro è svolto in IDL, Fortran, Matlab, Python, C o Perl (PDL). (Approssimativamente in questo ordine ... IDL è sicuramente il primo, poiché la maggior parte del software di calibrazione dello strumento è scritto in IDL)

Per questo motivo ci sono molti toolkit già scritti in quelle lingue per il nostro campo. Frequentemente, con grandi serie di dati di riferimento, il PI rilascia alcuni pacchetti software come esempio di come interpretare/interagire con il formato dei dati. Posso solo presumere che la Bioinformatica sarebbe simile.

Se si finisce per seguire un percorso diverso rispetto al resto del campo, si avrà molto più difficile lavorare con altri scienziati poiché non è possibile condividere il codice con la stessa facilità.

Nota: ci sono numerosi strumenti di visualizzazione che sono stati rilasciati nel nostro campo scritti in Java, ma presumono che le immagini siano già state preparate da qualche altro processo.

0

Idealmente, dovresti usare qualcosa come Java o (ancora meglio) Python per cose "di alto livello" e compilare in C le routine che richiedono molta potenza di elaborazione (per esempio usando Cython, ecc.).

Esistono alcune librerie scientifiche per Python (SciPy e NumPy), e sono un buon inizio, anche se non è ancora semplice combinare Python e C (è necessario modificare leggermente le cose).

0

solo i miei due pence vale: java non consente l'uso di puntatori al contrario di C/C++ o C#. Quindi, se vuoi manipolare direttamente i pixel, cioè scrivere le tue funzioni di elaborazione delle immagini, saranno molto più lente dell'equivalente in C++. D'altra parte il C++ è un incubo totale di una lingua rispetto a java.ci vorrà almeno il doppio del tempo per scrivere il bit equivalente di codice in C++. quindi con tutto il guadagno di produttività puoi probabilmente permetterti di acquistare un computer che compensa la differenza in runtime ;-)

so che altre lingue non sono un'opzione per te, ma personalmente posso davvero raccomandare C# per l'immagine elaborazione o visione del computer: consente puntatori e quindi funzioni IP in C# sono solo la metà lenti di C++ (un compromesso accettabile credo) e ha un'eccellente integrazione con C++ nativo e una buona libreria wrapper per opencv.

0

Disclaimer: Lavoro per TunaCode.

Se devi scegliere tra lingue diverse per iniziare l'elaborazione delle immagini, ti consiglio di iniziare con C++. È possibile accedere al puntatore non elaborato che è obbligatorio se si desidera operare su singoli pixel.

Quindi, che tipo di imaging ti interessa? Solo per divertenti filtri di immagine o cose pesanti come la stima del movimento, il rilevamento e il rilevamento ecc.? Per questo ti consiglio di dare un'occhiata a CUVILib dal più presto possibile, avrai bisogno di prestazioni sulla funzionalità di imaging e questo è ciò che fornisce CUVI. Puoi usarlo come standalone se serve ai tuoi scopi oppure puoi collegarlo ad altre librerie come Intel IPP, ITK, OpenCV ecc.

1

La libreria di computer vision più popolare (elaborazione immagini, analisi immagine) è OpenCV che è scritta in C++, ma può anche essere utilizzato con Python e Java (ufficiale OpenCV4Android e non ufficiale JavaCV).

Ci sono applicazioni Bioinformatiche che sono fondamentalmente di elaborazione delle immagini, quindi OpenCV si prenderà cura di questo. Ma ci sono anche alcuni che non lo sono, sono, per esempio, basati su Machine Learning, quindi se hai bisogno di qualcosa di diverso da immagini/video correlati avrai bisogno di un'altra libreria orientata verso Bioinformatic. Opencv ha anche un modulo di apprendimento automatico, ma è più focalizzato sulla visione artificiale.

Circa le lingue C vs Java, la maggior parte è stata detta nelle altre risposte. Dovrei aggiungere che queste librerie ora sono basate su C++ e non sono semplici C. Se le tue applicazioni hanno esigenze di elaborazione in tempo reale, C++ sarà probabilmente migliore, altrimenti Java sarà più che sufficiente in quanto più amichevole.

Problemi correlati