00001 #ifndef __RAosPeronaCDDinpainting__ 00002 #define __RAosPeronaCDDinpainting__ 00003 00004 00061 #include <stdio.h> 00062 00063 #include "RSimpleAosOp.hpp" 00064 00065 #include "AbsRImageFlow.hpp" // generic curvature like flows 00066 #include "AnImage.hpp" 00067 00068 class RAosPeronaCDDinpainting : public RSimpleAosOp 00069 { 00070 private: 00071 00072 AbsRImageFlow* curvatureLikeFlow; // curvature, beltrami and all friends :-) Bernard OO fun 00073 00074 AnImage* inpaintingArea; // area reserved to the inpainting process 00075 00076 RImage* f; // intermediate image solution 00077 00078 protected: 00079 00080 virtual double g(int i, int j); 00081 00082 // conductivity modulators 00083 virtual double gRestoration(int i, int j); 00084 virtual double gInpainting(int i, int j); 00085 00086 public: 00087 00088 RAosPeronaCDDinpainting(int iterations=8, double t=0.5, 00089 double deltaGradient=16.0, double asigma=5.0, bool iirFlag=false); 00090 RAosPeronaCDDinpainting(AbsRImageFlow* annihilator, int iterations=8, double t=0.5, 00091 double deltaGradient=16.0, double asigma=5.0, bool iirFlag=false); 00092 virtual ~RAosPeronaCDDinpainting(){} 00093 00094 // The non mask part will be restored via AOS Perona 00095 // The mask part inpainted via AOS modulated curvature CDD inpainting AT THE SAME TIME !!! Bernard De Cuyper 2003 00096 virtual RImage* selectedFilter(AnImage* mask, RImage* src, RImage* dest=0); 00097 00098 virtual void report(FILE* file){ fprintf(file,"Real Aos Perona Operator\n"); } 00099 }; 00100 00101 00102 #endif