我正在尝试理解oepncv XML haar分类器,如下所示:
<_>
<!-- tree 0 -->
<_>
<!-- root node -->
<feature>
<rects>
<_>3 7 14 4 -1.</_>
<_>3 9 14 2 2.</_></rects>
<tilted>0</tilted></feature>
<threshold>4.0141958743333817e-003</threshold>
<left_val>0.0337941907346249</left_val>
<right_val>0.8378106951713562</right_val></_></_>
如原始论文所述,应将阈值与特征(积分图像)的总和进行比较。但是,图像的像素值应为0 - 255(灰度图像)。一个特征的总和怎么可能那么小(例如在这个特征中,阈值是0.004014 ......)?你们能给我一些指导来理解吗?
感谢您的帮助!
答案 0 :(得分:5)
这个问题已经解决了。 opencv团队发布的用于实现该算法的论文提到他们实际上使用以下等式对像素进行归一化:
Pixel = (Pixel_old - average)/(2*sigma)
Pixel是每个像素的标准化值, Pixel_old是原始整数值(0-255) 平均值是检测窗口的平均值(应该是20 * 20窗口) sigma是20 * 20窗口中像素的标准偏差。