Zhang-Wu Directional LMMSE Image Demosaicking
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
conv.h
Go to the documentation of this file.
1 
16 #ifndef _CONV_H_
17 #define _CONV_H_
18 
19 #include "basic.h"
20 
21 
23 typedef struct
24 {
26  float *Coeff;
28  int Delay;
30  int Length;
31 } filter;
32 
34 typedef float (*boundaryext)(const float*, int, int, int);
35 
36 
37 void SampledConv1D(float *Dest, int DestStride, const float *Src,
38  int SrcStride, filter Filter, boundaryext Boundary, int N,
39  int nStart, int nStep, int nEnd);
40 
41 void SeparableConv2D(float *Dest, float *Buffer, const float *Src,
42  filter FilterX, filter FilterY, boundaryext Boundary,
43  int Width, int Height, int NumChannels);
44 
45 filter MakeFilter(float *Coeff, int Delay, int Length);
46 
47 filter AllocFilter(int Delay, int Length);
48 
49 int IsNullFilter(filter Filter);
50 
51 filter GaussianFilter(double Sigma, int R);
52 
53 boundaryext GetBoundaryExt(const char *Boundary);
54 
55 
56 /* Macro definitions */
57 
59 #define FreeFilter(Filter) (Free((Filter).Coeff))
60 
72 #define Conv1D(Dest, DestStride, Src, SrcStride, Filter, Boundary, N) \
73  (SampledConv1D(Dest, DestStride, Src, SrcStride, Filter, Boundary, N, \
74  0, 1, N - 1))
75 
76 
77 extern const filter NullFilter;
78 
79 #endif /* _CONV_H_ */