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; // origin image 00039 RImage* I; // current image 00040 00041 double lambda; // used for linear constrains around the origin 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