00001 #ifndef __KPeronaMalikFilter__ 00002 #define __KPeronaMalikFilter__ 00003 00004 00005 00029 #include <stdio.h> 00030 00031 #include "AnImage.hpp" 00032 #include "AbsRImageFilter.hpp" 00033 00034 #include "AbsRImageFlow.hpp" 00035 00036 class KPeronaMalikFilter : public AbsRImageFilter 00037 { 00038 protected: 00039 00040 RImage* I0; // origin image 00041 RImage* I; // current image 00042 00043 double lambda; // used for linear constrains around the origin 00044 00045 int niterations; 00046 double alpha; 00047 00048 AbsRImageFlow* perona; 00049 00050 protected: 00051 00052 virtual void operations(RImage& result); 00053 virtual void operations(AnImage& mask, RImage& result); 00054 00055 public: 00056 00057 KPeronaMalikFilter(int n, double ralpha, double alambda=0.0); 00058 KPeronaMalikFilter(int n, double ralpha, double alambda, double beta); 00059 virtual ~KPeronaMalikFilter(){delete perona;} 00060 00061 00062 virtual RImage* filter(RImage* src, RImage* dest=0); 00063 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0); 00064 00065 virtual void report(FILE* file){} 00066 }; 00067 00068 00069 #endif