Jump to content

Инструментарий Insight для сегментации и регистрации

Разработчик(и) Консорциум программного обеспечения Insight
Первоначальный выпуск 31 июля 2001 г .; 22 года назад ( 31 июля 2001 )
Стабильная версия
5.3.0 [1] / 20 декабря 2022 г .; 17 месяцев назад ( 20 декабря 2022 г. )
Репозиторий
Написано в C , С++ , Фортран , Питон [2]
Операционная система Кросс-платформенный
Тип Библиотека разработки
Лицензия Апач 2.0 [3]
Веб-сайт www .itk .org

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 был разработан шестью основными организациями.

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

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

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

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

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

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

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

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

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

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

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

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

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

Авторские права на ITK принадлежат Insight Software Consortium, некоммерческому альянсу организаций и частных лиц, заинтересованных в поддержке ITK. Начиная с версии ITK 3.6, программное обеспечение распространяется под лицензией BSD с открытым исходным кодом. Он допускает использование для любых целей, за исключением, возможно, кода, найденного в запатентованном каталоге, и при правильном распознавании. Полные условия авторских прав и лицензии доступны на сайте www. .itk .org /ИТК /проект /лицензия .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 .

Техническое резюме [ править ]

В следующих разделах кратко описаны технические характеристики набора инструментов 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 — посмотреть, как он используется. Есть четыре места, где можно найти приложения ITK.

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

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

Данные [ править ]

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

Сопутствующие инструменты [ править ]

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

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

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

  1. ^ «Выпуск 5.3.0» . 20 декабря 2022 г. Проверено 15 января 2023 г.
  2. ^ «Консорциум Insight Software / ITK — GitHub» . Гитхаб . 17 декабря 2019 г.
  3. ^ «Авторское право и лицензия» .

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

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ec72b84a55edd7633b009bd153d401d5__1667720820
URL1:https://arc.ask3.ru/arc/aa/ec/d5/ec72b84a55edd7633b009bd153d401d5.html
Заголовок, (Title) документа по адресу, URL1:
Insight Segmentation and Registration Toolkit - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)