00001 #ifndef __TVColorBeltramiFilter__ 00002 #define __TVColorBeltramiFilter__ 00003 00004 00026 #include <stdio.h> 00027 00028 #include "AnImage.hpp" 00029 #include "RImage.hpp" 00030 00031 #include "ColorBeltramiFilter.hpp" 00032 00033 class TVColorBeltramiFilter : public ColorBeltramiFilter 00034 { 00035 protected: 00036 00037 Real3CImage* I0; // origin image 00038 Real3CImage* I; // current image 00039 00040 double lambda[3]; // for each channel 00041 00042 double sumI0_2[3]; // cached value for sigma2 00043 00044 protected: 00045 00046 00047 virtual double operation(Real3CImage& image, int ch, int x, int y); 00048 00049 virtual void operations(Real3CImage& result, Real3CImage& image); 00050 virtual void operations(AnImage& mask, Real3CImage& result, Real3CImage& image); 00051 00052 public: 00053 00054 TVColorBeltramiFilter(int n=50, double ralpha=0.15):ColorBeltramiFilter(n, ralpha){} 00055 virtual ~TVColorBeltramiFilter(){} 00056 00057 00058 // single shot filtering 00059 virtual Real3CImage* filter(Real3CImage* src, Real3CImage* dest=0); 00060 virtual Real3CImage* selectedFilter(AnImage* mask, Real3CImage* src, Real3CImage* dest=0); 00061 00062 00063 00064 virtual void report(FILE* file){} 00065 }; 00066 00067 00068 #endif