contrib/tbl/vepl/vepl_convert.txx
Go to the documentation of this file.
00001 // This is tbl/vepl/vepl_convert.txx
00002 #ifndef vepl_convert_txx_
00003 #define vepl_convert_txx_
00004 
00005 #include "vepl_convert.h"
00006 #include <vipl/accessors/vipl_accessors_vil1_image.h>
00007 #include <vipl/vipl_convert.h>
00008 #include <vil1/vil1_memory_image_of.h>
00009 #include <vxl_config.h> // for vxl_byte
00010 
00011 template <class D>
00012 vil1_image vepl_convert(vil1_image const& image, D /*dummy*/)
00013 {
00014   // byte greyscale
00015   if (vil1_pixel_format(image) == VIL1_BYTE) {
00016     vil1_memory_image_of<vxl_byte> mem(image); // load in memory to pass to filter
00017     vil1_memory_image_of<D > out(image);
00018     vipl_convert<vil1_image,vil1_image,vxl_byte,D> op;
00019     op.put_in_data_ptr(&mem);
00020     op.put_out_data_ptr(&out);
00021     op.filter();
00022     return out;
00023   }
00024 
00025   // 16-bit greyscale
00026   else if (vil1_pixel_format(image) == VIL1_UINT16) {
00027     vil1_memory_image_of<vxl_uint_16> mem(image); // load in memory to pass to filter
00028     vil1_memory_image_of<vxl_uint_16> out(image);
00029     vipl_convert<vil1_image,vil1_image,vxl_uint_16,D> op;
00030     op.put_in_data_ptr(&mem);
00031     op.put_out_data_ptr(&out);
00032     op.filter();
00033     return out;
00034   }
00035 
00036   // float
00037   else if (vil1_pixel_format(image) == VIL1_FLOAT) {
00038     vil1_memory_image_of<float> mem(image); // load in memory to pass to filter
00039     vil1_memory_image_of<D > out(image);
00040     vipl_convert<vil1_image,vil1_image,float,D> op;
00041     op.put_in_data_ptr(&mem);
00042     op.put_out_data_ptr(&out);
00043     op.filter();
00044     return out;
00045   }
00046 
00047   // double
00048   else if (vil1_pixel_format(image) == VIL1_DOUBLE) {
00049     vil1_memory_image_of<double> mem(image); // load in memory to pass to filter
00050     vil1_memory_image_of<D > out(image);
00051     vipl_convert<vil1_image,vil1_image,double,D> op;
00052     op.put_in_data_ptr(&mem);
00053     op.put_out_data_ptr(&out);
00054     op.filter();
00055     return out;
00056   }
00057 
00058   //
00059   else {
00060     vcl_cerr << __FILE__ ": vepl_convert() not implemented for " << image << vcl_endl;
00061     return 0;
00062   }
00063 }
00064 
00065 #endif // vepl_convert_txx_