stringtranslate.com

Kit de herramientas de registro y segmentación de insights

ITK es un marco de desarrollo de aplicaciones multiplataforma de código abierto ampliamente utilizado para el desarrollo de programas de registro y segmentación de imágenes . La segmentación es el proceso de identificar y clasificar datos que se encuentran en una representación muestreada digitalmente. Normalmente, la representación muestreada es una imagen adquirida a partir de instrumentos médicos como escáneres de tomografía computarizada o resonancia magnética. El registro es la tarea de alinear o desarrollar correspondencias entre datos. Por ejemplo, en el entorno médico, una tomografía computarizada se puede alinear con una resonancia magnética para combinar la información contenida en ambas.

ITK fue desarrollado con financiación de la Biblioteca Nacional de Medicina ( EE.UU. ) como un recurso abierto de algoritmos para analizar las imágenes del Visible Human Project . ITK significa The Insight Segmentation and Registration Toolkit . El conjunto de herramientas proporciona algoritmos de registro y segmentación de vanguardia en dos, tres y más dimensiones. ITK utiliza el entorno de compilación CMake para gestionar el proceso de configuración. El software está implementado en C++ y está empaquetado para Python . También se está desarrollando activamente una rama del proyecto ITK que proporciona una interfaz simplificada para ITK en ocho lenguajes de programación, SimpleITK .

Introducción

Orígenes

En 1999, la Biblioteca Nacional de Medicina de los Institutos Nacionales de Salud de EE. UU . adjudicó un contrato de tres años para desarrollar un conjunto de herramientas de segmentación y registro de código abierto, que con el tiempo llegó a conocerse como Insight Toolkit (ITK). El director del proyecto NLM de ITK fue el Dr. Terry Yoo, quien coordinó a los seis contratistas principales que formaron el Insight Software Consortium. Estos miembros del consorcio incluían a los tres socios comerciales GE Corporate R&D, Kitware , Inc. y MathSoft (el nombre de la empresa ahora es Insightful); y los tres socios académicos: Universidad de Carolina del Norte ( UNC ), Universidad de Tennessee (UT) y Universidad de Pensilvania (UPenn). Los investigadores principales de estos socios fueron, respectivamente, Bill Lorensen en GE CRD, Will Schroeder en Kitware, Vikram Chalana en Insightful, Stephen Aylward con Luis Ibáñez en la UNC (quienes posteriormente se mudaron a Kitware), Ross Whitaker con Josh Cates en UT. (ambos ahora en Utah) y Dimitris Metaxas en UPenn (Dimitris Metaxas está ahora en la Universidad de Rutgers ). Además, varios subcontratistas completaron el consorcio, incluidos Peter Ratiu del Brigham & Women's Hospital, Celina Imielinska y Pat Molholt de la Universidad de Columbia , Jim Gee del Grasp Lab de UPenn y George Stetten de la Universidad de Pittsburgh .

Detalles técnicos

ITK es un conjunto de herramientas de software de código abierto para realizar registro y segmentación. La segmentación es el proceso de identificar y clasificar datos que se encuentran en una representación muestreada digitalmente. Normalmente, la representación muestreada es una imagen adquirida a partir de instrumentos médicos como escáneres de tomografía computarizada o resonancia magnética . El registro es la tarea de alinear o desarrollar correspondencias entre datos. Por ejemplo, en el entorno médico, una tomografía computarizada se puede alinear con una resonancia magnética para combinar la información contenida en ambas.

ITK está implementado en C++. ITK es multiplataforma y utiliza el entorno de compilación CMake para gestionar el proceso de compilación. Además, un proceso de ajuste automatizado genera interfaces entre C++ y otros lenguajes de programación como Java y Python. Esto permite a los desarrolladores crear software utilizando una variedad de lenguajes de programación. La implementación de ITK emplea la técnica de programación genérica mediante el uso de plantillas C++.

Debido a que ITK es un proyecto de código abierto, los desarrolladores de todo el mundo pueden usar, depurar, mantener y ampliar el software. ITK utiliza un modelo de desarrollo de software denominado programación extrema . La programación extrema colapsa la metodología habitual de creación de software en un proceso simultáneo e iterativo de diseño-implementación-prueba-lanzamiento. Las características clave de la programación extrema son la comunicación y las pruebas. La comunicación entre los miembros de la comunidad ITK es lo que ayuda a gestionar la rápida evolución del software. Las pruebas son lo que mantiene estable el software. En ITK, existe un extenso proceso de prueba (usando CDash) que mide la calidad diariamente. El Panel de pruebas de ITK se publica continuamente y refleja la calidad del software.

Desarrolladores y contribuyentes

El Insight Toolkit fue desarrollado inicialmente por seis organizaciones principales.

y tres subcontratistas

Después de sus inicios, el software continuó creciendo con contribuciones de otras instituciones, incluidas

Fondos

La financiación del proyecto proviene de la Biblioteca Nacional de Medicina de los Institutos Nacionales de Salud. NLM, a su vez, contó con el apoyo de instituciones miembros de los NIH (ver patrocinadores).

Los objetivos del proyecto incluyen los siguientes:

El código fuente de Insight Toolkit se distribuye bajo una licencia Apache 2.0 (aprobada por la Open Source Initiative ).

La filosofía de código abierto del Insight Toolkit se amplió para apoyar la ciencia abierta , en particular proporcionando acceso abierto a publicaciones en el ámbito del procesamiento de imágenes médicas. Estas publicaciones están disponibles gratuitamente a través del Insight Journal.

Participación comunitaria

Como ITK es un sistema de código abierto, cualquiera puede contribuir al proyecto. Una persona interesada en contribuir con ITK puede realizar las siguientes acciones

  1. Lea la Guía del software ITK. (Este libro se puede comprar en la tienda de Kitware).
  2. Lea las instrucciones sobre cómo contribuir con clases y algoritmos al kit de herramientas mediante envíos al Insight Journal.
  3. Obtenga acceso a GitHub.
  4. Siga las instrucciones de contribución de Git.
  5. Únase a la discusión del Discurso ITK. La comunidad está abierta a todos.

Cualquiera puede enviar un parche y no es necesario tener acceso de escritura al repositorio para fusionar un parche o conservar el crédito de autoría. Para obtener más información, consulte la documentación de ITK Bar Camp sobre cómo enviar un parche.

Derechos de autor y licencia

ITK tiene derechos de autor de Insight Software Consortium, una alianza sin fines de lucro de organizaciones e individuos interesados ​​en apoyar a ITK. A partir de la versión 3.6 de ITK, el software se distribuye bajo una licencia de código abierto BSD. Permite su uso para cualquier propósito, con la posible excepción del código que se encuentra en el directorio patentado, y con el reconocimiento adecuado. Los términos completos de los derechos de autor y la licencia están disponibles en www.itk.org/ITK/project/license.html . La versión 4.0 utiliza la licencia Apache 2.0 .

La licencia se cambió a Apache 2.0 con la versión 4.0 para adoptar una licencia moderna con disposiciones de protección de patentes. Desde la versión 3.6 a la 3.20 se utilizó una licencia BSD simplificada. Las versiones de ITK anteriores a ITK 3.6 se distribuyeron bajo una licencia BSD modificada. La principal motivación para adoptar una licencia BSD a partir de ITK 3.6 fue tener una licencia aprobada por OSI .

Resumen técnico

Las siguientes secciones resumen las características técnicas del kit de herramientas Insight ITK de NLM. Filosofía de diseño Las siguientes son características clave de la filosofía de diseño del kit de herramientas.

Arquitectura

Las siguientes son características clave de la arquitectura del kit de herramientas.

Filosofía de implementación

Las siguientes son características clave de la filosofía de implementación del kit de herramientas.

Entorno de construcción

ITK utiliza el entorno de compilación CMake (creación multiplataforma). CMake es un sistema operativo y un proceso de compilación independiente del compilador que produce archivos de compilación nativos apropiados para el sistema operativo y el compilador con el que se ejecuta. En Unix, CMake produce archivos MAKE y en Windows, CMake genera proyectos y espacios de trabajo.

Entorno de prueba

ITK admite un amplio entorno de pruebas. El código se prueba diariamente (e incluso continuamente) en muchas combinaciones de hardware/sistema operativo/compilador y los resultados se publican diariamente en el panel de pruebas de ITK. Usamos Dart para gestionar el proceso de prueba y publicar los resultados en el panel.

Referencias previas: patrones y genéricos de C++

ITK utiliza muchos patrones de diseño avanzados y programación genérica. Estas referencias pueden resultarle útiles para comprender el diseño y la sintaxis de Insight.

Ejemplos

Degradado de imagen suavizado gaussiano

 #incluir "itkImagen.h"  int main () { usando ImageType = itk :: Imagen < característica sin firmar , 3 > ; usando ReaderType = itk :: ImageFileReader <ImageType> ;usando WriterType = itk :: ImageFileWriter <ImageType> ;usando FilterType = itk :: GradientRecursiveGaussianImageFilter < ImageType , ImageType > ;                              ReaderType :: Lector de puntero = ReaderType :: Nuevo (); WriterType :: Puntero escritor = WriterType :: Nuevo ();        lector -> SetFileName ( "lungCT.dcm" ); escritor -> SetFileName ( "smoothedLung.hdr" );      FilterType :: Filtro de puntero = FilterType :: Nuevo ();    filtro -> SetInput ( lector -> GetOutput () ); escritor -> SetInput ( filtro -> GetOutput () ); filtro -> SetSigma ( 45.0 );         prueba { escritor -> Actualizar (); } catch ( itk :: ExceptionObject & excp ) { std :: cerr << excp << std :: endl ; devolver EXIT_FAILURE ; } }                  

Segmentación creciente de la región

 #incluir "itkImagen.h"  int main () { usando InputImageType = itk :: Imagen < firmada corta , 3 > ; usando OutputImageType = itk :: Imagen < característica sin firmar , 3 > ; usando ReaderType = itk :: ImageFileReader <InputImageType> ;usando WriterType = itk :: ImageFileWriter <OutputImageType> ;usando FilterType = itk :: ConnectedThresholdImageFilter < InputImageType , OutputImageType > ;                                      ReaderType :: Lector de puntero = ReaderType :: Nuevo (); WriterType :: Puntero escritor = WriterType :: Nuevo ();        lector -> SetFileName ( "brain.dcm" ); escritor -> SetFileName ( "whiteMatter.hdr" );      FilterType :: Filtro de puntero = FilterType :: Nuevo ();    filtro -> SetInput ( lector -> GetOutput () ); escritor -> SetInput ( filtro -> GetOutput () );      filtro -> SetMultiplier ( 2.5 ); ImageType :: semilla IndexType ; semilla [ 0 ] = 142 ; semilla [ 1 ] = 97 ; semilla [ 2 ] = 63 ; filtrar -> AgregarSemilla ( semilla ); prueba { escritor -> Actualizar (); } catch ( itk :: ExceptionObject & excp ) { std :: cerr << excp << std :: endl ; devolver EXIT_FAILURE ; } }                                   

Información adicional

Recursos

Hay varios recursos disponibles para aprender más sobre ITK.

Aplicaciones

Una excelente manera de aprender sobre ITK es ver cómo se usa. Hay cuatro lugares para encontrar aplicaciones de ITK.

  1. Los ejemplos de Insight/Examples/código fuente distribuidos con ITK. El código fuente está disponible. Además, está muy comentado y funciona en combinación con la Guía de Software ITK.
  2. El pago por separado de InsightApplications.
  3. Las páginas web de Aplicaciones. Estas son descripciones extensas, con imágenes y referencias, de los ejemplos que se encuentran en el punto 1 anterior.
  4. Los directorios de prueba distribuidos con ITK son ejemplos simples, en su mayoría no documentados, de cómo utilizar el código.

En 2004, ITK-SNAP (sitio web) se desarrolló a partir de SNAP y se convirtió en un popular software de segmentación gratuito que utiliza ITK y tiene una interfaz de usuario sencilla y agradable.

Datos

Ver también

Herramientas relacionadas

Contactos

Visite el foro de discusión de ITK para obtener contactos y ayuda de la comunidad.

Referencias

  1. ^ "Versión 5.3.0". 20 de diciembre de 2022 . Consultado el 15 de enero de 2023 .
  2. ^ "Consorcio de software Insight / ITK - GitHub". GitHub . 2019-12-17.
  3. ^ "Derechos de autor y licencia".

enlaces externos