发明内容
针对上述技术问题,本发明所要解决的技术问题是提供一种基于大量不同角度人脸二进制编码样本特征和Random Fern模式识别分类器,能够有效适用于各种环境下人脸检测的图像人脸检测方法。
本发明为了解决上述技术问题采用以下技术方案:本发明设计了一种图像人脸检测方法,包括如下步骤:
步骤01.收集预设样本数量的训练样本图像,包括非人脸样本图像和人脸样本图像,其中,人脸样本图像包括以人脸正面为中心左右旋转±90°范围内的各幅人脸样本图像;
步骤02.按预设模板尺寸设定人脸模板,并在该人脸模板上随机生成预设数量的像素点对,包括水平像素点对和垂直像素点对,并将所有像素点对平均划分成预设数量N个的像素点对组,N≥1,每组有M个像素点对,并对所有像素点对组设定序列;同时分别对每一个像素点对组中的像素点对设定序列,并针对每一个像素点对中的两个像素点按照第一像素点、第二像素点设定先后顺序序列;
步骤03.针对所有训练样本图像进行灰度处理,并进行尺寸缩放,保持与人脸模板尺寸相同;然后遍历各幅训练样本图像,针对各幅训练样本图像上与人脸模板中像素点对位置相对应的像素点对进行如下处理:
若第一像素点亮度值≥第二像素点亮度值,则定义该像素点对特征值为1;
若第一像素点亮度值<第二像素点亮度值,则定义该像素点对特征值为0;
由此,按照人脸模板中像素点对组中像素点对的序列,获得各幅训练样本图像所分别对应的N个二进制数值特征串,每个二进制数值特征串长度为M;
步骤04.针对人脸模板中的各个像素点对组,根据一个像素点对对应一个二进制数值和像素点对组中像素点对的序列,分别获得各个像素点对组所对应的所有二进制数值组合,并针对各个像素点对组中所对应的各个二进制数值组合分别初始化一个Positive/Negative计数器,作为Random Fern模式识别分类器的计数器,初始化各个Positive/Negative计数器的初始值为0;
步骤05.遍历各幅训练样本图像,若判断该幅训练样本图像为人脸样本图像,则将Random Fern模式识别分类器上与该幅训练样本图像的N个二进制数值特征串相对应的各个像素点对组中相应二进制数值组合的Positive/Negative计数器中的Positive计数器+1;若判断该幅训练样本图像为非人脸样本图像,则将Random Fern模式识别分类器上与该幅训练样本图像的N个二进制数值特征串相对应的各个像素点对组中相应二进制数值组合的Positive/Negative计数器中的Negative计数器+1;
由以上过程,实现针对Random Fern模式识别分类器的训练;
步骤06.针对被检测图像进行灰度处理,获得被检测灰度图像;然后将被检测灰度图像按预设各级缩放比例进行缩放,获得各幅缩放检测灰度图像;
步骤07.分别针对各幅缩放检测灰度图像做如下操作:采用与人脸模板尺寸相一致的窗口在整幅缩放检测灰度图像上获得各个子图像,针对各个子图像采用训练好的RandomFern模式识别分类器进行分类,获得该幅缩放检测灰度图像中的人脸集合;
步骤08.分别针对获得的各幅缩放检测灰度图像中的人脸集合,按照缩放检测灰度图像的缩放比例,将人脸集合还原到步骤06中的检测灰度图像上,获得初级人脸检测图像。
作为本发明的一种优选技术方案:所述步骤01中,所述人脸样本图像包括以人脸正面为中心左右旋转±90°范围内、上下预设倾角范围内的各幅人脸样本图像;
作为本发明的一种优选技术方案:所述步骤07中,分别针对各幅缩放检测灰度图像做如下操作:采用与人脸模板尺寸相一致的滑动窗口,针对整幅缩放检测灰度图像,沿水平方向逐行滑动或者沿垂直方向逐列滑动,针对缩放检测灰度图像获得各个子图像,针对各个子图像采用训练好的Random Fern模式识别分类器进行分类,获得该幅缩放检测灰度图像中的人脸集合。
作为本发明的一种优选技术方案:所述步骤07中,分别针对各幅缩放检测灰度图像做如下操作:针对由缩放检测灰度图像获得的各个子图像,采用训练好的RandomFern模式识别分类器进行分类,获得该幅缩放检测灰度图像中的人脸集合的过程具体包括如下步骤:
步骤0701.根据步骤03的方法,获得各个子图像所分别对应的N个二进制数值特征串;
步骤0702.遍历各个子图像,通过RandomFern模式识别分类器,分别计算出各个子图像所分别对应的N个二进制数值特征串的后验概率,其中,计算子图像所对应的第i个二进制数值特征串的后验概率,1≤i≤N,具体包括如下步骤:
步骤070201.获得该子图像所对应的第i个二进制数值特征串在Random Fern模式识别分类器第i组统计表里Positive/Negative计数器的数值;
步骤070202.根据步骤070201中获得的Positive/Negative计数器的数值,根据Prob=A/(A+B)计算获得该子图像所对应的第i个二进制数值特征串的后验概率Prob,其中,A为Positive计数器的数值,B为Negative计数器的数值;
步骤0703.针对各个子图像作如下操作:分别获得子图像所对应N个二进制数值特征串的后验概率的平均值,作为该子图像的最终概率,并判断该最终概率是否大于预设人脸阈值,是则认为该子图像为人脸,否则为非人脸。
作为本发明的一种优选技术方案:所述步骤08之后还包括步骤09如下:
步骤09.针对所述初级人脸检测图像,通过层次聚类算法,对检测出的人脸依据空间位置和相互重叠程度进行聚类,删除重复的人脸图像,获得最终人脸检测结果。
本发明所述一种图像人脸检测方法采用以上技术方案与现有技术相比,具有以下技术效果:本发明设计的图像人脸检测方法,基于大量不同角度人脸二进制编码样本特征和RandomFern模式识别分类器,采用更加方便的训练方法,能够有效适用于各种环境下的人脸检测,克服了现有技术中检测条件的局限性,并且大大提高了人脸检测的精确度。
具体实施方式
下面结合说明书附图对本发明的具体实施方式作进一步详细的说明。
如图1所示,本发明设计一种图像人脸检测方法,具体包括如下步骤:
步骤01.收集预设样本数量的训练样本图像,包括非人脸样本图像和人脸样本图像,其中,人脸样本图像包括以人脸正面为中心左右旋转±90°范围内、上下预设倾角范围内的各幅人脸样本图像;
步骤02.按预设模板尺寸设定人脸模板,并在该人脸模板上随机生成预设数量的像素点对,包括水平像素点对和垂直像素点对,并将所有像素点对平均划分成预设数量N个的像素点对组,N≥1,每组有M个像素点对,并对所有像素点对组设定序列;同时分别对每一个像素点对组中的像素点对设定序列,并针对每一个像素点对中的两个像素点按照第一像素点、第二像素点设定先后顺序序列;
步骤03.针对所有训练样本图像进行灰度处理,并进行尺寸缩放,保持与人脸模板尺寸相同;然后遍历各幅训练样本图像,针对各幅训练样本图像上与人脸模板中像素点对位置相对应的像素点对进行如下处理:
若第一像素点亮度值≥第二像素点亮度值,则定义该像素点对特征值为1;
若第一像素点亮度值<第二像素点亮度值,则定义该像素点对特征值为0;
由此,按照人脸模板中像素点对组中像素点对的序列,获得各幅训练样本图像所分别对应的N个二进制数值特征串,每个二进制数值特征串长度为M;
这里针对各幅训练样本图像上与人脸模板中像素点对位置相对应的像素点对进行特征值的处理过程中,在实际应用中,不仅可以按以上方式采用像素点的亮度值进行处理,同样,还可以采用像素点的haar特征进行处理。
步骤04.针对人脸模板中的各个像素点对组,根据一个像素点对对应一个二进制数值和像素点对组中像素点对的序列,分别获得各个像素点对组所对应的所有二进制数值组合,每个像素点对组所对应的二进制数值组合总共有2M种组合,并针对各个像素点对组中所对应的各个二进制数值组合分别初始化一个Positive/Negative计数器,作为RandomFern模式识别分类器的计数器,初始化各个Positive/Negative计数器的初始值为0;
步骤05.遍历各幅训练样本图像,若判断该幅训练样本图像为人脸样本图像,则将Random Fern模式识别分类器上与该幅训练样本图像的N个二进制数值特征串相对应的各个像素点对组中相应二进制数值组合的Positive/Negative计数器中的Positive计数器+1;若判断该幅训练样本图像为非人脸样本图像,则将Random Fern模式识别分类器上与该幅训练样本图像的N个二进制数值特征串相对应的各个像素点对组中相应二进制数值组合的Positive/Negative计数器中的Negative计数器+1;
由以上过程,实现针对RandomFern模式识别分类器的训练;
步骤06.针对被检测图像进行灰度处理,获得被检测灰度图像;然后将被检测灰度图像按预设各级缩放比例进行缩放,获得各幅缩放检测灰度图像;
步骤07.分别针对各幅缩放检测灰度图像做如下操作:采用与人脸模板尺寸相一致的滑动窗口,针对整幅缩放检测灰度图像,沿水平方向逐行滑动或者沿垂直方向逐列滑动,针对缩放检测灰度图像获得各个子图像,针对各个子图像采用训练好的RandomFern模式识别分类器进行分类,获得该幅缩放检测灰度图像中的人脸集合,具体包括如下步骤:
步骤0701.根据步骤03的方法,获得各个子图像所分别对应的N个二进制数值特征串;
步骤0702.遍历各个子图像,通过RandomFern模式识别分类器,分别计算出各个子图像所分别对应的N个二进制数值特征串的后验概率,其中,计算子图像所对应的第i个二进制数值特征串的后验概率,1≤i≤N,具体包括如下步骤:
步骤070201.获得该子图像所对应的第i个二进制数值特征串在Random Fern模式识别分类器第i组统计表里Positive/Negative计数器的数值;
步骤070202.根据步骤070201中获得的Positive/Negative计数器的数值,根据Prob=A/(A+B)计算获得该子图像所对应的第i个二进制数值特征串的后验概率Prob,其中,A为Positive计数器的数值,B为Negative计数器的数值;
步骤0703.针对各个子图像作如下操作:分别获得子图像所对应N个二进制数值特征串的后验概率的平均值,作为该子图像的最终概率,并判断该最终概率是否大于预设人脸阈值,是则认为该子图像为人脸,否则为非人脸。
步骤08.分别针对获得的各幅缩放检测灰度图像中的人脸集合,按照缩放检测灰度图像的缩放比例,将人脸集合还原到步骤06中的检测灰度图像上,获得初级人脸检测图像。
步骤09.针对所述初级人脸检测图像,通过层次聚类算法,对检测出的人脸依据空间位置和相互重叠程度进行聚类,删除重复的人脸图像,获得最终人脸检测结果。
本发明设计的图像人脸检测方法采用以上设计的技术方案,基于大量不同角度人脸二进制编码样本特征和RandomFern模式识别分类器,采用更加方便的训练方法,能够有效适用于各种环境下的人脸检测,克服了现有技术中检测条件的局限性,并且大大提高了人脸检测的精确度。
本发明设计的图像人脸检测方法在实际应用过程中,如图1所示,具体按如下步骤进行:
步骤01.收集预设样本数量的训练样本图像,包括非人脸样本图像和人脸样本图像,其中,人脸样本图像包括以人脸正面为中心左右旋转±90°范围内、上下预设倾角范围内的各幅人脸样本图像;
步骤02.按预设模板尺寸25像素×25像素设定人脸模板,并在该人脸模板上随机生成预设数量10万个的像素点对,包括水平像素点对和垂直像素点对,并将所有像素点对平均划分成预设数量1000个的像素点对组,则每一个像素点对组包括100个像素点对,并对所有像素点对组设定序列;同时分别对每一个像素点对组中的像素点对设定序列,并针对每一个像素点对中的两个像素点按照第一像素点、第二像素点设定先后顺序序列;
步骤03.针对所有训练样本图像进行灰度处理,并进行尺寸缩放,保持与人脸模板尺寸相同;然后遍历各幅训练样本图像,针对各幅训练样本图像上与人脸模板中像素点对位置相对应的像素点对进行如下处理:
若第一像素点亮度值≥第二像素点亮度值,则定义该像素点对特征值为1;
若第一像素点亮度值<第二像素点亮度值,则定义该像素点对特征值为0;
由此,按照人脸模板中像素点对组中像素点对的序列,获得各幅训练样本图像所分别对应的1000个二进制数值特征串,每个二进制数值特征串长度为100;
这里针对各幅训练样本图像上与人脸模板中像素点对位置相对应的像素点对进行特征值的处理过程中,在实际应用中,不仅可以按以上方式采用像素点的亮度值进行处理,同样,还可以采用像素点的haar特征进行处理。
步骤04.针对人脸模板中的各个像素点对组,根据一个像素点对对应一个二进制数值和像素点对组中像素点对的序列,分别获得各个像素点对组所对应的所有二进制数值组合(例,若各个像素点对组所对应的所有二进制数值为7位,则所有二进制数值组合为:0000000~1111111),并针对各个像素点对组中所对应的各个二进制数值组合分别初始化一个Positive/Negative计数器,作为Random Fern模式识别分类器的计数器,初始化各个Positive/Negative计数器的初始值为0;
步骤05.遍历各幅训练样本图像,若判断该幅训练样本图像为人脸样本图像,则将RandomFern模式识别分类器上与该幅训练样本图像的N个二进制数值特征串相对应的各个像素点对组中相应二进制数值组合的Positive/Negative计数器中的Positive计数器+1;若判断该幅训练样本图像为非人脸样本图像,则将RandomFern模式识别分类器上与该幅训练样本图像的N个二进制数值特征串相对应的各个像素点对组中相应二进制数值组合的Positive/Negative计数器中的Negative计数器+1;
由以上过程,实现针对RandomFern模式识别分类器的训练;
步骤06.针对被检测图像进行灰度处理,获得被检测灰度图像;然后将被检测灰度图像按预设各级缩放比例0.4倍、0.6倍、0.8倍、1倍、1.2倍、1.4倍、1.6倍进行缩放,获得7幅缩放检测灰度图像;
步骤07.分别针对各幅缩放检测灰度图像做如下操作:采用与人脸模板尺寸相一致的滑动窗口针对整幅缩放检测灰度图像沿水平方向和垂直方向滑动,针对缩放检测灰度图像获得各个子图像,针对各个子图像采用训练好的RandomFern模式识别分类器进行分类,获得该幅缩放检测灰度图像中的人脸集合,具体包括如下步骤:
步骤0701.根据步骤03的方法,获得各个子图像所分别对应的N个二进制数值特征串;
步骤0702.遍历各个子图像,通过RandomFern模式识别分类器,分别计算出各个子图像所分别对应的N个二进制数值特征串的后验概率,其中,计算子图像所对应的第i个二进制数值特征串的后验概率,1≤i≤N,具体包括如下步骤:
步骤070201.获得该子图像所对应的第i个二进制数值特征串在Random Fern模式识别分类器第i组统计表里Positive/Negative计数器的数值;
步骤070202.根据步骤070201中获得的Positive/Negative计数器的数值,根据Prob=A/(A+B)计算获得该子图像所对应的第i个二进制数值特征串的后验概率Prob,其中,A为Positive计数器的数值,B为Negative计数器的数值;
步骤0703.针对各个子图像作如下操作:分别获得子图像所对应N个二进制数值特征串的后验概率的平均值,作为该子图像的最终概率,并判断该最终概率是否大于预设人脸阈值0.65,是则认为该子图像为人脸,否则为非人脸。
步骤08.由于在缩放检测灰度图像中上检测到的人脸的坐标系不同于步骤06中检测灰度图像尺寸的坐标系,因此分别针对获得的各幅缩放检测灰度图像中的人脸集合,按照缩放检测灰度图像的缩放比例,将人脸集合还原到步骤06中的检测灰度图像上,获得初级人脸检测图像。
步骤09.由于Random Fern模式识别分类器在步骤06中检测灰度图像上人脸的周边检出很多人脸(例如:人脸位置的±10像素内,都会被判断为人脸),因此针对所述初级人脸检测图像,通过层次聚类算法,对检测出的人脸依据空间位置和相互重叠程度进行聚类,删除重复的人脸图像,获得最终人脸检测结果。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。