| シンプルITKITK | |
|---|---|
SimpleITKロゴ | |
| 開発者 | インサイトソフトウェアコンソーシアム |
| 安定版リリース | 2.5.0 / 2025年4月28日 ( 2025-04-28 ) |
| 書かれた | C++、Python、R、Java、C#、Lua、Ruby、Tcl |
| オペレーティング·システム | クロスプラットフォーム |
| タイプ | 画像解析用ライブラリ |
| ライセンス | アパッチ 2.0 |
| Webサイト | www.simpleitk.org |
SimpleITKは、 Insight Segmentation and Registration Toolkit (ITK)の簡素化されたオープンソースインターフェースです。SimpleITK画像解析ライブラリは、 C++、Python、R、[ 1 ] Java、C#、Lua、Ruby、Tclなど、複数のプログラミング言語で利用可能です。バイナリディストリビューションは、3つの主要オペレーティングシステム( Linux、macOS、Microsoft Windows )すべてで利用可能です。
国立衛生研究所(NIH)でオープン リソースとして開発された SimpleITK の主な目的は、ソフトウェア開発スキルに関係なく、画像解析を含む研究を行う幅広い科学者が ITK ライブラリで利用できるアルゴリズムを利用することです。 [ 2 ] その結果、SimpleITK インターフェイスは、ITK コンポーネントの最も一般的に変更されるアルゴリズム設定のみを公開します。さらに、このライブラリは、ほとんどの画像処理フィルタに対してオブジェクト指向と手続き型の両方のインターフェイスを提供します。後者は、簡潔な構文で画像解析ワークフローを可能にします。ライブラリの 2 番目の目的は、 SimpleITK ライブラリを、Python ( Jupyter ノートブック) およびR ( knitr パッケージ)プログラミング言語で利用できる再現可能な計算ワークフロー用の最新ツールと組み合わせて使用することで、再現可能な画像解析ワークフローを促進することです [3 ]。
ソフトウェア開発はGitHubを中心とし、フォーク&プルモデルを採用しています。プロジェクトはCMakeツールを使用して構築され、夜間ビルドはプロジェクトの品質ダッシュボードに投稿されます。
SimpleITKは、ユーザーフレンドリーなインターフェースを備えた幅広い画像フィルタリングおよび画像IOコンポーネントを提供するため、多くの医用画像解析アプリケーションやライブラリに主要な構成要素として組み込まれています。例としては、人気のOsirixアプリケーション用のpyOsirix [ 4 ]スクリプトツール、医用画像からラジオミック特徴を抽出するpyradiomics Pythonパッケージ[ 5 ] 、画像解析アプリケーション3DSlicer 、医用画像レジストレーションライブラリSimpleElastix [ 6 ] 、医用画像用のNiftyNetディープラーニングライブラリ[ 7 ]などが挙げられます。
歴史
SimpleITKの初期開発は、米国国立医学図書館(NLM)のアメリカ復興・再投資法(ARRA)プログラムに基づき、メイヨー・クリニック、Kitware Inc.、アイオワ大学、そしてNLMの学内プログラムの共同研究として資金提供を受けました。ツールキットの最初のメジャーリリースは2017年4月から5月に発表されました。2番目のメジャーリリースは2020年9月に発表されました。
2013年から2019年の間、SimpleITKの開発は主に米国国立医学図書館の学内研究プログラムの一環として、アイオワ大学およびモナシュ大学の協力を得て行われていました。2019年以降、SimpleITKの開発は主に米国国立アレルギー・感染症研究所のサイバーインフラストラクチャ・計算生物学オフィスの下で行われています。2020年4月、ツールキットのロゴがより現代的なデザインに変更されました。
例
ガウス平滑化
画像の読み込み、ぼかし、書き込みを説明する短いPythonスクリプト。オブジェクト指向インターフェースを使用。
SimpleITK をsitk import sysとしてインポートif len ( sys . argv ) < 4 : print ( "使用法: SimpleGaussian <入力> <シグマ> <出力>" ) sys . exit ( 1 )reader = sitk.ImageFileReader ( ) reader.SetFileName ( sys.argv [ 1 ] ) image = reader.Execute ( )pixelID =画像.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 )手続き型インターフェースを使用したより簡潔なバージョン:
SimpleITK をsitk import sysとしてインポートif len ( sys . argv ) < 4 : print ( "使用法: SimpleGaussian <入力> <シグマ> <出力>" ) 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 ] )マルチモダリティリジッドレジストレーション
2 つの 3D 画像のリジッド レジストレーションにライブラリのレジストレーション フレームワークを使用する方法を示す短い R スクリプト:
ライブラリ(SimpleITK )args = commandArgs ( trailingOnly = TRUE ) if ( length ( args ) < 2 ) { cat ( "使用法: 登録 <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" )参考文献
- ^ R. Beare、BC Lowekamp、Z. Yaniv、「SimpleITKを使用したRでの画像セグメンテーション、レジストレーション、および特性評価」、J Stat Softw、86(8)、2018、doi:10.18637/jss.v086.i08。
- ^ BC Lowekamp、DT Chen、L. Ibáñez、D. Blezek、「The Design of SimpleITK」、表紙。 Neuroinform.、7:45、2013、doi:10.3389/fninf.2013.00045。
- ^ Z. Yaniv、BC Lowekamp、HJ Johnson、R. Beare、「SimpleITK画像分析ノートブック:教育と再現可能な研究のための共同環境」、J Digit Imaging、31(3):290-303、2018、doi: 10.1007/s10278-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 van Griethuysen、A. Fedorov、C. Parmar、A. Hosny、N. Aucoin、V. Narayan、RGH Beets-Tan、JC Fillon-Robin、S. Pieper、HJWL Aerts、「放射線学的表現型を解読するための計算ラジオミクスシステム」、Cancer Research、77(21): e104–e107、2017年、doi: 10.1158/0008-5472.CAN-17-0339
- ^ K. Marstal、F. Berendsen、M. Staring、S. Klein、「SimpleElastix:医療画像レジストレーションのためのユーザーフレンドリーな多言語ライブラリ」、IEEEコンピュータビジョンおよびパターン認識ワークショップ(CVPRW)、574-582、2016年、doi:10.1109/CVPRW.2016.78
- ^ E. Gibson、W. Li、C. Sudre、L. Fidon、DI Shakir、G. Wang、Z. Eaton-Rosen、R. Gray、T. Doel、Y. Hu、T. Whyntie、P. Nachev、M. Modat、DC Barratt、S. Ourselin、MJ Cardoso、T. Vercauteren、「NiftyNet:医療画像のためのディープラーニングプラットフォーム」、Comput Methods Programs Biomed.、158:113-122、2018年、doi: 10.1016/j.cmpb.2018.01.025
外部リンク
- 公式サイト。
- SimpleITK: 洞察への簡略化された道 - Python で Jupyter ノートブックを使用するオンライン チュートリアル。
- GitHub上の組織
- ライブラリ コンポーネントの使用方法を示す短い例は、ドキュメントを読むことで参照できます。
- クラスとプロシージャのドキュメントはDoxygenから入手できます。
- GitHub 上の Jupyter ノートブックには、長くて広範囲に文書化された例が含まれており、SimpleITK の使い方を学習および指導するのに役立ちます。
- ヘルプが必要な場合は、ITK ディスカッション フォーラムで質問を投稿してください。