在描述Viola-Jones对象检测框架的论文中(Viola和Jones的实时人脸检测),提到如下内容:
用于训练的所有示例子窗口都进行了方差标准化,以尽量减少不同光照条件的影响。
我的问题是“他们使用了什么工具来标准化图像?”
我并不是在寻找Viola & Jones使用的特定工具,而是在寻找一个能产生几乎相同输出的类似工具。我已经跟随了很多haar训练教程(试图检测手),但尚未能输出一个好的检测器(xml)。
我尝试联系了作者,但至今仍未得到回应。
回答:
一种可能的方法是假设所有元素符合正态分布,进行简单标准化处理。
首先找到平均值(Mu)和标准差(S):
Mu = 1/N * Sum(a[i][j]) 对每个i,j S = sqrt(1/(N-1) * Sum((a[i][j] - Mu)^2)) 对每个i,j (这里N是像素数量,在Viola Jones案例中是20*20)
从中,我们可以使用标准正态分布公式(通过标准化所有值)来标准化每个像素的值:
a'[i][j] = (a[i][j] - Mu) / S
另一种方法是向量标准化,其基本步骤如下:
- 找到向量的长度:
|a| = sqrt(sum (a[i][j]*a[i][j])) 对每个i,j
- 赋值:
a'[i][j] = a[i][j] / |a|