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 }