hat.h
1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// 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