[Insight-developers] RE: ShapedNeighborhoodIterators

Miller, James V (Research) millerjv at crd . ge . com
Wed, 28 May 2003 09:42:26 -0400


Josh, 

I tried your changes this morning.  The code compiles but does not do a
proper copy yet. 

The style I am trying to use is

  typedef ConstShapedNeighborhoodIterator<TInputImage>
NeighborhoodIteratorType;

  // iterator for the marker image
  NeighborhoodIteratorType markerIt;

  // later on, assign the iterator
  markerIt = NeighborhoodIteratorType(kernelRadius,
                                      this->GetMarkerImage(), *fit);


-----Original Message-----
From: Joshua Cates [mailto:cates at sci . utah . edu]
Sent: Tuesday, May 27, 2003 4:16 PM
To: Miller, James V (Research)
Cc: Insight-developers (E-mail)
Subject: Re: [Insight-developers] RE: ShapedNeighborhoodIterators


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
>