OsiriX Segmentation Plugin
OsiriX Segmentation Plugin
Brian Jensen
Introduction
OsiriX Background Information
Project Goals
Segmentation Methods
Plugin Implementation
Conclusion
• Seed Point
• Search Region
• Confidence connected uses dynamic thresholding for including voxels into the
region
– Thresholds are set to a confidence interval around the average of the current region
– where m is the average in the region, σ is the standard
deviation, and f a constant factor specified by the user
• Algorithm starts with an initial radius size that is used to calculate σ and m for
the thresholds
• Once the region growing is completed, σ and m are recalculated with the
values from the new region and the process is repeated
• Algorithm terminates once the user specified number of iterations have run
Iteration 1
σ = 3.4
• Seed Point
m = 21.1
• Initial Radius
Interval:
[16, 26]
• Seed Point
• Segmented
Region
Second Example with 2 iterations, initial radius of 1, and a constant factor of 2.5
Iteration 1
σ = 8.5
• Seed Point
m = 21.1
• Initial Radius
Interval:
[13, 30]
Iteration 2
σ = 12.5
• Seed Point
m = 19.2
• Segmentation
Interval: result from
[6.7, 31.7] previous
iteration
• Seed Point
• Segmented
Region
• Neighborhood
connected
thresholding
result
• Neighborhood
connected
thresholding
result
• Seed Point
• Segmented
Region
• Several prerequisites
– Current copy of the OsiriX source code
– ITK source code version 3.12 or 3.14:
• Refactor ITK namespace before compiling using refactor script
– Avoid symbol collisions between OsiriX’s and the plugin’s ITK version
• Create new plugin project with the OsiriX plugin generator script
• Set symbolic links to the OsiriX source code and plugin’s ITK libraries
• Configure search paths in plugin’s Xcode project
• Add post build script that links current executable target to the OsiriX plugin
directory
• Add OsiriX to executables list
• Build and go!
• Always use unique names for classes and other plugin resources!
• Use Interface Builder for creating the user interface
– Bind non volatile elements to the shared user defaults controller
• Extract image volume from current viewer
– (float*) [ViewerController volumePtr]
• Create ITK Image object using ImportImageFilter
• Catch mouse click events
– NSNotificationCenter nc = [NSNotificationCenter defaultCenter]; [nc addObserver: self
selector: @selector(mouseViewerDown:)
name: @"mouseDown"
object: nil];
• Convert coordinates between registered and main viewer
– convertedPoint = [[registeredViewer imageView] ConvertFromGL2GL:myPoint
toView:[mainViewer imageView]];
1. Luis Ibanez, Will Schroeder, Lydia Ng, Josh Cates, and Insight Consortium.
The ITK Software Guide Second Edition. Kitware Inc, November 2005.
2. Irwin Sobel. An isotropic 3x3x3 gradient volume gradient operator. August
1996