Commit b249c3fb4794c6e82584059a7e8094c2b07ffc35

Authored by Josh Klontz
1 parent 048d7085

trying kernel hash algorithm

openbr/plugins/algorithms.cpp
... ... @@ -43,7 +43,7 @@ class AlgorithmsInitializer : public Initializer
43 43 Globals->abbreviations.insert("GenderEstimation", "GenderClassification");
44 44 Globals->abbreviations.insert("AgeEstimation", "AgeRegression");
45 45 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");
46   - 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");
  46 + 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");
47 47  
48 48 // Generic Image Processing
49 49 Globals->abbreviations.insert("SIFT", "Open+KeyPointDetector(SIFT)+KeyPointDescriptor(SIFT):KeyPointMatcher(BruteForce)");
... ...
openbr/plugins/hash.cpp
... ... @@ -18,6 +18,8 @@
18 18 #include "openbr_internal.h"
19 19 #include "openbr/core/qtutils.h"
20 20  
  21 +using namespace cv;
  22 +
21 23 namespace br
22 24 {
23 25  
... ... @@ -54,6 +56,40 @@ private:
54 56  
55 57 BR_REGISTER(Transform, CryptographicHashTransform)
56 58  
  59 +/*!
  60 + * \ingroup transforms
  61 + * \brief Kernel hash
  62 + * \author Josh Klontz \cite jklontz
  63 + */
  64 +class KernelHashTransform : public UntrainableTransform
  65 +{
  66 + Q_OBJECT
  67 + Q_PROPERTY(uchar dimsIn READ get_dimsIn WRITE set_dimsIn RESET reset_dimsIn STORED false)
  68 + Q_PROPERTY(uchar dimsOut READ get_dimsOut WRITE set_dimsOut RESET reset_dimsOut STORED false)
  69 + BR_PROPERTY(uchar, dimsIn, 8)
  70 + BR_PROPERTY(uchar, dimsOut, 7)
  71 +
  72 + void project(const Template &src, Template &dst) const
  73 + {
  74 + if (src.m().type() != CV_8UC1)
  75 + qFatal("Expected 8UC1 input.");
  76 +
  77 + dst = Mat::zeros(src.m().rows, src.m().cols, CV_8UC1);
  78 + const uchar *srcData = src.m().data;
  79 + uchar *dstData = dst.m().data;
  80 + const int step = src.m().cols;
  81 + for (int i=0; i<src.m().rows; i++)
  82 + for (int j=0; j<src.m().cols-1; j++) {
  83 + dstData[i*step+j] = (uint(pow(float(dimsIn),1.f))*srcData[i *step+j]
  84 + /*+ uint(pow(float(dimsIn),2.f))*srcData[(i+1)*step+j]*/
  85 + + uint(pow(float(dimsIn),0.f))*srcData[i *step+(j+1)]
  86 + /*+ uint(pow(float(dimsIn),0.f))*srcData[(i+1)*step+(j+1)]*/) % dimsOut;
  87 + }
  88 + }
  89 +};
  90 +
  91 +BR_REGISTER(Transform, KernelHashTransform)
  92 +
57 93 } // namespace br
58 94  
59 95 #include "hash.moc"
... ...