2009-05-26 18 views
5

Per un progetto corrente devo usare e fare mathemmetics sulle informazioni fornite nelle matrici e utilizzare le funzioni ITK/VTK per la visualizzazione di informazioni mediche/rendering. Fondamentalmente devo usare entrambe le routine MATLAB e VTK/ITK in un modo (credo) 50/50. Il problema è che, dal momento che devo usare entrambi, voglio decidere in anticipo quale metodo utilizzare:Importa ITK/VTK in Matlab o Matlab in ambiente VTK/ITK?

  1. Importa ITK e VTK librerie in MATLAB: per questo si deve costruire il proprio VTK come inizio Quindi, per esempio this l'idea è di scrivere il tuo codice VTK in file .mex. Si tratta di file in che puoi programmare in c-code come funzione di matlab.

  2. Importare le funzioni MATLAB in ambiente ITK/VTK: per questo uso un linguaggio, probabilmente python, per eseguire calcoli a matrice. Potrei usare Numpy. Questo è un modulo matlab-kind-of di calcolo in Python e convertire i dati vtk in dati numpy e posso usare matplotlib per fare grafici.

pro/contro ITK/VTK importati in MATLAB
+ facile da fare calcoli MATLAB e tramando
+ MATLAB è uno degli strumenti più potenti per lavorare con matrici
+ hanno utilizzato MATLAB prima (soggettiva)

- avere installato mATLAB
- in esecuzione mATLAB oneri pc

pro/contro MATLAB importate in ITK/VTK ambiente
+ alcuna necessità di avere installato MATLAB
+ meno di un ceppo per PC, e dal momento che i set di dati mediche richiedono un sacco dal PC questo è bello.
+ ambiente ITK/VTK già impostato in questo caso (attualmente in uso in questo modo, ma mai con matlab/matrici .mat)

- ho sentito storie è difficile fare i calcoli matlab in questo modo. Un po 'disordinato
- meno esperienza in python (in combinazione con matlab 0)

Quindi ...? concludendo
Attualmente sto cercando persone che hanno lavorato in uno dei due ambienti ma, poiché penso che ce ne siano così pochi, mi piace ascoltare suggerimenti su cosa cercare prima di fare la scelta finale. Ci vorrà un sacco di tempo per farlo funzionare in un modo che mi serve, quindi sarebbe una perdita di tempo provare entrambi (anche con una scadenza).

note extra
- ho cercato di Simulink per MATLAB in combinazione con librerie VTK/ITK, ma non mi piace.
- Anche se una soluzione al problema è naturalmente il meglio che posso ottenere qui sono anche felice con persone che hanno esperienza nel fare scelte che sono in base allo stesso di questo. Quali sono i punti chiave da cercare quando si effettua tale scelta? Mi manca un punto chiave nei miei pro e contro?

risposta

2

VTK viene fornito con collegamenti Python (one description). Presumo che anche ITK lo faccia.Se non si dispone già di un sacco di codice in Matlab, sto cercando di indovinare che avresti avuto un tempo molto più facile l'integrazione senza soluzione di continuità VTK/ITK con del pitone NumPy, matplotlib, ecc

EDIT:

A mio parere, le funzioni MEX non banali sono difficili da scrivere. Il compromesso può spesso essere la scrittura di nuove funzioni MEX per ogni attività o richiedere tempo extra per scrivere un sacco di codice di interfaccia.

A seconda di ciò che si sta facendo, scipy (un pacchetto di pacchetti python compresi matplotlib, numpy, ecc.) Fa molto ciò che fa Matlab. Ci sono sottili differenze e vari compromessi. La trasmissione automatica è così incredibilmente utile, una volta capito. MathWorks ha recentemente aggiunto BSXFUN, ma è automatico con numpy. Se stai facendo un sacco di lavoro con le matrici sparse o chiamando molte delle funzioni di algebra lineare più avanzate, controlla i documenti numpy per vedere se ciò che ti serve esiste ancora.

A seconda di ciò che hai fatto finora con il tuo ambiente, suggerirei di provare l'approccio Python per alcune settimane. Verifica se le capacità di tracciamento e le funzioni matematiche sono sufficienti per le tue esigenze. Aspettatevi di sbattere la testa contro il muro un po 'all'inizio, perché la documentazione non è matura come quella di Matlab.

+0

Ho già un ambiente di lavoro in cui ho i moduli del programma Python e ITK/VTK importati. Il problema per me era nell'ultima ipotesi che hai fatto, è davvero più facile e perché. – bastijn

1

Mi c'è voluto del tempo per entrambe le versioni testate, ma per concludere su questo argomento:

ho scelto di utilizzare pitone combinato con NumPy/SciPy e matplotlib. C'è solo un motivo principale per cui ho scelto di usarlo. Quando si ITK e VTK importare in Matlab è necessario utilizzare le funzioni di Mex per programmare il codice C in questi file mex sono nella routine nel modo seguente:.

alt text http://www.bastijn.nl/zooi/routine.png

Ora, quando la routine viene alla punto in cui il file mex è, controlla le mani in questo file mex e lo spara come una funzione, il file mex è come una scatola nera. Dopo che il file Mex ha fatto il suo dovere, le mani tornano al MATLAB e la routine continua. Ma non puoi fare nessuna operazione MATLAB mentre il file Mex viene licenziato o accedere a variabili in questo file da MATLAB. Quindi è impossibile eseguire qualche codice itk/vtk, notare che non funziona e alterare alcune delle variabili usate nel file mex (creato lì, ma moriranno anche lì a causa della black box che restituisce solo il risultato) per testare la velocità su cosa funziona. Devi sparare di nuovo la funzione intero mess.

Questo è uno svantaggio principale, in quanto è necessario rieseguire il file mex completo (funzione C) per tutte le piccole modifiche. Ci sono impegnati a risolvere questa forte restrizione, ma dal momento che non sono ancora pronti e ne ho bisogno ora ho scelto di fare il tour di Python.

2

Questo potrebbe aiutare: mlabwrap è un modo abbastanza sofisticato per chiamare Matlab forma Python. http://mlabwrap.sourceforge.net/

+0

Wow, grazie per la risposta tardiva :). Questo sembra promettente. – bastijn

1

Bastjin, hai fatto la scelta giusta: le regole di Python!

Qualche informazione in più:

Per opzione numero 1, ho scritto questo: http://github.com/thewtex/matlab-itk-import Ma, come si parla, è l'opzione inferiore.

Ecco alcuni collegamenti per l'opzione numero 2: I mlab di Mayavi2 hanno una buona possibilità di passare da VTK a Numpy.

WrapITK consente di scrivere pipeline ITK in Python e si può andare avanti e indietro con Numpy con il progetto PyBuffer esterno trovato lì.

1

Un post un po 'vecchio, ma voglio solo menzionare matVTK (http://www.cir.meduniwien.ac.at/matvtk/). Ciò ti consente di eseguire tutti i tuoi calcoli in Matlab e quindi di tracciare i tuoi dati con la libreria vtk.