Введение

Open source, кросс-платформенный инструментарий NOTOC

ITK – это кросс-платформенная, открытая платформа разработки приложений с открытым исходным кодом, широко используемая для разработки программ сегментации и регистрации изображений. Сегментация – это процесс выделения и классификации данных в цифровом представлении. Как правило, это изображение, полученное с медицинского оборудования, такого как КТ или МРТ-сканеры. Регистрация – это задача выравнивания или установления соответствий между данными. Например, в медицине КТ-скан может быть сопоставлен с МРТ-сканом для объединения информации, содержащейся в обоих изображениях. ITK был разработан при поддержке Национальной медицинской библиотеки (США) как открытый ресурс алгоритмов для анализа изображений проекта Visible Human. ITK расшифровывается как The Insight Segmentation and Registration Toolkit (Инструментарий сегментации и регистрации изображений Insight). Инструментарий предоставляет передовые алгоритмы сегментации и регистрации для двух, трех и более измерений. ITK использует среду сборки CMake для управления процессом конфигурирования. Программное обеспечение реализовано на C++ и имеет обертку для Python. Также активно разрабатывается ответвление проекта ITK – SimpleITK, предоставляющее упрощенный интерфейс к ITK на восьми языках программирования.

Происхождение

В 1999 году Национальная медицинская библиотека Национального института здравоохранения США заключила трехлетний контракт на разработку инструментария для регистрации и сегментации с открытым исходным кодом, который впоследствии получил название Insight Toolkit (ITK). Руководителем проекта ITK со стороны NLM был доктор Терри Ю, координировавший работу шести основных подрядчиков, составлявших Консорциум программного обеспечения Insight. В состав консорциума входили три коммерческих партнера – GE Corporate R&D, Kitware, Inc. и MathSoft (в настоящее время компания называется Insightful), а также три академических партнера – Университет Северной Каролины (UNC), Университет Теннесси (UT) и Университет Пенсильвании (UPenn). Ведущими исследователями от этих партнеров были, соответственно, Билл Лоренсен (GE CRD), Уилл Шрёдер (Kitware), Викрам Чалана (Insightful), Стивен Айлвард и Луис Ибаньес (UNC, оба впоследствии перешли в Kitware), Росс Уитакер и Джош Кейтс (UT, оба сейчас работают в Юте), а также Димитрис Метаксас (UPenn, в настоящее время работает в Университете Рутгерса). Кроме того, консорциум включал в себя несколько субподрядчиков, таких как Питер Ратиу (Больница Бригама и Женщин), Селина Имилинска и Пэт Молхолт (Колумбийский университет), Джим Джи (лаборатория Grasp Lab при UPenn) и Джордж Стеттен (Университет Питтсбурга).

Технические детали

ITK — это программный инструментарий с открытым исходным кодом для выполнения регистрации и сегментации. Сегментация — это процесс идентификации и классификации данных, содержащихся в цифровом дискретном представлении. Как правило, дискретное представление — это изображение, полученное с медицинского оборудования, такого как КТ или МРТ-сканеры. Регистрация — это задача выравнивания или установления соответствий между данными. Например, в медицинской практике КТ-скан может быть сопоставлен с МРТ-сканом для объединения информации, содержащейся в обоих. ITK реализован на C++. ITK является кроссплатформенным и использует среду сборки CMake для управления процессом компиляции. Кроме того, автоматизированный процесс создания оберток генерирует интерфейсы между C++ и другими языками программирования, такими как Java и Python. Это позволяет разработчикам создавать программное обеспечение, используя различные языки программирования. В реализации ITK используется техника обобщенного программирования посредством шаблонов C++. Поскольку ITK — это проект с открытым исходным кодом, разработчики со всего мира могут использовать, отлаживать, поддерживать и расширять программное обеспечение. ITK использует модель разработки программного обеспечения, известную как экстремальное программирование. Экстремальное программирование объединяет обычную методологию создания программного обеспечения в одновременный и итеративный процесс проектирования, реализации, тестирования и выпуска. Ключевыми особенностями экстремального программирования являются коммуникация и тестирование. Коммуникация между участниками сообщества ITK помогает управлять быстрым развитием программного обеспечения. Тестирование обеспечивает стабильность программного обеспечения. В ITK используется обширный процесс тестирования (с использованием CDash), который ежедневно оценивает качество. Панель тестирования ITK публикуется непрерывно, отражая качество программного обеспечения.

Авторские права и лицензии

Авторские права на ITK принадлежат Insight Software Consortium, некоммерческому союзу организаций и частных лиц, заинтересованных в поддержке ITK. Начиная с версии 3.6, программное обеспечение распространяется под лицензией BSD с открытым исходным кодом. Это позволяет использовать его для любых целей, за исключением кода, находящегося в каталоге с патентами, и при условии надлежащего указания авторства. Полные условия авторского права и лицензии доступны по адресу. Версия 4.0 использует лицензию Apache 2.0. Лицензия была изменена на Apache 2.0 с версией 4.0 для использования современной лицензии с положениями о патентной защите. С версии 3.6 по 3.20 использовалась упрощенная лицензия BSD. Версии ITK, предшествующие версии 3.6, распространялись под модифицированной лицензией BSD. Основной причиной перехода на лицензию BSD, начиная с версии 3.6, было получение лицензии, одобренной OSI.

Архитектура

Ниже приведены ключевые особенности архитектуры инструментария. Инструментарий организован на основе архитектуры потока данных. Это означает, что данные представлены в виде объектов данных, которые, в свою очередь, обрабатываются объектами-процессами (фильтрами). Объекты данных и объекты-процессы соединяются в конвейеры. Конвейеры способны обрабатывать данные частями в соответствии с заданным пользователем лимитом памяти для конвейера. Фабрики объектов используются для создания экземпляров объектов. Фабрики обеспечивают возможность расширения системы во время выполнения. Для обработки событий используется шаблон проектирования "команда/наблюдатель".

Философия реализации

Ниже приведены ключевые особенности философии реализации инструментария. Инструментарий реализован с использованием принципов обобщенного программирования. Такой код C++, интенсивно использующий шаблоны, представляет сложность для многих компиляторов, поэтому разработка велась с применением последних версий компиляторов MSVC, Sun, gcc, Intel и SGI. Инструментарий является кроссплатформенным (Unix, Windows и Mac OS X). Инструментарий поддерживает привязки к различным языкам программирования, включая Tcl, Python и Java. Эти привязки генерируются автоматически посредством процесса автоматической обертки. Модель памяти основана на "умных указателях", которые поддерживают счетчик ссылок на объекты. Умные указатели могут быть выделены в стеке, и при выходе из области видимости они уничтожаются и уменьшают счетчик ссылок на объект, на который они указывают.

Строительная среда

ITK использует среду сборки CMake (кроссплатформенная система сборки). CMake — это процесс сборки, не зависящий от операционной системы и компилятора, который генерирует нативные файлы сборки, подходящие для используемой ОС и компилятора. В Unix CMake создает файлы Makefile, а в Windows — проекты и рабочие области.

Окружающая среда испытаний

ITK поддерживает развернутую среду тестирования. Код тестируется ежедневно (и даже непрерывно) на множестве комбинаций аппаратного обеспечения, операционных систем и компиляторов, а результаты ежедневно публикуются на панели мониторинга тестирования ITK. Мы используем Dart для управления процессом тестирования и публикации результатов на этой панели.

Приложения

Отличный способ познакомиться с ITK — увидеть, как он применяется на практике. Существует четыре источника, где можно найти примеры использования ITK. Во-первых, это примеры исходного кода, распространяемые вместе с ITK. Исходный код доступен, широко комментирован и предназначен для использования в сочетании с руководством по программному обеспечению ITK. Во-вторых, это отдельный репозиторий InsightApplications. В-третьих, это веб-страницы с описанием приложений. Они содержат подробные описания с изображениями и ссылками на примеры, представленные в первом пункте. Наконец, это каталоги тестов, распространяемые с ITK, которые представляют собой простые, в основном не документированные примеры использования кода. В 2004 году на основе SNAP была разработана программа ITK SNAP (веб-сайт), ставшая популярным бесплатным программным обеспечением для сегментации, использующим ITK и обладающим удобным и простым пользовательским интерфейсом.

Данные

Данные доступны в ITK Data на kitware.com Girder Community. Также смотрите веб-страницу ITK Data.

Контакты

Посетите форум обсуждений ITK, чтобы найти контакты и получить помощь от сообщества.