10年后再看Robust Real-Time Face Detection(二) 之积分图

   我们知道, 如果采用Naive 的方法去计算矩形特征值是相当的麻烦和不现实的。 所以论文中作者引用了积分图的概念, 那么这样我们只需要常数的时间内就可以计算任何一个矩形区域覆盖的像素灰度值之和。 那么什么是积分图(Integral Image)呢?

   积分, 故名思议, 在离散域中就是求和之意。 对一幅图像而言,  该图像在(x, y)处的积分值就是该位置处左上方所有的像素求和,得到的值在赋给这一位置处(注意, 对图像而言, 坐标原点是在图像的最左上角处, 水平位x轴, 竖直方向为y 轴)。数学表达式如下:


其中, ii (x, y) 是积分图在(x, y)处的值。 i (x, y) 是原始图像。 该公式说明, 给定图像i (x, y), 我们可以计算与此幅图像对应的唯一的积分图ii (x, y)。 注意积分图存在的意义就在于允许我们快速的计算出某一矩形覆盖的所有元素之和。

10年后再看Robust Real-Time Face Detection(二) 之积分图_第1张图片



上面只是给出了积分图的定义。 实际上在编程计算积分图的时候, 我们用到了如下的递归公式(建议一定要理解, 画图表示一下就明白了):




其中, s(x, y)的含义是对原图像按行累加和(cumulative row sum), 注意我们定义边界条件s(x,−1) =0, ii (−1, y) = 0)。也就是说, 我们只需要在原始图像上一轮循环就可以计算出原始图像的积分图, 非常高效。


一旦我们求出了积分图, 我们 就可以快速求出任何一个矩形匡覆盖的像素值之和, 当然我们也就可以快速的求出矩形特征值(只是矩形的元素求和后, 再相加减, 就可以求出相应的矩形特征值):

10年后再看Robust Real-Time Face Detection(二) 之积分图_第2张图片


 为了更好的理解计算的过程, 下面给出找到的一个具体的例子(注意积分图边界上补0):


上图中, 左边的为原始图像, 右边的图像为从左边原始图像计算得到积分图像(只需对原始图像A先行求和(逐行累加)的B, 在对得到的B图像逐列累加即可得到积分图像)。 注意积分图左边界和上边界上补的0值。

不难求出, 上面那个矩形的面积为: 15 + 0 - 10 - 0 = 5

下面那个矩形面积: 30 + 0 - 0 - 17 = 13(具体分析方法如下):


10年后再看Robust Real-Time Face Detection(二) 之积分图_第3张图片




    

你可能感兴趣的:(10年后再看Robust Real-Time Face Detection(二) 之积分图)