Jerome Piovano

Research in Medical Imaging and Computer Vision

2D_Anisotropic_Blur.C

anisotropic Blur of a 2D Image

00001 #include <Image.H>
00002 #include <DericheFilter.h>
00003 #include <Globals.h>
00004 
00005 #include <image/RecFilters.H>
00006 #include <image/IIR.H>
00007 
00008 
00011 int main(int argc, char* argv[])
00012 {
00013 #if 0
00014         using namespace Images;
00015 
00016         // image to blur
00017         BaseImage<2, float> image;
00018         //std::ifstream f("image/tiger.inr");
00019         std::ifstream f("image/synth3/bruit/000000.inr");
00020         f >> format("inrimage") >> image;
00021 
00022         // anisotropic variance
00023         //float sigma[2] = {20, 2};
00024         float sigma = 400000;
00025 
00026         DericheFilter<2,float> deriche(sigma);
00027 
00028         timeval _time;
00029         levelset::Globals::initChrono(_time); 
00030 
00031         // filter the image
00032         deriche.filter(image);
00033         
00034         levelset::Globals::printChrono("\n      => Anisotropic Blur : ", _time);
00035         levelset::Globals::initChrono(_time);  
00036 
00037         std::ofstream f1("2D_Anisotropic_Blur.inr"); 
00038         f1 << format("inrimage") << image; 
00039         f1.close();
00040 
00041         return 0;
00042 #endif
00043 #if 1 //comparaison blue theo, et cimg
00044 
00045         typedef           Images::Filters::IIR::Separable::GaussianFilter<4,double> DericheFilter_2;
00046         
00047         // image to blur
00048         BaseImage<2, float> image;
00049         std::ifstream f("image/tiger.inr");
00050         //std::ifstream f("image/synth3/bruit/000000.inr");
00051         f >> format("inrimage") >> image;
00052 
00053         // anisotropic variance
00054         float sigma = 20;
00055 
00056         DericheFilter_2 deriche(sigma, 0);
00057         DericheFilter<2,float> deriche_moi(sigma);
00058 
00059         timeval _time;
00060 
00061         // filter the image theo
00062         for (int i = 0 ; i < 20 ; i++){
00063                 BaseImage<2, float> image2 = image.copy();
00064         
00065                 levelset::Globals::initChrono(_time);  
00066                 image2 = Images::Filter<BaseImage<2, float> >(image2, deriche);
00067                 levelset::Globals::printChrono("\n      => Anisotropic Blur : ", _time);
00068         
00069                 std::ostringstream name;
00070                 name.str("");
00071                 name <<  "2D_Anisotropic_Blur_" << std::setw(6) << std::setfill('0') << i << ".inr";
00072                 std::ofstream f1(name.str().c_str());
00073                 f1 << format("inrimage") << image2;
00074                 f1.close();
00075         }
00076 
00077         //filter the image CImg
00078         for (int i = 0 ; i < 20 ; i++){
00079                 BaseImage<2, float> image2 = image.copy();
00080         
00081                 levelset::Globals::initChrono(_time);  
00082                 deriche_moi.filter(image2);
00083                 levelset::Globals::printChrono("\n      => Anisotropic Blur : ", _time);
00084         
00085                 std::ostringstream name;
00086                 name.str("");
00087                 name <<  "2D_Anisotropic_Blur_" << std::setw(6) << std::setfill('0') << i << ".inr";
00088                 std::ofstream f1(name.str().c_str());
00089                 f1 << format("inrimage") << image2;
00090                 f1.close();
00091         }
00092 
00093         
00094 
00095 #endif
00096 }

For further information, please contact Jerome Piovano - Last update 2008-02-08