From b249c3fb4794c6e82584059a7e8094c2b07ffc35 Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Thu, 4 Apr 2013 18:28:55 -0400 Subject: [PATCH] trying kernel hash algorithm --- openbr/plugins/algorithms.cpp | 2 +- openbr/plugins/hash.cpp | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/openbr/plugins/algorithms.cpp b/openbr/plugins/algorithms.cpp index 766963e..9fdf0b6 100644 --- a/openbr/plugins/algorithms.cpp +++ b/openbr/plugins/algorithms.cpp @@ -43,7 +43,7 @@ class AlgorithmsInitializer : public Initializer Globals->abbreviations.insert("GenderEstimation", "GenderClassification"); Globals->abbreviations.insert("AgeEstimation", "AgeRegression"); Globals->abbreviations.insert("FaceRecognition2", "{PP5Register+Affine(128,128,0.25,0.35)+Cvt(Gray)}+(Gradient+Bin(0,360,9,true))/(Blur(1)+Gamma(0.2)+DoG(1,2)+ContrastEq(0.1,10)+LBP(1,2,true)+Bin(0,10,10,true))+Merge+Integral+RecursiveIntegralSampler(4,2,8,Center(Hellinger)+LDA(.95)+Normalize(L1)+Div(3)+ProductQuantization(3,L1,true)[fraction=0.2]):RecursiveProductQuantization"); - Globals->abbreviations.insert("FaceRecognitionHoG", "{PP5Register+Affine(128,128,0.25,0.35)+Cvt(Gray)}+Blur(1)+Gamma(0.2)+DoG(1,2)+ContrastEq(0.1,10)+LBP(1,2,true)+Bin(0,10,10,true)+Merge+Integral+RecursiveIntegralSampler(4,2,8,LDA(.95)+Normalize(L1)+Div(3)+ProductQuantization(3,L1,true)[fraction=0.2]):RecursiveProductQuantization"); + Globals->abbreviations.insert("FaceRecognitionHoG", "{PP5Register+Affine(128,128,0.25,0.35)+Cvt(Gray)}+Gradient+Bin(0,360,9)+KernelHash(9,81)+Bin(0,81,81,true)+Merge+Integral+RecursiveIntegralSampler(4,2,8,LDA(.95)+Normalize(L1)+Div(3)+ProductQuantization(3,L1,true)[fraction=0.2]):RecursiveProductQuantization"); // Generic Image Processing Globals->abbreviations.insert("SIFT", "Open+KeyPointDetector(SIFT)+KeyPointDescriptor(SIFT):KeyPointMatcher(BruteForce)"); diff --git a/openbr/plugins/hash.cpp b/openbr/plugins/hash.cpp index e3f1a79..179b547 100644 --- a/openbr/plugins/hash.cpp +++ b/openbr/plugins/hash.cpp @@ -18,6 +18,8 @@ #include "openbr_internal.h" #include "openbr/core/qtutils.h" +using namespace cv; + namespace br { @@ -54,6 +56,40 @@ private: BR_REGISTER(Transform, CryptographicHashTransform) +/*! + * \ingroup transforms + * \brief Kernel hash + * \author Josh Klontz \cite jklontz + */ +class KernelHashTransform : public UntrainableTransform +{ + Q_OBJECT + Q_PROPERTY(uchar dimsIn READ get_dimsIn WRITE set_dimsIn RESET reset_dimsIn STORED false) + Q_PROPERTY(uchar dimsOut READ get_dimsOut WRITE set_dimsOut RESET reset_dimsOut STORED false) + BR_PROPERTY(uchar, dimsIn, 8) + BR_PROPERTY(uchar, dimsOut, 7) + + void project(const Template &src, Template &dst) const + { + if (src.m().type() != CV_8UC1) + qFatal("Expected 8UC1 input."); + + dst = Mat::zeros(src.m().rows, src.m().cols, CV_8UC1); + const uchar *srcData = src.m().data; + uchar *dstData = dst.m().data; + const int step = src.m().cols; + for (int i=0; i