群体人脸检测系统的设计与实现_本科毕业论文(编辑修改稿)内容摘要:

z B A   其中 A 是被腐蚀的集合, B 称为结构元素,将结构元素 B 相对于集合 A 进行平移,只要平移后结构元素都在集合 A 中,那么这些点都是 A 经过 B 腐蚀后所得到的点。 图像经过腐蚀后可以消除边界点。 如果结构元素 B 选择为 3*3 的矩阵,经过腐蚀后可以使联通区域的边界向内收缩一个像素。 而小于结构元素的联通区域则会被去除,这样经过多次的腐蚀就可以把图像中的绝大部分的噪声去除。 另外,当结构元素足够大时,腐蚀操作可以将两个相互之间有细小联通的区域分开。 腐蚀操作的模板卷积图如下: 腐蚀操作前集合图如图 5, 腐蚀的结构元素图如图 6 所示 , 腐蚀操作后的集合图如图 7 所示。 ( 1) ( 2) ( 3) 7 图 5 腐蚀操作前集合 图 图 6 腐蚀的结构元素 图 图 7 腐蚀操作后的集合 图 膨胀运算 膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。 可以用来填补物体中的空洞。 在数学形态学中膨胀的定义为: A 和 B 是两个集合, A 被 B 膨胀就是满足下列集合关系的元素的集合:  | ( ) zA B z B A     其中 A 是被膨胀的集合, B 是结构元素。 将 B 的反射进行平移与 A 的交集不为空的元素的集合就是 A 被 B 膨胀的结果。 膨胀操作是与腐蚀操作相对而言的,所以二值图像经过膨胀以后,可以消除联通区域内的非肤色噪点,使肤色区域更加连续。 同理,如果使用 3*3的结构元素,膨胀操作可以使肤色区域向外扩张一个像素。 膨胀操作的模板卷积图如下: 膨胀操 作前的集合图如图 8 所示 , 膨胀的结构元素图如图 9 所示 , 膨胀操作后的集合图如图10 所示。 图8 膨胀操作前的集合 图 图 9 膨胀的结构元素 图 图 10 膨胀操作后的集合 图 开运算和闭运算 先腐蚀后膨胀的过程称为开运算。 用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。 先膨胀后腐蚀的过程称为闭运算。 用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。 通常,由于噪声的影响,图象在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声孔,背景区域上散布着一些小的噪声物体。 连续的开和闭运算可以有效地改善这种情况。 有时需要经过多次腐蚀之后再加上相同次数的膨胀或者多次膨胀加上相同次数的腐蚀,才可以产生比较好的效果。 比如,经过二值化以后的图像可能存在数量巨大的肤色噪声,这时通过选取适当的结构元素进行开运算就可以消除肤色噪声,而又不改变主要肤色区域的8 面积和形状。 反之,若二值图像皮肤区域之间因外界因素而没有相互连接,选择闭运算可以连接主要肤色区域,使人脸区域更加明显 ,为后期判断创造有利条件。 4. 群体人脸检测系统的 实现 光线补偿 考虑对图像进行光线补偿的原因是肤色的色彩信息很容易受图像采集时的光线强度,采集设备的色彩偏差和清晰程度等诸多原因的影响。 这样会导致图像的整体色彩向某一方向偏差,也就是会形成我们常说的色彩偏冷,色彩偏暖,照片发黄、偏蓝等等的现象。 而这些现象在图像中很常见,因此进行光线补偿就显得很有必要。 光线补偿的具体做法是先将整幅图像每个像素点的亮度从高到低进行排列,取前 5%的像素,将这些像素作为光线补偿的“参考白”,同时将这 5%的像素的 RGB 分量都设置成为255。 然后,用前 5%像素的亮度的平均值除以 255 就可以得到光线补偿系数。 最后扫描整幅图像的每个像素,让每个像素的 RGB 分量都乘以光线补偿系数,如果大于 255,则将此分量的值设置成为 255,否则,保持原来的值不变。 经过此处理就可以使整幅图片的亮度进行线性放大。 但是不是每一副图像都需要进行光线补偿,有的图像亮度本来就很高,如果对亮度正常的图像进行光线补偿,效果会适得其反。 它有可能会使颜色较浅的肤色变成白色,从而会造成图像二值化的时候对肤色区域的误检。 因此,我们需要对光线补偿系数设置 一个阈值,如果计算出的 光线补偿系数小于此阈值,则不进行光线补偿。 光线补偿的算法框图如图 11 所示: 图 11 光线补偿算法 框图 光线补偿前后的对比图如图 12 所示,从图中可以明显看出,光线补偿后图像的整体亮度有明显提高。 Y 计算图片的光线补偿系数 补偿系数 阈值 进行光线补偿 N 结束 开始 9 图 12 光线补偿前 后对比图 图像二值化 对于一副彩色图像,可以直接根据每个像素点的值来判断此像素点是否为肤色,本文采取的判断方法是双阈值的判断方法。 使用 RGB 和 YCbCr 双颜色空间来进行肤色判定,直接对彩色图像进行肤色判定最常用的方法是使用 YCbCr 颜色空间,但是这样的判定结果不是特别精确,需要再增加一个阈值来提高判定结果,虽然肤色在 RGB 颜色空间上的聚类分布不是很规则,但是增加 RGB 肤色判定确实能够提高肤色的判断率。 具体的实现过程是:顺序的扫描每个像素点,首先把 RGB 颜色空间转换为 YCbCr 颜色空间,得到 Cb, Cr 两个分量的值,利用前面肤色 建模中的两个阈值判定,如果两个条件都符合,就断定此像素点属于肤色,将它的 RGB 分量分别置为( 255,255,255)(白色),否则,此像素点就不是肤色,将 RGB 分量置为( 0,0,0)(黑色)。 当所有的像素点扫描完毕时,图像二值化就完成了,图像中所有的肤色均为白色,而非肤色就变为黑色。 图像二值化前后对比图如图 13 所示,从这幅图可以看出人物的脸部区域都变为白色,裸露出的其他的皮肤也变为白色,并且还有背景的类肤色区域。 图 13 图像 二值化前后对比图 腐蚀与膨胀 算法分析 图像膨胀在数学形态学中的作用是把图像周围中的背景点合并到物体中去。 如果两个物体的距离足够近,膨胀则可以联通这两个区域。 膨胀对填补图像中的黑色孔洞很有用。 我们可以自定义结构元素来达到不同的膨胀结果。 通常,结构元素有水平形,垂直形,十字形和方形等,膨胀可以分为四方向膨胀,八方向膨胀和两方向膨胀等。 具体用到膨胀的时候应该根据需要选择合适的结构元素,就可以达到预期的效果。 本系统采用的是十字形四方向膨胀10 算法。 也就是在当前点的上下左右四个像素点,如果有一个是白色就把当前点填充。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。