Definition at line 69 of file MakeGaussian1d.h. References Gauss(), and Hermite(). Referenced by MakeGaussian1d(). 00070 { 00071 double* filter = new double[fsize]; 00072 00073 fsize = fsize/2; /* adjust to one side ,don't count the centre */ 00074 double* center = filter + fsize; 00075 00076 /* calc filter */ 00077 int i; 00078 double sum = Gauss(0.0, sigma); 00079 center[0] = sum; 00080 00081 for (i=1; i<=fsize; i++) { 00082 double val = Gauss(i, sigma); 00083 sum += val+val; 00084 center[i] = val; 00085 center[-i] = val; 00086 } 00087 00088 /* normalize to sum=1.0 */ 00089 for (i=-fsize; i<=fsize; i++) 00090 center[i] /= sum; 00091 00092 /* replace by Hermite polynomial of order deri */ 00093 if (deri > 0) 00094 for (i=-fsize; i<=fsize; i++) 00095 center[i] = Hermite(i, center[i], sigma, deri); 00096 00097 fsize = fsize * 2 + 1; /* expand to 2-sided width */ 00098 return filter; 00099 }
Here is the call graph for this function:
|