ITK Segmentation Methods

Slides:



Advertisements
Similar presentations
An Active contour Model without Edges
Advertisements

1 Copyright © 2013 Elsevier Inc. All rights reserved. Chapter 38.
Department of Computer Science and Engineering Defining and Computing Curve-skeletons with Medial Geodesic Function Tamal K. Dey and Jian Sun The Ohio.
NA-MIC National Alliance for Medical Image Computing ITK Workshop October 5-8, 2005 Software Design.
ITK Architecture Kitware Inc.. ITK Basics C++ Generic Programming Data Pipeline Multi-threading Streaming Exceptions Events / Observers Tcl, Python and.
Getting Started with ITK + VTK
ITK Registration Methods
ITK-Overview Insight Software Consortium. What is ITK Image Processing Segmentation Registration No Graphical User Interface (GUI) No Visualization.
NA-MIC National Alliance for Medical Image Computing ITK Workshop October 5-8, 2005 Writing a New ITK Filter.
ITK Deformable Registration
0 - 0.
ADDING INTEGERS 1. POS. + POS. = POS. 2. NEG. + NEG. = NEG. 3. POS. + NEG. OR NEG. + POS. SUBTRACT TAKE SIGN OF BIGGER ABSOLUTE VALUE.
Addition Facts
Environmental Remote Sensing GEOG 2021
Reconstruction from Voxels (GATE-540)
Past Tense Probe. Past Tense Probe Past Tense Probe – Practice 1.
Addition 1’s to 20.
Test B, 100 Subtraction Facts
Week 1.
Medical Image Analysis Dr. Mohammad Dawood Department of Computer Science University of Münster Germany.
An Efficient and Fast Active Contour Model for Salient Object Detection Authors: Farnaz Shariat, Riadh Ksantini, Boubakeur Boufama
3D Segmentation Using Level Set Methods. Heriot-Watt University, Edinburgh, Scotland Zsolt Husz Mokhled Al-TarawnehÍzzet Canarslan University of Newcastle.
Lecture 07 Segmentation Lecture 07 Segmentation Mata kuliah: T Computer Vision Tahun: 2010.
Automatic Tracing of Vocal Fold Motion in High Speed Laryngeal Video Erik Bieging.
National Alliance for Medical Image Computing ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.
1Ellen L. Walker Edges Humans easily understand “line drawings” as pictures.
Deformable Contours Dr. E. Ribeiro.
A 3D Approach for Computer-Aided Liver Lesion Detection Reed Tompkins DePaul Medix Program 2008 Mentor: Kenji Suzuki, Ph.D. Special Thanks to Edmund Ng.
Canny Edge Detector1 1)Smooth image with a Gaussian optimizes the trade-off between noise filtering and edge localization 2)Compute the Gradient magnitude.
MASKS © 2004 Invitation to 3D vision Lecture 3 Image Primitives andCorrespondence.
Spatial-based Enhancements Lecture 3 prepared by R. Lathrop 10/99 updated 10/03 ERDAS Field Guide 6th Ed. Ch 5: ;
Copyright © 2012 Elsevier Inc. All rights reserved.. Chapter 5 Edge Detection.
Image Processing and Analysis (ImagePandA) 10 – Shape and Motion Christoph Lampert / Chris Wojtan.
7.1. Mean Shift Segmentation Idea of mean shift:
G52IIP, School of Computer Science, University of Nottingham 1 Edge Detection and Image Segmentation.
CAP 5415 Computer Vision Fall 2004
Lecture 6 : Level Set Method
G52IVG, School of Computer Science, University of Nottingham 1 Edge Detection and Image Segmentation.
ITK Introduction and Overview Spring Topics  What Is ITK History Features  Software Engineering Methodology.
An Efficient Search Strategy for Block Motion Estimation Using Image Features Digital Video Processing 1 Term Project Feng Li Michael Su Xiaofeng Fan.
Introduction to Level Set Methods: Part II
Mathematical Morphology Mathematical morphology (matematická morfologie) –A special image analysis discipline based on morphological transformations of.
October 1, 2013Computer Vision Lecture 9: From Edges to Contours 1 Canny Edge Detector However, usually there will still be noise in the array E[i, j],
ITK Basic Filters Kitware Inc.. ITK Basic Filters Pixel-wise Arithmetic, Casting, Thresholding Mathematical morphology Noise reduction Gaussian, Anisotropic.
Read a DICOM File typedef unsigned charInputPixelType; const unsigned intInputDimension = 2; typedef itk::Image InputImageType; typedef itk::ImageFileReader.
Course 5 Edge Detection. Image Features: local, meaningful, detectable parts of an image. edge corner texture … Edges: Edges points, or simply edges,
Machine Vision Edge Detection Techniques ENT 273 Lecture 6 Hema C.R.
Edge Segmentation in Computer Images CSE350/ Sep 03.
ITK Statistical Classification Kitware Inc.. Statistical Classification Multiple Components Images K-Means Markov Random Fields.
MASKS © 2004 Invitation to 3D vision Lecture 3 Image Primitives andCorrespondence.
1 Edge Operators a kind of filtering that leads to useful features.
Introduction to ITK Segmentation The Insight Consortium presented by Josh Cates Scientific Computing and Imaging Institute University of Utah.
Level Set Segmentation ~ 9.37 Ki-Chang Kwak.
ITK. Ch 9 Segmentation Confidence Connected Isolated Connected Confidence Connected in Vector Images Jin-ju Yang.
ITK 9.3. Level Set Segmentation Shape Detection Segmentation
April 21, 2016Introduction to Artificial Intelligence Lecture 22: Computer Vision II 1 Canny Edge Detector The Canny edge detector is a good approximation.
Winter in Kraków photographed by Marcin Ryczek
EDGE DETECTION Dr. Amnach Khawne. Basic concept An edge in an image is defined as a position where a significant change in gray-level values occur. An.
Chapter 10 Image Segmentation
ITK Segmentation Methods
Introduction Computer vision is the analysis of digital images
Computer Vision Lecture 9: Edge Detection II
Introduction Computer vision is the analysis of digital images
Maximally Stable Extremal Regions
a kind of filtering that leads to useful features
MODULE II Semi-Automatic Segmentation
a kind of filtering that leads to useful features
Image Segmentation Image analysis: First step:
Maximally Stable Extremal Regions
Introduction Computer vision is the analysis of digital images
Presentation transcript:

ITK Segmentation Methods Kitware Inc.

Overview Region Growing Watersheds Level Sets ConfidenceConnected ConnectedThreshold IsolatedConnected Watersheds Level Sets FastMarching ShapeDetection GeodesicActiveContours ThresholdSegmentation CannySegmentationLevelSet

Region Growing Segmentation Methods

Confidence Connected Intensity Upper bound X Multiplier Standard Deviation Mean Lower bound Seed Point

Confidence Connected typedef itk::Image< unsigned char , 2 > ImageType; typedef itk::ConfidenceConnectedImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer filter = FilterType::New(); filter->SetMultiplier( 1.5 ); filter->SetNumberOfIterations( 5 ); filter->SetInitialNeighborhoodRadius ( 2 ); filter->SetReplaceValue( 255 ); FilterType::IndexType index; index[0] = 123; index[1] = 235; filter->SetSeed( index ); filter->SetInput( reader->GetOutput() ); writer->SetInput( filter->GetOutput() ); writer->Update()

Connected Threshold Intensity Upper bound Seed Lower bound Seed Point

Connected Threshold typedef itk::Image< unsigned char , 2 > ImageType; typedef itk::ConnectedThresholdImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer filter = FilterType::New(); filter->SetLower( 155 ); filter->SetUpper( 235 ); filter->SetReplaceValue( 255 ); FilterType::IndexType index; index[0] = 123; index[1] = 235; filter->SetSeed( index ); filter->SetInput( reader->GetOutput() ); writer->SetInput( filter->GetOutput() ); writer->Update()

Isolated Connected Intensity Seed 2 UpperValueLimit Isolated Value Lower 2 Seed Points

Isolated Connected typedef itk::Image< unsigned char , 2 > ImageType; typedef itk::IsolatedConnectedImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer filter = FilterType::New(); filter->SetLower( 155 ); filter->SetUpperValueLimit( 235 ); filter->SetReplaceValue( 255 ); filter->SetSeed1( index1 ); filter->SetSeed2( index2 ); filter->SetInput( reader->GetOutput() ); writer->SetInput( filter->GetOutput() ); writer->Update()

Exercise 12

Watershed Segmentation

Watershed Concept Intensity Water Level

Watershed Segmentation typedef itk::Image< float , 2 > ImageType; typedef itk::WatershedImageFilter< ImageType > WatershedFilterType; WatershedFilterType::Pointer filter = WatershedFilterType::New(); filter->SetThreshold( 0.001 ); filter->SetLevel( 0.15 ); filter->SetInput( reader->GetOutput() ); filter->Update()

Colour Encoding the Output typedef itk::ScalarToRGBPixelFunctor< unsigned long > FunctorType; typedef WatershedFilterType::OutputImageType LabeledImageType; typedef itk::UnaryFunctorImageFilter< ImageType, LabeledImageType, FunctorType > ColorFilterType; ColorFilterType::Pointer colorFilter = ColorFilterType::New(); colorFilter->SetInput( filter->GetOutput() ); writer->SetInput( colorFilter->GetOutput() ); writer->Update()

Creating Edges typedef itk::GradientMagnitudeRecursiveGaussianImageFilter< ImageType, ImageType > EdgeFilterType; EdgeFilterType::Pointer edgeFilter = EdgeFilterType::New(); edgeFilter->SetInput( reader->GetOutput() ); edgeFilter->SetSigma( 1.0 ); filter->SetInput( edgeFilter->GetOutput() ); writer->Update()

Exercise 13

Level Set Segmentation Methods

Level Set Concept F(x,y) < 0 F(x,y) > 0 Zero set: F(x,y)=0

Level Set Evolution PDE = Restricted Cellular Automata F(x,y,t)

Fast Marching Front propagation Δx = V . Δt Sigmoid Gradient Magnitude Speed Image Sigmoid

Fast Marching Δx Δx = V . Δt Speed Image Time-Crossing Map

Fast Marching typedef itk::Image< float , 2 > ImageType; typedef itk::FastMarchingImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer fastMarching = FilterType::New(); fastMarching->SetInput ( speedImage ); fastMarching->SetOutputSize( speedImage->GetBufferedRegion().GetSize() ); fastMarching->SetStoppingValue( 100.0 );

Fast Marching typedef FilterType::NodeContainer NodeContainer; typedef FilterType::NodeType NodeType; NodeContainer::Pointer seeds = NodeContainer::New(); seeds->Initialize(); NodeType seed; seed.SetValue( 0.0 ); seed.SetIndex( index ); seeds->InsertElement( 0, seed );

Fast Marching fastMarching->SetTrialPoints( seeds ); thresholder->SetInput( fastMarching->GetOutput() ); thresholder->SetLowerThreshold( 0.0 ); thresholder->SetUpperThreshold( timeThreshold ); thresholder->Update();

Exercise 14

Shape Detection Speed Curvature PDE Includes a curvature term Zero set, time = t+1 Zero set, time = t Speed Curvature PDE Includes a curvature term Prevents leaking

Shape Detection Input Image Gradient Magnitude Feature Image Sigmoid output LevelSet Input LevelSet Threshold Binary Mask Smooth Positive LevelSet Rescale Balanced [-0.5,0.5]

Shape Detection typedef itk::Image< float , 2 > ImageType; typedef itk::ShapeDetectionLevelSetImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer shapeDetection = FilterType::New(); shapeDetection->SetInput( inputLevelSet ); shapeDetection->SetFeatureImage( speedImage ); shapeDetection->SetPropagationScaling( 1.0 ); shapeDetection->SetCurvatureScaling( 0.05 );

Shape Detection shapeDetection->SetMaximumRMSError( 0.001 ); shapeDetection->SetMaximumIterations( 400 ); shapeDetection->Update(); std::cout << shapeDetection->GetRMSChange() << std::endl; std::cout << shapeDetection->GetElapsedIterations() << std::endl; thresholder->SetInput( shapeDetection->GetOutput() ); thresholder->SetLowerThreshold( -1e7 ); thresholder->SetUpperThreshold( 0.0 );

Exercise 15

Geodesic Active Contour Intensity Profile ZeroSet Displacement X axis Advection term added

Geodesic Active Contour Vector Field Computed Internally

Geodesic Active Contour typedef itk::Image< float , 2 > ImageType; typedef itk::GeodesicActiveContourLevelSetImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer geodesicActiveContour = FilterType::New(); geodesicActiveContour->SetInput( inputLevelSet ); geodesicActiveContour->SetFeatureImage( speedImage ); geodesicActiveContour->SetPropagationScaling( 1.0 ); geodesicActiveContour->SetCurvatureScaling( 0.05 ); geodesicActiveContour->SetAdvectionScaling( 8.0 );

Geodesic Active Contours geodesicActiveContour->SetMaximumRMSError( 0.001 ); geodesicActiveContour->SetMaximumIterations( 400 ); geodesicActiveContour->Update(); std::cout << geodesicActiveContour->GetRMSChange() << std::endl; std::cout << geodesicActiveContour->GetElapsedIterations() << std::endl; thresholder->SetInput( geodesicActiveContour ); thresholder->SetLowerThreshold( -1e7 ); thresholder->SetUpperThreshold( 0.0 );

Exercise 16

Advection term added controlled by a threshold Threshold Level Set Advection term added controlled by a threshold LevelSet equivalent of a connected components method inside a threshold but… with options for preventing leaks

Threshold Segmentation typedef itk::Image< float , 2 > ImageType; typedef itk::ThresholdSegmentationLevelSetImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer thresholdSegmentation = FilterType::New(); thresholdSegmentation->SetInput( inputLevelSet ); thresholdSegmentation->SetFeatureImage( inputImage ); thresholdSegmentation->SetPropagationScaling( 1.0 ); thresholdSegmentation->SetCurvatureScaling( 5.0 ); thresholdSegmentation->SetAdvectionScaling( 2.0 );

Threshold Segmentation thresholdSegmentation->SetMaximumRMSError( 0.001 ); thresholdSegmentation->SetMaximumIterations( 400 ); thresholdSegmentation->SetLowerThreshold( 210 ); thresholdSegmentation->SetUpperThreshold( 250 ); thresholdSegmentation->SetIsoSurface( 0.0 ); // zero set thresholdSegmentation->SetUseNegativeFeaturesOn(); thresholdSegmentation->Update();

Exercise 17

Advection term added controlled by edges Threshold Level Set Advection term added controlled by edges Canny edges attract the zero set

Canny Segmentation typedef itk::Image< float , 2 > ImageType; typedef itk::CannySegmentationLevelSetImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer cannySegmentation = FilterType::New(); cannySegmentation->SetInput( inputLevelSet ); cannySegmentation->SetFeatureImage( inputImage ); cannySegmentation->SetPropagationScaling( 0.0 ); cannySegmentation->SetCurvatureScaling( 1.0 ); cannySegmentation->SetAdvectionScaling( 2.0 ); // canny edges

Canny Segmentation cannySegmentation->SetMaximumRMSError( 0.01 ); cannySegmentation->SetMaximumIterations( 400 ); cannySegmentation->SetThreshold( 2.0 ); cannySegmentation->SetVariance( 1.0 ); cannySegmentation->SetIsoSurface( 127.0 ); // zero set cannySegmentation->SetUseNegativeFeaturesOn(); cannySegmentation->Update();

Exercise 18

Enjoy ITK !