{
featureMinNumRect = 2;
featureMaxNumRect = 4; // number of rectangle from 2 to 4
featureNum = 50; // number of all weaker classifiers, i.e,feature pool
rOuterPositive = 4; // radical scope of positive samples
rSearchWindow = 25; // size of search window
muPositive = vector<float>(featureNum, 0.0f);
muNegative = vector<float>(featureNum, 0.0f);
sigmaPositive = vector<float>(featureNum, 1.0f);
sigmaNegative = vector<float>(featureNum, 1.0f);
learnRate = 0.85f; // Learning rate parameter
}
CompressiveTracker::~CompressiveTracker(void)
{
}
//通过积分图来计算采集到的每一个样本的harr特征,这个特征通过与featuresWeight来相乘
//就相当于投影到随机测量矩阵中了,也就是进行稀疏表达了。这里不明白的话,可以看下
//论文中的图二,就比较直观了。
//还有一点:实际上这里采用的不属于真正的harr特征,我博客中翻译有误。这里计算的是
//在box中采样得到的不同矩形框的灰度加权求和(当权重是负数的时候就是灰度差)
//当为了表述方便,我下面都用harr特征来描述。
//每一个样本有50个harr特征,每一个harr特征是由2到3个随机选择的矩形框来构成的,
//对这些矩形框的灰度加权求和作为这一个harr特征的特征值。
void CompressiveTracker::HaarFeature(Rect& _objectBox, int _numFeature)
/*Description: compute Haar features
Arguments:
-_objectBox: [x y width height] object rectangle
-_numFeature: total number of features. The default is 50.
*/
{
//_numFeature是一个样本box的harr特征个数,共50个。而上面说到,
//每一个harr特征是由2到3个随机选择的矩形框(vector<Rect>()类型)来构成的。
features = vector<vector<Rect>>(_numFeature, vector<Rect>());
//每一个反应特征的矩形框对应于一个权重,实际上就是随机测量矩阵中相应的元素,用它来与对应的特征
//相乘,表示以权重的程度来感知这个特征。换句话说,featuresWeight就是随机测量矩阵。
//这个矩阵的元素的赋值看论文中的第二部分。或者也可以参考下我的博文:(呵呵,好像博文也没说清楚)
//http://blog.csdn.net/zouxy09/article/details/8118360