[Insight-users] ExtractImageFilter

Luis Ibanez luis.ibanez@kitware.com
Fri, 31 Jan 2003 11:12:17 -0500


Hi Puja,

Thanks for letting us know of the details,

I found a bit strange the process you are
doing with GraftOutput() and then calling
Update() both in the filter and the image.

It looks like what you want here is just
to disconect the output image from the
pipeline so it is not destroyed when your
filter goes out of scope.

Probably Jim, can give us a better advice
on how to do this correctly.

----

The FLTK viewer may not be the most accurate
method for finding the intensity range.
However, we should not find big changes
on the image range.

The arguments for this example are:

   xindex yindex  xsize ysize

(xindex,yindex) indicate the position of
the first pixel that will be included in
the region.

(xsize,ysize) are the number of pixels
along each dimension of the region.
(it is the total number of pixels, not
a radius.)

A question:
    Apart from the intensity
    range changes, is the extracted image
    looking ok ?



Thanks



     Luis



------

Puja Malik wrote:
>  
> 
>     Hi Luis,
> 
>     I am processing an MR image of meta format.  I've looked at the
>     example in the Software Guide, and adapted the code.  To find the
>     intensity range, I use the values given in the FLTK viewer, in the
>     bottom left hand corner.
> 
>     Just for clarification:  The region size {x, y, z} would have x, y
>     and z being the lengths of the sides of the region right?  Or is
>     this size computed like a radius?  And the index is the corner from
>     where the specified region would start from right?
> 
>     Here is my code, perhaps there is something that I am overlooking. 
>     My View function displays the image in the FLTK viewer.
> 
>     void ExtractImageRegion2(ImageType::Pointer imIN,
>     ImageType::SizeType regSize,
>            ImageType::IndexType regIndex)
>     {
> 
>      typedef itk::ExtractImageFilter< ImageType, ImageType > FilterType;
>       FilterType::Pointer filter = FilterType::New();
> 
>      ImageType::Pointer imOUT = ImageType::New();
> 
>      ImageType::RegionType region;
>      region.SetSize(regSize);
>      region.SetIndex(regIndex);
> 
>      filter->SetExtractionRegion(region);
>      filter->SetInput(imIN);
>      filter->GraftOutput(imOUT);
> 
>      imOUT = filter->GetOutput();
> 
>      try
>         {
>         filter->Update();
>         }
>       catch( itk::ExceptionObject & err )
>         {
>         std::cout << "ExceptionObject caught !" << std::endl;
>         std::cout << err << std::endl;
> 
>         }
> 
>         try
>         {
>         imOUT->Update();
>         }
>        catch( itk::ExceptionObject & err )
>         {
>         std::cout << "ExceptionObject caught !" << std::endl;
>         std::cout << err << std::endl;
> 
>         }
>      
> 
>      View(imOUT, "this is the region");
>     }
>      
> 
>     Thanks for your help!
>     Puja
>      
> 
>     Luis Ibanez wrote:
> 
>         Hi Puja,
> 
>         The ExtractImageFilter shouldn't be changing
>         the intensity values of the extracted pixels.
>         It is supposed to simply copy their values
>         into a smaller image.
> 
>         What kind of image are you processing ?
> 
>         What method are you using for computing
>         the intensity range ?
> 
>         (e.g. you could use the MinimumMaximumImageCalculator.)
> 
>         BTW an example on the use of the ExtractImageFilter
>         is available under:
> 
>         Insight/Examples/IO/ImageReadExtractWrite.cxx
> 
>         and is described in the SoftwareGuide on the
>         section:
> 
>               "Reading and Writing Images"
> 
>         You can experiment with it by passing 2D images
>         and providing the index and size in the command
>         line. It reads and writes PNG, DICOM, VTK, and
>         MetaImage formats.
> 
>         Please let us know some more details of what
>         you are doing.
> 
>            Thanks
> 
>               Luis
> 
>         ----------------------------------
>         Puja Malik wrote:
> 
>          > Hello,
>          > I'm having trouble using the itk ExtractImageFilter.
>          >
>          > In my implementation, I use an image of size {512,512,30}. 
>         The interger
>          > range in this image is from 0 to 272.  When I extract a
>         region size of
>          > the same size as the image, I get back the correct image. 
>         However, if I
>          > set my index as {0,0,0} and extract a region size of {511,
>         511, 30},
>          > then I get the correct image back, however the interger range
>         is now
>          > from 0 to 4161 and the image appears much dimmer.  It seems
>         that the
>          > smaller I make the region to be extracted, the larger the
>         resulting
>          > image's interger range is.
>          >
>          > Perhaps I'm not understanding the functionality of the
>          > ExtractImageFilter properly.  Does anyone have any idea how I
>         could fix
>          > this?
>          >
>          > Thanks,
>          > Puja
>          >
>          >
>          > --
>          > ---------------------------------------
>          > Puja Malik
>          > Surgical Instruments Group
>          > MEM Research Center for Orthopaedic Surgery
>          > Institute for Surgical Technology and Biomechanics
>          > University of Bern
>          > Murtenstrasse 35, P.O. Box 8354
>          > 3010 Bern, Switzerland
>          > Phone: +41-31-632-8730
>          > Fax: +41-31-632-4951
>          > Email: Puja.Malik@MEMcenter.unibe.ch
>          > http://www.MEMcenter.unibe.ch
>          > ---------------------------------------
>          >
>          >
> 
> -- 
> ---------------------------------------
> Puja Malik
> Surgical Instruments Group
> MEM Research Center for Orthopaedic Surgery
> Institute for Surgical Technology and Biomechanics 
> University of Bern
> Murtenstrasse 35, P.O. Box 8354
> 3010 Bern, Switzerland
> Phone: +41-31-632-8730
> Fax: +41-31-632-4951
> Email: Puja.Malik@MEMcenter.unibe.ch
> http://www.MEMcenter.unibe.ch
>  <http://www.MEMcenter.unibe.ch>---------------------------------------
> 
>      
> 
> -- 
> ---------------------------------------
> Puja Malik
> Surgical Instruments Group
> MEM Research Center for Orthopaedic Surgery
> Institute for Surgical Technology and Biomechanics 
> University of Bern
> Murtenstrasse 35, P.O. Box 8354
> 3010 Bern, Switzerland
> Phone: +41-31-632-8730
> Fax: +41-31-632-4951
> Email: Puja.Malik@MEMcenter.unibe.ch
> http://www.MEMcenter.unibe.ch
> ---------------------------------------
> 
>