[Insight-developers] RE: ShapedNeighborhoodIterators
Joshua Cates
cates at sci . utah . edu
Tue, 27 May 2003 14:16:14 -0600 (MDT)
On closer inspection there are a few more fixes to be made to operator=.
It will now compile but will not yet do a complete copy. Should be fixed
soon...
Josh.
______________________________
Josh Cates
School of Computer Science
University of Utah
Email: cates at sci . utah . edu
Phone: (801) 587-7697
URL: http://www . sci . utah . edu/~cates
On Tue, 27 May 2003, Miller, James V (Research) wrote:
> Josh,
>
> First problem encountered using the ShapedIterators. I cannot do a
>
> ConstShapedNeighbhorhoodIterator nIt;
>
> I get a compiler error for operator=() saying that "A reference that is not
> to 'const' cannot be bound to a non-lvalue". This is with VC .NET.
>
> c:\projects\I2\Insight\Code\Common\itkConstShapedNeighborhoodIterator.h(232)
> : error C2440: 'return' : cannot convert from
> 'itk::NeighborhoodIterator<TImage,TBoundaryCondition>::Self' to
> 'itk::ConstShapedNeighborhoodIterator<TImage,TBoundaryCondition>::Self &'
> with
> [
> TImage=InputImageType,
>
> TBoundaryCondition=itk::ZeroFluxNeumannBoundaryCondition<InputImageType>
> ]
> and
> [
> TImage=InputImageType,
>
> TBoundaryCondition=itk::ZeroFluxNeumannBoundaryCondition<InputImageType>
> ]
> A reference that is not to 'const' cannot be bound to a non-lvalue
>
> c:\projects\I2\Insight\Code\Common\itkConstShapedNeighborhoodIterator.h(232)
> : while compiling class-template member function
> 'itk::ConstShapedNeighborhoodIterator<TImage,TBoundaryCondition>::Self
> &itk::ConstShapedNeighborhoodIterator<TImage,TBoundaryCondition>::operator
> =(const
> itk::ConstShapedNeighborhoodIterator<TImage,TBoundaryCondition>::Self &)'
> with
> [
> TImage=InputImageType,
>
> TBoundaryCondition=itk::ZeroFluxNeumannBoundaryCondition<InputImageType>
> ]
>
> c:\projects\I2\Insight\Code\BasicFilters\itkGrayscaleGeodesicErodeImageFilte
> r.txx(289) : see reference to class template instantiation
> 'itk::ConstShapedNeighborhoodIterator<TImage,TBoundaryCondition>' being
> compiled
> with
> [
> TImage=InputImageType,
>
> TBoundaryCondition=itk::ZeroFluxNeumannBoundaryCondition<InputImageType>
> ]
> C:\Program Files\Microsoft Visual Studio
> .NET\Vc7\include\xmemory(136) : while compiling class-template member
> function 'void
> itk::GrayscaleGeodesicErodeImageFilter<TInputImage,TOutputImage>::ThreadedGe
> nerateData(const
> itk::GrayscaleGeodesicErodeImageFilter<TInputImage,TOutputImage>::OutputImag
> eRegionType &,int)'
> with
> [
> TInputImage=InputImageType,
> TOutputImage=OutputImageType
> ]
>
> \projects\I2\Insight\Examples\Filtering\GrayscaleGeodesicErosion.cxx(116) :
> see reference to class template instantiation
> 'itk::GrayscaleGeodesicErodeImageFilter<TInputImage,TOutputImage>' being
> compiled
> with
> [
> TInputImage=InputImageType,
> TOutputImage=OutputImageType
> ]
>
> -----Original Message-----
> From: Joshua Cates [mailto:cates at sci . utah . edu]
> Sent: Tuesday, May 27, 2003 12:24 PM
> To: Miller, James V (Research)
> Cc: Insight-developers (E-mail)
> Subject: Re: ShapedNeighborhoodIterators
>
>
> Hi Jim,
>
> Yes, the best options are GetNext/Previous and the shaped iterator. In
> theory the shaped iterator should be faster. The trade-off is a more
> limited API for accessing and setting pixels, which could make your code a
> little uglier.
>
> Currently you will have to manually activate the face connected neighbors
> and the center pixel. Probably we should set up an
> ActivateFaceConnectedNeighbors() method since this is likely a common
> case.
>
> Let me know if you have problems/suggestions as so far I have not made
> very extensive use of the shaped iterators.
>
> Josh.
>
>
> ______________________________
> Josh Cates
> School of Computer Science
> University of Utah
> Email: cates at sci . utah . edu
> Phone: (801) 587-7697
> URL: http://www . sci . utah . edu/~cates
>
>
> On Tue, 27 May 2003, Miller, James V (Research) wrote:
>
> > Josh,
> >
> > What is the recommended way to access the face connected neighbors of a
> > pixel using the NeighborhoodIterators? The options seem to be
> > NeighborhoodIterator:GetNext()/GetPrevious() and setting up a
> > ShapedNeighborhoodIterator.
> >
> > The ShapedNeighborhoodIterator "should" be faster when moving the iterator
> > since it only updates a few of the pointers. But are there convenience
> > methods for activating the face connected neighbors (and the center pixel)
> > of an iterator? Or do I need to call ActivateOffset() manually for each
> face
> > connected pixel?
> >
> > Jim
> >
> >
> >
> > Jim Miller
> > _____________________________________
> > Visualization & Computer Vision
> > GE Research
> > Bldg. KW, Room C218B
> > P.O. Box 8, Schenectady NY 12301
> >
> > millerjv at research . ge . com <mailto:millerjv at research . ge . com>
> >
> > james . miller at research . ge . com
> > (518) 387-4005, Dial Comm: 8*833-4005,
> > Cell: (518) 505-7065, Fax: (518) 387-6981
> >
> >
> >
> _______________________________________________
> Insight-developers mailing list
> Insight-developers at public . kitware . com
> http://public . kitware . com/mailman/listinfo/insight-developers
>