图4 人脸定位算法流程图
4.1.1 视频图像的灰度化
我们之所以需要先将图像进行数字图像的格式转换,是因为本系统的算法主要是对灰度图像进行的。
欧洲的电视系统使用的一种彩色空间叫YCbCr(也称为YUV)[12]。其中表示亮度用Y,表示色差用Cb和Cr,可以把影像的色彩与饱和度描述清楚,对像素的颜色进行规定。构成彩色的两个分量分别是Cb和Cr。输入信号中红色的部分与亮度值Y中的差异可以用Cr来表示。输入信号中蓝色的部分与亮度值Y中的差异需要用Cb来表示。YCbCr彩色空间中的色度信号Cr和Cb与亮度信号Y是分开的。我们需要的灰度图像就是因为只存在Y信号分量而不存在Cr和Cb信号分量而产生的。YCbCr4:2:0、YCbCr4:1:1、YCbCr4:2:2和YCbCr4:4:4是YCrCb的几种主要的采样格式。本文采用的是YCbCr4:2:2。因为灰度图像中只存在Y分量,所以我们只需要对Y分量进行提取和处理。因为要对Y分量进行提取,所以我们先对YCbCr进行数据结构的分析。
YUV格式通常具有打包(packed)格式和平面(planar)格式两大类。将YUV分量放在相同的数组中的是打包(packed)格式,宏像素(macro-pixel)一般是由几个相邻的像素组成的;而平面(planar)格式像三文平面一样,把YUV的三个分量分别存放在三个数组中。YUV的各分量会通过下标表示,第一个像素的YUV分量表示为Y0、U0、V0,第二个像素的YUV分量表示为Y1、U1、Vl,由此类推。
YCbCr 4:2:2格式的色差信道的抽样率只有亮度信道的一半。在非压缩的8比特量化图像中,需要4字节内存来存放每个由两个水平方向相邻像素组成的宏像素。
四个像素为: [Y0U0V0][Y1U1V1][Y2U2V2][Y3U3V3]
存放的码流为: Y0 U0 Yl V1 Y2 U2 Y3 V3
映射出的像素点为: [Y0U0Vl][Y1U0Vl][Y2U2V3][Y3U2V3]
如果采用打包格式的YUV,则Y、Cr、Cb会被放入同一个数组中,相邻的像素会组成一个宏像素。这样Y分量存放在帧首地址CurrentFrame中,Cb分量存放在CurrentFrame+l中,Cr存放在CurrentFrame+2中,由此类推则相邻的两个Y分量的地址偏移量是2,相邻的两个Cb分量的地址偏移量是4,相邻的两个Cr分量的地址偏移量是4。这样我们就可以把Y与Cb和Cr分开。我们要对灰度图像进行处理,只对Y分量进行处理就可以了。我们只要把Cb和Cr分量的数值全都设为128,就可以在CCS中显示出灰度图像。通过此方法的处理,我们就可以将视频图像转换为灰度图像,为以后的图像算法的实现提供了保障。
4.1.2 运动目标提取
因为本系统的摄像头需要固定在驾驶室内,所以驾驶室的环境就是驾驶员的主要背景,我们要通过对驾驶员位置的确定来检测到人脸[13]。对此,我们要用到背景差分法,这是当前在运动检测中最常用的方法。这种方法通过对当前图像与背景图像的差分来找到运动目标区域。复杂度相对较低、过程简单、运算较少、可以用于实时系统是这种方法的主要优点。
图5 减背景算法框图
B(x,y,t)用来表示t时刻的背景图像, Fn(x,y,t)为此时的视频图像,Fd(x,y,t)为差分后的图像。
数学表达式:Fd(x,y,t)=|Fk(x,y,t)-B(x,y,t)|
(a)背景 (b)前景 (c)减背景效果图
图6 减背景图
4.1.3 驾驶员区域定位
(1)二值化
二值化能够把图像分成对象和背景两部分。二值化方法有最大类间方差法、最小偏态法、最小误差法和矩阵保持法等几类。通过实验确定,本算法选取阈值T=40,可以得到二值化图像。 嵌入式技术在驾驶员疲劳状态检测中的应用与实现(4):http://www.youerw.com/zidonghua/lunwen_8607.html