#ifndef DEINTERLACE_HEADER #define DEINTERLACE_HEADER 1 /////////////////////////////////////////////////////////////// //! docentry="Image.Image Processing.Deinterlace" //! lib=IPFilter //! author="Kieron Messer" //! rcsid="$Id: DeInterlace.hh,v 1.1 2000/11/10 12:10:10 ees2km Exp $" //! file="amma/Image/IPStream/IPFilter/DeInterlace.hh" //! date="05/05/99" #include "amma/DP/Process.hh" #include "amma/Image.hh" //! userlevel=Develop //: De-interlace an image template class IPDeInterlaceBodyC : public DPProcessBodyC,ImageC > { public: IPDeInterlaceBodyC() {} //: Constructor. IPDeInterlaceBodyC(const IPDeInterlaceBodyC &oth) : DPProcessBodyC, ImageC >(oth) {} //: Copy constructor. virtual ImageC Apply(const ImageC &img); //: De-interlace image virtual BodyRefCounterVC &Copy() const; //: Creat a copy of this object. protected: }; //! userlevel=Normal //: Perform a very rough de-interlace routine. Needs to be cleverer. template class IPDeInterlaceC : public DPProcessC, ImageC > { public: IPDeInterlaceC() : DPProcessC, ImageC >(*new IPDeInterlaceBodyC()) {} //: Construct de-interlace engine }; template ImageC IPDeInterlaceBodyC::Apply(const ImageC &in) { //: need to strip even/odd lines ImageRectangleC rec(in.Rectangle()); rec.Quartile1(); ImageCop(rec); for(IntT i=0;i BodyRefCounterVC &IPDeInterlaceBodyC::Copy() const { return *new IPDeInterlaceBodyC(*this); } #endif