灰度积分投影(精选4篇)
灰度积分投影 篇1
人眼定位技术在很多领域都有着非常重要的应用。例如驾驶员疲劳检测[1]、刑事侦查、身份识别[2]以及视线控制显示屏系统[3]等。目前, 眼睛定位方法主要有基于学习、基于模板匹配、基于几何特征的方法。基于学习的方法包括Ada Boost算法[4]、支持向量机 (SVM) [5]、主元分析法 (PCA) [6]等, 此类方法对机器进行培训的过程必不可少但也相当耗时。典型的基于模板的方法采用灰度模板匹配[7], 首先得到人眼样品模板, 然后在图像中逐步搜索与模板最匹配的区域, 此类方法计算量相对较大;基于特征的方法包括HSI虹膜检测、色彩信息[8]和灰度投影法[9]等, 另外还有基于复杂度方法、对称变换法、Blobs法、Gabor变换法[10]等其他特征方法, 此类方法克服了计算量大、处理速度慢等问题, 显著缩短了实时人眼定位的时间, 目前应用广泛。
本文算法是在灰度积分投影基础上结合圆形标记法进行眼睛定位。该方法首先通过RGB空间肤色聚类分割算法对原始图像进行分割, 经过数学形态学开运算、人脸特征排除方法去掉类人脸区域和噪声干扰, 得到精确的人脸区域二值化图;然后将二值化图像填空处理后得到一张人脸掩膜并与原始灰度图像相乘, 根据亮度差值进行分割得到信息量最大化的五官图;最后在此五官图的基础上采用圆形标记法对人眼的定位进行了改进。实验结果表明, 该方法简单有效, 并能精确地实现人眼定位, 在复杂条件下有较好的适用性和鲁棒性。
1 算法实现
该算法采用的图片是在自然光状态下通过分辨率为320×480摄像头采集, 适用的人脸旋转角度水平两侧方向不大于20°, 垂直方向不大于10°, 并且人脸正面不能有遮挡, 例如彩色眼睛、面具等。
该方法主要分为三个步骤从原始图像中定位人眼:人脸检测、人眼定位预处理、人眼精确定位。
1.1 人脸检测
人脸的色彩信息与自然背景有很大的差异性, 这种差异性为区分人脸与背景区域提供了依据。利用色彩信息进行肤色分割的原理实际上就是对每一个像素点确定一个阈值, 根据阈值决定当前点是目标还是背景, 阈值的决定取决于目标物的特征。目前被广泛应用于肤色分割的色彩空间有RGB、YCbCr、YIQ、HSV、HIS、RGB等。其中RGB是归一化的RGB模型, 这种模型的优点在于, R、G、B三个分量满足完备性, 所以只需使用到 (R, G) 两个分量进行肤色分割, 这样实际上实现了降维, 降低了计算复杂度;又因为RGB模型对亮度较为敏感, 而亮度信息对颜色模型的构造是不重要的, 因此选用RGB颜色模型又可以很好地克服光照的影响[11]。
1.1.1 RGB模型的人脸检测
RGB模型肤色分割的实现, 实际上就是确定一个阈值范围, 在阈值范围内的像素点赋值为白色点, 阈值范围以外的赋值为黑色点, 这样处理的目的是简化运算, 突显有效信息, 过滤冗余信息。实现的步骤:首先是将自然光状态下的RGB图片归一化, 其转换公式为:
然后根据人脸肤色特征确定肤色阈值区间。肤色阈值区间的选取必须精确恰当, 范围大了会产生过多的噪声点, 增大识别难度, 范围小了可能使必要的信息缺失甚至识别失败。Mc Kenna等[12]在1996年通过对大量人脸肤色分布分析, 得到的分析结果表明在不同条件下人脸肤色分布情况基本一致, R、G的值大致落在区间[0.3, 0.5]、[0.2, 0.4]内, 在此基础上需要反复地实验和对比, 逐步缩小范围直到找出一个既包含完整人脸信息又能排除非人脸区域的区间。经过大量实验统计, 以下公式 (2) 能很好地将人脸区域和自然背景区分开来。
用这个归一化模型对自然光下的图片进行人脸分割, 得到的结果如图1所示。
1.1.2 数学形态学处理
如图1所示, 通过肤色分割后出现的白色区域定义为类人脸区域, 但是可以明显地发现图像中不仅有噪声的干扰, 还存在与肤色相近的物体, 也被划分成了人脸候选区域, 这些干扰因素必须进行一系列的图像处理。首先, 对图像中的类人脸区域进行开运算, 开运算就是对图像先腐蚀后膨胀, 其目的是平滑图像的轮廓, 削弱狭窄的部分, 去掉细长的突出、边缘毛刺和孤立斑点、断开目标物之间粘连, 而且可以基本保持目标尺寸大小不变[13]。这里开运算的主要目的是消除人脸区域以外不连接的较小区域, 用黑色填充起来;同时消除人脸区域内的噪声干扰。开运算的公式为:
通过数学形态学处理后, 得到图2, 可见图2中消除了噪声以及较小的不可能人脸区域干扰, 缩小了候选区域范围, 并且填补了人脸区域内较小的空洞, 为后续检测缩减了工作量, 提高了准确率。
1.1.3 几何特征筛选人脸
经过去噪处理后, 过滤了噪声以及其他较小不可能人脸区域的干扰。这里需要注意的是假如原始图像中存在较大面积的类人脸肤色区域, 例如真皮座椅、手臂等, 单纯的数学形态学处理很难彻底排除。针对这些区域的排除需要进一步通过分析与计算, 本文采用以下三个几何特征对图像进行筛选:
首先, 判断连通区域的长宽比。人脸区域的长宽比满足一定比例, 通过对人脸图像的统计, 人脸的长宽比在0.8~1.8 (其中包含秃顶的情况以及脖子区域) , 利用该比例范围可以排除过于狭长或是横向长度明显过长的区域。
其次, 判断连通区域面积占连通区域外接矩形面积比。人脸区域是一个类似椭圆形, 人脸以及脖子区域所占整个最小外接矩形的面积比应该大于1/2 (这样可以排除一些不规则但和皮肤色调接近的物体, 同时也可以排除一些人体的其他区域) 。如果小于这个值则可以判断为不规则图形。
最后, 连通区域的像素点个数应该大于20×20, 否则这一像素的区域则无法识别。所以当连通区域小于这个值时也应当排除掉[14]。
经过上面的处理后得到图2, 可以看出基本排除了非人脸区域的干扰。
1.2 人眼定位预处理
肤色建模后, 人脸的大致区域已经确定, 并且排除了背景图像的干扰, 但经过形态学处理后的人脸五官信息量并不完整。为了得到最优化的五官图像, 增强定位的可靠性, 本文利用眼睛、眉毛、嘴与肤色的亮度差进行分割。首先, 先把人脸区域进行填空处理, 就是将人脸区域内的所有黑色块填充为白色, 得到一个连通无空洞的人脸掩膜如图3 (a) , 这是一个最大化的人脸模子;然后, 将这个模子与原始图像的灰度图相乘, 得到一张只有人脸的灰度图像3 (b) ;最后, 根据五官与肤色的量度差, 对图像进行二值化处理, 得到一张信息量精确完整的二值化人脸五官图3 (c) 。经过大量实验和统计, 这里亮度分量Y的阈值定为71。
经过上述识别处理后, 基本实现了人脸信息最大最优化, 从图3 (c) 可以看出, 除了人脸区域外, 其余的背景区域已经定义为黑色, 没有了保留价值。接下来的处理方式就是为了尽可能缩小人眼的搜索区域去除冗余的信息, 这也是进行精确人眼定位的最后一步预处理。
首先, 画出人脸区域的最小外接矩形框, 然后沿着矩形框把这部分裁剪出来;然后将裁剪出来的图像进行黑白反转, 这样做的目的是让五官以及接近于人眼亮度值的区域成为有效目标, 其余肤色区域成为背景, 这里需要注意的是, 翻转后的图像, 除了五官以及接近于人眼亮度值的区域成为白色外, 矩形框内人脸外的区域也变成了白色, 为了使矩形框内人脸以外的这小部分区域也变成黑色背景。需要用初步反转后的图像和图3 (a) 相乘, 这样可以使人脸外的无效区域也转换成黑色的背景。相乘公式如下:
这样就得到了投影前的最终预处理图3 (d) 。
1.3 积分投影定位算法
经过上述处理后, 人脸特征点如眉毛、眼睛、鼻子、嘴巴等被明显地分割出来, 现在就可以对二值化图像进行积分投影。实现算法的具体步骤:分别对该二值化图像进行垂直和水平方向的归一化积分投影, 根据积分投影原理, 在眼睛、眉毛、鼻子和嘴区域对应着投影曲线的极值点, 结合两个方向极值点确定眼睛的位置。图3 (d) 进行水平积分投影和垂直积分投影结果如图4所示。
上面三幅图中, 图4 (a) 为水平方向投影曲线, 图4 (b) 为垂直方向投影曲线。从水平投影中可以明显地分辨出眉毛和眼睛的水平坐标, 垂直投影中两眼中心的垂直坐标也较清晰, 最后通过水平线和垂直线的交点得到眼睛的位置图4 (c) 。
但是通过积分投影原理得到眼睛的位置仍然存在一些不足之处。例如检测目标的眉毛粗浓, 而眼睛又大, 两者的投影曲线有可能重叠, 最后得到的人眼位置包含眉毛区域, 从而影响最后检测结果, 如图5所示。
图5可以看出直接用积分投影方法进行人眼定位的准确性并不是十分理想。本文为了提高算法识别的鲁棒性和准确性, 在积分投影基础上提出一种改进方法。
1.4 改进的圆形标记人眼定位法
本文定位人眼算法的设想是利用积分投影之前已经得到的若干数目空洞的图像, 通过直观快速的方法排除其他非人眼空洞, 最后分离出正确的人眼对。实现以上算法可以依据人眼位置特征、形状特征、对称参数等要素, 这里采用的方法是融合上述几种特征完成的人眼精确定位, 暂定为圆形标记法。
圆形标记法定义:
首先, 在二值化图的基础上求出各个已知连通区域面积 (即各个空洞面积) 、质心坐标;并以这个质心为圆心, 连通区域面积作为圆型的面积画圆, 得到与原始图像的连通区域有相同个数圆的图像。
把图5 (a) 进行本文1.2节以上的全部预处理后, 确定人眼位置条件如下:
Step1:人眼的高度范围应该在人脸的中上部, 也就是在整个矩形图像的高度1/5~1/3之间, 这里取的高度范围是1/5~1/2, (范围较大的原因是考虑到秃顶的情况, 假如目标是秃顶, 则人眼高度所占比例自然下移) , 可以得到图6 (a) 。
Step2:本文讨论的情况是正常人脸倾斜条件下即左右上下偏转不大于20°。在此约束条件下两眼质心连线与水平方向的夹角应该小于等于15°[15]。然后具体做法是依次从左上方第一个质心开始搜索, 如果与任意质心连线和水平方向夹角大于15°, 则排除, 直到找到满足条件的两个圆为止。
Step3:正常偏转条件下, 两眼连线的长度所占人脸宽度比是满足一定比例的, 通过反复实验统计, 得到两眼中心距离所占人脸横向最大宽度的0.29~0.48。因为本文前期的工作中已经得到了最小外接矩形框, 所以可以把矩形框宽度近似为人脸横向宽度。
对图5 (a) 进行以上三个条件的筛选, 可以得到如图6 (b) 。
用这对空洞与原始灰度图像相乘得到了人眼对如图6 (c) , 最后对图6 (b) 做归一化积分投影, 分别得到水平积分投影曲线图6 (d) 和垂直积分投影曲线图6 (e) , 根据垂直和水平投影曲线的交点可以得到人眼的准确位置如图6 (f) 。圆形标记法不仅适用于浓眉大眼目标的检测, 而且还适用于人脸上有深色胎记和疤痕的眼睛定位。
2 实验与结果
在电脑笔记本上设计一个人眼定位仿真系统, 硬件系统采用第2代英特尔酷睿i5-2.4 GHz处理器, 内存2 GB, 软件在Matlab平台上进行, 采用的图片是在自然光状态下通过分辨率为320×480摄像头采集的20幅人脸图片, 人脸旋转角度水平两侧方向不大于20°, 垂直方向不大于10°, 并且人脸正面不能有遮挡, 例如彩色眼睛、面具等。
2.1 实验步骤
20幅人脸测试图片分别进行以下实验步骤:
(1) 首先将图像肤色分割, 接下来对图像进行形态学处理、几何特征筛选。
(2) 对图像进行人眼定位预处理, 得到有效目标空洞。
(3) 运用圆形标记法进行人眼定位, 结合投影曲线得到精确的眼睛位置。
2.2 实验结果
本文选取的20幅图像是在自然光条件下摄像头采取的, 通过实验, 结果如表1所示。
表1中, 本文的算法相对单独传统积分投影方法处理速度较长, 但准确率有显著提高。实验结果如图7所示。
3 结束语
本文结合灰度积分投影和圆形标记法对人眼进行定位:首先采用肤色分割进行人脸检测, 运用数学形态学、几何特征筛选消除干扰因素, 为眼睛的定位提供基础。然后根据亮度差值分割, 为人眼定位提供信息量最大化的五官图像。针对定位的结果问题, 提出了圆形标记法, 通过设定了三个条件逐步排除了嘴, 鼻子以及其他亮度与人眼相近的空洞区域, 最后根据眼睛和眉毛的位置特征, 对眼睛和眉毛的位置进行区别, 实现了眼睛的精准定位。
灰度积分投影 篇2
人眼定位是人脸识别的重要环节,同时人眼也包含了诸如表情、疲劳状态、心理状态等重要的信息,有效地提取人眼特征有重要的意义。因此人眼定位在交通监视、疲劳检测、表情识别、身分认证、人机交互等领域有着广泛的应用。
目前应用较为广泛的是基于几何学[1,2]和基于红眼效应的算法。本文中在人脸定位的基础上综合了图像增强、水平灰度投影及区域特征实现快速有效的人眼定位。
本文所有的处理都是基于三个图像库:Yale人脸库,中科院CAS-PEAL人脸数据库以及自建库。
2 人脸定位
本文使用adaboost算法[3,4,5]实现快速人脸定位,整个检测过程分为三个部分:图像预处理,载入分类器和人脸检测。
定位准确率达100%,每幅图象检测时间8m。
3 人眼检测
本文中人眼定位算法综合了图像增强、水平灰度投影及区域特征。图3为系统设计中人眼定位的流程图。整个流程分为三个部分:1)图像预处理。首先在人脸检测获得标识人脸矩形的基础上根据人眼睛在脸部的分布位置进一步缩小图像中的检测范围,对缩减检测范围后的图像进行局部增强和直方图均衡;2)使用水平积分投影定位眼睛的纵坐标[6,7,8];3)在图像缩小到以眼睛纵坐标为中心轴的局部区域的基础上,采用边缘检测、膨胀边缘区域、连通性分析计算出眼睛区域的横坐标,最后在原图像上用白色小矩形框标识出人眼的位置。下面就对这种方法进行详细介绍。
3.1 图像预处理
3.1.1 缩小定位范围
在定位好的人脸图像中,人脸用一个白色矩形标记出来,将这个矩形记为R,将图像中眼睛的搜索范围缩小到距矩形R顶部1/8矩形高度处,距矩形R底部1/2矩形高度处的一个矩形中,将这个新得到的矩形记为R’,用黑色矩形框标出了检测区域,在各种情况下均包含了人眼区域,如图4所示。这项处理确定了人眼搜索的图像区域,对后续处理有两个好处:1)缩小了待处理的图像尺寸,减少了图像处理的时间;2)除去了图像中会对人眼检测造成影响的一些因素,因为投影方法对光照比较敏感,缩小了检测范围后,必然会消除一定影响。
3.1.2 图像增强
图像的增强主要分为空域增强和频域增强,本文所使用的算法为空域增强。系统在实际处理时,首先采用了局部增强的方法。令图5(a)为原始图像I1,首先对图像I1进行线性均值平滑滤波。线性均值平滑滤波用滤波掩模确定领域内像素的平均灰度值代替图像中每个像素点的值,我们采用的掩模尺寸为5×5。线性均值平滑滤波处理能够减小图像灰度的“尖锐”变化。经过线性均值平滑滤波得到的图像计为IM。令I1中的像素的灰度值为orig,IM中的像素的灰度值为mean,用下式计算得到增强图像的IE的像素灰度值res:
这样的做法使得图像中对比度大的区域到的增益很大,而对比度小的地放灰度基本不变。换句话说也就是可以对高频区域进行增强。如图5(b)。
接下来对图像进行直方图均衡,图6是处理结果。
3.2 计算眼睛纵坐标
图像预处理后,可以计算眼睛的纵坐标。本文中在定位人眼纵坐标时采用了水平积分投影函数[7,8]。如图所示,水平灰度投影基本上呈现出一致的规律,出现两个波谷,波谷的谷点位置自上而下分别代表了眉毛区域和眼睛区域的水平投影中心。无论是睁眼图像还是闭眼图像,投影曲线中最下的一个谷对应于眼睛的水平位置。
当被测对象有较重的眼袋时,投影中最下方会出现幅度较小的波谷,如图8(a)所示。为避免检测错误,完整的判定方法如下:首先计算水平积分投影;设定波谷幅度的最小阈值;在积分投影图中从下向上搜索,第一个波谷幅度大于设定阈值的波谷作为眼睛的纵坐标,结果如图8(b)所示。
3.3 计算眼睛横坐标
水平积分灰度投影计算的是眼睛的水平坐标,经过水平积分灰度投影分析,可以让两只眼睛或者一只眼睛出现在定位眼睛的矩形框中。如果在这个矩形框中直接进行垂直灰度投影来定位眼睛横坐标,不能取得好的定位效果,其原因是:1)当光线分布不均匀时,积分灰度投影曲线不规则,无法从曲线中提取有效的信息;2)当人眼为闭合状态时,积分眼睛区域在灰度投影曲线的投影段中没有波谷出现。本文提出了一种方法,首先计算眼睛矩形区域内的边缘图像,将边缘图进行阈值分割,把分割的区域进行膨胀处理,通过连通性分析并进行筛选后得到两个眼睛的区域,最后分别求出左右两个眼部区域的中心。
3.3.1 采用Sobel算子进行边缘检测
Sobel算子[9]对图像先作加权平均然后再求微分,它的水平和垂直分量的模板分别为:
其中v和h分别代表水平分量模版和垂直分量模板,进而求出边缘图像。
3.3.2 对边缘区域进行膨胀处理
对一幅二值图像的膨胀结果是将该图的所有前景区域都稍稍扩大之后的图像。再给出形式化表示:考虑两幅图像fA和fB,并且令A和B为有序对集,分别由fA和fB中各自的前景像素坐标构成。形式上,定义A关于B的膨胀运算为:
该运算等用于对所有的A的平移结果取并集,计算公式如下:
系统在实际处理中B采用了圆形结构元素,因为圆形模板在各个方向上都是对称的,能够完成一个形状一致的膨胀。圆形结构元素的尺寸(即圆半径)被定义为3.5个像素。在进行边缘区域膨胀之前需要将边缘图像二值化,然后提取出相应的边缘区域。进行膨胀处理后的边缘区域被扩大,边缘被平滑,区域中小于模板的空洞被闭合。
3.3.3 区域连通性分析
在计算机中实现连通性分析时使用了连通分量标号(connected component labeling)这一概念,首先定义一个“标号图像”,它是一种用符号对图像进行表示的方法,与原始图像同构,但每个像素都包含了它所属分量的序号。同理对于区域可以定义一个“标号区域”。生成标号图像,标号区域的一种算法为“区域增长法”。
“区域增长法”中的一种方法是递归式区域增长算法,该算法采用了一个下推堆栈来实现区域增长,下推堆栈可临时保存区中有关像素的坐标。
连通性分析后,可以得到若干个子区域,除了眼睛区域被选择出来以外,还有一些额外的连通区域也被选择出来。本文设定了以下判据对所有的子区域进行筛选:1)区域像素点个数是否大于300;2)区域长宽比是否大于1。
通过筛选的区域被认为是眼睛区域,区域的垂直中心坐标为眼睛中心的的横坐标。图9中为眼睛横坐定位的处理效果过程图。
在确定人眼横纵坐标后就可以准确地标出人眼的位置,如图10。
4 实验结果
我们选择其中姿态库中正常姿态(名为Normal),饰物库(不包含佩戴墨镜,名为Accessory)和光照(Lighting)等三个库进行算法性能评价。
CAS-PEAL人脸数据库共采集并整理了1,040位志愿者(其中595位男性,445位女性)的共99,450幅人脸图片。库中的所有图片分为姿态变化、表情变化、饰物变化、光照变化、背景变化、距离变化、时间跨度变化等7种变化模式子库,这7个变化模式中又以姿态(Pose)、表情(Expression)、饰物(Accessory)和光照(Lighting)4种变化为主(故简称为PEAL)。各个变化模式子库均可以与姿态变化子库进行组合,以满足研究工作中的不同要求。
结果如表1:
5 结束语
由于镜框造成的阴影及镜框本身颜色较深;帽沿造成的阴影;鼻子两侧比鼻子中间颜色要深;人脸姿势歪斜不正,这些原因造成了误检。但从总体上讲,再不考虑光照变化的情况下,该算发具有较好的定位效果。
人脸正面、侧脸、仰头低头、睁眼、闭眼均可以很好的定位到人眼。较单一使用灰度投影方法来定位人眼,这种方法受到光线影响较小,定位的准确性高。同时,这种方法也具有较高的检测速度,在配置CPU为3.0GHz,内存为2G的PC机上进行测试,眼睛定位的平均时间不超过6ms,因此该方法具有较好的实时性和准确率。
摘要:人眼定位在机器视觉中有广泛的应用,该文针对目前流行的基于灰度特征与几何学的算法提出了一种算法改进,采用灰度投影与区域特征相结合的算法实现了自动化人眼定位。利用水平积分灰度投影计算眼睛纵坐标,进一步利用区域特征确定眼睛横坐标,从而准确快速定位到人眼。
关键词:机器视觉,人眼定位,灰度投影,区域特征
参考文献
[1]毛敏峰,张星明,郭宇聪.一种基于规则的眼睛快速定位方法[J].计算机工程,2004,30(9):114-116.
[2]朱夏君,王勋,李必威.人脸识别中的眼睛定位[J].电路与系统学报,2007,12(2):98-100.
[3]Viola P.Rapid object detection using a Boosted cascade of simple features[C].Proc IEEE Conference on Computer Vision and Pattern Recognition,2001:511-518.
[4]Viola P,Jones M.Robust real time object detection Technical Report[R].CRL2001/01,Compaq Cambridge Research Laboratory,2001.
[5]Viola P,Jones M J.Robust Real-Time Face Detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[6]Kanade T.Picture processing by computer complex and recognition of human faces[D].Kyoto:Kyoto University,1973.
[7]BrunelliPoggio T.Face recognition:Features versus templates[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1993,15(10):1042-1052.
[8]Feng G C,Yuen P C.Variance proection function and its application to eye detection for human face recognition[J].Pattern Recognition Letters,1998,19(9):899-906.
灰度积分投影 篇3
电子稳像技术是综合电子、计算机、数字信号处理等技术,利用数字图像处理方法直接确定图像序列的偏移并进行补偿的技术[1]。利用电子稳像技术对不稳定的视频序列进行稳定处理,可提高监视质量,便于后续应用处理。电子稳像技术广泛用于机器导航、目标识别与跟踪、安全监控等视频分析和处理领域。实际应用中对电子稳像系统的处理时间、体积、重量、功耗等要求不断提高,基于嵌入式的实时电子稳像系统具有更高的实际应用价值。
鉴于电子稳像技术在军事和民用领域中的重要作用,美国、加拿大、以色列等国家较早地进行了研究和开发,并取得了一定成果。我国在2000年之后开始进行稳像技术研究。中国科学院长春光机所钟平针对具体应用环境特点,采用基于特征跟踪的电子稳像方法用于机载电子稳像,取得了良好的结果[2]。哈尔滨工业大学张博等将基于帧矢量叠加和自适应中止技术的快速运动估计方法用于电子稳像,运算量显著减小[3]。国防科大罗诗途等采用了一种由粗到精、由局部到全局配准的高效匹配策略实现了车载图像匹配,满足了车载图像跟踪系统对电子稳像技术的实时性及精度要求[4]。这些电子稳像系统大多基于VC编程在PC机上实现。北京理工大学赵跃进采用XC95144XL CPLD+DSP6711为处理平台实现了256×256像素图像的实时稳定[5]。中国科学院长春光机所孙辉采用灰度投影法检测序列图像当前帧和参考帧之间的运动矢量实现亚像元检测,并基于DSP6416图像处理平台应用在船载电视监视系统中,但没有讲述硬件实现过程[6]。本文重点研究了基于EP2S30 FPGA+DSP6416架构的电子稳像平台硬件开发流程。采用灰度投影算法,本平台能实时完成25 f/s的标准PAL制视频的稳定。
1 灰度投影算法简介
电子稳像的原理是对不稳定的视频序列图像进行局部运动估计和全局运动估计,并对运动参数进行综合评价得到运动补偿参数,进而对图像进行运动校正得到稳定的输出图像序列。依据上述原理,电子稳像过程分为运动估计、运动滤波、运动补偿3个部分,而关键技术就在于估计视频序列图像相邻两帧之间的全局运动参数。
灰度投影算法的原理是基于行列灰度曲线的变化规律进行运动估计,其方法是将灰度图像的二维图像信息映射成2个独立的一维波形,即获取图像的行列灰度投影曲线,然后进行相关运算,找到相关值曲线中的单峰值即为当前图像相对于参考图像的位移值。灰度投影算法作为一种二维平移模型的算法具有独到的优势,例如计算速度快,易于VLSI实现等。
2 电子稳像平台设计
2.1 平台硬件设计方案
电子稳像平台硬件结构框图如图1所示。平台完成灰度投影法电子稳像的流程为:视频解码器接收模拟视频并将其转换为数字视频数据流送入FPGA内部的图像采集控制模块。图像采集控制模块进行图像处理区域的剪裁和图像数据的YCbCr分解,分解之后的灰度数据分成两路,一路通过视频采集FIFO存入SDRAM进行帧存储;另一路先进行图像预处理,然后进行行列方向的灰度投影数据累加。DSP通过EMIF总线读取这个累加结果,完成运动估计和运动滤波的计算得到运动矢量数据。Nios II处理器通过EMIF总线读取这个运动矢量,在下一帧图像扫描开始时将SDRAM帧存储中的图像数据读入到视频显示FIFO中,经运动补偿模块后得到稳定的数字视频数据流,最后通过图像显示控制模块送到视频编码器输出稳定的模拟视频。
2.2 平台软件设计方案
电子稳像平台的软件设计分为两部分,分别在DSP6416和Nios II处理器中完成,其中DSP6416完成稳像算法的运动估计、运动滤波功能,Nios II处理器完成图像帧存储设计、视频编码器、视频解码器配置等功能。软件框架分为3个层次:
1)顶层管理。利用C6416芯片支持库以及DSP/BI-OS完成系统配置及实时多任务调度[6];
2)设备驱动。利用Nios II处理器的HAL完成编码器、解码器及SDRAM等外设的配置[7];
3)算法应用。利用C6000的Fast RTS函数库完成稳像算法中的浮点运算部分。
2.3 平台整体时序设计
图2是通过FPGA内部的逻辑分析仪采集到的稳像平台硬件设计时序图。
系统上电后FPGA通过内部Nios II处理器完成视频编码器、视频解码器的配置,之后通知DSP配置过程结束,DSP接收到配置结束信号后产生稳像开始信号(图2中信号4)送给FPGA。对于FPGA,接收到这个信号的时间是随机的,而本文的稳像算法是基于帧处理的,所以FPGA必须从稳像开始信号有效之后最新到来的一帧图像开始进行稳像处理。稳像平台的整体时序设计如下:
1)帧起始信号(图2中信号5)代表着稳像开始信号有效后每一帧新图像的到来,本文用这个信号触发Nios II处理器的外部中断来读取DSP计算出来的全局运动矢量。
2)处理区域奇场、偶场行有效信号(图2中信号6和信号7),这2个信号的下降沿分别代表稳像开始后每帧图像中奇场及偶场处理区域的结束,通知DSP通过EDMA通道读取图像灰度投影累加数据。为了完成实时稳像,DSP必须在信号7的下降沿和信号6的上升沿之间完成全局运动矢量的解算。
2.4 图像帧存储时序设计
电子稳像算法中,根据全局运动估计算法复杂程度的不同,需要存储图像的帧数就不同,图像延时的时间也就不同。基于灰度投影法的电子稳像平台需要进行一帧的图像存储,稳定之后的图像有一帧的延时。
在FPGA中利用SOPC_Builder生成SDRAM控制器通过DMA方式将图像存储在外部SDRAM中。同时在FPGA中还分别设计了采集FIFO和显示FIFO对图像采集和显示作行缓存。需要注意的是对于显示FIFO,本文必须提前写入一行数据以防止图像处理区域扫描信号到来时显示FIFO的读空。
图3是逻辑分析仪采集的帧存储时序波形,为了便于显示省略了中间的部分。分析如下:
1)利用处理区域列有效信号(图3中信号3)作为采集FIFO的写使能信号,信号的下降沿代表着一行有效数据采集完毕同时中断通知Nios II处理器通过DMA方式将数据写入SDRAM的采集存储区。采集FIFO的读使能、数据入、数据出分别对应于上图中的信号4,5,6。
2)利用提前一行的列有效信号(图3中信号8)上升沿去触发Nios II处理器的外部中断,通过DMA方式从SDRAM显示存储区中读出一行有效数据写入显示FIFO,而显示FIFO的读使能信号仍然使用信号3,这样便能防止显示FIFO的读空,同时保证显示FIFO中处理区域最后一行的有效数据被读出。显示FIFO的写使能、数据入、数据出分别对应于上图中的信号9,10,11。
由图3可见,上述设计中SDRAM读写操作时序不会出现重叠,完全满足时序要求。进行运动补偿时,上述设计的采集FIFO时序不发生变化,而显示FIFO的输出数据及相应的使能信号会发生变化。具体设计见图像运动补偿时序设计部分。
2.5 灰度投影数据累加时序设计
灰度投影数据累加包括行方向和列方向的数据累加,累加结果存储在FPGA片上的双端口RAM中。由于视频数据流的输入是随着行方向的扫描而来的,因此行方向上只要随着像素时钟对行方向投影数据作累加就可以了。
列方向投影数据累加采用2个双端口RAM,第1个双端口RAM存储图像处理区域内除最后1行图像外的列向投影数据累加结果,当图像扫描到处理区域最后一行时,从第1个双端口RAM读出之前的累加数据、加上图像最后1行当前列的数据、写入到第2个双端口RAM对应于列地址的存储单元中,同时将第1个双端口RAM对应列地址的存储单元清零。为了在1个像素时钟内完成数据读出、累加、写回的操作,本文用像素时钟的4倍频时钟驱动一个具有4个状态的状态机来完成上述的操作。图4为双端口RAM完成列方向投影数据累加过程示意图。
2.6 图像运动补偿设计
图像运动补偿模块的功能就是根据全局运动矢量计算出经过运动补偿之后的图像在SDRAM帧存中的位置并将图像取出来作显示。对于运动补偿之后产生的空白区域,本文作补零处理。
图像运动补偿功能由FPGA逻辑和Nios II处理器共同完成。Nios II处理器接收来自DSP的水平向和垂直向的全局运动矢量dx,dy,计算出运动补偿图像区域的首地址作为DMA的起始源地址。由于本文定义的DMA总线位宽为32位,为了地址对齐,定义每次DMA的数据长度为图像处理区域的长度img_h,为4的整数倍。这样对于每帧图像的运动补偿,实际上启动了(img_v-dy)次DMA传输,而每次DMA传输的数据中包含了dx个无效数据,其中img_h和img_v分别为图像处理区域的长度和宽度。
在FPGA的逻辑设计中,本文产生运动补偿所需的各使能信号控制显示FIFO接收DMA数据,在图像显示控制模块中去除每行的dx个无效数据,并最终将运动补偿图像区域的图像作显示。各使能信号的定义如图5所示。
在图5中,Clip_H为处理区域列有效信号;Clip_V为处理区域行有效信号;Trans_H为图像补偿区域列有效信号;Trans_V为图像补偿区域行有效信号;Trans_H_Fake为提前一行的图像补偿区域列有效信号;Trans_V_Fake为提前一行的图像补偿区域行有效信号。图5在空间位置上定义的图像补偿区域与2.4节中从时序上定义的图像处理区域是一致的,只不过2.4节中是在图像不发生抖动时将全部图像处理区域作显示,而在图像发生抖动时,本文只将运动补偿之后的有效图像区域作显示,无效部分作补零处理。
3 实验结果
为验证稳像平台的稳像效果,本文做了如下实验。通过人为随机设定的水平和垂直偏移量,截取摄像机输出100帧序列图像的512×512区域大小来模拟抖动的视频序列,图像所加偏移量的大小在[-30,+30]个像素之间。在DSP6416程序中记录算法解算出的抖动图像序列的帧间运动矢量。将当前帧前面的所有帧间运动矢量作累加即可得到当前帧图像相对于基准帧图像的运动轨迹。将实际运动轨迹和滤波后的运动轨迹数据通过Matlab软件绘图如图6所示。
a x方向运动轨迹
b y方向运动轨迹
由图6可见稳像算法能正确计算帧间运动矢量,并通过运动滤波去除视频中的无意抖动将摄像机的有意运动提取出来。同时将抖动的图像视频和稳像之后的视频分别在监视器上输出,稳像之后的视频达到了稳定效果。
4 设计总结
本文详细介绍了基于EP2S30 FPGA+DSP6416架构的电子稳像平台的硬件开发流程。采用灰度投影算法,平台能实时对水平向和垂直向抖动的范围为[-30,+30]个像素之间的标准PAL制视频进行稳定,稳像精度为1个像素。表1显示了FPGA中硬件资源的使用情况。
本文没有对稳像算法本身作深入地研究,而将重点放在了稳像平台的硬件架构设计和时序设计上。由表1可见FPGA内部硬件资源的裕量很大,同时在FPGA的外部也扩展了足够的存储器,加之DSP6416的使用,本稳像平台完全有能力完成更复杂的算法。
摘要:研制了基于FPGA+DSP架构的嵌入式实时电子稳像平台。DSP作为主处理器完成灰度投影稳像算法的运动估计和运动滤波,FPGA作为协处理器完成灰度投影数据累加及运动补偿。同时FPGA与内部Nios II处理器还共同完成系统时序控制、视频编码器配置、视频解码器配置、图像采集显示控制、EMIF总线接口控制、图像帧存储等功能。实验表明,平台能实时对25帧/秒(720×576),水平和垂直方向上存在±30个像素之间的抖动视频进行稳定,稳像精度为1个像素。
关键词:电子稳像,灰度投影,现场可编程门阵列,数字信号处理
参考文献
[1]赵红颖,金宏,熊经武.电子稳像技术概述[J].光学精密工程,2001,9(4):353-359.
[2]钟平,于前洋,金光.基于特征点匹配技术的运动估计及补偿方法[J].光电子.激光,20041,5(1):73-77.
[3]张博,吴芝路,张欣宇,等.基于矢量叠加和自适应中止的快速运动估计[J].电视技术,2006,30(4):7-10.
[4]罗诗途,王艳玲,张圮,等.车载图像跟踪系统中电子稳像算法的研究[J].光学精密工程,20051,3(1):95-103.
[5]周渝斌,赵跃进,刘明,等.基于C6711 DSP的实时数字稳像系统[J].北京理工大学学报,2004,24(5):435-438.
灰度积分投影 篇4
无人机在空中遥感领域中应用日趋广泛[1]。但是无人机自身体积和工作特点,造成无人机拍摄的视频图像帧间不稳定,人眼视觉效果较差,影响任务执行,为后续处理带来困难。因此,要对无人机视频进行稳像处理。
目前,视频稳像方法主要分为3 类: 机械稳像、光学稳像和电子稳像[2]。采用电子稳像技术可以在不提高传感器复杂度的情况下,通过信号处理的方式,降低由于无人机飞行不稳定带来的视频效果的影响。电子稳像方法又分为2D方法和3D方法。3D方法实时性较差[3]。2D方法又分为代表点法、灰度投影法、块匹配法、位平面匹配法和特征点匹配法[4]。2D方法实时性强,但目前对于景深复杂的场景处理能力不足。
在空中遥感的应用中,无人机视频场景中大多没有复杂的景深信息,同时对实时性提出了很高的要求。所以2D方法有很大的应用潜力。但传统的2D方法对于大抖动研究较少[5],无法满足无人机视频稳像需求。
本文联合使用了灰度投影法和块平面匹配法,对无人机视频稳像,提高了对大抖动的处理能力。
1 信号处理流程
视频稳像的处理流程如图1。视频图像先进行平移运动估计,即先使用灰度投影得到平移运动估计,并作为初始值,再进行块匹配得到最终的平移运动估计。对块匹配配准后的图像使用极坐标变换,再次块匹配得到旋转缩放运动估计。由局部运动估计得到全局运动估计。使用卡尔曼滤波方法对全局运动估计进行运动轨迹平滑。根据平滑后的轨迹,对视频图像重构,产生稳像后的视频输出。
2 运动估计
无人机视频图像中4 个角区域的位置相关性最弱,主要表现在当任意区域有运动物体干扰,影响运动估计时,其他区域不易受到影响。故基于这4 个区域可以得到极佳的全局运动估计。
2. 1 局部运动估计
2. 1. 1 灰度投影
对视频第k帧图像,取4 角区域上的图像Iki( x,y) ,i = 1,2,3,4 ,各块图像进行灰度投影,得到行投影Vki( x) 和列投影Hki( y) 。对2 条投影曲线进行相关运算[6],行投影相关运算的公式为:
式中,Vik( x) ,Vir( x) 分别为当前帧和参考帧的行投影; N为行投影的长度; m为搜索范围。
求得c( w) 最小值对应的wmin,则水平位移为:Vgcxik= wmin- m - 1 。同理可得垂直位移Vgcyik。
2. 1. 2 块平面匹配
同一图像块进行块匹配,SAD匹配准则运算开销最小,采用SAD匹配准则:
块匹配的具体方法如图2 所示。研究表明,块匹配搜索算法使用DS搜索算法,既可以减少运算开销又可以得到与FS搜索算法相似的搜索结果。故采用DS搜索算法[7]。
将灰度投影方法得到的平移运动估计,作为DS搜索算法的起始中心点,再进行搜索。得到水平运动估计Vxik和垂直运动估计Vyik。
2. 1. 3 旋转缩放运动估计
旋转缩放运动估计选择对数极坐标变换[8],图像从笛卡尔坐标系到对数极坐标系( I( x,y) →I( r,θ) ) 的变换关系为:
式中,( x0,y0) 为坐标系变换中心。设变换中心为( 0,0) ,则θ = arctan( y /x) 在复平面表示为z = x + iy = r( cosθ + isinθ) = reiθ。由对数极坐标变换w = loga( z) = loga( reiθ) = logar + iθ ,可得在对数极坐标系下,尺度变化和角度变化是相互独立的。设 ρ = logar,φ = θ ,若图像以变换中心缩放k倍,旋转 Δθ ,可得 ρ1= logakr = logar + logak= ρ + Δp,φ1= φ + Δθ ,对数极坐标变换后的图像在尺度轴方向上平移了 Δρ ,角度轴方向上平移了Δθ 。若对数极坐标变换的图像分辨率为M × N ,图像位移了( Δm,Δn) ,则原始图像缩放了k =aΔm/M,旋转了 Δθ = 2πΔn /N 。
基于极坐标变换图像特征,同样使用块匹配的方法进行旋转缩放运动估计,得到Vrik,Vθik。因为对数极坐标变换前,图像在极径较小时,图像点的数目较少,所以需要插值运算计算出变换后的图像点。如果这些插值后的图像点参与计算,匹配和运动估计的结果便会很大程度受到这些少数点的影响。所以,在进一步的运动估计中,只对变换后图像的下半部分进行块匹配,并做运动估计。同时避免了对图像上半部分变换的运算开销。
2. 2 全局运动估计
由上述方法得到各个子块的局部运动估计Vik= ( Vxik,Vyik,Vrik,Vθik) 。对局部运动估计和上一帧的全局运动估计,进行中值滤波[9]:
式中,Vgk为当前帧的全局运动估计; V1k,V2k,V3k,V4k为各子块的局部运动估计; Vgk -1为前一帧全局运动估计。
3 运动平滑
运动估计的累积形成运动轨迹。稳像的目的是去除运动轨迹的高频运动分量,从而去除抖动。
一般采用曲线拟合与卡尔曼滤波的方法,对运动轨迹平滑[10]。曲线拟合的方法缺点在于控制点的选择,导致无法实现实时处理。采用卡尔曼滤波[11,12],实时地进行轨迹平滑。以X轴水平方向为例建立状态方程和观测方程:
式中,Xk为k时刻的测量值; xk,vxk为k时刻的状态; xk -1,vxk-1为k - 1 时刻的状态; N( 0,σx) ,N( 0,σX) 分别为系统过程和量测的高斯白噪声。
4 视频图像重构
平移和旋转缩放运动估计可以得到图像的相似变换[13]:
式中,u,u' 分别为变换前后图像点的位置矢量; s为缩放系数; R为旋转矩阵; t为平移向量。相似变换写成单应性变换矩阵为:
式中,H为齐次的变换矩阵,变换前后图像点为一一映射关系。
实际应用中,采用反向变换,但变换后的图像边缘通常会出现黑边。可以采用其他帧信息剪裁、填充,或用修图的方法来处理,这样会保持图像原始分辨率但会影响算法的实时性。也可以采用对当前帧剪裁的方法处理,虽然分辨率会有损失,但保证了算法的实时性。本文采用当前帧剪裁的方法。
5 实验结果分析
在双核CPU: 3. 4 GHz,WIN7 操作系统,Matlab R2011a平台仿真环境下,对算法进行了仿真实验,并对算法处理后的视频做了PSNR值统计,PSNR值反应了视频图像序列的差异大小( PSNR值越大差异越小) 。处理视频采用国外相关研究使用的视频数据库,分辨率为640* 360。算法选取的匹配块大小为64* 64。块匹配算法对比如表1 所示。由表1可以看出,本文算法在运算效率上相对于DS算法有了较大的提升,同时,视频序列的PSNR值也有了小幅提升,这是因为灰度投影法计算出的运动估计减小了块匹配算法搜索到局部最优点的概率。
卡尔曼滤波前后的运动轨迹如图3 和图4 所示,过程噪声Q = 0. 001 。由图3 和图4 可以看出,滤波后的运动轨迹变得平滑,高频分量减少。
算法对视频稳像的结果如表2 所示。可以看出,在不使用旋转缩放运动估计信息的平移变换方法,视频稳像的质量已有了大幅度提升。使用了旋转缩放运动估计的信息,采用相似变换后,视频稳像质量又有了小幅提升。这是因为视频抖动主要表现为平移抖动。所以平移变换后,相似变换可以提升的幅度有限。平移变换每帧只需0. 2 s左右,相似变换需0. 4 s左右。都可以满足视频25 fps的要求,达到了实时性的要求。
6 结束语