00001 #ifndef __RLysaker2thOrderFilter__
00002 #define __RLysaker2thOrderFilter__
00003
00004
00005
00038 #include <stdio.h>
00039
00040
00041 #include "AbsRImageFilter.hpp"
00042
00043
00044 class RLysaker2thOrderFilter : public AbsRImageFilter
00045 {
00046 protected:
00047
00048 RImage* u0;
00049 RImage* u;
00050
00051
00052 RImage* aDUx;
00053 RImage* bDUy;
00054 RImage* deltaU;
00055
00056 double lambda;
00057 double sigma2;
00058 double epsilon;
00059
00060 double sumI0_2;
00061
00062 int niterations;
00063 double dt;
00064
00065 protected:
00066
00067 virtual void channelConstrain();
00068 virtual void channelConstrain(AnImage& mask);
00069
00070 virtual double operation(RImage* im, int x, int y);
00071
00072 virtual void operations(RImage* result);
00073 virtual void operations(AnImage& mask, RImage* result);
00074
00075 public:
00076
00077 RLysaker2thOrderFilter(int n, double rdt=0.1);
00078 virtual ~RLysaker2thOrderFilter(){ }
00079
00080 virtual void setMask(int n, int* xp, int* yp){ xm=xp; ym=yp; nMask=n; }
00081
00082
00083 virtual RImage* filter(RImage* src, RImage* dest=0);
00084 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0);
00085
00086 virtual void report(FILE* file){}
00087 };
00088
00089
00090 #endif