00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include <iostream>
00035 #include "cimg_dependent.h"
00036 #include "Filters.h"
00037
00038 using namespace std;
00039 using namespace lsseg;
00040
00041 int main(int varnum, char** vararg)
00042 {
00043 if (varnum < 4) {
00044 cerr << "This program will display the process of TV-flow (total-varaion-diminishing flow)" << endl;
00045 cerr << "on an image." << endl;
00046 cerr << endl;
00047 cerr << "Usage: tvfilter <filename> <dt> <num timesteps> [savefile]" << endl;
00048 cerr << "Suggestion:try dt = 1 and num_timesteps = 20" << endl;
00049 cerr << endl;
00050 return -1;
00051 }
00052
00053 Image<double> img;
00054 load_image(vararg[1], img, false);
00055
00056 permanent_display(img);
00057
00058 Image<double> res;
00059
00060 double dt = atof(vararg[2]);
00061 int iter = atoi(vararg[3]);
00062
00063 const char* save = (varnum > 4) ? vararg[4] : 0;
00064
00065 UpdatableImage uimg(img, "development");
00066
00067 for (int i = 0; i < iter; ++i) {
00068 anisotropic_smoothing(img, res, dt, 0, 1);
00069 uimg.update(res);
00070 img = res;
00071 cout << i << endl;
00072 }
00073
00074 display_image(res);
00075 if (save) {
00076 cout << "Now saving result." << endl;
00077 save_image(save, res);
00078 }
00079 return 1;
00080 };
00081