积分图计算方法

3. 积分图

3.1 积分图的概念

在获取了矩形特征后,要计算矩形特征的值。Viola等人提出了利用积分图求特征值的方法。积分图的概念可用图3表示:

坐标A(x,y)的积分图是其左上角的所有像素之和(图中的阴影部分)。定义为:

    

其中ii(x,y)表示积分图,i(x,y)表示原始图像,对于彩色图像,是此点的颜色值;对于灰度图像,是其灰度值,范围为0~255

 

在上图中,A(x,y)表示点(x,y)的积分图;s(x,y)表示点(x,y)的y方向的所有原始图像之和。积分图也可以用公式(2)和公式(3)得出:

 

3.2 利用积分图计算特征值

 

3.3 计算特征值

由上一节已经知道,一个区域的像素值,可以由该区域的端点的积分图来计算。由前面特征模板的特征值的定义可以推出,矩形特征的特征值可以由特征端点的积分图计算出来。以“两矩形特征”中的第二个特征为例,如下图,使用积分图计算其特征值:




  1. void fastIntegral(unsigned char* inputMatrix, unsigned long* outputMatrix, int width, int height){  
  2.     unsigned long *columnSum = new unsigned long[width]; // sum of each column  
  3.     // calculate integral of the first line  
  4.     for(int i=0;i<width;i++){  
  5.         columnSum[i]=inputMatrix[i];  
  6.         outputMatrix[i] = inputMatrix[i];  
  7.         if(i>0){  
  8.             outputMatrix[i] += outputMatrix[i-1];  
  9.         }  
  10.     }  
  11.     for (int i=1;i<height;i++){  
  12.         int offset = i*width;  
  13.         // first column of each line  
  14.         columnSum[0] +=inputMatrix[offset];  
  15.         outputMatrix[offset] = columnSum[0];  
  16.          // other columns   
  17.         for(int j=1;j<width;j++){  
  18.             columnSum[j] += inputMatrix[offset+j];  
  19.             outputMatrix[offset+j] = outputMatrix[offset+j-1] + columnSum[j];   
  20.         }  
  21.     }  
  22.     return ;  

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值