SimpleITK/Advisory Review Board: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
Line 72: | Line 72: | ||
* Resample the moving image using the computed transform | * Resample the moving image using the computed transform | ||
* Write the resampled image out | * Write the resampled image out | ||
=== Procedural === | |||
<pre> | |||
// Open the fixed and moving images | |||
itk::simple::ImageFileReader reader; | |||
itk::simple::Image::Pointer fixedImage = reader.execute( "path/to/fixed.jpg" ); | |||
itk::simple::Image::Pointer movingImage = reader.execute( "path/to/moving.jpg" ); | |||
// Register the moving image to the fixed image | |||
itk::simple::AffineRegistrator registrator; | |||
itk::simple::AffineTransform transform; | |||
transform = registrator.execute( fixedImage, movingImage ); | |||
// Resample the moving image | |||
itk::simple::Resampler resampler; | |||
movingImage = resampler.execute( movingImage, transform ); | |||
// Write out the resampled image | |||
itk::simple::ImageFileWriter writer; | |||
writer.ececute( movingImage, "path/to/output.png" ); | |||
</pre> | |||
== Level Set == | == Level Set == |
Revision as of 19:49, 2 September 2010
- Harvey Cline, Kitware Inc.
- Raghu Machiraju, The State University of Ohio
- John Galeotti, CMU
- Hans Johnson, University of Iowa
- Fabrice de Chaumont, Pasteur Institute
- New students in the UNC CISMM project (taylorr@cs.unc.edu)
- Jesus Caban, NLM-NIH
ARB Prototype Code
Gaussian Blur
- Open an image
- Filter the image with a Gaussian blur using sigma = 2
- Write the image back out
Option 1 - Fully procedural
// Read the image itk::simple::ImageFileReader reader; itk::simple::Image::Pointer im = reader.execute( "sample/path/to/image.jpg" ); // Apply Gaussian with sigma = 2 itk::simple::Gaussian filter; im = filter.execute( im, 2 ); // Write out the image itk::simple::ImageFileWriter writer; writer.execute( im, "sample/path/to/output.png" );
Option 2 - Procedural with parameter setting
// Read the image itk::simple::ImageFileReader reader; reader.SetFilename( "sample/path/to/image.jpg" ); itk::simple::Image::Pointer im = reader.execute(); // Apply Gaussian with sigma = 2 itk::simple::Gaussian filter; filter.SetSigma( 2 ); im = filter.execute( im ); // Write out the image itk::simple::ImageFileWriter writer; writer.SetFilename( "sample/path/to/output.png" ); writer.execute( im );
Option 3 - Pipelined
// Read the image itk::simple::ImageFileReader reader; reader.SetFilename( "sample/path/to/image.jpg" ); // Apply Gaussian with sigma = 2 itk::simple::Gaussian filter; filter.SetSigma( 2 ); filter.SetInput( reader.getOutput() ); // Write out the image itk::simple::ImageFileWriter writer; writer.SetFilename( "sample/path/to/output.png" ); writer.SetInput( filter->GetOutput() ); // Update the pipieline writer.Update();
Image Registration
- Open two images (one fixed, one moving)
- Register the moving image to the fixed image using affine registration
- Resample the moving image using the computed transform
- Write the resampled image out
Procedural
// Open the fixed and moving images itk::simple::ImageFileReader reader; itk::simple::Image::Pointer fixedImage = reader.execute( "path/to/fixed.jpg" ); itk::simple::Image::Pointer movingImage = reader.execute( "path/to/moving.jpg" ); // Register the moving image to the fixed image itk::simple::AffineRegistrator registrator; itk::simple::AffineTransform transform; transform = registrator.execute( fixedImage, movingImage ); // Resample the moving image itk::simple::Resampler resampler; movingImage = resampler.execute( movingImage, transform ); // Write out the resampled image itk::simple::ImageFileWriter writer; writer.ececute( movingImage, "path/to/output.png" );