From: Ian S. <ian...@st...> - 2002-10-10 08:54:06
|
As I understood the discussion at the last VXL meeting, we agreed that we should port the algorithms in tbl into vil/algo, dump the vipl/vepl interface. This way we could overcome the two main problems with vipl/vepl. the vipl interface is very daunting - too many templates. vepl solves this from a users point of view, but not for a developer. vipl leaks a lot of memory, despite your and my attempts to fix that. From mul/vil2/notes.html "All standard image processing algorithms will go into vil2/algo. We will dump the vipl interface. All image processing code would be written in terms of vil2_image_view<T> first. Then write another function which uses the first function, but does all the stitching stuff. Decision at Providence meeting." There isn't any problem with continuing to work on vipl, etc. but that isn't the direction vxl is heading at the moment. Ian. > -----Original Message----- > From: pet...@us... > [mailto:pet...@us...] > Sent: Wednesday, October 09, 2002 11:35 AM > To: vxl...@li... > Subject: [Vxl-commit] vxl/tbl/vepl2/accessors > vipl_accessors_vil2_image_view_base.h,NONE,1.1 > vipl_accessors_vil2_image_view_base.txx,NONE,1.1 > > > Update of /cvsroot/vxl/vxl/tbl/vepl2/accessors > In directory usw-pr-cvs1:/tmp/cvs-serv5694/accessors > > Added Files: > vipl_accessors_vil2_image_view_base.h > vipl_accessors_vil2_image_view_base.txx > Log Message: > vipl interface for vil2 (fully working) > > --- NEW FILE: vipl_accessors_vil2_image_view_base.h --- > #ifndef vipl_accessors_vil2_image_view_base_h_ > #define vipl_accessors_vil2_image_view_base_h_ > #include <vil2/vil2_image_view_base.h> > > #undef FILTER_IMPTR_DEC_REFCOUNT > #define FILTER_IMPTR_DEC_REFCOUNT(v) {delete (v); (v)=0;} > #undef FILTER_IMPTR_INC_REFCOUNT > #define FILTER_IMPTR_INC_REFCOUNT(v) > #undef FILTER_KERNPTR_DEC_REFCOUNT > #define FILTER_KERNPTR_DEC_REFCOUNT(v) > > template <class DataType> DataType > fgetpixel(vil2_image_view_base const& i, int x, int y, DataType); > template <class DataType> void > fsetpixel(vil2_image_view_base& i, int x, int y, DataType e); > template <class DataType> DataType > getpixel(vil2_image_view_base const& i, int x, int y, DataType); > template <class DataType> void setpixel(vil2_image_view_base& > i, int x, int y, DataType e); > #define VIPL_DECLARE_ACCESSORS(T) \ > T fgetpixel(vil2_image_view_base const& i, int x, int y, T); \ > void fsetpixel(vil2_image_view_base& i, int x, int y, T e); \ > T getpixel(vil2_image_view_base const& i, int x, int y, T); \ > void setpixel(vil2_image_view_base& i, int x, int y, T e) > > #ifdef INSTANTIATE_TEMPLATES > #include "vipl_accessors_vil2_image_view_base.txx" > #endif > > #endif // vipl_accessors_vil2_image_view_base_h_ > > --- NEW FILE: vipl_accessors_vil2_image_view_base.txx --- > #ifndef vipl_accessors_vil2_image_view_base_txx_ > #define vipl_accessors_vil2_image_view_base_txx_ > > #include "vipl_accessors_vil2_image_view_base.h" > #include > <vepl2/section/vipl_filterable_section_container_generator_vil > 2_image_view_base.txx> > #include <vil/vil_rgb.h> > #include <vcl_config_compiler.h> > > template <class DataType> > DataType fgetpixel(vil2_image_view_base const& i, int x, int > y, DataType /* dummy */) { > vil2_image_view<DataType> const& im = > static_cast<vil2_image_view<DataType>const&>(i); > return im(x,y); > } > template <class DataType> > void fsetpixel(vil2_image_view_base& i, int x, int y, DataType e) { > vil2_image_view<DataType>& im = > static_cast<vil2_image_view<DataType>&>(i); > im(x,y) = e; > } > template <class DataType> > DataType getpixel(vil2_image_view_base const& i, int x, int > y, DataType /* dummy */) { > if (x<0 || y<0 || x>=i.ni() || y>=i.nj()) return DataType(); > vil2_image_view<DataType> const& im = > static_cast<vil2_image_view<DataType>const&>(i); > return im(x,y); > } > template <class DataType> > void setpixel(vil2_image_view_base& i, int x, int y, DataType e) { > vil2_image_view<DataType>& im = > static_cast<vil2_image_view<DataType>&>(i); > if (x<0 || y<0 || x>=i.ni() || y>=i.nj()) return; > im(x,y) = e; > } > > #if VCL_HAS_TEMPLATE_SYMBOLS > template <class DataType> > vil_rgb<DataType> fgetpixel(vil2_image_view_base const& i, > int x, int y, vil_rgb<DataType> /* dummy */) { > if (i.nplanes() == 3) { > vil2_image_view<DataType> const& im = > static_cast<vil2_image_view<DataType>const&>(i); > return vil_rgb<DataType>(im(x,y,0),im(x,y,1),im(x,y,2)); > } else { > vil2_image_view<vil_rgb<DataType> > const& im = > static_cast<vil2_image_view<vil_rgb<DataType> >const&>(i); > return im(x,y); > } > } > template <class DataType> > void fsetpixel(vil2_image_view_base& i, int x, int y, > vil_rgb<DataType> e) { > if (i.nplanes() == 3) { > vil2_image_view<DataType>& im = > static_cast<vil2_image_view<DataType>&>(i); > im(x,y,0) = e.r; im(x,y,1) = e.g; im(x,y,2) = e.b; > } else { > vil2_image_view<vil_rgb<DataType> >& im = > static_cast<vil2_image_view<vil_rgb<DataType> >&>(i); > im(x,y) = e; > } > } > template <class DataType> > vil_rgb<DataType> getpixel(vil2_image_view_base const& i, int > x, int y, vil_rgb<DataType> /* dummy */) { > if (x<0 || y<0 || x>=i.ni() || y>=i.nj()) return > vil_rgb<DataType>(); > if (i.nplanes() == 3) { > vil2_image_view<DataType> const& im = > static_cast<vil2_image_view<DataType>const&>(i); > return vil_rgb<DataType>(im(x,y,0),im(x,y,1),im(x,y,2)); > } else { > vil2_image_view<vil_rgb<DataType> > const& im = > static_cast<vil2_image_view<vil_rgb<DataType> >const&>(i); > return im(x,y); > } > } > template <class DataType> > void setpixel(vil2_image_view_base& i, int x, int y, > vil_rgb<DataType> e) { > if (x<0 || y<0 || x>=i.ni() || y>=i.nj()) return; > if (i.nplanes() == 3) { > vil2_image_view<DataType>& im = > static_cast<vil2_image_view<DataType>&>(i); > im(x,y,0) = e.r; im(x,y,1) = e.g; im(x,y,2) = e.b; > } else { > vil2_image_view<vil_rgb<DataType> >& im = > static_cast<vil2_image_view<vil_rgb<DataType> >&>(i); > im(x,y) = e; > } > } > #else // compilers with overload problems ... > vil_rgb<vxl_byte> fgetpixel(vil2_image_view_base const& i, > int x, int y, vil_rgb<vxl_byte> /* dummy */) { > if (i.nplanes() == 3) { > vil2_image_view<vxl_byte> const& im = > static_cast<vil2_image_view<vxl_byte>const&>(i); > return vil_rgb<vxl_byte>(im(x,y,0),im(x,y,1),im(x,y,2)); > } else { > vil2_image_view<vil_rgb<vxl_byte> > const& im = > static_cast<vil2_image_view<vil_rgb<vxl_byte> >const&>(i); > return im(x,y); > } > } > void fsetpixel(vil2_image_view_base& i, int x, int y, > vil_rgb<vxl_byte> e) { > if (i.nplanes() == 3) { > vil2_image_view<vxl_byte>& im = > static_cast<vil2_image_view<vxl_byte>&>(i); > im(x,y,0) = e.r; im(x,y,1) = e.g; im(x,y,2) = e.b; > } else { > vil2_image_view<vil_rgb<vxl_byte> >& im = > static_cast<vil2_image_view<vil_rgb<vxl_byte> >&>(i); > im(x,y) = e; > } > } > vil_rgb<vxl_byte> getpixel(vil2_image_view_base const& i, int > x, int y, vil_rgb<vxl_byte> /* dummy */) { > if (x<0 || y<0 || x>=i.ni() || y>=i.nj()) return > vil_rgb<vxl_byte>(); > if (i.nplanes() == 3) { > vil2_image_view<vxl_byte> const& im = > static_cast<vil2_image_view<vxl_byte>const&>(i); > return vil_rgb<vxl_byte>(im(x,y,0),im(x,y,1),im(x,y,2)); > } else { > vil2_image_view<vil_rgb<vxl_byte> > const& im = > static_cast<vil2_image_view<vil_rgb<vxl_byte> >const&>(i); > return im(x,y); > } > } > void setpixel(vil2_image_view_base& i, int x, int y, > vil_rgb<vxl_byte> e) { > if (x<0 || y<0 || x>=i.ni() || y>=i.nj()) return; > if (i.nplanes() == 3) { > vil2_image_view<vxl_byte>& im = > static_cast<vil2_image_view<vxl_byte>&>(i); > im(x,y,0) = e.r; im(x,y,1) = e.g; im(x,y,2) = e.b; > } else { > vil2_image_view<vil_rgb<vxl_byte> >& im = > static_cast<vil2_image_view<vil_rgb<vxl_byte> >&>(i); > im(x,y) = e; > } > } > #endif > > #undef VIPL_INSTANTIATE_ACCESSORS > #define VIPL_INSTANTIATE_ACCESSORS(T) \ > template T fgetpixel(vil2_image_view_base const&, int, int, T);\ > template void fsetpixel(vil2_image_view_base&, int, int, T);\ > template T getpixel(vil2_image_view_base const&, int, int, T);\ > template void setpixel(vil2_image_view_base&, int, int, T) > > #endif // vipl_accessors_vil2_image_view_base_txx_ > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Vxl-commit mailing list > Vxl...@li... > https://lists.sourceforge.net/lists/listinfo/vxl-commit > |