00001 #ifndef __BeltramiFilter__
00002 #define __BeltramiFilter__
00003 
00004 
00005 
00027 #include <stdio.h>
00028 
00029 #include "AnImage.hpp"
00030 #include "AbsRImageFilter.hpp"
00031 
00032 #include "BeltramiFlow.hpp"
00033 
00034 class BeltramiFilter : public AbsRImageFilter
00035 {
00036 protected:
00037 
00038 RImage*                 I0;                             
00039 RImage*                 I;                              
00040 
00041 double                  lambda;                 
00042 
00043 int                             niterations;
00044 double                  alpha;
00045 
00046 BeltramiFlow    beltrami;
00047 
00048 protected:
00049 
00051 
00053 virtual void operations(RImage& result);
00055 
00058 virtual void operations(AnImage& mask, RImage& result);
00059 
00060 public:
00061         
00062 BeltramiFilter(int n=100, double ralpha=0.2);
00063 virtual ~BeltramiFilter(){}
00064 
00065 
00066 virtual RImage* filter(RImage* src, RImage* dest=0);
00067 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0);
00068 
00069 virtual void report(FILE* file){}
00070 };
00071 
00072 
00073 #endif