3 template <
typename TPIXEL,
typename TCHANNEL>
class TDoGSharpen;
6 #ifndef TDOGSHARPEN_HPP_
7 #define TDOGSHARPEN_HPP_
16 #include "../typedefs.hpp"
17 #include "../bitmaps/TBitmap.hpp"
21 template <
typename TPIXEL,
typename TCHANNEL>
34 force = (force + 1) / (1.0000001 - force);
37 if (this->
kernel == NULL) {
return; }
40 double t1 = 1 / (sigma * sigma * 2);
42 double t3 = force * t2 / 0.3141592654e1;
57 tmp = t3 * (exp(-t1 * (r2)) * k2 - exp(-t2 * r2));
58 if (tmp >= 0) { posSum += tmp; }
else { negSum += tmp; }
59 this->
kernel[j + this->kernelWidth * i] = tmp;
63 double normDelta = (area) ? -(posSum + negSum - 1) / posSum : -(posSum + negSum) / posSum;
64 double * ptr = this->
kernel;
66 while (ptr < ptrEnd) {
68 *ptr += *ptr * normDelta;