00001
00002
00003
00004
00005
00006
00007
00008 #ifndef bodySegIDTWT_H
00009 #define bodySegIDTWT_H
00010 #include "segDTWT.h"
00011 #include "cppTypes.h"
00012
00013
00014
00015 void convolveIRow(float* i, int size,float* o,float* filter,int filter_size);
00016
00017
00018
00019
00020 void convolveIRow(float* i, int size, float* o,float* filter,int filter_size,int zerosLeft,int zerosRight);
00021
00022
00023
00024 void convolveICol(float* i, int size,int i_widthStep,float* o,int o_widthStep,float* filter,int filter_size);
00025
00026
00027
00028 void convolveICol(float* i, int size,int i_widthStep,float* o,int o_widthStep,float* filter,int filter_size,int zerosTop,int zerosBottom);
00029
00036 class bodySegIDTWT2D{
00037
00038 float* row_buffer;
00039 int row_buffer_widthStep;
00040
00041 float* col_buffer;
00042 int col_buffer_widthStep;
00043
00044
00045 float* third_buffer;
00046 int third_buffer_widthStep;
00047
00048
00049 float* o_data;
00050 int o_widthStep;
00051
00052 float** subbands;
00053
00054 int* widthSteps;
00055
00056
00057 separableWavelet* w;
00058
00059 Size maxSize;
00060
00061 int level;
00062
00063
00064 int maxWidth;
00065 int maxHeight;
00066
00067
00068 public :
00077 void operator()(const tbb::blocked_range2d_segdtwt_segidtwt_auto<size_t>& r);
00100 bodySegIDTWT2D( float* subbands[],int widthSteps[],float* o_data, int o_widthStep,Size maxSize, separableWavelet* w,int level):
00101 o_data(o_data),o_widthStep(o_widthStep),subbands(subbands),widthSteps(widthSteps),maxSize(maxSize),w(w),level(level){
00102
00103 third_buffer=NULL;
00104 row_buffer=NULL;
00105 col_buffer=NULL;
00106 maxWidth = 0;
00107 maxHeight = 0;
00108 }
00109
00121 bodySegIDTWT2D(bodySegIDTWT2D& s,tbb::split):
00122 o_data(s.o_data),o_widthStep(s.o_widthStep),subbands(s.subbands),widthSteps(s.widthSteps),maxSize(s.maxSize),w(s.w),level(s.level){
00123
00124 third_buffer=NULL;
00125 row_buffer=NULL;
00126 col_buffer=NULL;
00127 maxWidth = 0;
00128 maxHeight = 0;
00129
00130
00131 }
00132
00142 bodySegIDTWT2D(const bodySegIDTWT2D& s):
00143 o_data(s.o_data),o_widthStep(s.o_widthStep),subbands(s.subbands),widthSteps(s.widthSteps),maxSize(s.maxSize),w(s.w),level(s.level){
00144 third_buffer=NULL;
00145 row_buffer=NULL;
00146 col_buffer=NULL;
00147 maxWidth = 0;
00148 maxHeight = 0;
00149 }
00150
00159 ~bodySegIDTWT2D();
00160
00168 void join(const bodySegIDTWT2D& s){}
00169 };
00170 #endif