2009-05-26 21 views
5

Para un proyecto actual, tengo que usar y hacer matematicas sobre la informacion provista en matrices, asf como usar funciones ITK/VTK para mostrar informacion medica/renders. Básicamente tengo que usar ambas rutinas de matlab y VTK/ITK de una manera (supongo) 50/50. El problema es que, ya que tengo que usar tanto, quiero decidir de antemano qué método utilizar:¿Importa ITK/VTK a Matlab o Matlab en el entorno VTK/ITK?

  1. importación ITK y VTK libs a MATLAB: para ello se tiene que construir su propia VTK Como un inicio. Luego, por ejemplo, this la idea es escribir su código VTK en archivos .mex. Estos son archivos en que puede programar c-code como una función de matlab.

  2. Importe las funciones de matlab en el entorno ITK/VTK: para esto usaría un lenguaje, probablemente python, para hacer cálculos matriciales. Podría hacer uso de Numpy. Este es un módulo de cálculo matlab-kind-of en Python y convierte datos vtk para numpy data y puedo usar matplotlib para hacer gráficas.

ventajas/desventajas ITK/VTK importados en Matlab
+ fácil de hacer cálculos de MATLAB y el trazado
+ MATLAB es una de las herramientas más poderosas para trabajar con matrices
+ han utilizado MATLAB antes (subjetiva)

- tienen que tener instalado MATLAB
- con MATLAB agobia su PC

ventajas/desventajas MATLAB importados en el entorno ITK/VTK
+ sin necesidad de tener instalado MATLAB
+ menos de una tensión para PC, y puesto que los conjuntos de datos médicos requieren mucho de su PC esto es agradable.
+ entorno ITK/VTK ya configurado en este caso (actualmente lo usa de esta manera, pero nunca con matlab/matrices .mat)

- he escuchado historias, es difícil hacer cálculos de matlab de esta manera. Un poco desordenado
- menos experiencia en python (en combinación con matlab 0)

So ...? concluyendo
Actualmente estoy buscando personas que han estado trabajando en uno de los dos entornos, pero como creo que hay algunos de ellos, me encanta escuchar sugerencias sobre qué buscar antes de tomar la decisión final. Le costará mucho tiempo hacerlo funcionar de la manera que lo necesito, así que sería una pérdida de tiempo probar ambos (también tienen una fecha límite).

notas adicionales
- Me han tratado Simulink de Matlab en combinación con librerias VTK/ITK pero no me gusta.
- Aunque una solución al problema es, por supuesto, lo mejor que puedo obtener aquí, también estoy contento con las personas que tienen experiencia en la toma de decisiones que tienen la misma base que esta. ¿Cuáles son los puntos clave a tener en cuenta al hacer tal elección? ¿Me estoy perdiendo un punto clave en mis pros y contras?

Respuesta

2

VTK viene con enlaces de Python (one description). Supongo que ITK también lo hace.Si aún no dispone de una gran cantidad de código en Matlab, supongo que tendría un tiempo mucho más fácil la perfecta integración VTK/ITK con numpy de pitón, matplotlib, etc.

EDIT:

En mi opinión, las funciones MEX no triviales son difíciles de escribir. El intercambio a menudo puede ser escribir nuevas funciones MEX para cada tarea o tomarse un tiempo extra para escribir un montón de código de interfaz.

Dependiendo de lo que esté haciendo, scipy (un conjunto de paquetes de pitón que incluyen matplotlib, numpy, etc.) hace mucho de lo que hace Matlab. Hay diferencias sutiles y diversas compensaciones. La transmisión automática es increíblemente útil, una vez que lo dominas. MathWorks ha agregado recientemente BSXFUN, pero es automático con numpy. Si está trabajando mucho con matrices dispersas o llamando a muchas de las funciones de álgebra lineal más avanzadas, revise los documentos numpy para ver si todavía existe lo que necesita.

Dependiendo de lo que hayas hecho con tu entorno hasta el momento, te sugiero probar el enfoque de Python durante unas semanas. Vea si sus capacidades de trazado y matemáticas son suficientes para sus necesidades. Espere golpearse un poco la cabeza contra la pared un poco al principio porque la documentación no es tan madura como la de Matlab.

+0

Ya tengo un entorno de trabajo donde tengo importados los módulos de programa python e ITK/VTK. El problema para mí fue en la última conjetura que hiciste, ¿es realmente más fácil y por qué? – bastijn

1

Me tomó algún tiempo para obtener las dos versiones probadas, pero para concluir sobre este asunto:

he optado por utilizar pitón combinado con numpy/scipy y matplotlib. Solo hay una razón principal por la que he elegido usar esto. Al importar ITK y vtk en Matlab usted tiene que utilizar funciones Mex a programar su código C en estos archivos mex están en la rutina de la siguiente manera:.

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

Ahora, cuando la rutina procede a la punto donde está el archivo mex, da el control a este archivo mex y lo dispara como una función, el archivo mex es como un cuadro negro. Después de que el archivo Mex ha hecho su trabajo, devuelve el control a Matlab y la rutina continúa. Pero no se puede hacer ninguna operación de matlab mientras se está disparando el archivo Mex o las variables de acceso de este archivo mexlab de matlab. Por lo tanto, es imposible ejecutar algún código itk/vtk, notar que no funciona y alterar algunas de las variables utilizadas en el archivo mex (creado allí, pero también morirán allí debido a que la caja negra solo devuelve el resultado) para prueba de velocidad lo que funciona Tienes que disparar la función mex entera de nuevo.

Esta es una desventaja importante, ya que necesita volver a ejecutar el archivo completo de mex (función C) para todos los pequeños cambios. Están ocupados arreglando esta constricción importante, pero como aún no están listos y lo necesito ahora, he decidido hacer el recorrido de python.

2

Esto podría ayudar: mlabwrap es una forma bastante sofisticada de llamar a Matlab desde Python. http://mlabwrap.sourceforge.net/

+0

Guau, gracias por la respuesta tardía :). Esto parece prometedor. – bastijn

1

Bastjin, hizo la elección correcta: ¡las reglas de Python!

Algunos más información:

Para la opción número 1, escribí esto: http://github.com/thewtex/matlab-itk-import Pero, como usted menciona, es la opción inferior.

Aquí hay algunos enlaces para la opción número 2: El mlab de Mayavi2 tiene una buena capacidad para alternar entre VTK y numpy.

WrapITK le permite escribir tuberías ITK en Python, y puede ir y venir con Numpy con el proyecto externo PyBuffer que se encuentra allí.