Ken*_* Ma 3 c++ opencv object-detection
我试图理解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></_></_>
Run Code Online (Sandbox Code Playgroud)
如原始论文中所述,应将阈值与特征(积分图像)的总和进行比较.但是,图像的像素值应为0 - 255(灰度图像).一个特征的总和怎么可能那么小(例如在这个特征中,阈值是0.004014 ......)?你们能给我一些指导来理解吗?
谢谢您的帮助!
这个问题已经解决了.opencv团队发布的用于实现该算法的论文提到他们实际上使用以下等式对像素进行归一化:
Pixel = (Pixel_old - average)/(2*sigma)
Run Code Online (Sandbox Code Playgroud)
像素是每个像素的归一化值,Pixel_old是原始整数值(0-255)平均值是检测窗口的平均值(它应该是20*20窗口)西格玛是20*20像素的标准差窗口.