00001 #ifndef __RRedBlackWvltOp__
00002 #define __RRedBlackWvltOp__
00003
00004
00005
00039 #include <stdio.h>
00040
00041 #include "AbsRImageFilter.hpp"
00042
00043
00044 class RRedBlackWvltOp : public AbsRImageFilter
00045 {
00046 protected:
00047
00048 bool denoisingFlag;
00049 bool hardThreshold;
00050 double threshold;
00051
00052 bool forwardOnly;
00053 int userStages;
00054
00055 int nstages;
00056
00057 int w, h;
00058 int wS, hS;
00059
00060 int wCurrent, hCurrent;
00061
00062 int currentStage;
00063
00064 RImage* I;
00065 RImage* IOrder;
00066
00067 protected:
00068
00069 virtual double hvPrediction(int stage, int i, int j);
00070 virtual double hvUpdate(int stage, int i, int j);
00071 virtual double dPrediction(int stage, int i, int j);
00072 virtual double dUpdate(int stage, int i, int j);
00073
00074 virtual void hvPredictionStep(int stage, bool forwardFlag=true);
00075 virtual void hvUpdateStep(int stage, bool forwardFlag=true);
00076 virtual void dPredictionStep(int stage, bool forwardFlag=true);
00077 virtual void dUpdateStep(int stage, bool forwardFlag=true);
00078
00079 virtual void init(RImage* src);
00080 virtual void clear();
00081 virtual void fwdStage(int stage);
00082 virtual void bwdStage(int stage);
00083
00084 virtual void reorder(int stage, bool forwardFlag=true);
00085
00086 public:
00087
00088 RRedBlackWvltOp(int steps, bool forwardTr=false)
00089 {userStages= steps; I=0; IOrder=0; forwardOnly= forwardTr; denoisingFlag=false; }
00090 RRedBlackWvltOp(int steps, bool forwardTr, bool ahardThreshold, double athreshold)
00091 {userStages= steps; I=0; IOrder=0; forwardOnly= forwardTr; denoisingFlag=true;
00092 hardThreshold= ahardThreshold; threshold= athreshold; }
00093 virtual ~RRedBlackWvltOp(){}
00094
00095 virtual void fwdTransform(int maxstage=0);
00096 virtual void bwdTransform(int maxstage=0);
00097
00098 virtual RImage* filter(RImage* src, RImage* dest=0);
00099
00100 virtual void report(FILE* file){}
00101 };
00102
00103
00104 #endif