Разработчики) | Консорциум программного обеспечения Insight |
---|---|
Начальная версия | 31 июля 2001 г . |
Стабильный выпуск | 5.1.2 [1] / 8 декабря 2020 г . |
Репозиторий | ![]() |
Написано в | C , C ++ , Fortran , Python [2] |
Операционная система | Кроссплатформенность |
Тип | Библиотека разработки |
Лицензия | Apache 2.0 [3] |
Веб-сайт | www |
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, может предпринять следующие действия.
- Прочтите Руководство по программному обеспечению ITK . (Эту книгу можно приобрести в магазине Kitware.)
- Прочтите инструкции о том, как добавить классы и алгоритмы в Toolkit, отправив их в Insight Journal.
- Получите доступ к GitHub .
- Следуйте инструкциям Git .
- Присоединяйтесь к дискуссии 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.
- Insight / Примеры / примеры исходного кода, распространяемые с ITK. Исходный код доступен. Кроме того, он содержит множество комментариев и работает в сочетании с Руководством по программному обеспечению ITK.
- Отдельная касса InsightApplications.
- В Приложении веб - странице . Это подробные описания с изображениями и ссылками на примеры, найденные в №1 выше.
- Каталоги тестирования, распространяемые с ITK, представляют собой простые, в основном недокументированные примеры использования кода.
В 2004 году ITK-SNAP ( веб-сайт ) был разработан на основе SNAP и стал популярным бесплатным программным обеспечением для сегментации с использованием ITK и имеющим приятный и простой пользовательский интерфейс.
Данные [ редактировать ]
- Данные доступны в ITK data.kitware.com Girder Community .
- См. Также веб-страницу ITK Data .
См. Также [ править ]
Связанные инструменты [ править ]
- CMake
- VTK
Контакты [ править ]
Посетите дискуссионный форум ITK для контактов и помощи от сообщества.
Ссылки [ править ]
- ^ "Выпуск 5.1.2" . 8 декабря 2020 . Проверено 8 января 2021 года .
- ^ "Консорциум программного обеспечения 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 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