Импортировать ITK / VTK в Matlab или Matlab в среду VTK / ITK? - PullRequest
5 голосов
/ 26 мая 2009

Для текущего проекта я должен использовать и делать математические расчеты для информации, представленной в матрицах, а также использовать функции ITK / VTK для отображения медицинской информации / визуализации. В основном я должен использовать обе подпрограммы Matlab и VTK / ITK (я думаю) 50/50. Проблема в том, что, поскольку я должен использовать оба, я хочу заранее решить, какой метод использовать:

  1. Импорт библиотек ITK и VTK в Matlab: для этого вы должны создать свой собственный ВТК для начала. Затем, на этом примере, вся идея состоит в том, чтобы записать ваш VTK-код в файлы .mex. Это файлы в который вы можете запрограммировать C-код как функцию Matlab.

  2. Импорт функций matlab в среде ITK / VTK: для этого я бы использовал язык, возможно, python, для выполнения матричных вычислений. Я мог бы использовать Numpy. Это модуль вычислений типа matlab в Python, который преобразует данные vtk в простые данные, и я могу использовать matplotlib для создания графиков.

Плюсы / минусы ITK / VTK импортированы в Matlab
+ легко сделать вычисления и графики Matlab
+ matlab - один из самых мощных инструментов для работы с матрицами
+ раньше использовали matlab (субъективно)

- Должен быть установлен Matlab
- Запуск Matlab отягощает ваш компьютер

Плюсы / минусы MATLAB, импортируемые в среду ITK / VTK
+ нет необходимости устанавливать Matlab
+ меньше нагрузки на ПК, и, поскольку медицинские наборы данных требуют много от вашего компьютера, это хорошо.
+ Среда ITK / VTK уже настроена в этом случае (в настоящее время она используется таким образом, но никогда с matlab / matrices .mat)

- услышав истории, сложно сделать вычисления в Matlab таким способом. Немного грязно.
- меньше опыта в питоне (в сочетании с matlab 0)

Так что ...? Заключительное
На самом деле я ищу людей, которые работали в одной из двух сред, но так как я думаю, что их так мало, мне нравится слышать предложения о том, что нужно искать, прежде чем сделать окончательный выбор. Это будет стоить много времени, чтобы заставить его работать так, как мне нужно, поэтому было бы напрасной тратой времени попробовать оба варианта (также есть крайний срок).

дополнительные примечания
- Я пробовал Simulink для Matlab в сочетании с библиотеками VTK / ITK, но мне это не нравится.
- Хотя решение проблемы, конечно, самое лучшее, что я могу получить здесь, я также счастлив тем, что у людей есть опыт принятия решений, основанных на том же, что и этот. Какие ключевые моменты нужно искать при выборе? Мне не хватает ключевой точки в моих плюсах и минусах?

Ответы [ 5 ]

2 голосов
/ 20 августа 2009

Это может помочь: mlabwrap - довольно сложный способ вызова Matlab из Python. http://mlabwrap.sourceforge.net/

2 голосов
/ 28 мая 2009

VTK поставляется с привязками Python ( одно описание ). Я предполагаю, что ИТК тоже. Если у вас еще нет большого количества кода в Matlab, я полагаю, вам было бы намного проще без проблем интегрировать VTK / ITK с numpy, matplotlib и т. Д. Python

EDIT:

На мой взгляд, нетривиальные функции MEX - это трудная задача для написания. Часто компромиссом может быть написание новых функций MEX для каждой задачи или дополнительное время для написания большого количества кода взаимодействия.

В зависимости от того, что вы делаете, scipy (пакет пакетов python, включая matplotlib, numpy и т. Д.) Делает многое из того, что делает Matlab. Есть тонкие различия и различные компромиссы. Автоматическое вещание так невероятно полезно, как только вы освоите его. MathWorks недавно добавил BSXFUN, но он работает автоматически с numpy. Если вы много работаете с разреженными матрицами или вызываете множество более продвинутых функций линейной алгебры, посмотрите на пустые документы, чтобы узнать, существует ли то, что вам нужно.

В зависимости от того, что вы уже сделали со своей средой, я бы предложил попробовать подход Python в течение нескольких недель. Посмотрите, достаточно ли его графических возможностей и математических функций для ваших нужд. Вначале постарайтесь немного ударить головой об стену, потому что документация не такая зрелая, как у Matlab.

1 голос
/ 27 февраля 2011

Немного старый пост, но я просто хочу упомянуть matVTK (http://www.cir.meduniwien.ac.at/matvtk/).). Он позволяет вам выполнять все ваши вычисления в Matlab, а затем выводить данные в библиотеку vtk.

1 голос
/ 10 марта 2010

Бастжин, ты сделал правильный выбор: правила Python!

Дополнительная информация:

Для варианта № 1 я написал это: http://github.com/thewtex/matlab-itk-import Но, как вы упоминаете, это худший вариант.

Вот несколько ссылок для варианта № 2: У mlab's в Mayavi2 есть хорошая возможность переключаться между VTK и numpy.

WrapITK позволяет вам писать конвейеры ITK на Python, и вы можете переходить от Numpy к другому и находить там внешний проект PyBuffer.

1 голос
/ 10 июня 2009

Мне потребовалось некоторое время, чтобы протестировать обе версии, но я пришел к выводу по этому вопросу:

Я решил использовать python в сочетании с numpy / scipy и matplotlib. Есть только одна главная причина, почему я решил использовать это. Когда вы импортируете itk и vtk в Matlab, вы должны использовать Mex-функции для программирования своего кода на C. Эти mex-файлы выполняются следующим образом:

альтернативный текст http://www.bastijn.nl/zooi/routine.png

Теперь, когда процедура подходит к точке, где находится mex-файл, она передает управление этому mex-файлу и запускает его как функцию, mex-файл похож на черный ящик . После того, как файл Mex сделал свое дело, он возвращает управление обратно в Matlab, и процедура продолжается. Но вы не можете выполнять какие-либо операции с MATLAB во время запуска Mex-файла или доступа к переменным в этом Mex-файле из MATLAB. Поэтому невозможно выполнить какой-либо код itk / vtk, заметьте, что он не работает, и измените некоторые переменные, используемые в mex-файле (созданном там, но они также умрут там, потому что черный ящик только возвращает ваш результат) для скоростное тестирование, что работает. Вы должны снова запустить всю функцию mex.

Это серьезный недостаток, так как вам нужно перезапустить полный mex-файл (функция C) для всех небольших изменений. Сейчас они занимаются исправлением этого серьезного ограничения, но, поскольку они еще не готовы, и мне это нужно сейчас, я решил отправиться в тур по питону.

...