[Insight-users] Extract Image Filter

Luis Ibanez luis.ibanez@kitware.com
Wed, 05 Feb 2003 10:22:09 -0500


Hi Jim,

Something to keep in mind here is that the viewer is not pulling
data through the pipeline. It does not call Update() on the input.

Most of the demo FLTK programs have some sort of Button on the GUI
that invoke Update() as a callback and then refresh the viewer.

So, in this case, nobody is defining how large the requested region
should be. My guess is that it should be taking by default a
RequestedRegion equal to the LargestPossibleRegion.


   Luis


--------------------------------------------------------------------

Miller, James V (Research) wrote:
> A viewer should only show the RequestedRegion. The RequestedRegion
> is the only area that an algorithm HAS to provide valid pixel values
> for.  In other words, an algorithm may not set all the pixels in 
> the BufferedRegion. (This behavior is not recommended but not enforced
> either).
> 
> A viewer should never try to show the LargestPossibleRegion (unless
> the LargestPossibleRegion happens to be the same as the RequestedRegion).
> 
> Now, what should be happening is that the viewer should be "requesting"
> that the pipeline provide a particular region.  The viewer should be
> setting the RequestedRegion on the last node in the pipeline.  The viewer
> should then check whether the BufferedRegion is the same size as the 
> RequestedRegion.  If they match, then the viewer knows the data is 
> contiguous in memory and viewing should be straightforward.  If they
> do not match, then the viewer either has to be able to handle the 
> fact that it is supposed to display a subregion of the buffered region
> or the viewer needs to "copy" the RequestedRegion to a contiguous block
> of memory.
> 
> The other option is for the viewer to set the RequestedRegion to be
> the LargestPossibleRegion.  This is a quick fix but not a recommended
> solution.
> 
> 
> 
> 
> 
> 
> 
>>-----Original Message-----
>>From: Stephen R. Aylward [mailto:aylward@unc.edu]
>>Sent: Tuesday, February 04, 2003 3:49 PM
>>To: Luis Ibanez
>>Cc: Miller, James V (Research); 'Puja Malik'; itk newsgroup
>>Subject: Re: [Insight-users] Extract Image Filter
>>
>>
>>The difficult thing is that viewers need an entire slice per view (at 
>>least).   I don't think any viewer will work if it is only passed a 
>>Requested or Buffered region.   FltkImageViewer actually has 
>>a built-in 
>>volume renderer, hence it does a GetLargestPossibleRegion.
>>
>>We could try to determine which data is currently being 
>>viewed, and then 
>>pass that back as the requested region - in effect, the 
>>viewer would end 
>>up driving the pipeline - calculations are made based on 
>>which slice the 
>>user is currently viewing.
>>
>>There are commercial viz systems for medicine that work that 
>>way: slice 
>>based.
>>
>>I could try to check something in really fast on this...just 
>>kidding... 
>>  Perhaps we can talk about it at the meeting on Thursday.
>>
>>Stephen
>>
>>Luis Ibanez wrote:
>>
>>
>>>Jim,
>>>
>>>Well, may this is the problem....
>>>
>>>fltkImageViewer uses internally the GLSliceViewer
>>>which in the SetInputImage() method it asks for
>>>
>>>      GetLargestPossibleRegion()
>>>
>>>Should be change it for "GetRequestedRegion()"
>>>or "GetBufferedRegion()" ?
>>>
>>>
>>>Luis
>>>
>>>
>>>
>>>--------------------------------------------
>>>
>>>
>>>Miller, James V (Research) wrote:
>>>
>>>
>>>>Luis,
>>>>
>>>> 
>>>>
>>>>Does this mean there is an issue with the FLTK image 
>>>>
>>viewer?  Is it 
>>
>>>>triggering off the wrong Region?
>>>>
>>>> 
>>>>
>>>>Jim
>>>>
>>>>    -----Original Message-----
>>>>    *From:* Puja Malik [mailto:puja.malik@MEMcenter.unibe.ch]
>>>>    *Sent:* Tuesday, February 04, 2003 11:27 AM
>>>>    *To:* itk newsgroup
>>>>    *Subject:* [Insight-users] Extract Image Filter
>>>>
>>>>    Hi Luis,
>>>>
>>>>    I've managed to fix my problem in the 
>>>>
>>ExtractImageFilter.  I do have
>>
>>>>    one concern though.  I cannot directly use the image 
>>>>
>>object from the
>>
>>>>    output of the filter, and view it in the fltk image 
>>>>
>>filter.  If I do
>>
>>>>    this, the images intensity range is altered, and the 
>>>>
>>first slice is
>>
>>>>    distorted.  I must first write the output of the filter ( image
>>>>    object ) to a file, read it back into a new image 
>>>>
>>object and then
>>
>>>>    view it.  This way, I see a correctly extracted image. 
>>>>
>> This is very
>>
>>>>    strange.  It would be convenient if the output of the 
>>>>
>>filter could
>>
>>>>    be used directly.  Please see my code below, including 
>>>>
>>the extra
>>
>>>>    steps I needed to perform to get the desired results.
>>>>
>>>>    void ExtractImageRegion(ImageType::Pointer imIN, 
>>>>
>>ImageType::SizeType
>>
>>>>    regSize,
>>>>                                                       
>>>>ImageType::IndexType
>>>>    regIndex)
>>>>    {
>>>>
>>>>     typedef itk::ExtractImageFilter< ImageType, ImageType 
>>>>
>>>FilterType;
>>>
>>>>     FilterType::Pointer filter = FilterType::New();
>>>>     ImageType::Pointer imOUT;
>>>>
>>>>     ImageType::RegionType region;
>>>>     region.SetSize(regSize);
>>>>     region.SetIndex(regIndex);
>>>>
>>>>     filter->SetExtractionRegion(region);
>>>>     filter->SetInput(imIN);
>>>>     filter->Update();
>>>>         // View(filter->GetOutput(), "region");  <-- doing this 
>>>>directly
>>>>    shows a distorted image
>>>>
>>>>    //the following is the extra steps needed to view a 
>>>>
>>correct image
>>
>>>>    //View, Read, WriteMetaFile are my own functions 
>>>>
>>written using itk
>>
>>>>    classes.
>>>>        imOUT = filter->GetOutput();
>>>>        imOUT->DisconnectPipeline();
>>>>             ImageType::Pointer im;
>>>>        
>>>>
>>WriteMetaFile("/home/encephalon/puja/testRegion.mhd", imOUT);
>>
>>>>         im=Read("/home/encephalon/puja/testRegion.mhd");
>>>>         View(im, "region");
>>>>
>>>>    }
>>>>
>>>>    Thanks for your help,
>>>>    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
>>>>---------------------------------------
>>>>
>>>>     
>>>>
>>>
>>>
>>>
>>>
>>>
>>>_______________________________________________
>>>Insight-users mailing list
>>>Insight-users@public.kitware.com
>>>http://public.kitware.com/mailman/listinfo/insight-users
>>>
>>
>>
> _______________________________________________
> Insight-users mailing list
> Insight-users@public.kitware.com
> http://public.kitware.com/mailman/listinfo/insight-users
> 
>