基于OpenCV的人脸检测 - 毕设论文 - 图文(6)

2019-05-27 17:57

点的像素灰度值,S(x,y)??I(x,y)为输入图像中像素点(x,y)所在列纵坐标不超过该

y?y??点的所有像素灰度值之和(图5-4中浅灰色区域),则图像I的积分图可按如下递推公式计算:

?S(x,y)?S(x,y?1)?i(x,y)ii(x,y)?ii(x?1,y)?S(x,y) (5.4)

其中x和y从0开始,定义s(x,?1)?0,ii(?1,y)?0。

在得到图像I的积分图像后,就可以方便快捷的计算图像I中任意矩形内所有像素灰度积分,如图5-4中,点1的积分图像ii1的值为:

ii1=区域A的像素值(5.5)

(x,y)

图5-5 点(x,y)处的积分图像值

下面是积分图矩阵的实现代码片断: for(int x=0;x

double y_yuv =(double)((uchar*)(mar->data.ptr+mat->step*x))[y];

//如设该点亮度值为d,则该点左侧点的亮度和为c,该点上侧点的亮度和

为b,左上侧点的亮度和为a,则该点的亮度和为d+b+c-a if (x>0&&y>0)

y_yuv = y_yuv - mymDoubleGet(smat,x-1,y-1);

if(x>0)

y_yuv = y_yuv + mymDoubleGet(smat,x-1,y);

if(y>0)

y_yuv = y_yuv + mymDoubleGet(smat,x,y-1); //设置该点的亮度和

mymDoubleGet(smat,x,y,y_yuv);

26

}

for(int i=0;i

int h=0;

double feature= featureValue(&(Sclissifier->sc[i],smat);

if(feature* Sclissifier->sc[i].p< Sclissifier->sc[i].p* Sclissifier->sc[i].h) h=1;

double alpha=log10(1.0/ Sclissifier->bt[i]); sumLeft+=alpha*(double)h; sumRight+=alpha*thresh; }

myReleaseMat(smat0; if(sumLeft>= sumRight) return 1; else

return 0;

5.4 Haar特征值计算

Haar 型特征是Viola 等提出的一种简单矩形特征,因类似于Haar 小波而得名。如图 2 所示,Haar 型特征的定义是黑色矩形和白色矩形在图像子窗口中对应的区域的灰度级总和之差,可见,它反映了图像局部的灰度变化。Viola 等用到的Haar 型特征共有4 种(图5-7.a~d),我们又增加了8 种(图 2-7.e~l)。

图像子窗口 27

图5-7. Haar 特征。(a, b, g, h)两矩形特征;(c, f) 三矩形特征;(d)四矩形特征;(e)“回”字形特征;(i,

j, k, l)“L”形特征。

Haar特征是用积分图像的特点来计算某一矩形区域内的特征值。如计算下图中D区域内的像素之和:

图5-8 应用积分图像计算区域像素值

假设已经求出某一图像的积分图像,根据积分图像的特点,可以迅速计算出原图像中D区域内的像素的和的值。

SD?f1?f4?f2?f3

其中SD是原图像中D区域内的像素的和的值,f1、f2、f3和f4分别是积分图像中点1和2、3和4的值。

从上式我们可以看出,利用积分图像来计算任意区域内的像素点的和的值的过程快速且计算时间固定。利用这一特点设计出的haar特征提取快速且机器计算时间固定。

28

正是由于haar特征提取速度够快,才使得Adaboost检测算法称为当前最快的检测算法之一。

我们将使用简单矩形组合作为我们的特征模板。这类特征模板是由两个或多个全等的矩形相邻组合而成,特征模板内有黑色和白色两种矩形,并且两种颜色依次交错。为了计算特征模板的特征值,我们事先规定白色像素点值为+1,黑色像素点值为-1,那么特征模板的特征值计算为模板内白色矩形像素和加上黑色矩形像素和。下面列举了几种最常用的特征模板:

(1)边缘特征 (2)扩展的边缘特征

(3)线形特征 (4)扩展的线形特征

(5)中心特征 (6)扩展的中心特征

图5-8 几种常见的特征模板

下面以特征模板(5)为例利用积分图像计算特征值,过程如下: 区域(A)特征值为:ii4?ii1?(ii2?ii3)?(ii8?ii5?(ii6?ii7)) 区域(B)特征值为:ii8?ii5?(ii6?ii7)

综合上面两个式子可以得到特征模板(5)的特征值为: 1?区域(A)特征值+(-1) ?区域(B)特征值

=ii4?ii1?(ii2?ii3)?(ii8?ii5?(ii6?ii7))?(ii8?ii5?(ii6?ii7)) ?(ii4?ii1?(ii2?ii3))?2(ii8?ii5?(ii6?ii7))

29

(1,1) 5 6 B 7 8 A 图5-8 特征模板(5)的特征值计算

由上述计算过程可以看出,利用积分图像的矩形特征的特征值计算只与特征顶点的积分图值有关,而与图像坐标值无关。因此,不论此矩形特征的尺度如何,特征值的计算所消耗的时间都是一个常量,而且都只是简单的加减运算。正是这个原因,大大提高了Adaboost分类器的检测速度。

30


基于OpenCV的人脸检测 - 毕设论文 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:五年级品社下册

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: