icvGetAuxImages和cvIntegral



/*
 * icvGetAuxImages
 *作用:计算原图像的积分图,旋转积分图,平方积分图和归一化因子
 */
static
void icvGetAuxImages( CvMat* img,                  //原图像
                      CvMat* sum,                  //所求积分图
                      CvMat* tilted,               //所求旋转积分图
                      CvMat* sqsum,                //所求平方和积分图
                      float* normfactor )          //所求的归一化因子
{
    CvRect normrect;
    int p0, p1, p2, p3;
    sum_type   valsum   = 0;
    sqsum_type valsqsum = 0;
    double area = 0.0;

    cvIntegral( img, sum, sqsum, tilted );         //积分图的计算函数,具体内容如下
    normrect = cvRect( 1, 1, img->cols - 2, img->rows - 2 );
    CV_SUM_OFFSETS( p0, p1, p2, p3, normrect, img->cols + 1 )

    area = normrect.width * normrect.height;
    valsum = ((sum_type*) (sum->data.ptr))[p0] - ((sum_type*) (sum->data.ptr))[p1]
           - ((sum_type*) (sum->data.ptr))[p2] + ((sum_type*) (sum->data.ptr))[p3];
    valsqsum = ((sqsum_type*) (sqsum->data.ptr))[p0]
             - ((sqsum_type*) (sqsum->data.ptr))[p1]
             - ((sqsum_type*) (sqsum->data.ptr))[p2]
             + ((sqsum_type*) (sqsum->data.ptr))[p3];

    /* sqrt( valsqsum / area - ( valsum / are )^2 ) * area */
    (*normfactor) = (float) sqrt( (double) (area * valsqsum - (double)valsum * valsum) );
}

下面的内容转载自http://blog.sina.com.cn/s/blog_659f58370100i1k2.html。

 void cvIntegral( const CvArr* image, CvArr* sum, CvArr* sqsum=NULL, CvArr* tilted_sum=NULL );

image
输入图像, W×H, 单通道,8位或浮点 (32f 或64f).
sum
积分图像,W+1×H+1(译者注:原文的公式应该写成(W+1)×(H+1),避免误会),单通道,32位整数或 double 精度的浮点数(64f).
sqsum
对象素值平方的积分图像,W+1×H+1(译者注:原文的公式应该写成(W+1)×(H+1),避免误会),单通道,32位整数或 double 精度的浮点数 (64f).
tilted_sum
旋转45度的积分图像,单通道,32位整数或 double 精度的浮点数 (64f).

函数 cvIntegral 计算一次或高次积分图像:

sum(X,Y)=sumx
sqsum(X,Y)=sumx
tilted_sum(X,Y)=sumy

利用积分图像,可以计算在某象素的上-右方的或者旋转的矩形区域中进行求和、求均值以及标准方差的计算,并且保证运算的复杂度为O(1)。例如:


sumx1<=ximage(x,y)=sum(x2,y2)-sum(x1,y2)-sum(x2,y1)+sum(x1,x1)

因此可以在变化的窗口内做快速平滑或窗口相关等操作

 

http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_cv.cn.htm



你可能感兴趣的:(opencv资料)