Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Введение [ править ]

Истоки [ править ]

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

Технические детали [ править ]

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

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

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

Разработчики и участники [ править ]

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

  • Kitware
  • Корпоративные исследования и разработки GE
  • Проницательный
  • Университет Северной Каролины в Чапел-Хилл
  • Университет Юты
  • Пенсильванский университет

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

  • Гарвардская больница Бригама и женщин
  • Питтсбургский университет
  • Колумбийский университет

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

  • Университет Айовы
  • Джорджтаунский университет
  • Стэндфордский Университет
  • Королевский колледж Лондона
  • Creatis INSA

Финансирование [ править ]

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

Цели проекта:

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

Исходный код Insight Toolkit распространяется по лицензии Apache 2.0 (утвержденной Open Source Initiative ).

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

Участие в сообществе [ править ]

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

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

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

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

Авторские права на ITK принадлежат Insight Software Consortium, некоммерческому альянсу организаций и частных лиц, заинтересованных в поддержке ITK. Начиная с ITK версии 3.6, программное обеспечение распространяется под лицензией BSD с открытым исходным кодом. Он позволяет использовать его для любых целей, за исключением, возможно, кода, найденного в запатентованном каталоге, и с надлежащим распознаванием. Полные условия авторских прав и лицензии доступны по адресу www .itk .org / ITK / project / license .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 , VISPACK , 3DViewnix, MetaImage и т. Д.)
  • Инструментарий предоставляет минимальный набор инструментов для файлового интерфейса. Опять же, это оставлено на усмотрение других наборов инструментов / библиотек.
  • Поддерживается многопоточная параллельная обработка (с общей памятью).
  • Разработка инструментария основана на принципах экстремального программирования. То есть проектирование, реализация и тестирование выполняются в быстром итеративном процессе. В основе этого процесса лежит тестирование. В Insight тестирование выполняется непрерывно по мере регистрации файлов и каждую ночь на нескольких платформах и компиляторах. Панель тестирования ITK, на которой публикуются результаты тестирования, занимает центральное место в этом процессе.

Архитектура [ править ]

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

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

Философия реализации [ править ]

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

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

Среда сборки [ править ]

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

Среда тестирования [ править ]

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

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

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

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

Примеры [ править ]

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

 #include  "itkImage.h" int  main ()  {  с использованием  ImageType  =  itk :: Image <  unsigned  char ,  3  > ;  using  ReaderType  =  itk :: ImageFileReader <  ImageType  > ;  using  WriterType  =  itk :: ImageFileWriter <  ImageType  > ;  используя  FilterType  =  itk :: GradientRecursiveGaussianImageFilter <  ImageType ,  ImageType  >; ReaderType :: Pointer  reader  =  ReaderType :: New ();  WriterType :: Pointer  writer  =  WriterType :: New (); читатель -> SetFileName (  "lungCT.dcm"  );  писатель -> SetFileName (  "  SmoothedLung.hdr " ); FilterType :: Pointer  filter  =  FilterType :: New (); фильтр -> SetInput (  читатель -> GetOutput ()  );  писатель -> SetInput (  фильтр -> GetOutput ()  );  фильтр -> SetSigma (  45.0  ); попробуйте  {  писатель -> Обновить ();  }  Задвижка (  ITK :: ExceptionObject  &  excp  )  {  станд :: сегг  <<  excp  <<  станд :: епсИ ;  вернуть  EXIT_FAILURE ;  }  }

Сегментация по регионам [ править ]

 #include  "itkImage.h" Int  основной ()  { с  помощью  InputImageType  =  ИТК :: Image <  подписан  короткий ,  3  > ;  using  OutputImageType  =  itk :: Image <  unsigned  char ,  3  > ;  using  ReaderType  =  itk :: ImageFileReader <  InputImageType  > ;  используя  WriterType  =  itk :: ImageFileWriter <  OutputImageType  >;  using  FilterType  =  itk :: ConnectedThresholdImageFilter <  InputImageType ,  OutputImageType  > ; ReaderType :: Pointer  reader  =  ReaderType :: New ();  WriterType :: Pointer  writer  =  WriterType :: New (); читатель -> SetFileName (  "brain.dcm"  );  писатель -> SetFileName (  "whiteMatter.hdr"  ); FilterType :: Pointer  filter  =  FilterType :: New (); фильтр -> SetInput (  читатель -> GetOutput ()  );  писатель -> SetInput (  фильтр -> GetOutput ()  ); фильтр -> SetMultiplier (  2.5  );  ImageType :: IndexType  seed ;  сид [ 0 ]  =  142 ;  сид [ 1 ]  =  97 ;  сид [ 2 ]  =  63 ;  фильтр -> AddSeed (  семя  );  попробуйте  {  писатель -> Обновить ();  }  catch (  itk :: ExceptionObject  &  excp  ) {  Станд :: сегг  <<  excp  <<  станд :: епсИ ;  вернуть  EXIT_FAILURE ;  }  }

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

Ресурсы [ править ]

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

  • Веб-страницы ITK расположены по адресу www .itk .org .
  • Пользователи и разработчики должны прочитать Руководство по программному обеспечению ITK.
  • Многие компилируемые примеры доступны на вики- странице примеров ITK.
  • Учебники доступны по адресу www .itk .org / ITK / help / tutorials .html.
  • Программное обеспечение можно загрузить с сайта www .itk .org / ITK / resources / software .html .
  • Разработчики или пользователи, заинтересованные в добавлении кода, должны искать в документе Insight / Documentation / InsightDeveloperStart.pdf или InsightDeveloperStart.doc, который можно найти в дистрибутиве исходного кода.
  • Разработчикам также следует ознакомиться с руководством по стилю ITK Insight / Documentation / Style.pdf, которое можно найти в исходном коде.

Приложения [ править ]

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

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

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

Данные [ редактировать ]

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

См. Также [ править ]

Связанные инструменты [ править ]

  • CMake
  • VTK

Контакты [ править ]

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

Ссылки [ править ]

  1. ^ "Выпуск 5.1.2" . 8 декабря 2020 . Проверено 8 января 2021 года .
  2. ^ "Консорциум программного обеспечения Insight / ITK - GitHub" . 2019-12-17.
  3. ^ «Авторское право и лицензия» .
  • Ю, ТС; Акерман, MJ; Lorensen, WE; и другие. (2002). «Разработка и разработка алгоритмов для API обработки изображений: технический отчет по ITK - Insight Toolkit». Stud Health Technol Inform . 85 : 586–92. PMID  15458157 .
  • Ю, ТС; Метаксас, Д. Н. (декабрь 2005 г.). «Открытая наука - сочетание открытых данных и программного обеспечения с открытым исходным кодом: анализ медицинских изображений с помощью Insight Toolkit» . Med Image Anal . 9 (6): 503–6. DOI : 10.1016 / j.media.2005.04.008 . PMID  16169766 .
  • Prior, FW; Эриксон, Б. Дж.; Tarbox, L (ноябрь 2007 г.). «Проекты программного обеспечения с открытым исходным кодом группы специальных интересов caBIG In Vivo Imaging Workspace Software» . J Digit Imaging . 20 (Дополнение 1): 94–100. DOI : 10.1007 / s10278-007-9061-4 . PMC  2039820 . PMID  17846835 .

Внешние ссылки [ править ]

  • ITK