• Main Page
  • Classes
  • Files
  • File List
  • File Members

segDTWT.h

Go to the documentation of this file.
00001 /*
00002  * segDTWT.h - paralelní výpočet dopřené a zpětné expanzivní DTWT po segmentech, separabilním přístupem algoritmem segDTWT2D
00003  * Autor: Zdeněk Průša, UTKO, FEKT, VUT v Brně, Purkyňova 118, Brno
00004  * Program vznikl za podpory interního grantu FEKT-J-10-8 - Optimální algoritmy paralelního výpočtu waveletové transformace rozsáhlých obrazových dat
00005  * Externí knihovny: Intel Threading Building Blocks 3.0
00006  */
00038 #ifndef segDTWT_H
00039 #define segDTWT_H
00040 
00041 // konstanty
00042 #define ALIGN_TO_BYTES 16
00043 #define SUBBAND_COUNT 3
00044 #define SUBSAMPLING 1
00045 
00046 //MAKRA
00047 #define pow2(x) ((1)<<(x))  // makro pro mocninu 2 pomocí bitového posunu
00048 #define r(k,m) (pow2(k)-(1))*((m)-(1))
00049 #define max(x,y) x>y?x:y
00050 #define min(x,y) x<y?x:y
00051 #define odd(x) (x%2)!=0
00052 #define even(x) (x%2)==0
00053 
00054 typedef enum {
00055 ZEROS_PADDING = 0,
00056 CONST_PADDING = 1,
00057 SYMETRIC_HP = 2,
00058 SYMETRIC_WP = 3
00059 } wrapType;
00060 
00061 typedef struct {
00062 int x;
00063 int y;
00064 int width;
00065 int height;
00066 }Rect;
00067 
00068 typedef enum {
00069 RESULT_OK = 0,
00070 RESULT_UNKNOWN_ERROR = -1
00071 }WRESULT;
00072 
00073 typedef struct {
00074 int width;
00075 int height;
00076 }Size;
00077 
00078 #include "cppTypes.h"
00079 #include "memoryAllocation.h"
00080 #include "imageLoad.h"
00081 #include "tbb/tbb.h"
00082 #include "rangeSegDTWTauto.h"
00083 #include "bodySegDTWT2D.h"
00084 #include "bodySegIDTWT2D.h"
00085 
00086 
00087 /*
00088 * Typ prodlužování
00089 */
00090 extern wrapType extensionType;
00091 
00096 extern Size segSize;
00097 
00098 /*
00099 * Výchozí soubor pro načítání koeficientů filtrů
00100 */
00101 extern char* waveletFile;
00102 
00103 
00104 /*
00105 
00106 */
00107 // subbandy budou v pořadí HL1,HH1,LH1,HL2,HH2,LH2 .... LL
00108 // všechny se musí předem alokovat na zarovnané boundary rozměry  s(k+1) = floor((sk+m-1)/2) 
00109 //float* subband[levels*SUBBAND_COUNT+1];
00110 //int widthSteps[levels+1];
00111 // subband rozměry: n(s,m,j) = floor( 2^-j)*s + (1-2^(-j)*(m-1))
00112 
00150 WRESULT segDTWTfwd_32f_C1(float* i_data, int i_widthStep, float* subbands[], int widthSteps[], int levels, Size size, separableWavelet* w);
00151 
00152 
00153 
00154 
00155 
00182 WRESULT segDTWTinv_32f_C1(float* subbands[],int widthSteps[], float* o_data, int o_widthStep, int levels, Size size, separableWavelet* w);
00183 
00184 
00185 #endif

Generated on Wed Nov 24 2010 21:26:30 for SegDTWT2D by  doxygen 1.7.1