Набор инструментов для сегментации и регистрации Insight - Insight Segmentation and Registration Toolkit

Набор инструментов для сегментации и регистрации Insight
Разработчики)Консорциум программного обеспечения Insight
изначальный выпуск31 июля 2001 г.; 19 лет назад (2001-07-31)
Стабильный выпуск
5.1.1[1] / 31 августа 2020; 2 месяца назад (31 августа 2020 г.)
Репозиторий Отредактируйте это в Викиданных
Написано вC, C ++, Фортран, Python[2]
Операционная системаКроссплатформенность
ТипБиблиотека разработки
ЛицензияApache 2.0[3]
Интернет сайтwww.itk.org

ITK это кросс-платформенный, среда разработки приложений с открытым исходным кодом, широко используемая для разработки сегментация изображения и регистрация изображения программы. Сегментация - это процесс идентификации и классификации данных, содержащихся в представлении с цифровой выборкой. Обычно образцом является изображение, полученное с помощью таких медицинских инструментов, как сканеры компьютерной томографии или магнитно-резонансной томографии. Регистрация - это задача согласования или развития соответствий между данными. Например, в медицинской среде КТ-сканирование может быть совмещено с МРТ-сканированием, чтобы объединить информацию, содержащуюся в обоих.

ITK был разработан при финансовой поддержке Национальная медицинская библиотека (НАС. ) как открытый ресурс алгоритмов анализа изображений Видимый человеческий проект. ITK означает Набор инструментов для сегментации и регистрации Insight. Этот инструментарий предоставляет передовые алгоритмы сегментации и регистрации в двух, трех и более измерениях. ИТК использует CMake среда сборки для управления процессом настройки. Программное обеспечение реализовано в C ++ и это завернуто для Python. Ответвление проекта ITK, обеспечивающее упрощенный интерфейс для ITK на восьми языках программирования, SimpleITK, также находится в активной разработке.

Вступление

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

В 1999 году США Национальная медицинская библиотека из Национальные институты здоровья получил трехлетний контракт на разработку набора инструментов для регистрации и сегментации с открытым исходным кодом, который в конечном итоге стал известен как Insight Toolkit (ITK). Менеджером проекта ITK NLM был доктор Терри Ю, который координировал работу шести основных подрядчиков, которые составляли Консорциум программного обеспечения Insight. В состав этих членов консорциума входили три коммерческих партнера. GE Корпоративные исследования и разработки, Kitware, Inc. и MathSoft (теперь название компании - Insightful); и три академических партнера Университета Северной Каролины (UNC ), Университет Теннесси (UT), и Пенсильванский университет (UPenn). Основными исследователями для этих партнеров были, соответственно, Билл Лоренсен из GE CRD, Уилл Шредер из Kitware, Викрам Чалана из Insightful, Стивен Эйлуорд с Луисом Ибаньесом из UNC (оба впоследствии перешли в Kitware), Росс Уитакер с Джошем Кейтсом из UT (оба сейчас в Юте) и Димитрис Метаксас в UPenn (Димитрис Метаксас сейчас в Университет Рутгерса ). Кроме того, в консорциум вошли несколько субподрядчиков, в том числе Питер Ратиу из Brigham & Women's Hospital, Селина Имелинска и Пат Молхольт из Колумбийский университет, Джим Джи из UPenn's Grasp Lab и Джордж Стеттен из Питтсбургский университет.

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

ITK представляет собой программный инструментарий с открытым исходным кодом для выполнения регистрации и сегментации. Сегментация - это процесс идентификации и классификации данных, содержащихся в представлении с цифровой выборкой. Обычно выборочное изображение - это изображение, полученное с помощью таких медицинских инструментов, как CT или же МРТ сканеры. Регистрация - это задача согласования или развития соответствий между данными. Например, в медицинской среде КТ-сканирование может быть совмещено с МРТ-сканированием, чтобы объединить информацию, содержащуюся в обоих.

ITK реализован на C ++. ITK кроссплатформенный, с использованием CMake среда сборки для управления процессом компиляции. Кроме того, в процессе автоматической упаковки создаются интерфейсы между C ++ и другими языками программирования, такими как Java и Python. Это позволяет разработчикам создавать программное обеспечение с использованием множества языков программирования. В реализации ИТК используется техника общее программирование за счет использования шаблонов C ++.

Поскольку ITK является проектом с открытым исходным кодом, разработчики со всего мира могут использовать, отлаживать, поддерживать и расширять программное обеспечение. ITK использует модель разработки программного обеспечения, известную как экстремальное программирование. Экстремальное программирование сворачивает обычную методологию создания программного обеспечения в одновременный итеративный процесс проектирования-реализации-тестирования-выпуска. Ключевые особенности экстремального программирования - это общение и тестирование. Общение между членами сообщества ITK - это то, что помогает управлять быстрой эволюцией программного обеспечения. Тестирование - это то, что обеспечивает стабильность программного обеспечения. В ITK обширный процесс тестирования (с использованием CDash ), который измеряет качество на ежедневной основе. В Панель тестирования ITK публикуется постоянно, что свидетельствует о качестве программного обеспечения.

Разработчики и участники

Инструментарий Insight изначально был разработан шестью основными организациями.

и три субподрядчика

После создания программное обеспечение продолжало расти за счет взносов других организаций, включая

Финансирование

Финансирование проекта осуществляется Национальной медицинской библиотекой при Национальном институте здравоохранения. NLM, в свою очередь, поддерживалось учреждениями-членами NIH (см. Спонсоров).

Цели проекта включают следующее:

  • Поддержите Видимый человеческий проект.
  • Создайте основу для будущих исследований.
  • Создайте репозиторий фундаментальных алгоритмов.
  • Разработайте платформу для расширенной разработки продуктов.
  • Поддержка коммерческого применения технологии.
  • Создавайте условные обозначения для будущей работы.
  • Развивайте самодостаточное сообщество пользователей и разработчиков программного обеспечения.

Исходный код Insight Toolkit распространяется под Лицензия Apache 2.0 (с одобрения Инициатива открытого исходного кода )

Философия открытого исходного кода Insight Toolkit была расширена для поддержки Открытая наука, в частности, путем предоставления Открытый доступ к публикациям в области обработки медицинских изображений. Эти публикации доступны в свободном доступе через Insight Journal

Участие в сообществе

Поскольку ITK - это система с открытым исходным кодом, любой может внести свой вклад в проект. Лицо, заинтересованное в участии в ITK, может предпринять следующие действия.

  1. Прочтите Руководство по программному обеспечению ITK. (Эту книгу можно приобрести в магазине Kitware.)
  2. Прочтите инструкции о том, как добавить классы и алгоритмы в Toolkit через материалы в Insight Journal
  3. Получить доступ к GitHub.
  4. Следовать Инструкции по участию в Git.
  5. Присоединяйся к ITK Дискурс обсуждение. Сообщество открыто для всех.

Кто угодно может отправить патч, и доступ для записи в репозиторий не требуется для объединения патча или сохранения авторства. Для получения дополнительной информации см. Документация ITK Bar Camp о том, как отправить патч.

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

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

Лицензия была изменена на Apache 2.0 с версией 4.0, чтобы принять современную лицензию с положениями о патентной защите. С версии 3.6 по 3.20 использовалась упрощенная лицензия BSD. Версии ITK до ITK 3.6 распространялись под модифицированной лицензией BSD. Основной мотивацией для принятия лицензии BSD, начиная с ITK 3.6, было наличие OSI -утвержденная лицензия.

Техническое резюме

В следующих разделах кратко описаны технические характеристики инструментария NLM Insight ITK. Философия проектирования Ниже приведены ключевые особенности философии разработки инструментария.

  • Инструментарий предоставляет представление данных и алгоритмы для выполнения сегментации и регистрации. Основное внимание уделяется медицинским приложениям; хотя этот инструментарий способен обрабатывать и другие типы данных.
  • Этот инструментарий обеспечивает представление данных в общем виде для изображений (произвольных размеров) и (неструктурированных) сеток.
  • Инструментарий не касается визуализации или графического пользовательского интерфейса. Они оставлены для других наборов инструментов (например, VTK, ВИСПАК, 3DViewnix, MetaImage и т. Д.)
  • Набор инструментов предоставляет минимальный набор инструментов для файлового интерфейса. Опять же, это оставлено на усмотрение других наборов инструментов / библиотек.
  • Поддерживается многопоточная параллельная обработка (с общей памятью).
  • Разработка инструментария основана на принципах экстремального программирования. То есть проектирование, реализация и тестирование выполняются в быстром итеративном процессе. В основе этого процесса лежит тестирование. В Insight тестирование выполняется постоянно по мере регистрации файлов и каждую ночь на нескольких платформах и компиляторах. Панель тестирования ITK, на которой публикуются результаты тестирования, занимает центральное место в этом процессе.

Архитектура

Ниже приведены ключевые особенности архитектуры инструментария.

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

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

Ниже приведены ключевые особенности философии реализации инструментария.

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

Среда сборки

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

Тестовая среда

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

Справочные материалы: шаблоны и универсальные шаблоны C ++

ITK использует множество расширенных шаблонов проектирования и универсальное программирование. Эти ссылки могут оказаться полезными для понимания конструкции и синтаксиса Insight.

  • Шаблоны проектирования. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес, Грейди Буч
  • Универсальное программирование и Stl: использование и расширение стандартной библиотеки шаблонов C ++ (серия Addison-Wesley Professional Computing), Мэтью Х. Остерн
  • Расширенные стили и идиомы программирования на C ++, Джеймс О. Коплиен
  • Журнал пользователей C / C ++
  • Отчет C ++

Примеры

Градиент изображения сглаженным по Гауссу

  #включают "itkImage.h"  int главный()  {    с помощью ImageType = это::Изображение< беззнаковый char, 3 >;    с помощью ReaderType = это::ImageFileReader< ImageType >;    с помощью WriterType = это::ImageFileWriter< ImageType >;    с помощью FilterType = это::GradientRecursiveGaussianImageFilter< ImageType, ImageType >;    ReaderType::Указатель читатель = ReaderType::Новый();    WriterType::Указатель писатель = WriterType::Новый();    читатель->SetFileName( "easyCT.dcm" );    писатель->SetFileName( "SmoothedLung.hdr" );    FilterType::Указатель фильтр = FilterType::Новый();    фильтр->SetInput( читатель->GetOutput() );    писатель->SetInput( фильтр->GetOutput() );    фильтр->SetSigma( 45.0 );    пытаться      {      писатель->Обновлять();      }    ловить( это::ExceptionObject & excp )      {      стандартное::Cerr << excp << стандартное::конец;      возвращаться EXIT_FAILURE;      }  }

Сегментация по регионам

  #включают "itkImage.h"  int главный()  {    с помощью InputImageType = это::Изображение< подписанный короткая, 3 >;    с помощью OutputImageType = это::Изображение< беззнаковый char, 3 >;    с помощью ReaderType = это::ImageFileReader< InputImageType >;    с помощью WriterType = это::ImageFileWriter< OutputImageType >;    с помощью FilterType = это::ConnectedThresholdImageFilter< InputImageType, OutputImageType >;    ReaderType::Указатель читатель = ReaderType::Новый();    WriterType::Указатель писатель = WriterType::Новый();    читатель->SetFileName( "brain.dcm" );    писатель->SetFileName( "whiteMatter.hdr" );    FilterType::Указатель фильтр = FilterType::Новый();    фильтр->SetInput( читатель->GetOutput() );    писатель->SetInput( фильтр->GetOutput() );    фильтр->SetMultiplier( 2.5 );    ImageType::IndexType семя;    семя[0] = 142;    семя[1] =  97;    семя[2] =  63;    фильтр->AddSeed( семя );    пытаться      {      писатель->Обновлять();      }    ловить( это::ExceptionObject & excp )      {      стандартное::Cerr << excp << стандартное::конец;      возвращаться EXIT_FAILURE;      }  }

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

Ресурсы

Чтобы узнать больше об ITK, доступен ряд ресурсов.

Приложения

Отличный способ узнать об ITK - посмотреть, как он используется. Есть четыре места, где можно найти приложения ITK.

  1. Insight / Примеры / примеры исходного кода, распространяемые с ITK. Исходный код доступен. Кроме того, он содержит множество комментариев и работает в сочетании с Руководством по программному обеспечению ITK.
  2. Отдельная касса InsightApplications.
  3. В Веб-страницы приложений. Это подробные описания, с изображениями и ссылками, примеров, найденных в №1 выше.
  4. Каталоги тестирования, распространяемые вместе с ITK, представляют собой простые, в основном недокументированные примеры использования кода.

2004 г. ITK-SNAP (интернет сайт ) был разработан на основе SNAP и стал популярным бесплатным программным обеспечением для сегментации с использованием ITK и имеющим приятный и простой пользовательский интерфейс.

Данные

Смотрите также

Связанные инструменты

Контакты

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

Рекомендации

  1. ^ «Выпуск 5.1.1». 31 августа 2020 г.. Получено 8 сентября 2020.
  2. ^ "Консорциум программного обеспечения Insight / ITK - GitHub". 2019-12-17.
  3. ^ «Авторские права и лицензия».

внешняя ссылка