SimpleITK
![]() Логотип SimpleITK | |
Разработчик(и) | Консорциум программного обеспечения Insight |
---|---|
Стабильная версия | 2.3.0
/ 13 сентября 2023 г |
Написано в | C++ , Python , R , Java , C# , Lua , Ruby , Tcl |
Операционная система | Кросс-платформенный |
Тип | Библиотека для анализа изображений |
Лицензия | Апач 2.0 |
Веб-сайт | www |
SimpleITK — это упрощенный интерфейс с открытым исходным кодом для набора инструментов Insight Segmentation and Registration Toolkit (ITK). Библиотека анализа изображений SimpleITK доступна на нескольких языках программирования, включая C++ , Python , R , [1] Java , C# , Lua , Ruby и Tcl . Бинарные дистрибутивы доступны для всех трёх основных операционных систем ( Linux , macOS и Microsoft Windows ).
Разработанный Национальными институтами здравоохранения (NIH) как открытый ресурс, его основная цель — сделать алгоритмы, доступные в библиотеке ITK, доступными для самого широкого круга ученых, чья работа включает анализ изображений , независимо от их навыков разработки программного обеспечения. [2] Как следствие, интерфейс SimpleITK предоставляет только наиболее часто изменяемые алгоритмические настройки компонентов ITK. Кроме того, библиотека предоставляет как объектно-ориентированный , так и процедурный интерфейс для большинства фильтров обработки изображений. Последний обеспечивает рабочие процессы анализа изображений с кратким синтаксисом. Вторичная цель библиотеки — продвижение воспроизводимых рабочих процессов анализа изображений. [3] с помощью библиотеки SimpleITK в сочетании с современными инструментами для воспроизводимых вычислительных рабочих процессов, доступными на языках программирования Python ( блокноты Jupyter ) и R ( пакет Knitr ).
Разработка программного обеспечения сосредоточена на GitHub с использованием модели fork and pull . Проект создается с помощью инструмента CMake , а ночные сборки публикуются на панели мониторинга качества проекта .
Многие приложения и библиотеки для анализа медицинских изображений включают SimpleITK в качестве ключевого строительного блока, поскольку он обеспечивает широкий спектр компонентов фильтрации изображений и ввода-вывода изображений с удобным пользовательским интерфейсом. Примеры включают pyOsirix [4] инструмент написания сценариев для популярного приложения Osirix , пакета Python pyradiomics для извлечения радиомических характеристик из медицинских изображений, [5] приложение для анализа изображений 3DSlicer , библиотека регистрации медицинских изображений SimpleElastix, [6] и библиотека глубокого обучения NiftyNet для медицинской визуализации. [7]
История
[ редактировать ]Первоначальная разработка SimpleITK финансировалась Национальной медицинской библиотекой США в рамках программы Закона о восстановлении и реинвестировании Америки (ARRA) в результате сотрудничества клиники Мэйо, Kitware Inc, Университета Айовы и очной программы NLM. Первый крупный релиз инструментария был анонсирован в апреле-мае 2017 года . Второй крупный релиз был анонсирован в сентябре 2020 года.
В период с 2013 по 2019 год разработка SimpleITK в основном осуществлялась в рамках очной исследовательской программы Национальной медицинской библиотеки с сотрудниками Университета Айовы и Университета Монаша. С 2019 года разработка SimpleITK в основном ведется Управлением киберинфраструктуры и вычислительной биологии Национального института аллергии и инфекционных заболеваний . В апреле 2020 года инструментарий сменил логотип на более современный дизайн.
Примеры
[ редактировать ]Гауссово сглаживание
[ редактировать ]Короткие скрипты Python, иллюстрирующие чтение, размытие и запись изображений. Используя объектно-ориентированный интерфейс:
import SimpleITK as sitk
import sys
if len(sys.argv) < 4:
print("Usage: SimpleGaussian <input> <sigma> <output>")
sys.exit(1)
reader = sitk.ImageFileReader()
reader.SetFileName(sys.argv[1])
image = reader.Execute()
pixelID = image.GetPixelID()
gaussian = sitk.SmoothingRecursiveGaussianImageFilter()
gaussian.SetSigma(float(sys.argv[2]))
image = gaussian.Execute(image)
caster = sitk.CastImageFilter()
caster.SetOutputPixelType(pixelID)
image = caster.Execute(image)
writer = sitk.ImageFileWriter()
writer.SetFileName(sys.argv[3])
writer.Execute(image)
Более краткая версия с использованием процедурного интерфейса:
import SimpleITK as sitk
import sys
if len(sys.argv) < 4:
print("Usage: SimpleGaussian <input> <sigma> <output>")
sys.exit(1)
image = sitk.ReadImage(sys.argv[1])
pixelID = image.GetPixelID()
image = sitk.Cast(sitk.SmoothingRecursiveGaussian(image, float(sys.argv[2])), pixelID)
sitk.WriteImage(image, sys.argv[3])
Мультимодальная жесткая регистрация
[ редактировать ]Короткий скрипт R, иллюстрирующий использование библиотеки регистрации для жесткой регистрации. из двух 3D-изображений:
library(SimpleITK)
args = commandArgs( trailingOnly=TRUE )
if( length( args ) < 2 )
{
cat( "Usage: registration <fixed_image> <moving_image> <output_transform>\n" )
quit( save="no", status=1 )
}
fixed_image <- ReadImage( args[1], "sitkFloat32" )
moving_image <- ReadImage( args[2], "sitkFloat32" )
initial_transform <- CenteredTransformInitializer( fixed_image,
moving_image,
Euler3DTransform(),
"GEOMETRY" )
reg <- ImageRegistrationMethod()
reg$SetMetricAsMattesMutualInformation( numberOfHistogramBins=50 )
reg$SetMetricSamplingStrategy( "RANDOM" )
reg$SetMetricSamplingPercentage( 0.01 )
reg$SetInterpolator( "sitkLinear" )
reg$SetOptimizerAsGradientDescent( learningRate=1.0,
numberOfIterations=100 )
reg$SetOptimizerScalesFromPhysicalShift()
reg$SetInitialTransform( initial_transform, inPlace=FALSE )
final_transform <- reg$Execute( fixed_image, moving_image )
WriteTransform( final_transform, "final_transform.tfm" )
Ссылки
[ редактировать ]- ^ Р. Беар, BC Ловекамп, З. Янив, «Сегментация, регистрация и характеристика изображений в R с помощью SimpleITK», J Stat Softw, 86 (8), 2018, doi: 10.18637/jss.v086.i08.
- ^ BC Лоукемп, Д.Т. Чен, Л. Ибаньес, Д. Блезек, «Дизайн SimpleITK», Фронт. Нейроинформ., 7:45, 2013, doi:10.3389/fninf.2013.00045.
- ^ З. Янив, Б. К. Лоукемп, Х. Дж. Джонсон, Р. Бир, «Блокноты для анализа изображений SimpleITK: среда для совместной работы для образования и воспроизводимых исследований», J Digit Imaging., 31 (3): 290-303, 2018, doi: 10.1007/с10278-017-0037-8.
- ^ MD Blackledge, DJCollins, DM Koh, MO Leach, «Быстрая разработка инструментов исследования для анализа изображений: преодоление разрыва между исследователями и клиницистами с помощью pyOsiriX», Comput Biol Med., 69:203-212, 2016, doi: 10.1016/j .compbiomed.2015.12.002
- ^ JJM ван Гритуйсен, А. Федоров, К. Пармар, А. Хосни, Н. Аукойн, В. Нараян, Р. Г. Битс-Тан, Дж. К. Фийон-Робин, С. Пипер, HJWL Аэртс, «Система вычислительной радиомики для декодирования рентгенографических изображений». Фенотип», Cancer Research, 77(21): e104–e107, 2017, doi: 10.1158/0008-5472.CAN-17-0339.
- ^ К. Марстал, Ф. Берендсен, М. Старинг, С. Кляйн, «SimpleElastix: удобная для пользователя многоязычная библиотека для регистрации медицинских изображений», Конференция IEEE по семинарам по компьютерному зрению и распознаванию образов (CVPRW), 574- 582, 2016, doi:10.1109/CVPRW.2016.78
- ^ Э. Гибсон, В. Ли, К. Судре, Л. Фидон, Д. И. Шакир, Г. Ван, З. Итон-Розен, Р. Грей, Т. Доул, Ю. Ху, Т. Уинти, П. Начев, М. Модат, Д.С. Барратт, С. Урселин, М.Дж. Кардосо, Т. Веркаутерен, «NiftyNet: платформа глубокого обучения для медицинской визуализации», Comput Methods Programs Biomed., 158:113-122, 2018, doi: 10.1016/j .cmpb.2018.01.025
Внешние ссылки
[ редактировать ]- Официальный сайт .
- SimpleITK: Упрощенный путь к знаниям — онлайн-руководство по использованию блокнотов Jupyter на Python.
- Организация на GitHub
- Краткие примеры, иллюстрирующие использование некоторых компонентов библиотеки, доступны в документации .
- Документация по классам и процедурам доступна через Doxygen .
- Блокноты Jupyter на GitHub с длинными и подробно документированными примерами, полезными для изучения и обучения работе с SimpleITK.
- Получите помощь, задайте вопросы на дискуссионном форуме ITK .