gen_worst_salembier.cc

00001 
00002 #include <cstdlib>
00003 #include <oln/basics2d.hh>
00004 
00005 
00006 
00007 
00008 void usage(char* argv[])
00009 {
00010   std::cerr << "usage: " << argv[0] << " size output.pgm" << std::endl;
00011   std::cerr << "generate worst-case for salembier (Cf. najman)" << std::endl;
00012   exit(1);
00013 }
00014 
00015 namespace oln {
00016 
00017   template <typename I>
00018   void salembier_worstcase_image(abstract::image<I>& f)
00019   {
00020     oln_iter_type(I) p(f);
00021     unsigned char c = 0;
00022     for_all(p)
00023       if ((p.row() + p.col()) % 2)
00024         f[p] = 0;
00025       else
00026         f[p] = ++c;
00027   }
00028 
00029 }
00030 
00031 // 1000   0.71    498048  0.28
00032 // 2000   3.15   1992189  1.37
00033 // 3000   7.26   4482423  3.17
00034 // 4000  15.20   7968751  5.91
00035 // 5000  21.80  12451173  9.42
00036 
00037 
00038 int main(int argc, char* argv[])
00039 {
00040   using namespace oln;
00041 
00042   if (argc != 3)
00043     usage(argv);
00044 
00045   int size = atoi(argv[1]);
00046   if (size < 0)
00047     usage(argv);
00048 
00049   image2d<ntg::int_u8> f(size, size);
00050   salembier_worstcase_image(f);
00051 
00052   save(f, argv[2]);
00053 }

Generated on Tue Feb 20 20:19:14 2007 for Olena by  doxygen 1.5.1