00001 #include <Segmentation.h>
00002 #include <SegmentationModule/RegularizationModule.h>
00003 #include <SegmentationModule/GaussianRegionModule.h>
00004 #include <SegmentationModule/BalloonModule.h>
00005
00008 int main(int argc, char* argv[])
00009 {
00010 using namespace Images;
00011 using namespace levelset;
00012 using namespace segmentation;
00013
00014 #if 1 // 2D
00015
00016
00017
00018 BaseImage<2, float> image;
00019 std::ifstream f("image/head3.inr");
00020 f >> format("inrimage") >> image;
00021 Globals::normalize(image, 0.0f, 250.0f);
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 FastMarchingInitializer<2,float> init;
00046 LevelSet<2,float> phi(image.shape(), (double) 20.0);
00047 Segmentation<2,float> segm(&phi, &init, &image);
00048
00049
00050 BaseImage<2,float> im_init;
00051 std::ifstream f1("multi_variance/head3/var/phi_000498.inr");
00052 f1 >> format("inrimage") >> im_init;
00053 phi.init_image(im_init, init, true);
00054
00055
00056
00057 RegularizationModule<2,float> regul(1.f);
00058 GaussianRegionModule<2,float,float> gauss(&image, 1.f);
00059
00060
00061
00062 gauss.use_variance(true);
00063 gauss.set_data_term(image);
00064
00065 segm.add_module(regul);
00066 segm.add_module(gauss);
00067
00068
00069 Segmentation<2,float>::RGBPixel neg(215,152,0);
00070 Segmentation<2,float>::RGBPixel pos(255,252,0);
00071
00072 timeval _time;
00073 Globals::initChrono(_time);
00074
00075 std::ostringstream name;
00076 name.str("");
00077 name << "mkdir CVPR/";
00078 system (name.str().c_str());
00079 name.str("");
00080 name << "mkdir CVPR/gaussian_cortex";
00081 system (name.str().c_str());
00082 name.str("");
00083 name << "CVPR/gaussian_cortex/multivar";
00084
00085 segm.segment(1000, name.str().c_str(), neg, pos);
00086
00087 Globals::printChrono("\n => Gaussian : ", _time);
00088 Globals::initChrono(_time);
00089
00090 std::cout << "OK" << std::endl;
00091
00092 return 0;
00093
00094 #endif
00095
00096 #if 0 //3D
00097
00098
00099 BaseImage<3, unsigned char> image;
00100 std::ifstream f("image/brain.inr");
00101 f >> format("inrimage") >> image;
00102
00103 std::cout << image.shape() << std::endl;
00104
00105
00106 FastMarchingInitializer<3,float> init;
00107 LevelSet<3,float> phi(image.shape(), (double) 2.0);
00108 Segmentation<3,unsigned char> segm(&phi, &init, &image);
00109
00110 phi.init_small_spheres(10, 25, init);
00111
00112 RegularizationModule<3,float> regul(0.75f);
00113 GaussianRegionModule<3,float,unsigned char> gaussian( &image, 0.75f, true);
00114
00115 segm.add_module(regul);
00116 segm.add_module(gaussian);
00117
00118
00119 Segmentation<3,float>::RGBPixel neg(215,152,0);
00120 Segmentation<3,float>::RGBPixel pos(255,252,0);
00121
00122 timeval _time;
00123 Globals::initChrono(_time);
00124
00125 segm.segment(1000, "result_3D/brain_gaussian/gaussian_", neg, pos);
00126
00127 Globals::printChrono("\n => Gaussian : ", _time);
00128 Globals::initChrono(_time);
00129
00130 std::cout << "OK" << std::endl;
00131
00132 return 0;
00133 #endif
00134
00135 }