[Paraview] Image filters & extent

Jérôme jerome.velut at gmail.com
Thu Oct 29 06:24:32 EDT 2009


Hi all,

I am fighting again against these extent problems.
see threads:
   http://www.paraview.org/pipermail/paraview/2009-January/010903.html
   http://www.paraview.org/pipermail/paraview/2009-April/011674.html (for
the last mail, indeed)
   http://www.paraview.org/pipermail/paraview/2009-March/011334.html

I have an input volume with extent (0,511,0,511,0,109). I wrote a filter
that reslices this volume orthogonally along a spline curve
(Straightened-CPR). Thus the output extent does not depend on input extent
at all. If I want to see the structures around the spline, I can use, say,
about 15 voxels in the output x and y dimensions. The output's z dimension
will depend on the number of points of the spline.

My first problem was related to the outline that shows a different bounding
box than the information panel. In my case, having more than 110 points in
the curve made my output volume extent clip at 110 on z extent! I managed to
solve it by implementing the RequestUpdateExtent function. Now, the output
extent can be different than the input with -almost- no problem.

Now that I have a reliable output extent, I wish to slice the volume with a
"Slice" representation. Problem is: each time I change slice, the filter
updates!

In debug mode, the pipeline execution shows these function calls when change
current slice:

(I edited the debug output  for a more friendly reading)
##########################################################################""

vtkStraightenedCurvedPlanarReformation (1EBFB850): RequestUpdateExtent


(vtkAlgorithm.h ) vtkStraightenedCurvedPlanarReformation (1EBFB850):

                              setting AbortExecute to 0

                              returning ProgressText of (null)


vtkStraightenedCurvedPlanarReformation (1EBFB850): RequestData

(vtkAlgorithm.h ) vtkStraightenedCurvedPlanarReformation (1EBFB850):

                              setting AbortExecute to 0

                              returning ProgressText of (null)

##########################################################################""


Here is my RequestUpdateExtent function:

########################################################################
int vtkStraightenedCurvedPlanarReformation::RequestUpdateExtent (
  vtkInformation * vtkNotUsed(request),
  vtkInformationVector** inputVector,
  vtkInformationVector *outputVector)
{
  vtkDebugMacro( <<"RequestUpdateExtent"<<endl);
  //! \bug RequestUpdateExtent set the filter to Modified each time it is
  //! called. One effect is to call RequestData when slicing through the
  //! output.

  // get the info objects
  vtkInformation* outInfo = outputVector->GetInformationObject(0);
  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);

  int outExtent[6], inExtent[6], uExtent[6]; // uExtent is no more used...

  outInfo->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), outExtent);
  outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(), uExtent);
  inInfo->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), inExtent);

  // clip the inExtent to the outExtent. Is it normal to do that???
  for( int i=0; i < 6; i+=2 )
  {
     if( inExtent[i] > outExtent[i] )
        inExtent[i] = outExtent[i];
     if( inExtent[i+1] < outExtent[i+1] )
        inExtent[i+1] = outExtent[i+1];
  }

  outInfo->Set(vtkStreamingDemandDrivenPipeline::UPDATE_EXTENT(), inExtent,
6);

   return( 1 );
}

####################################################################

I have very big difficulties to understand the 'extent' concept in VTK. Is
there a detailed chapter on that in VTK books?
Or do I have to parse the code, step-by-step?

Thanks for your help.
Best regards,

Jerome


2009/3/10 Jérôme <jerome.velut at gmail.com>

> Hi,
>
> I noticed such a problem for other filters. In fact, it seems that
> vtkImageReslice and inherited filters are not ParaView compliant. I was
> forced to write external executable to process my volumes (making isotropic
> an anisotropic DICOM volume), then I open it in Paraview.
>
> Best regards,
>
> Jerome
>
> 2009/3/10 Bryn Lloyd <blloyd at vision.ee.ethz.ch>
>
> Still no progress on this.
>>
>>
>> I have tried to integrate vtkImageConstantPad as a plugin. The displayed
>> outline of the image (in paraview) suggests that the extent of the enlarged
>> image is correct, but the information printed in the information tab shows
>> the same extent as the input, rather than the one I expect at the output of
>> vtkImageConstantPad.
>>
>> say the input is an 10x10x10 image. I set the output extent to be 12x12x12
>> in the vtkImageConstantPad. However, Paraview tells me the output still has
>> dimensions 10x10x10.
>>
>>
>> I have modified vtkImageConstantPad and tried different parent classes
>>  - vtkImageToImageFilter
>>  - vtkImageAlgorithm
>>  - vtkDataSetAlgorithm
>>  - vtkTrivialProducer
>>
>> ... hoping to break up the pipeline somehow, i.e. simply producing a new
>> image, which is displayed and can be used subsequently for other operations.
>>
>> Sofar with no success. I have written a test, which runs as a separate
>> program. The test proves to me that the filter DOES work as expected. But in
>> Paraview the extent is screwed-up for some reason.
>>
>>
>> I have seen similar reports by John Biddiscombe, from around 2005 and more
>> recent. Was there any solution to this?
>>
>>
>>
>> Thanks
>>
>>
>> Bryn
>>
>>
>>
>> _______________________________________________
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the ParaView Wiki at:
>> http://paraview.org/Wiki/ParaView
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.paraview.org/mailman/listinfo/paraview
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20091029/b246acb5/attachment-0001.htm>


More information about the ParaView mailing list