// hat.h: Histogram Array Transform descriptors // // Copyright (C) 2005-2013, Stephen Milborrow #ifndef STASM_HAT_H #define STASM_HAT_H namespace stasm { class Hat { public: void Init_( // init the HAT internal grad mat and indices const Image& img, // in: image ROI scaled to the current pyr lev const int patchwidth); // in: patch will be patchwidth x patchwidth pixs VEC Desc_( // return HAT descriptor, Init_ must be called first const double x, // in: x coord of center of patch (may be off image) const double y) // in: y coord of center of patch (may be off image) const; Hat() {} // constructor private: // All these private variables are initialized by Hat::Init_. They must // be initialized if the image changes or if the patch width changes. // (In a Stasm context, that means they must be initialized once per // pyramid level. Also, for safe use of OpenMP in SuggestShape_, // they must not change unless the pyramid level changes.) int patchwidth_; // image patch is patchwidth x patchwidth pixels MAT magmat_; // grad mag of the current image (face ROI) MAT orientmat_; // grad orient of the current image (face ROI) vec_int row_indices_; // histogram indices: these map a patch row,col vec_double row_fracs_; // to the corresponding histogram grid row,col vec_int col_indices_; vec_double col_fracs_; vec_double pixelweights_; // weight pixel by closeness to center of patch //DISALLOW_COPY_AND_ASSIGN(Hat); }; // end class Hat } // namespace stasm #endif // STASM_HAT_H