Insight 세그멘테이션 및 등록 툴킷
Insight Segmentation and Registration Toolkit| 개발자 | Insight 소프트웨어 컨소시엄 |
|---|---|
| 초기 릴리즈 | 2001년 7월 ; 전( |
| 안정된 릴리스 | 5.2.0[1] / 2021년 5월 28일; 전 ( |
| 저장소 | |
| 기입처 | C, C++, Fortran, Python[2] |
| 운영 체제 | 크로스 플랫폼 |
| 유형 | 개발 라이브러리 |
| 면허증. | 아파치 2.0[3] |
| 웹 사이트 | www |
ITK는 이미지 분할 및 이미지 등록 프로그램 개발에 널리 사용되는 크로스 플랫폼 오픈 소스 애플리케이션 개발 프레임워크입니다.분할은 디지털로 샘플링된 표현에서 발견된 데이터를 식별하고 분류하는 프로세스입니다.일반적으로 샘플 표현은 CT 또는 MRI 스캐너와 같은 의료 기기에서 획득한 영상입니다.등록은 데이터 간의 대응 관계를 조정하거나 개발하는 작업입니다.예를 들어 의료 환경에서 CT 스캔은 MRI 스캔과 일치하여 양쪽에 포함된 정보를 결합할 수 있습니다.
ITK는 가시적 인간 프로젝트의 이미지를 분석하기 위한 알고리즘의 오픈 리소스로 미국 국립 의학 도서관(미국)의 자금으로 개발되었습니다.ITK는 Insight Segmentation and Registration Toolkit의 약자입니다.이 툴킷은, 2 차원, 3 차원, 및 그 이상의 최첨단의 세그먼트화 및 등록 알고리즘을 제공합니다.ITK는 CMake 빌드 환경을 사용하여 설정 프로세스를 관리합니다.소프트웨어는 C++로 구현되어 있으며 Python용으로 포장되어 있습니다.8개의 프로그래밍 언어로 ITK에 대한 심플한 인터페이스를 제공하는 ITK 프로젝트의 분파입니다.ITK도 개발 중입니다.
서론
오리진스
1999년 미국 국립보건원 의학도서관은 오픈 소스 등록 및 세분화 툴킷을 개발하는 3년 계약을 체결했습니다.이 툴킷은 최종적으로 Insight Toolkit(ITK)로 알려지게 되었습니다.ITK의 NLM 프로젝트 매니저는인사이트 소프트웨어 컨소시엄을 구성한 6개 주요 계약업체를 조정한 테리 유.이 컨소시엄에는 GE Corporate R&D, Kitware, Inc. 및 MathSoft(현재는 회사명 Insightful)의 3개 파트너와 North Carolina(UNC), University of Tennessee(UT), University of Pennsylvania(UPN)의 3개 학술 파트너사가 포함되어 있습니다.이들 파트너의 주요 조사자는 각각 GE CRD의 빌 로렌센, 키트웨어의 윌 슈로더, 인사이트풀의 비크람 찰라나, UNC의 스테판 아일워드(둘 다 키트웨어로 이동), 현재 Utates의 Josh Whitaker(둘 다 Utaches로 이동)였다.럿거스 대학).또 브리검 여성병원의 피터 라티우, 콜롬비아 대학의 셀리나 이미엘린스카와 팻 몰홀트, 유펜스그랩의 짐 지, 피츠버그 대학의 조지 스테튼 등 여러 하청업체들이 컨소시엄을 구성했다.
기술적 세부사항
ITK는 등록 및 세그먼트화를 수행하기 위한 오픈 소스 소프트웨어 툴킷입니다.분할은 디지털로 샘플링된 표현에서 발견된 데이터를 식별하고 분류하는 프로세스입니다.일반적으로 샘플 표현은 CT 또는 MRI 스캐너와 같은 의료 기기에서 획득한 영상입니다.등록은 데이터 간의 대응 관계를 조정하거나 개발하는 작업입니다.예를 들어 의료 환경에서 CT 스캔은 MRI 스캔과 일치하여 양쪽에 포함된 정보를 결합할 수 있습니다.
ITK는 C++로 구현되어 있습니다.ITK는 CMake 빌드 환경을 사용하여 컴파일 프로세스를 관리하는 크로스 플랫폼입니다.또한 자동 래핑 프로세스는 C++와 Java 및 Python과 같은 다른 프로그래밍 언어 간의 인터페이스를 생성합니다.이를 통해 개발자는 다양한 프로그래밍 언어를 사용하여 소프트웨어를 만들 수 있습니다.ITK의 구현은 C++ 템플릿을 사용하여 일반 프로그래밍 기술을 사용합니다.
ITK는 오픈 소스 프로젝트이기 때문에 전 세계 개발자가 소프트웨어를 사용, 디버깅, 유지보수 및 확장할 수 있습니다.ITK는 익스트림 프로그래밍이라고 불리는 소프트웨어 개발 모델을 사용합니다.극단적인 프로그래밍은 일반적인 소프트웨어 생성 방법론을 설계 구현 테스트 릴리스의 동시 반복 프로세스로 압축합니다.익스트림 프로그래밍의 주요 특징은 커뮤니케이션과 테스트입니다.ITK 커뮤니티 구성원 간의 커뮤니케이션은 소프트웨어의 급속한 발전을 관리하는 데 도움이 됩니다.테스트는 소프트웨어를 안정적으로 유지하는 것입니다.ITK에서는 매일 품질을 측정하는 광범위한 테스트 프로세스(CDash 사용)가 실시되고 있습니다.ITK 테스트 대시보드는 소프트웨어의 품질을 반영하여 지속적으로 게시됩니다.
개발자 및 기여자
Insight Toolkit은 처음에 6개의 주요 조직에서 개발되었습니다.
- 키트웨어
- GE 코퍼레이트 R&D
- 통찰력 있는
- 노스캐롤라이나 대학교 채플힐
- 유타 대학교
- 펜실베이니아 대학교
하청업체 3곳과
소프트웨어는 시작 후 다음과 같은 다른 기관의 기여로 계속 성장했습니다.
자금 조달
이 프로젝트에 대한 자금은 국립 보건원 국립 의학 도서관으로부터 나온다.NLM은 NIH 회원 기관에 의해 차례로 지원되었다(스폰서 참조).
프로젝트의 목표는 다음과 같습니다.
- Visible Human Project를 지원합니다.
- 향후 연구의 기반을 구축하다.
- 기본 알고리즘 저장소를 만듭니다.
- 고급 제품 개발을 위한 플랫폼을 개발합니다.
- 테크놀로지의 상업적 응용을 지원합니다.
- 향후 작업을 위해 규칙을 만듭니다.
- 소프트웨어 사용자와 개발자로 구성된 자립형 커뮤니티를 구축합니다.
Insight Toolkit의 소스 코드는 Apache 2.0 라이센스로 배포됩니다(오픈 소스 이니셔티브에서 승인).
Insight Toolkit의 오픈 소스 철학은 오픈 사이언스를 지원하도록 확장되었으며, 특히 의료 이미지 처리 분야의 출판물에 대한 개방형 액세스를 제공했습니다.이러한 출판물은 Insight 저널을 통해 무료로 제공됩니다.
커뮤니티 참여
ITK는 오픈 소스 시스템이기 때문에 누구나 프로젝트에 공헌할 수 있습니다.ITK에 공헌하는 데 관심이 있는 사람은 다음과 같은 조치를 취할 수 있습니다.
- ITK 소프트웨어 가이드를 읽어주세요.(이 책은 Kitware 매장에서 구입하실 수 있습니다.)
- Insight Journal에 제출하여 Toolkit에 클래스 및 알고리즘을 제공하는 방법에 대한 지침을 읽어 보십시오.
- GitHub에 액세스합니다.
- Git 투고 지침을 따릅니다.
- ITK 담론 토론에 참여하십시오.그 공동체는 누구에게나 열려 있다.
누구나 패치를 제출할 수 있습니다.또한 패치를 Marge하거나 Authority Credit을 유지하기 위해 저장소에 대한 쓰기 액세스는 필요하지 않습니다.상세한 것에 대하여는, 패치를 송신하는 방법에 관한 ITK Bar Camp 의 메뉴얼을 참조해 주세요.
저작권 및 라이선스
ITK는 ITK 지원에 관심이 있는 조직과 개인으로 구성된 비영리 연합체인 Insight Software Consortium에 의해 저작권이 부여됩니다.ITK 버전 3.6 이후 소프트웨어는 BSD 오픈소스 라이선스로 배포됩니다.특허 디렉토리에 있는 코드를 제외하고, 적절한 인식과 함께 모든 목적을 위해 사용할 수 있습니다.저작권 및 라이선스의 전체 조항은 www.itk.org/ITK/project/license.html에서 확인할 수 있습니다.버전 4.0에서는 Apache 2.0 라이센스를 사용합니다.
라이선스는 Apache 2.0 버전 4.0으로 변경되어 특허 보호 조항이 있는 최신 라이선스를 채택했습니다.버전 3.6부터 3.20 까지는 간이 BSD 라이선스가 사용되었습니다.ITK 3.6보다 이전 버전의 ITK는 변경된 BSD 라이선스로 배포되었습니다.ITK 3.6부터 BSD 라이선스를 채택한 주된 이유는 OSI 승인 라이선스를 보유하기 위해서였습니다.
기술 개요
다음 섹션에서는 NLM의 Insight ITK 툴킷의 기술적 기능을 요약합니다.설계 철학 툴킷 설계 이념의 주요 특징은 다음과 같습니다.
- 툴킷은 분할 및 등록을 수행하기 위한 데이터 표현 및 알고리즘을 제공합니다.툴킷은 다른 데이터 타입을 처리할 수 있지만 의료 어플리케이션에 중점을 두고 있습니다.
- 이 툴킷은 이미지(임의 치수) 및 (비구조화) 메쉬에 대한 일반적인 데이터 표현을 제공합니다.
- 이 툴킷에서는, 시각화나 그래피컬 유저 인터페이스는 취급하지 않습니다.이것들은 다른 툴킷(VTK, VISPACK, 3DViewnix, MetaImage 등)에 맡겨집니다.
- 이 툴킷은 파일인터페이스에 최소한의 툴을 제공합니다.이 경우에도 다른 툴킷/라이브러리에 제공이 맡겨집니다.
- 멀티 스레드(공유 메모리) 병렬 처리가 지원됩니다.
- 툴킷의 개발은 익스트림 프로그래밍의 원리에 근거하고 있습니다.즉, 설계, 구현 및 테스트는 신속한 반복 프로세스로 수행됩니다.테스트는 이 프로세스의 핵심입니다.Insight에서는 파일이 체크인될 때, 그리고 매일 밤 여러 플랫폼과 컴파일러에서 테스트가 지속적으로 수행됩니다.테스트 결과가 게시되는 ITK 테스트 대시보드는 이 프로세스의 핵심입니다.
아키텍처
다음은 툴킷 아키텍처의 주요 기능입니다.
- 이 툴킷은 데이터 흐름 아키텍처를 중심으로 구성되어 있습니다.즉, 데이터는 프로세스 객체(필터)에 의해 처리되는 데이터 객체를 사용하여 표현됩니다.데이터 개체와 프로세스 개체가 파이프라인에 함께 연결됩니다.파이프라인은 파이프라인에 설정된 사용자 지정 메모리 제한에 따라 데이터를 조각으로 처리할 수 있습니다.
- 오브젝트 팩토리는 오브젝트를 인스턴스화하는 데 사용됩니다.공장에서는 시스템의 런타임 연장이 가능합니다.
- 명령어/옵서버 설계 패턴은 이벤트 처리에 사용됩니다.
구현 이념
다음은 툴킷 구현 이념의 주요 기능입니다.
- 이 툴킷은 일반적인 프로그래밍 원칙을 사용하여 구현됩니다.이처럼 많은 템플릿이 적용된 C++ 코드는 많은 컴파일러에 도전합니다.따라서 최신 버전의 MSVC, Sun, gcc, Intel 및 SGI 컴파일러를 사용하여 개발되었습니다.
- 툴킷은 크로스 플랫폼(Unix, Windows 및 Mac OS X)입니다.
- 이 툴킷은 Tcl, Python, Java 등의 언어를 포함한 여러 언어 바인딩을 지원합니다.이러한 바인딩은 자동 랩 프로세스를 사용하여 자동으로 생성됩니다.
- 메모리 모델은 객체에 대한 참조 수를 유지하는 "스마트 포인터"에 의존합니다.스마트 포인터는 스택에 할당할 수 있으며 스코프가 종료되면 스마트 포인터는 사라지고 참조하는 객체에 대한 참조 카운트가 감소합니다.
환경을 구축하다
ITK는 CMake(크로스 플랫폼 제조) 빌드 환경을 사용합니다.CMake는 운영체제 및 컴파일러에 의존하지 않는 빌드 프로세스로, 함께 실행되는 OS 및 컴파일러에 적합한 네이티브 빌드 파일을 생성합니다.Unix CMake에서는 make 파일을 생성하고 Windows에서는 프로젝트와 워크스페이스를 생성합니다.
테스트 환경
ITK는 광범위한 테스트 환경을 지원합니다.코드는 많은 하드웨어/운영체제/컴파일러 조합으로 매일(그리고 연속적으로) 테스트되며 결과는 ITK 테스트 대시보드에 매일 게시됩니다.Dart를 사용하여 테스트 프로세스를 관리하고 결과를 대시보드에 게시합니다.
배경 참조:C++ 패턴 및 제네릭
ITK는 많은 고급 설계 패턴과 일반 프로그래밍을 사용합니다.이러한 참조 자료는 Insight의 설계 및 구문을 이해하는 데 유용할 수 있습니다.
- 디자인 패턴: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Boch
- 범용 프로그래밍과 표준: Matthew H. Austern의 C++ 표준 템플릿 라이브러리(Addison-Wesley Professional Computing Series) 사용 및 확장
- James O의 고급 C++ 프로그래밍 스타일과 이디옴.코플린
- C/C++ 사용자 저널
- C++ 리포트
예
가우스 평활 이미지 그라데이션
#실패하다 「itk이미지.h" 인트 주된() { 사용. 이미지 타입 = 간지럽다::이미지< > 서명되어 있지 않다 차, 3 >; 사용. 리더 타입 = 간지럽다::Image File Reader< > 이미지 타입 >; 사용. 라이터 타입 = 간지럽다::Image File Writer< > 이미지 타입 >; 사용. 필터 타입 = 간지럽다::GradientRecursiveGaushImageFilter< > 이미지 타입, 이미지 타입 >; 리더 타입::포인터 독자 = 리더 타입::신규(); 라이터 타입::포인터 작가. = 라이터 타입::신규(); 독자->Set File Name(설정 파일명)( "lungCT.dcm" ); 작가.->Set File Name(설정 파일명)( "Smooted Lung.hdr" ); 필터 타입::포인터 필터 = 필터 타입::신규(); 필터->Set Input( 독자->출력의 취득() ); 작가.->Set Input( 필터->출력의 취득() ); 필터->SetSigma( 45.0 ); 해라 { 작가.->갱신하다(); } 또 만나( 간지럽다::Exception Object(Exception Object) & 제외하다 ) { 표준::cerr << > 제외하다 << > 표준::끝; 돌아가다 EXIT_FAILURE; } } 지역 확대 세그먼트화
#실패하다 「itk이미지.h" 인트 주된() { 사용. 입력 이미지유형 = 간지럽다::이미지< > 서명된 짧다, 3 >; 사용. 출력 이미지유형 = 간지럽다::이미지< > 서명되어 있지 않다 차, 3 >; 사용. 리더 타입 = 간지럽다::Image File Reader< > 입력 이미지유형 >; 사용. 라이터 타입 = 간지럽다::Image File Writer< > 출력 이미지유형 >; 사용. 필터 타입 = 간지럽다::연결된Threshold Image Filter(임계값 이미지 필터)< > 입력 이미지유형, 출력 이미지유형 >; 리더 타입::포인터 독자 = 리더 타입::신규(); 라이터 타입::포인터 작가. = 라이터 타입::신규(); 독자->Set File Name(설정 파일명)( "brain.dcm" ); 작가.->Set File Name(설정 파일명)( "WhiteMatter.hdr" ); 필터 타입::포인터 필터 = 필터 타입::신규(); 필터->Set Input( 독자->출력의 취득() ); 작가.->Set Input( 필터->출력의 취득() ); 필터->세트 멀티플라이어( 2.5 ); 이미지 타입::인덱스 타입 씨를 뿌리다; 씨를 뿌리다[0] = 142; 씨를 뿌리다[1] = 97; 씨를 뿌리다[2] = 63; 필터->시드 추가( 씨를 뿌리다 ); 해라 { 작가.->갱신하다(); } 또 만나( 간지럽다::Exception Object(Exception Object) & 제외하다 ) { 표준::cerr << > 제외하다 << > 표준::끝; 돌아가다 EXIT_FAILURE; } } 추가 정보
자원.
ITK에 대한 자세한 내용은 여러 리소스를 참조하십시오.
- ITK 의 Web 페이지는, www.itk.org 에 있습니다.
- 사용자와 개발자는 모두 ITK 소프트웨어 가이드를 읽어야 합니다.
- ITK 예제 Wiki에서는 많은 컴파일 가능한 예를 볼 수 있습니다.
- 튜토리얼은 www.itk.org/ITK/help/tutorials.html에서 이용할 수 있습니다.
- 소프트웨어는 www.itk.org/ITK/resources/software.html 에서 다운로드할 수 있습니다.
- 개발자 또는 코드 기여에 관심이 있는 사용자는 소스 코드 배포에 있는 Insight/Documentation/InsightDeveloperStart.pdf 또는 InsightDeveloperStart.doc 문서를 참조해야 합니다.
- 개발자는 소스 배포에 있는 ITK 스타일 가이드 Insight/Documentation/Style.pdf도 참조해야 합니다.
적용들
ITK에 대해 알아보는 가장 좋은 방법은 ITK가 어떻게 사용되는지 확인하는 것입니다.ITK의 응용 프로그램을 찾을 수 있는 곳은 4곳입니다.
- ITK에 배포된 Insight/Example/Source Code 예제.소스 코드를 사용할 수 있습니다.게다가 코멘트가 풍부하고, ITK 소프트웨어 가이드와 조합해 동작합니다.
- 별도의 Insight Applications 체크 아웃.
- 응용 프로그램 웹 페이지.위의 #1에서 볼 수 있는 예에 대한 광범위한 설명과 이미지 및 참조입니다.
- ITK와 함께 배포되는 테스트 디렉토리는 단순하며 주로 코드 사용 방법에 대한 문서화되어 있지 않습니다.
2004년, ITK-SNAP(웹 사이트)는 SNAP에서 개발되어 ITK를 사용하는 무료 세그멘테이션 소프트웨어로 널리 보급되었습니다.또, 유저 인터페이스도 심플합니다.
데이터.
「 」를 참조해 주세요.
관련 도구
연락처
ITK 토론 포럼에 접속하여 커뮤니티의 문의나 지원을 받을 수 있습니다.
레퍼런스
- ^ "Release 5.2.0". 28 May 2021. Retrieved 21 June 2021.
- ^ "Insight Software Consortium / ITK - GitHub". 2019-12-17.
- ^ "Copyright and License".
- Yoo, TS; Ackerman, MJ; Lorensen, WE; et al. (2002). "Engineering and algorithm design for an image processing Api: a technical report on ITK—the Insight Toolkit". Stud Health Technol Inform. 85: 586–92. PMID 15458157.
- Yoo, TS; Metaxas, DN (Dec 2005). "Open science—combining open data and open source software: medical image analysis with the Insight Toolkit". Med Image Anal. 9 (6): 503–6. doi:10.1016/j.media.2005.04.008. PMID 16169766.
- Prior, FW; Erickson, BJ; Tarbox, L (Nov 2007). "Open source software projects of the caBIG In Vivo Imaging Workspace Software special interest group". J Digit Imaging. 20 (Suppl 1): 94–100. doi:10.1007/s10278-007-9061-4. PMC 2039820. PMID 17846835.
