Набор инструментов для сегментации и регистрации Insight - Insight Segmentation and Registration Toolkit
Разработчики) | Консорциум программного обеспечения Insight |
---|---|
изначальный выпуск | 31 июля 2001 г. |
Стабильный выпуск | 5.1.1[1] / 31 августа 2020 |
Репозиторий | |
Написано в | C, C ++, Фортран, Python[2] |
Операционная система | Кроссплатформенность |
Тип | Библиотека разработки |
Лицензия | Apache 2.0[3] |
Интернет сайт | www |
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 изначально был разработан шестью основными организациями.
- Kitware
- GE Корпоративные исследования и разработки
- Проницательный
- Университет Северной Каролины в Чапел-Хилл
- Университет Юты
- Пенсильванский университет
и три субподрядчика
После создания программное обеспечение продолжало расти за счет взносов других организаций, включая
- Университет Айовы
- Джорджтаунский университет
- Стэндфордский Университет
- Королевский колледж Лондона
- Creatis INSA
Финансирование
Финансирование проекта осуществляется Национальной медицинской библиотекой при Национальном институте здравоохранения. NLM, в свою очередь, поддерживалось учреждениями-членами NIH (см. Спонсоров).
Цели проекта включают следующее:
- Поддержите Видимый человеческий проект.
- Создайте основу для будущих исследований.
- Создайте репозиторий фундаментальных алгоритмов.
- Разработайте платформу для расширенной разработки продуктов.
- Поддержка коммерческого применения технологии.
- Создавайте условные обозначения для будущей работы.
- Развивайте самодостаточное сообщество пользователей и разработчиков программного обеспечения.
Исходный код Insight Toolkit распространяется под Лицензия Apache 2.0 (с одобрения Инициатива открытого исходного кода )
Философия открытого исходного кода Insight Toolkit была расширена для поддержки Открытая наука, в частности, путем предоставления Открытый доступ к публикациям в области обработки медицинских изображений. Эти публикации доступны в свободном доступе через Insight Journal
Участие в сообществе
Поскольку ITK - это система с открытым исходным кодом, любой может внести свой вклад в проект. Лицо, заинтересованное в участии в ITK, может предпринять следующие действия.
- Прочтите Руководство по программному обеспечению ITK. (Эту книгу можно приобрести в магазине Kitware.)
- Прочтите инструкции о том, как добавить классы и алгоритмы в Toolkit через материалы в Insight Journal
- Получить доступ к GitHub.
- Следовать Инструкции по участию в Git.
- Присоединяйся к ITK Дискурс обсуждение. Сообщество открыто для всех.
Кто угодно может отправить патч, и доступ для записи в репозиторий не требуется для объединения патча или сохранения авторства. Для получения дополнительной информации см. Документация ITK Bar Camp о том, как отправить патч.
Авторское право и лицензия
Авторские права на ITK принадлежат Insight Software Consortium, некоммерческому альянсу организаций и частных лиц, заинтересованных в поддержке ITK. Начиная с ITK версии 3.6, программное обеспечение распространяется под лицензией BSD с открытым исходным кодом. Он позволяет использовать его для любых целей, за исключением, возможно, кода, найденного в запатентованном каталоге, и с надлежащим распознаванием. Полные условия авторских прав и лицензии доступны по адресу www
Лицензия была изменена на 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 расположены по адресу www
.itk ..org - Пользователи и разработчики должны прочитать Руководство по программному обеспечению ITK
- Многие компилируемые примеры доступны на Wiki примеров ITK
- Учебники доступны на www
.itk .org / ITK /помощь / учебные пособия .html - Программное обеспечение можно скачать с www
.itk ..org / ITK /Ресурсы /программного обеспечения .html - Разработчики или пользователи, заинтересованные во внесении кода, должны искать в документе Insight / Documentation / InsightDeveloperStart.pdf или InsightDeveloperStart.doc, который можно найти в дистрибутиве исходного кода.
- Разработчикам также следует ознакомиться с руководством по стилю ITK Insight / Documentation / Style.pdf, которое можно найти в исходном коде.
Приложения
Отличный способ узнать об ITK - посмотреть, как он используется. Есть четыре места, где можно найти приложения ITK.
- Insight / Примеры / примеры исходного кода, распространяемые с ITK. Исходный код доступен. Кроме того, он содержит множество комментариев и работает в сочетании с Руководством по программному обеспечению ITK.
- Отдельная касса InsightApplications.
- В Веб-страницы приложений. Это подробные описания, с изображениями и ссылками, примеров, найденных в №1 выше.
- Каталоги тестирования, распространяемые вместе с ITK, представляют собой простые, в основном недокументированные примеры использования кода.
2004 г. ITK-SNAP (интернет сайт ) был разработан на основе SNAP и стал популярным бесплатным программным обеспечением для сегментации с использованием ITK и имеющим приятный и простой пользовательский интерфейс.
Данные
- Данные доступны в ITK data.kitware.com Сообщество балок.
- См. Также Веб-страница ITK Data.
Смотрите также
Связанные инструменты
Контакты
Посетить Дискуссионный форум ITK для контактов и помощи от сообщества.
Рекомендации
- ^ «Выпуск 5.1.1». 31 августа 2020 г.. Получено 8 сентября 2020.
- ^ "Консорциум программного обеспечения Insight / ITK - GitHub". 2019-12-17.
- ^ «Авторские права и лицензия».
- Ю, ТС; Акерман, MJ; Lorensen, WE; и другие. (2002). «Разработка и разработка алгоритма для API обработки изображений: технический отчет по ITK - Insight Toolkit». Stud Health Technol Inform. 85: 586–92. PMID 15458157.
- Ю, ТС; Метаксас, Д. Н. (декабрь 2005 г.). «Открытая наука - сочетание открытых данных и программного обеспечения с открытым исходным кодом: анализ медицинских изображений с помощью Insight Toolkit». Med Image анальный. 9 (6): 503–6. Дои: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. Дои:10.1007 / s10278-007-9061-4. ЧВК 2039820. PMID 17846835.