[vtk-developers] vtkProcrustesAlignmentFilter

Tim Hutton T.Hutton at eastman.ucl.ac.uk
Tue Jan 22 13:13:45 EST 2002


Hi David, developers,

I'm having a go at implementing this filter the way David suggested, for 
now. I'm having trouble getting the filter to update itself at the correct 
time without being prompted - I find VTK's pipeline mechanism very 
complicated (though I'm sure it's wonderful).

Here is one part of my current code:

vtkPointSet* vtkProcrustesAlignmentFilter::GetOutput(int idx)
{
   if(!this->Outputs)
       Execute();
   // (this isn't right, is it?)

   // check that the index is within range
   if(idx<0 || idx>=this->_nInputs)
   {
       vtkErrorMacro(<<"GetOutput request out of bounds!");
       return NULL;
   }

   return this->Outputs[idx];
}

Is there something obvious I should be doing to get Execute to be called by 
itself?

Thanks,

Tim.

At 13:59 07/01/2002 -0500, you wrote:
>Hi Tim,
>
>A general rigid-body alignment class would be a good thing.
>It would be difficult to base it on transforms, because there
>is one transform per data set.
>
>Also there is the issue that generating a transform as part
>of a VTK pipeline can be a pain.  This could be fixed if
>vtkAbstractTransform became a subclass of vtkDataObject so that
>a transform can have a 'source'.  In this scenario, you could
>build your class as you have described it but there would
>be a 'GetTransformCollection' method to get all the transforms.
>
>Because the 'vtkDataSetCollectionSource' doesn't yet exist,
>you might want to just use the usual 'SetInput(i,inputI)'
>and 'GetOutput(i)' methods (and perhaps later add a
>GetTransform(i) method).  The inheritance tree would then
>be
>
>vtkSource
>  |
>vtkProcrustesAlignmentFilter
>
>and could later be expanded to
>
>vtkSource
>  |
>vtkMultiplePointSetToMultiplePointSetFilter
>  |
>vtkProcrustesAlignmentFilter
>
>This matches a little better with the existing VTK filters.
>Also, note that a 'Collection' is not a vtkDataObject so having a
>method with the signature
>
>  vtkDataSetCollection *GetOutput();
>
>just isn't right IMHO while
>
>  vtkPointSet *GetOutput(int i);
>
>looks quite friendly.
>
>  - David
>
>
>On Mon, 7 Jan 2002, Tim Hutton wrote:
>
> > Hello developers,
> >
> > There are a couple of us that are keen to provide an implementation of the
> > Procrustes algorithm for aligning a set of objects together in a least
> > squares sense. Its functionality is somewhat similar to
> > vtkLandmarkTransform except that it would take a collection of datasets
> > instead of two. This would be useful for building models from collections
> > of objects and is a core part of many other algorithms.
> >
> > I (we) have two questions:
> >
> > 1) Would VTK benefit by having such a class? Perhaps Procrustes is not a
> > pure visualization technique but then neither is
> > vtkThinPlateSplineTransform which is used by lots of people.
> >
> > 2) How would such a class be best implemented? I have envisaged an
> > inheritance tree like this:
> >
> > vtkSource
> > |
> > vtkDataSetCollectionSource
> > |
> > vtkDataSetCollectionToDataSetCollectionFilter
> > |
> > vtkProcrustesAlignmentFilter
> >
> > Is this sensible? Maybe it should be based on transforms instead?
> >
> > Any comments welcome. Thankyou!
> >
> > Tim.
> > ---------------------------------------------------------------------------
> > Tim Hutton,                        http://www.eastman.ucl.ac.uk/~dmi/MINORI
> > Research Fellow & PhD student,                   T.Hutton at eastman.ucl.ac.uk
> > MINORI Project, Biomedical Informatics Unit,     Tel: [+44] (0)20 7915 2344
> > Eastman Dental Institute, UCL,                   Fax: [+44] (0)20 7915 2303
> > 256 Gray's Inn Road, London WC1X 8LD, UK      Mobile: [+44] (0)7748 678 832
> > ---------------------------------------------------------------------------
> > This email represents the views of the sender alone and must not be
> > construed as representing the views of the Eastman Dental Institute. It may
> > contain confidential information and may be protected by law as a legally
> > privileged document and copyright work. Its content should not be disclosed
> > and it should not be given or copied to anyone other than the person(s)
> > named or referenced above. If you have received this email in error, please
> > contact the sender.
> >
> > _______________________________________________
> > vtk-developers mailing list
> > vtk-developers at public.kitware.com
> > http://public.kitware.com/mailman/listinfo/vtk-developers
> >
>
>_______________________________________________
>vtk-developers mailing list
>vtk-developers at public.kitware.com
>http://public.kitware.com/mailman/listinfo/vtk-developers




More information about the vtk-developers mailing list