[Insight-users] Finding out when a neighborhood iterator is o utside the image?

Zachary Pincus zpincus at stanford.edu
Thu Jul 29 17:15:14 EDT 2004


James,

Unfortunately, I can't assume much about the dynamic range of my 
images, so using a constant boundary condition wouldn't necessarily 
work. (That was my first thought, and it's what led my thinking toward 
the exception throwing boundary condition [nasty as that is]).

The altered GetPixel and IsInBounds methods do sound useful, provided 
they wouldn't slow the "normal case" down too much. (I guess it can be 
declared inline or some such).

Thanks,
Zach





On Jul 29, 2004, at 12:57 PM, Miller, James V (Research) wrote:

> Usually the boundary conditions are handled "internally" so the
> user doesn't worry about whether the offset is a boundary condition
> or not.
>
> But I suppose in your case, relying on the boundary condition
> (constant or zeroflux) would bias your statistics.
>
> If the entire scalar range of the pixel type is not being used,
> you could use a ConstantBoundaryCondition with a constant value
> that is not used in the image, say NumericTraits<>::NonpositiveMin().
>
> Then when you access the "offset" within the neighborhood, if the
> value is your boundary condition value, then you know the offset
> if off the boundary.
>
> We could add a method to ConstNeighborhoodIterator to query an offset.
> I would pull the code from GetPixel() from lines 73-100 into a separate
> method, say
>
> virtual bool IsInBounds( const unsigned int i ) const;
>
> and change the GetPixel() code to call this method.
>
> Let me know if this new method would help.
>
> Jim
>
>
>
> -----Original Message-----
> From: Zachary Pincus [mailto:zpincus at stanford.edu]
> Sent: Thursday, July 29, 2004 3:35 PM
> To: insight-users List
> Subject: [Insight-users] Finding out when a neighborhood iterator is
> outside the image?
>
>
> Hello,
>
> I seem to recall seeing somewhere a method in ITK for determining when
> a particular element of a neighborhood (or shaped neighborhood) is
> outside of the real image. Unfortunately, neither searching the list
> nor wracking my brain can retrieve this information.
>
> Basically, I'm using shaped neighborhoods to get pairs of pixels to do
> statistics on. Previously, I had just used the BoundaryFacesCalculator
> to get the region of an image where a given neighborhood could not
> possibly be outside the image. The problem is that just using that
> region is too conservative: there are parts of the image where a given
> neighborhood center and offset are still both on the image, even though
> other parts of the neighborhood might be dangling off.
>
> Maybe the best thing here would be to create a
> "ThrowExceptionBoundaryCondition" and then catch the exception when
> necessary to determine whether a given pixel is actually outside of the
> image. Would that work, or are there other better ideas?
>
>
> Zach Pincus
>
> Department of Biochemistry and Program in Biomedical Informatics
> Stanford University School of Medicine
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>



More information about the Insight-users mailing list