diff --git a/openbr/plugins/normalize.cpp b/openbr/plugins/normalize.cpp index 449ca61..8eb40df 100644 --- a/openbr/plugins/normalize.cpp +++ b/openbr/plugins/normalize.cpp @@ -64,6 +64,8 @@ class NormalizeTransform : public UntrainableTransform BR_PROPERTY(int, alpha, 1) Q_PROPERTY(int beta READ get_beta WRITE set_beta RESET reset_beta STORED false) BR_PROPERTY(int, beta, 0) + Q_PROPERTY(bool squareRoot READ get_squareRoot WRITE set_squareRoot RESET reset_squareRoot STORED false) + BR_PROPERTY(bool, squareRoot, false) public: /*!< */ @@ -75,14 +77,30 @@ public: private: BR_PROPERTY(NormType, normType, L2) + static void signedSquareRoot(Mat &m) + { + for (int i=0; i(i, j); + val = sqrtf(fabsf(val)) * (val >= 0 ? 1 : -1); + } + } + void project(const Template &src, Template &dst) const { - if (!ByRow) normalize(src, dst, alpha, beta, normType, CV_32F); + if (!ByRow) { + normalize(src, dst, alpha, beta, normType, CV_32F); + if (squareRoot) + signedSquareRoot(dst); + } + else { dst = src; for (int i=0; i