[Insight-developers] Image::TransformPhysicalPointToIndex
Miller, James V (CRD)
millerjv@crd.ge.com
Thu, 28 Feb 2002 08:18:15 -0500
I think GetPhysicalToIndexTransform() should be a const method.
There is no reason from the name of the method to expect it to
modify an image.
-----Original Message-----
From: Lydia Ng [mailto:lng@insightful.com]
Sent: Wednesday, February 27, 2002 8:39 PM
To: Wilson Chang; Miller, James V (CRD);
insight-developers@public.kitware.com
Subject: RE: [Insight-developers] Image::TransformPhysicalPointToIndex
I am hearing 1 Yes, 1 No and 1 Maybe.
I am going to leave itk::Image alone for the time being.
Perhaps we can discuss it on Friday's tcon.
-----
However, I still need a rounding version for my MI metric.
My initial thought was to get the PhysicalToIndexTransform
and do the transform and rounding inside my metric: eg
typename MovingImageType::TransformPointer imageTransform =
m_MovingImage->GetPhysicalToIndexTransform();
// then do transform + rounding
However I can't get this to compile because m_MovingImage
is a ConstPointer and GetPhysicalToIndexTransform() is not const.
But GetPhysicalToIndexTransform() can't be made const because
it checks if there is a valid image if not it will make a new
trasform. Note that this also mean that GetPhysicalToIndexTransform
can be used in a multi-threaded situation.
Do people agree that GetPhysicalToIndexTransform() should be made
const and be thread-safe?
If so, I prospose that:
[1] we make GetPhysicalToIndexTransform() const and
return whatever m_PhysicalToIndexTransform is without error checking.
[2] make a default affine transform in the constructor Image()
Comments?
- Lydia
> -----Original Message-----
> From: Wilson Chang [mailto:wmcst6+@pitt.edu]
> Sent: Wednesday, February 27, 2002 2:21 PM
> To: Miller, James V (CRD); Lydia Ng;
> insight-developers@public.kitware.com
> Subject: Re: [Insight-developers] Image::TransformPhysicalPointToIndex
>
>
> I just checked and there already is code that does the bounds
> checking. It
> seems likely that many coordinates might land outside of the
> dataspace even
> with truncation, and that is why the bounds checking is still
> in place.
> Rounding might introduce a few, but probably insignificant, amoutn of
> additional pixels landing out of bounds. I think the
> benefits of nearest
> neighbor might outweight the few additional pixels landing
> out of bounds.
> Would there be a performance hit with going to rounding?
> That would be my
> only concern.
>
> wilson
>
>
> ----- Original Message -----
> From: "Miller, James V (CRD)" <millerjv@crd.ge.com>
> To: "'Lydia Ng'" <lng@insightful.com>;
> <insight-developers@public.kitware.com>
> Sent: Wednesday, February 27, 2002 4:56 PM
> Subject: RE: [Insight-developers] Image::TransformPhysicalPointToIndex
>
>
> > Interesting problem.
> >
> > I understand wanting nearest neighbor type calculation but if the
> transform
> > is changed to round then the index returned may not be a
> valid pixel (it
> > may be outside the image).
> >
> > I think the default behavior should truncate and perhaps
> another method
> > could round.
> >
> >
> >
> > -----Original Message-----
> > From: Lydia Ng [mailto:lng@insightful.com]
> > Sent: Wednesday, February 27, 2002 4:33 PM
> > To: insight-developers@public.kitware.com
> > Subject: [Insight-developers] Image::TransformPhysicalPointToIndex
> >
> >
> >
> > Currently Image::TransformPhysicalPointToIndex
> > does a truncation to convert the index from
> > continuous space to discrete space. i.e
> >
> > for (unsigned int i = 0 ; i < VImageDimension ; i++)
> > {
> > index[i] = static_cast<long>(inputPoint[i]);
> > }
> >
> > Any objection if that the truncation is change
> > to vnl_math_rnd instead? ie.
> >
> > for (unsigned int i = 0 ; i < VImageDimension ; i++)
> > {
> > index[i] = static_cast<long>( vnl_math_rnd(inputPoint[i]) );
> > }
> >
> >
> > - Lydia
> >
> >
> >
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-developers
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-developers
> >
>
>