24x24窗口中的haar like features数量

时间:2016-10-22 23:57:43

标签: image-processing viola-jones

参考以下链接

Viola & Jones Face Detection

上述链接包含有关与不同模板对应的haar功能数量的计算(以下摘录自链接)。 enter image description here

我没有得到那些(43200,27600,43200,27600,20736)精确计算的结果。有人能以一种简单的方式向我解释这个吗?

1 个答案:

答案 0 :(得分:1)

要理解,请看一下算法#1。对于第一个模式(a),以下两行(文章中的5和6)给出了解释

for all(i,j) such 1<=i<=24 and 1<=j<=24:
  for all(h,w) such that i+h-1<=24 and j+2w-1<=24:

这意味着您将采用左上角的所有组合(i为顶部,j为左侧),然后是宽度(w)和高度的所有组合(h)将适合24x24。

该算法还将使用宽度和高度的所有组合(1x4,1x6,1x8,...,1x24,2x2,2x4,2x6,2x8,...,2x24,3x2,3x4,3x6,... ,最高24x24)。只要宽度是2的倍数(由第6行中的2w指定)。

最小的图案(2像素宽,1像素高)适合24 * 23 = 552个位置(23个水平位置和24个垂直位置)。

例如,在某些时候,您将拥有7x10图案(高度为7像素,宽度为10像素)。它适合18 x 15 = 270个位置(18个垂直位置和15个水平位置)。

最大的矩形(24x24像素)将由12个白色列和12个黑色列组成。它只适合一个位置(整个图像)。

如果对所有可能尺寸的所有位置求和,则获得数字。

要获得第一个数字(对于模式a),以下程序(我没有优化它!但它应该很容易理解)打印43200

# Pattern A
total = 0
for i in range(1,25):     # 1 <= i <= 24
  for j in range(1,25):     # 1 <= j <= 24
    for w in range(1,13):     # 2*w=2,4,6,...24
      for h in range(1,25):     # h=1,2,...,24
        if (i+h-1<=24) and (j+2*w-1<=24):
          total += 1
print total

其他模式的解释相似。