积分图像是什么
积分图像是一种在图像中快速计算矩形区域和的方法,在1984年由Crow提出。一旦积分图像首先被计算出来,就可以在常量时间内计算图像中任意大小矩形区域的和。在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。
积分图像原理
在一个积分图像中,一个像素的值是其左边和上边的像素的值的和,我们举个例子来说明。
上图左边是原始的输入图像数据,右边是其对应的积分图像。可以看出积分图像的左边和顶部都扩展了一个像素单位,多出来的格子中填0,以便计算积分图像像素值。我们假设坐标(x,y)表示像素的行号和列号,下标从1开始,那么位于(2,1)的像素在积分图像中的位置会变成(3,2),同理,坐标(2,2)的像素在积分图像中位置变成(3,3)。
下面描述用IntImage(x,y)表示积分图像中坐标为x,y的像素的值,用RawImage(x,y)表示原始图像中坐标为x,y的像素的值。
我们从IntImage(2,2)开始看,这个点对应RawImage(1,1),左边和上边都没有像素,因此其值就是RawImage(1,1) = 1。
对于IntImage(2,3),其对应RawImage(1,2),左边有像素,上边没有,其值是左边的RawImage(1,1) + RawImage(1,2) = 1 + 5 = 6。
对于IntImage(3,2),对应RawImage(2,1),左边没有像素,上边有RawImage(1,1),因此其值就是RawImage(1,1) + RawImage(2,1) = 1 + 2 = 3。
对于IntImage(3,3),对应RawImage(2,2),左边有RawImage(2,1),上边有RawImage(1,2),加上左上角的RawImage(1,1),因此其值是RawImage(1,1) + RawImage(1,2) + RawImage(2,1) +RawImage(2,2)= 1 + 5 + 2 + 4 = 12。
上面这种方式说明的是积分图像像素的值和原始图像值的对应关系。
实际在使用积分图像时,如果我们想要计算某块区域的像素值的和,如下图浅蓝色区域:
我们以几何的方式来理解积分图像某个点的值的意义:
坐标 - 值 | 值的几何意义 |
(3,5)- 22 | 以点为矩形右下点,向左和向上走所围出的矩形的像素值的和,即 左上:(1,1), 左下(3,1) 右上:(1,5), 右下(3,5) 这四个点围出的矩形中所有像素的值的和,我们可以将这个和类比为矩形面积(不是用长*宽,而是像素值求和代表面积值) |
(3,3) - 10 | 以点为矩形右下点,向左和向上走所围出的矩形的像素值的和,即 左上:(1,1), 左下(3,1) 右上:(1,3), 右下(3,3) 这四个点围出的矩形中所有像素的值的和,我们可以将这个和类比为矩形面积(不是用长*宽,而是像素值求和代表面积值) |
(5,3)- 20 | 以点为矩形右下点,向左和向上走所围出的矩形的像素值的和,即 左上:(1,1), 左下(5,1) 右上:(1,3), 右下(5,3) 这四个点围出的矩形中所有像素的值的和,我们可以将这个和类比为矩形面积(不是用长*宽,而是像素值求和代表面积值) |
(5,5)- 46 | 以点为矩形右下点,向左和向上走所围出的矩形的像素值的和,即 左上:(1,1), 左下(5,1) 右上:(1,5), 右下(5,5) 这四个点围出的矩形中所有像素的值的和,我们可以将这个和类比为矩形面积(不是用长*宽,而是像素值求和代表面积值) |
我们以类比于矩形面积的方式来看,记点(x,y)的面积为S(x,y),现在要求蓝色区域的面积S,从图形上可以看出: S = S(5,5) - S(3,5) - S(5,3) + S(3,3) = 14(其中S(3,3)因为减了两次,所以加回来一次)。
对于(5,5)这个点,想要得到单个点的值P,同样可以按照面积的理解方式来计算:
P = S(5,5) - S(4,5) - S(5,4) + S(4,4) = 4