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 #ifndef __PDE_LIBRARY__
00027 #define __PDE_LIBRARY__
00028
00040 #include "image_data.h"
00041 #include "PDE_filter.h"
00042
00043
00044
00045
00046
00047
00048
00049
00050
00052
00056 class Heat_equation
00057 :public PDE_filter {
00058
00059 protected:
00060 virtual void unit_evolution(const Image_data& source,
00061 Image_data* result) const;
00062 };
00063
00064
00065
00066
00067
00068
00069
00070
00071
00073
00080 template<class Grad_function>
00081 class Perona_Malik
00082 :public PDE_filter {
00083 private:
00085 Grad_function* fct;
00086
00087 protected:
00088 virtual void unit_evolution(const Image_data& source,
00089 Image_data* result) const;
00090
00091 public:
00092 Perona_Malik(const Grad_function& grad_fct);
00093 };
00094
00095
00096
00097
00098
00099
00100
00101
00102
00104
00112 template<class Grad_function>
00113 class ALM_One
00114 :public PDE_filter {
00115 private:
00117 Grad_function* fct;
00118
00119 protected:
00120 virtual void unit_evolution(const Image_data& source,
00121 Image_data* result) const;
00122
00123 public:
00124 ALM_One(const Grad_function& grad_fct);
00125 };
00126
00127
00128
00129
00130
00131
00132
00133
00134
00136
00148 template<class G_function,class H_function>
00149 class ALM_Two
00150 :public PDE_filter {
00151 private:
00154 G_function* g_fct;
00155
00158 H_function* h_fct;
00159
00160 protected:
00161 virtual void unit_evolution(const Image_data& source,
00162 Image_data* result) const;
00163
00164 public:
00165 ALM_Two(const G_function& g_func,
00166 const H_function& h_func);
00167 };
00168
00169
00170 #include "PDE_library.cc"
00171
00172 #endif
00173
00174
00175
00176
00177
00178
00179
00180
00181