lecture1-introduction to medical image computingbagci/teaching/mic17/lec1.pdf• imaging sciences is...

Post on 22-May-2020

3 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MEDICAL IMAGE COMPUTING (CAP 5937)- SPRING 2017

LECTURE 1: Introduction

Dr. Ulas BagciHEC 221, Center for Research in Computer Vision (CRCV), University of Central Florida (UCF), Orlando, FL 32814.bagci@ucf.edu or bagci@crcv.ucf.edu

1

• This is a special topics course, offered for the second time in UCF.

2

CAP5937: Medical Image Computing

Lorem Ipsum Dolor Sit Amet

• This is a special topics course, offered for the second time in UCF.

• Lectures: Mon/Wed, 10.30am-11.45am

3

CAP5937: Medical Image Computing

Lorem Ipsum Dolor Sit Amet

• This is a special topics course, offered for the second time in UCF.

• Lectures: Mon/Wed, 10.30am-11.45am

• Office hours: Mon/Wed, 1pm-2.30pm

4

CAP5937: Medical Image Computing

Lorem Ipsum Dolor Sit Amet

• This is a special topics course, offered for the second time in UCF.

• Lectures: Mon/Wed, 10.30am-11.45am

• Office hours: Mon/Wed, 1pm-2.30pm

• No textbook is required, materials will be provided.

• Avg. grade was A- last spring.

5

CAP5937: Medical Image Computing

Lorem Ipsum Dolor Sit Amet

6

Medical Image

Computing

Image Processing Computer

Vision

Machine Learning

Imaging Sciences

(Radiology, Biomedical)

Motivation• Imaging sciences is experiencing a tremendous

growth in the U.S. The NYT recently ranked biomedical jobs as the number one fastest growing career field in the nation and listed bio-medical imaging as the primary reason for the growth.

7

Motivation• Imaging sciences is experiencing a tremendous

growth in the U.S. The NYT recently ranked biomedical jobs as the number one fastest growing career field in the nation and listed bio-medical imaging as the primary reason for the growth.

• Biomedical imaging and its analysis are fundamental to (1) understanding, (2) visualizing, and (3) quantifying information.

8

Motivation• Imaging sciences is experiencing a tremendous

growth in the U.S. The NYT recently ranked biomedical jobs as the number one fastest growing career field in the nation and listed bio-medical imaging as the primary reason for the growth.

• Biomedical imaging and its analysis are fundamental to (1) understanding, (2) visualizing, and (3) quantifying information.

• This course will mostly focus on analysis of biomedical images, and imaging part will be briefly taught!

9

Syllabus• Basics of Radiological Image Modalities and their

clinical use (MRI, PET, CT, fMRI, DTI, …)• Introduction to Medical Image Computing and Toolkits• Image Filtering, Enhancement, Noise Reduction, and

Signal Processing• Medical Image Registration• Medical Image Segmentation• Medical Image Visualization• Machine Learning in Medical Imaging• Shape Modeling/Analysis of Medical Images

10

Syllabus• Grading:

– In-class Quiz (20%, approximately 20 quizzes, at the end of each lecture)

– 3 Programming Assignments (each 10%, total 30%)• ITK/VTK packages should be used• ITK and VTK provide necessary codes/libraries for medical image

processing and analysis. • C/C++ or Python can be used and call ITK/VTK functions• In-class collaboration is encouraged, but individual submission is

required.– 1 Individual Project (50%)

• Will be selected from a list of projects or you can come withh your own project

• A short presentation (15%), coding/method (25%), results (10%)

11

Optional Reading List• Image Processing, Analysis, and Machine Vision. M. Sonka, V.

Hlavac, R. Boyle. Nelson Engineering, 2014.• Level-set Methods, by J. A. Sethian, Cambridge University Press.• Visual Computing for Medicine: Theory, Algorithms, and

Applications. B. Preim, C. Botha. Morgan Kaufmann, 2013.• Medical Image Registration. J. Hajnal, D. Hill, D. Hawkes (eds).

CRC Press, 2001.• Pattern Recognition and Machine Learning. C. Bishop. Springer,

2007.• Insight into Images: Principles and Practice for Segmentation,

Registration and Image Analysis, Terry S. Yoo (Editor) (FREE)• Algorithms for Image Processing and Computer Vision, J. R. Parker• Medical Imaging Signals and Systems, by Jerry Prince & Jonathan

Links, Publisher: Prentice Hall

12

Conferences and Journals to Follow• The top-tier conferences (double blind, acceptance rates are below

25%, high quality technical articles):– MICCAI (medical image computing & computer assisted intervention)– IPMI (Information Processing in Medical Imaging)– Other conferences: IEEE ISBI, EMBC and SPIE Med Imaging– Clinical Conferences: RSNA (>65.000 attendances), ISMRM, SNM

• The top-tier technical journals:– IEEE TMI, TBME, PAMI, and TIP– Medical Image Analysis, CMIG, and NeuroImage

• The top-tier clinical journals relevant to MIC:– Radiology, Journal of Nuclear Medicine, AJR, Nature Methods, Nature

Medicine, PlosOne, …

13

Required skill set• Basic programming experience (any language is fine)• Linear Algebra/Matrix Algebra• Differential Equations• Basic Statistics

14

Biomedical Images• (Bio)medical images are different from other

pictures

15

Biomedical Images• (Bio)medical images are different from other

pictures– They depict distributions of various physical features

measured from the human body (or animal body).

16

Biomedical Images• (Bio)medical images are different from other

pictures– They depict distributions of various physical features

measured from the human body (or animal body).• Analysis of biomedical images is guided by very

specific expectations

17

Biomedical Images• (Bio)medical images are different from other pictures

– They depict distributions of various physical features measured from the human body (or animal).

• Analysis of biomedical images is guided by very specific expectations– Automatic detection of tumors, characterizing their types,– Measurement of normal/abnormal structures,– Visualization of anatomy, surgery guidance, therapy

planning, – Exploring relationship between clinical, genomic, and

imaging based markers

18

Free Software to use in this course• ImageJ (and/or FIJI)• ITK-Snap• SimpleITK• MITK• FreeSurfer• SLICER• OsiriX• An extensive list of software: www.idoimaging.com and

blue: will be frequently used in this course

19

Medical Image Formats• Dicom• Nifti• Analyze (img/hdr)• Raw data• …

20

DICOM (the mostly used)• Digital Imaging and Communications in Medicine standard• Since its first publication in 1993, DICOM has revolutionized

the practice of radiology, allowing the replacement of X-ray film with a fully digital workflow.

• It is the international standard for medical images and related information (ISO 12052)

• defines the formats for medical images that can be exchanged with the data and quality necessary for clinical use.

• It is implemented in almost every radiology, cardiology imaging, and radiotherapy device (X-ray, CT, MRI, ultrasound, etc.), and increasingly in devices in other medical domains such as ophthalmology and dentistry.

21

3D Slicer Software• A software platform for the analysis (including

registration and interactive segmentation) andvisualization (including volume rendering) ofmedical images and for research in image guidedtherapy.

• A free, open source software available on multipleoperating systems: Linux, MacOSX and Windows

• Extensible, with powerful plug-in capabilities foradding algorithms and applications.

22

Brief History of 3D Slicer• 1997: Slicer started

as a research project between the Surgical Planning Lab (Harvard) and the CSAIL (MIT)

• Open Source + Open Data + Open Community

23

•80 authorized developers contributing to the source code of Slicer

Slicer Volume Module

24

Slicer Welcome Module

25

Slicer Welcome Module

26

Loading A DICOM Volume

27

Loading A DICOM Volume

28

Loading A DICOM Volume

29

Loading A DICOM Volume

30

Interactive exploration

31

32

Interactive exploration

33

3D Slicer Sources• http://slicer.org/• http://www.slicer.org/slicerWiki/index.php/Docum

entation/UserTraining• https://vimeo.com/37671358

34

Libraries to be Used• ITK and VTK

– National Library of Medicine Insight Segmentation and Registration Toolkit (ITK).

– ITK is an open-source, cross-platform system that provides developers with an extensive suite of software tools for image analysis.

– C/C++, Python, Matlab, …

35

Goals of ITK– Supporting the Visible Human Project. – Establishing a foundation for future research. – Creating a repository of fundamental algorithms. – Developing a platform for advanced product

development. – Support commercial application of the technology. – Create conventions for future work. – Grow a self-sustaining community of software users and

developers.

36

History of ITK• ITK was initially conceived by the NLM(National

Library of Medicine).• An initiative for open source software tools to

analyze human dataset• Developed by group of both commercial and

academic organizations(kitware, GE research, Mathsoft, Upenn, UT, UNC

• Goal: provide a foundation to enable research in image processing and biomedical image computing, Providing catalog of algorithms

37

What is ITK?• Image Processing

• Segmentation

• Registration

• No Graphical User Interface (GUI)

• No Visualization

38

Coordinate System for Reading Files• Multiple coordinate frames

– Physical– Patient– Index

• ITK uses LPS (Left Posterior Superior) for DICOM

39

How to Integrate ITK in application

Credit: itk.org

Installation/Requirements

C++ Compiler

gcc 2.95 – 3.3Visual C++ 6.0Visual C++ 7.0Visual C++ 7.1

Intel 7.1Intel 8.0IRIX CC

Borland 5.5Mac – gcc

CMakewww.cmake.org

Credit: itk.org

Installation process• Google ITK , go to the download page, download

the zip file (or directly install using github or console functions in mac/linux)

• Google cmake, go to the download page, get the binaries and install the binaries.

Configuring ITK – MS-Windows

l Run CMake

l Select the SOURCE directory

l Select the BINARY directory

l Select your Compiler

Configuring ITK

Configuring ITKl Disable BUILD_EXAMPLES

l Disable BUILD_SHARED_LIBS

l Disable BUILD_TESTING

l Click “Configure” to configure

l Click “OK” to generate project files

Building ITKl Open ITK.sln in the Binary Directory

l Select ALL_BUILD project

l Build it

…It will take about 15 minutes …

Verify the BuiltLibraries will be found in

ITK_BINARY / bin / { Debug, Release }• The following libraries should be there:

– ITKCommon

– ITKBasicFilters

– ITKAlgorithms

– ITKNumerics

– ITKFEM

ITKIO

ITKStatistics

ITKMetaIO

itkpng

itkzlib

Use ITK from an external Project

Copy “HelloWorld.cxx”“CMakeLists.txt”

from the Examples/Installation

Directoryinto another

directory

RunCMake

• Select Source Dir• Select Binary Dir

Use ITK from an external Project

• accept the default in

CMAKE_BACKBARD_COMPATIBILITY

• leave empty EXECUTABLE_OUTPUT_PATH

• leave empty LIBRARY_OUTPUT_PATH

• Set ITK_DIR to the binary directory

where ITK was built

Build Sample Project• Open HelloWorld.sln generated by CMake

• Select ALL_BUILD project

• Build it

Run the example• Locate the file HelloWorld.exe

• Run it…

• It should produce the message:

ITK Hello World !

Starting your own project• Create a clean new directory

• Write a CMakeLists.txt file

• Write a simple .cxx file

• Configure with CMake

• Build

• Run

Writing CMakeLists.txtPROJECT( myProject )

FIND_PACKAGE ( ITK )IF ( ITK_FOUND )

INCLUDE( ${ITK_USE_FILE} )ENDIF( ITK_FOUND )

ADD_EXECUTABLE( myProject myProject.cxx )

TARGET_LINK_LIBRARIES ( myProject ITKCommon ITKIO)

Writing myProject.cxx

#include "itkImage.h"#include "itkImageFileReader.h"#include "itkGradientMagnitudeImageFilter.h"

int main( int argc, char **argv ) {typedef itk::Image<unsigned short,2> ImageType;typedef itk::ImageFileReader<ImageType> ReaderType;typedef itk::GradientMagnitudeImageFilter<

ImageType,ImageType> FilterType;

ReaderType::Pointer reader = ReaderType::New();FilterType::Pointer filter = FilterType::New();

reader->SetFileName( argv[1] );filter->SetInput( reader->GetOutput() );filter->Update();return 0;

}

Run CMake

How to find what you need?

• Follow the link Alphabetical List

• Follow the link Groups

• Post to the insight-users mailing list

http://www.itk.org/ItkSoftwareGuide.pdf

http://www.itk.org/Doxygen/html/index.html

VTK• The Visualization Toolkit (VTK) is an open-

source, freely available software system for 3D computer graphics, image processing, and visualization.

• Consists of a C++ class library and several interpreted interface layers including Tcl/Tk, Java, and Python

VTK• Download VTK from vtk.org• Configure VTK

– Run CMake– Select the SOURCE directory– Select the BINARY directory– Select your Compiler (same used for ITK)

Configuring VTK

Disable• BUILD_EXAMPLES• BUILD_SHARED

Leave unchanged• CMAKE_BACKWARD_COMPATIBILITY• VTK_DATA_ROOT

Enable• VTK_USE_HYBRID• VTK_USE_RENDERING• VTK_USE_PARALLEL• VTK_USE_PATENTED

Disable• VTK_WRAP_JAVA• VTK_WRAP_PYTHON• VTK_WRAP_TCLEnable (Advanced)• VTK_USE_ANSI_STDLIB

Build VTK• Open VTK.dswin the Binary Directory• Select ALL_BUILD project• Build it …It may take about 90 minutes …

Verify the BuildLibraries will be found in

VTK_BINARY / bin/ { Debug, Release}

Verify the BuildThe following libraries

should be there:• vtkCommon• vtkFiltering• vtkImaging• vtkGraphics• vtkHybrid• vtkParallel• vtkPatented

• Vtkexpat• Vtkfreetype• Vtkftgl• Vtkjpeg• Vtkpng• Vtktiff• vtkzlib

Starting your own projectwith ITK + VTK

• Create a clean new directory• Write a CmakeLists.txtfile• Write a simple .cxxfile• Configure with CMake• Build• Run

Writing CMakeLists.txt

PROJECT(myProject)

FIND_PACKAGE ( ITK)IF ( ITK_FOUND)INCLUDE( ${USE_ITK_FILE} )ENDIF( ITK_FOUND)

FIND_PACKAGE ( VTK)IF ( VTK_FOUND)INCLUDE( ${USE_VTK_FILE} )ENDIF( VTK_FOUND)

(continue...)

Writing CMakeLists.txt

INCLUDE_DIRECTORIES(${myProject_SOURCE_DIR})

ADD_EXECUTABLE( myProject myProject.cxx)

TARGET_LINK_LIBRARIES ( myProjectITKBasicFiltersITKCommonITKIOvtkRenderingvtkGraphicsvtkHybridvtkImagingvtkIOvtkFilteringvtkCommon)

Writing myProject.cxx

Writing myProject.cxx#include "itkImage.h"#include "itkImageFileReader.h"#include "itkImageToVTKImageFilter.h"#include "vtkImageViewer.h"#include "vtkRenderWindowInteractor.h"intmain( intargc, char **argv) {typedef itk::Image<unsigned short,2> ImageType;typedef itk::ImageFileReader<ImageType> ReaderType;typedef itk::ImageToVTKImageFilter<ImageType> connectorType;ReaderType::Pointer reader= ReaderType::New();ConnectorType::Pointer connector= ConnectorType::New();

Writing myProject.cxx

reader->SetFileName( argv[1]);connector->SetInput( reader->GetOutput() );vtkImageViewer* viewer= vtkImageViewer::New();vtkRenderWindowInteractor* renderWindowInteractor= vtkRenderWindowInteractor::New();viewer->SetupInteractor( renderWindowInteractor);viewer->SetInput( connector->GetOutput() );viewer->Render();viewer->SetColorWindow( 255);viewer->SetColorLevel( 128);renderWindowInteractor->Start();return 0;}

SimpleITK• New Wrapper for the insight segmentation &

registration toolkit• Goal :to help rapid prototyping and expand the user

based of ITK by exposing the algorithms to new users

• Simplify the algorithms so they don’t depend on types of images.

• Binary built in distributions• Supports 2D & 3D image , multi component images• Easy importing & exporting • data through Numpy

• QUESTIONS?

77

Quiz!(1 pt)

78

top related