The constructors of NeighborhoodIterator and the iterators that derive from it take in a Image* instead of an Image::Pointer. It is then assigned to m_Image which is a SmartPointer<Image>. Regards, ashes