[Insight-developers] m_EndContinuousIndex[j]
Simon Warfield
simon.warfield at childrens.harvard.edu
Fri May 29 13:45:02 EDT 2009
Great! Thanks for getting these tests working.
Michel Audette wrote:
> Hi Simon,
>
> I went with Tom's suggestion, in a manner consistent with what you
> have here. I have not checked it in yet. There seem to be other
> inconsistencies between the various flavours of IsInside() that still
> cause inconsistencies in some of tests, leading the latter to fail,
> and I hope to commit a few fixes at once.
>
> Thanks for your kind reply.
>
> Best wishes,
>
> Michel
>
> On Fri, May 29, 2009 at 1:01 PM, Simon Warfield
> <simon.warfield at childrens.harvard.edu
> <mailto:simon.warfield at childrens.harvard.edu>> wrote:
>
>
> Date: Thu, 28 May 2009 15:37:19 -0400
> From: Michel Audette <michel.audette at kitware.com
> <mailto:michel.audette at kitware.com>>
>
> Would it not be better to have
> m_EndContinuousIndex[j] = static_cast<CoordRepType>(
> m_EndIndex[j] +
> 0.5 - FLT_MIN );
>
> or something to that effect, so that something with 1/2 pixel
> spacing sees
> the value m_EndIndex[j] + 0.5 declared outside?
>
> Currently, and unless we make this change, our logic is
> allowing in an extra
> row and column as "inside", which is probably not what we had
> in mind in
> going to pixel-centered coordinates.
>
>
>
> Hi Michel,
>
> Indeed, there is a slight inconsistency here. When I wrote my
> first
> version of this patch based on Simon's proposal, there was
> still no
> consensus on what the rounding functions should do with
> half-integers.
> Now it's clear (round half-integers upward) and we should make
> IsInsideBuffer really consistent.
>
> An alternative fix to the one you proposed would be to replace
> if( index[j] > m_EndContinuousIndex[j] )
> by
> if( index[j] >= m_EndContinuousIndex[j] )
> if ITK_USE_CENTERED_PIXEL_COORDINATES_CONSISTENTLY is on.
>
> Cheers,
> Tom
>
>
> The code needs to define an interval of physical space that
> represents the `inside'.
> Since we are now rounding the half-way case up, the old code is
> wrong. We need to change it.
>
> I think considering the computed continuous index markers as
> defining a half-open interval is better than subtracting a small
> floating point number to approximately define explicitly a closed
> interval. For one thing, it doesn't depend on the numerical
> precision of the floating point number representation.
>
> So I vote for:
>
> if( index[j] >= m_EndContinuousIndex[j] )
>
>
>
> --
> Simon
>
> _______________________________________________
> Powered by www.kitware.com <http://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 ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-developers
>
>
>
>
> --
> Michel Audette, Ph.D.
> R & D Engineer,
> Kitware Inc.,
> Chapel Hill, N.C.
>
--
Simon
More information about the Insight-developers
mailing list