Инструментарий Insight для сегментации и регистрации
Разработчик(и) | Консорциум программного обеспечения Insight |
---|---|
Первоначальный выпуск | 31 июля 2001 г |
Стабильная версия | 5.3.0 [1]
/ 20 декабря 2022 г |
Репозиторий | |
Написано в | C , С++ , Фортран , Питон [2] |
Операционная система | Кросс-платформенный |
Тип | Библиотека разработки |
Лицензия | Апач 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). Менеджером проекта NLM ITK был доктор Терри Ю, который координировал работу шести генеральных подрядчиков, входивших в состав Insight Software Consortium . В число этих членов консорциума входили три коммерческих партнера: GE Corporate R&D, Kitware , Inc. и MathSoft (теперь название компании — Insightful); и три академических партнера: Университет Северной Каролины ( UNC ), Университет Теннесси (Юта) и Пенсильванский университет (UPenn). Основными исследователями для этих партнеров были соответственно Билл Лоренсен из GE CRD, Уилл Шредер из Kitware, Викрам Чалана из Insightful, Стивен Эйлуорд с Луисом Ибаньесом из UNC (оба впоследствии перешли в Kitware), Росс Уитакер с Джошем Кейтсом из UT (оба сейчас в Юте) и Димитрис Метаксас в Университете Пенсильвании (Димитрис Метаксас сейчас в Университет Рутгерса ). Кроме того, в консорциум вошли несколько субподрядчиков, в том числе Питер Ратиу из Brigham & Women's Hospital, Селина Имелинска и Пэт Молхолт из Колумбийского университета , Джим Ги из лаборатории Grasp Lab Университета Пенсильвании и Джордж Стеттен из Питтсбургского университета .
Технические подробности [ править ]
ITK — это набор программных инструментов с открытым исходным кодом для регистрации и сегментации. Сегментация — это процесс идентификации и классификации данных, найденных в цифровом представлении. Обычно выборочное представление представляет собой изображение, полученное с помощью таких медицинских приборов, как сканеры КТ или МРТ . Регистрация — это задача согласования или установления соответствия между данными. Например, в медицинской среде компьютерная томография может быть совмещена с МРТ-сканированием, чтобы объединить информацию, содержащуюся в обоих случаях.
ИТК реализован на C++. ITK является кроссплатформенным и использует среду сборки CMake для управления процессом компиляции. Кроме того, автоматизированный процесс упаковки создает интерфейсы между C++ и другими языками программирования, такими как Java и Python. Это позволяет разработчикам создавать программное обеспечение, используя различные языки программирования. Реализация ITK использует технику универсального программирования с использованием шаблонов C++.
Поскольку ITK — это проект с открытым исходным кодом, разработчики со всего мира могут использовать, отлаживать, поддерживать и расширять программное обеспечение. ITK использует модель разработки программного обеспечения, называемую экстремальным программированием . Экстремальное программирование сводит обычную методологию создания программного обеспечения к одновременному итеративному процессу проектирования-реализации-тестирования-выпуска. Ключевыми особенностями экстремального программирования являются общение и тестирование. Общение между членами сообщества ITK помогает управлять быстрым развитием программного обеспечения. Тестирование — это то, что поддерживает стабильность программного обеспечения. В ITK существует обширный процесс тестирования (с использованием CDash ), который ежедневно измеряет качество. Панель тестирования ITK публикуется постоянно и отражает качество программного обеспечения.
Разработчики и участники [ править ]
Первоначально Insight Toolkit был разработан шестью основными организациями.
- Комплект поставки
- GE Корпоративные исследования и разработки
- Проницательный
- Университет Северной Каролины в Чапел-Хилл
- Университет Юты
- Пенсильванский университет
и три субподрядчика
После своего создания программное обеспечение продолжало расти благодаря вкладу других учреждений, в том числе
- Университет Айовы
- Джорджтаунский университет
- Стэнфордский университет
- Королевский колледж Лондона
- Вы создали ИНСА
Финансирование [ править ]
Финансирование проекта осуществляется Национальной медицинской библиотекой Национальных институтов здравоохранения. НЛМ, в свою очередь, получило поддержку со стороны учреждений-членов НИЗ (см. спонсоров).
Цели проекта включают в себя следующее:
- Поддержите проект «Видимый человек» .
- Создайте основу для будущих исследований.
- Создайте хранилище фундаментальных алгоритмов.
- Разработать платформу для передовой разработки продуктов.
- Поддержка коммерческого применения технологии.
- Создайте соглашения для будущей работы.
- Развивайте самоподдерживающееся сообщество пользователей и разработчиков программного обеспечения.
Исходный код Insight Toolkit распространяется под лицензией Apache 2.0 (одобренной Open Source Initiative ).
Философия открытого исходного кода Insight Toolkit была расширена для поддержки открытой науки , в частности, путем предоставления открытого доступа к публикациям в области обработки медицинских изображений. Эти публикации доступны бесплатно через Insight Journal.
Участие сообщества [ править ]
Поскольку ITK — это система с открытым исходным кодом, любой может внести свой вклад в проект. Лицо, заинтересованное в содействии ITK, может предпринять следующие действия.
- Прочтите Руководство по программному обеспечению ITK . (Эту книгу можно приобрести в магазине Kitware.)
- Прочтите инструкции о том, как добавить классы и алгоритмы в Инструментарий , отправив материалы в Insight Journal.
- Получите доступ к GitHub .
- Следуйте инструкциям по вкладу в Git .
- Присоединяйтесь к обсуждению ITK Discourse . Сообщество открыто для всех.
Любой может отправить патч, и доступ для записи в репозиторий не требуется для объединения патча или сохранения авторства. Дополнительную информацию о том, как отправить патч, см. в документации 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 .
Техническое резюме [ править ]
В следующих разделах кратко описаны технические характеристики набора инструментов Insight ITK от NLM. Философия дизайна Ниже приведены ключевые особенности философии проектирования инструментария.
- Инструментарий обеспечивает представление данных и алгоритмы для выполнения сегментации и регистрации. Основное внимание уделяется медицинским применениям; хотя инструментарий способен обрабатывать и другие типы данных.
- Инструментарий обеспечивает представление данных в общей форме для изображений (произвольных размеров) и (неструктурированных) сеток.
- Инструментарий не предназначен для визуализации или графического пользовательского интерфейса. Они оставлены для других наборов инструментов (таких как 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 создает make-файлы, а в Windows CMake — проекты и рабочие области.
Среда тестирования [ править ]
ITK поддерживает обширную среду тестирования. Код тестируется ежедневно (и даже постоянно) на многих комбинациях оборудования, операционной системы и компилятора, а результаты ежедневно публикуются на панели тестирования ITK. Мы используем Dart для управления процессом тестирования и публикации результатов на информационной панели.
Справочная информация: шаблоны и обобщения C++ [ править ]
ITK использует множество передовых шаблонов проектирования и универсальное программирование. Эти ссылки могут оказаться полезными для понимания конструкции и синтаксиса Insight.
- Шаблоны проектирования. Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес, Грейди Буч
- Общее программирование и Stl: использование и расширение стандартной библиотеки шаблонов C++ (серия Addison-Wesley Professional Computing), Мэтью Х. Остерн
- Продвинутые стили и идиомы программирования на C++ Джеймса О. Коплиена
- Журнал пользователей C/C++
- Отчет С++
Примеры [ править ]
Градиент изображения, сглаженный по Гауссу [ править ]
#include "itkImage.h"
int main()
{
using ImageType = itk::Image< unsigned char, 3 >;
using ReaderType = itk::ImageFileReader< ImageType >;
using WriterType = itk::ImageFileWriter< ImageType >;
using FilterType = itk::GradientRecursiveGaussianImageFilter< ImageType, ImageType >;
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
reader->SetFileName( "lungCT.dcm" );
writer->SetFileName( "smoothedLung.hdr" );
FilterType::Pointer filter = FilterType::New();
filter->SetInput( reader->GetOutput() );
writer->SetInput( filter->GetOutput() );
filter->SetSigma( 45.0 );
try
{
writer->Update();
}
catch( itk::ExceptionObject & excp )
{
std::cerr << excp << std::endl;
return EXIT_FAILURE;
}
}
регионов Растущая сегментация
#include "itkImage.h"
int main()
{
using InputImageType = itk::Image< signed short, 3 >;
using OutputImageType = itk::Image< unsigned char, 3 >;
using ReaderType = itk::ImageFileReader< InputImageType >;
using WriterType = itk::ImageFileWriter< OutputImageType >;
using FilterType = itk::ConnectedThresholdImageFilter< InputImageType, OutputImageType >;
ReaderType::Pointer reader = ReaderType::New();
WriterType::Pointer writer = WriterType::New();
reader->SetFileName( "brain.dcm" );
writer->SetFileName( "whiteMatter.hdr" );
FilterType::Pointer filter = FilterType::New();
filter->SetInput( reader->GetOutput() );
writer->SetInput( filter->GetOutput() );
filter->SetMultiplier( 2.5 );
ImageType::IndexType seed;
seed[0] = 142;
seed[1] = 97;
seed[2] = 63;
filter->AddSeed( seed );
try
{
writer->Update();
}
catch( itk::ExceptionObject & excp )
{
std::cerr << excp << std::endl;
return EXIT_FAILURE;
}
}
Дополнительная информация [ править ]
Ресурсы [ править ]
Чтобы узнать больше об ITK, доступен ряд ресурсов.
- Веб-страницы ITK расположены по адресу www.
.itk .орг . - Пользователям и разработчикам следует прочитать Руководство по программному обеспечению ITK.
- Многие компилируемые примеры доступны на ITKExamples Wiki.
- Учебные пособия доступны на сайте www.
.itk .org /ИТК /помощь /учебники .html - Программное обеспечение можно загрузить с сайта www.
.itk .org /ИТК /ресурсы /программное обеспечение .html . - Разработчикам или пользователям, заинтересованным в написании кода, следует просмотреть документ Insight/Documentation/InsightDeveloperStart.pdf или InsightDeveloperStart.doc, который находится в дистрибутиве исходного кода.
- Разработчикам также следует просмотреть руководство по стилю ITK Insight/Documentation/Style.pdf, которое находится в исходном дистрибутиве.
Приложения [ править ]
Отличный способ узнать об ITK — посмотреть, как он используется. Есть четыре места, где можно найти приложения ITK.
- Insight/Examples/примеры исходного кода, распространяемые вместе с ITK. Исходный код доступен. Кроме того, он подробно комментируется и работает в сочетании с Руководством по программному обеспечению ITK.
- Отдельная проверка InsightApplications.
- приложений Веб-страницы . Это подробные описания с изображениями и ссылками примеров, приведенных в пункте 1 выше.
- Каталоги тестирования, распространяемые вместе с ITK, представляют собой простые, в основном недокументированные примеры использования кода.
В 2004 году ITK-SNAP ( веб-сайт ) был разработан на основе SNAP и стал популярным бесплатным программным обеспечением для сегментации, использующим ITK и имеющим приятный и простой пользовательский интерфейс.
Данные [ править ]
- Данные доступны в сообществе ITK data.kitware.com Girder .
- См. также веб-страницу данных ITK .
См. также [ править ]
Сопутствующие инструменты [ править ]
Контакты [ править ]
Посетите дискуссионный форум ITK, чтобы получить контакты и помощь сообщества.
Ссылки [ править ]
- ^ «Выпуск 5.3.0» . 20 декабря 2022 г. Проверено 15 января 2023 г.
- ^ «Консорциум Insight Software / ITK — GitHub» . Гитхаб . 17 декабря 2019 г.
- ^ «Авторское право и лицензия» .
- Йоу, ТС; Акерман, MJ; Лоренсен, МЫ; и др. (2002). «Проектирование и разработка алгоритмов для Api обработки изображений: технический отчет об ITK — Insight Toolkit». Stud Health Technol Информ . 85 : 586–92. ПМИД 15458157 .
- Йоу, ТС; Метаксас, DN (декабрь 2005 г.). «Открытая наука — сочетание открытых данных и программного обеспечения с открытым исходным кодом: анализ медицинских изображений с помощью Insight Toolkit» . Анал с медицинским изображением . 9 (6): 503–6. дои : 10.1016/j.media.2005.04.008 . ПМИД 16169766 .
- Прайор, ФРВ; Эриксон, Би Джей; Тарбокс, Л. (ноябрь 2007 г.). «Проекты программного обеспечения с открытым исходным кодом группы особых интересов caBIG In Vivo Imaging Workspace Software» . J-цифровая визуализация . 20 (Приложение 1): 94–100. дои : 10.1007/s10278-007-9061-4 . ПМК 2039820 . ПМИД 17846835 .
Внешние ссылки [ править ]
- Программное обеспечение для обработки изображений
- Программное обеспечение для компьютерного зрения
- Бесплатные компьютерные библиотеки
- Бесплатное научное программное обеспечение
- Бесплатное программное обеспечение, написанное на C++.
- Сегментация изображений
- Программное обеспечение, использующее лицензию Apache