CN103902986B - 一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法 - Google Patents
一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法 Download PDFInfo
- Publication number
- CN103902986B CN103902986B CN201410153206.8A CN201410153206A CN103902986B CN 103902986 B CN103902986 B CN 103902986B CN 201410153206 A CN201410153206 A CN 201410153206A CN 103902986 B CN103902986 B CN 103902986B
- Authority
- CN
- China
- Prior art keywords
- facearea
- lip
- column
- line
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法,步骤一:针对手游脸谱的彩色原图,设定脸部的大致范围;步骤二:基于颜色感器实现双眼定位及嘴唇定位;(1)双眼定位:采用黝黑感器,从上向下定位彩色原图中两瞳孔的垂直区间,再从左向右定位左眼的水平区间,继而从右向左定位右眼的水平区间;完成双眼定位;(2)嘴唇定位:采用亮红感器,从上向下定位彩色原图中嘴唇的垂直区间,再从左向右定位左嘴角的水平位置,继而从右向左定位右嘴角的水平位置;完成嘴唇定位。该借鉴昆虫触角功能在手游脸谱中实现器官定位的方法具有实施方便、响应快速、定位效果好、数据量小等特点。
Description
技术领域
本发明涉及一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法。
背景技术
随着移动互联网的迅猛发展,手机动漫、手机游戏迎来了飞速发展的契机,它们是文化创意产业中的新型文化业态,将手机动漫、手机游戏融入广大受众的日常生活,使之成为深入人心的文化品牌是新媒体从业人员的社会责任。
手机用户可以使用动漫、游戏从业人员提供的应用软件,借助电脑或手机平台,开发出他自身喜闻乐见的作品(如彩信、屏保、游戏等),就像收获了自己亲手种植的蔬菜、瓜果已经进入了市场,自然有一份成就感。
手机游戏中一般都允许用户在登录时选择“姓名”、“脚色”的环节,这时,我们可以请用户提供一张个人的彩色照片,并按照用户的愿望将这一照片进行美化、搞怪等再创作,在游戏环境就会出现许多似真又假(基于真实照片的搞怪)脸庞,无疑使玩家本人及其亲友感到十分刺激和过瘾!
为此,重要的前提条件环节就是对脸部器官定位。这种脸部器官的定位和服务于安保中的脸谱识别大体相同,但却并不要求相关的服务于识别的技术特征和技术参数等辅助性要素,但是现有的定位技术步骤复杂,实现难度大,且对硬件要求很高,并不适合于在手机平台上运行。
因此,有必要设计一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法。
发明内容
本发明所要解决的技术问题是提供一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法,该借鉴昆虫触角功能在手游脸谱中实现器官定位的方法具有实施方便、响应快速、定位效果好、数据量小等特点。
发明的技术解决方案如下:
一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法,包括以下步骤:
步骤一:针对手游脸谱的彩色原图,设定脸部的大致范围;
步骤二:基于颜色感器实现双眼定位及嘴唇定位;
(1)双眼定位:
采用黝黑感器,从上向下定位彩色原图中两瞳孔的垂直区间,再从左向右定位左眼的水平区间,继而从右向左定位右眼的水平区间;完成双眼定位;
所述的黝黑感器用以感知相邻行或相邻列的亮度均值的突变;
(2)嘴唇定位:
采用亮红感器,从上向下定位彩色原图中嘴唇的垂直区间,再从左向右定位左嘴角的水平位置,继而从右向左定位右嘴角的水平位置;完成嘴唇定位;
所述的亮红感器用以感知相邻行或相邻列的在红色分量基本不变的情况下蓝色分量或绿色分量发生的突变;基本不变是指突变量小于10%;
所述的步骤一中,在彩色原图上大致地划定一个矩形的脸部检测区域FaceArea:眉毛以下、下巴以上,包括左右双眼;脸部检测区域FaceArea的4条边界即左边界、右边界、上边界和下边界的坐标分别记为做编FaceAreaLeft、FaceAreaRight、FaceAreaTop和FaceAreaBottom。
所述的双眼定位过程为:
步骤1、从上向下,发现定位黑色像素局部密集的黑色相邻行,即界定一个黑色像素局部密集的相邻行,得到Y的起止坐标;
步骤2、在上述Y的起止坐标限定的区间内,从左至右或从右至左发现、定位黑色像素局部密集的黑色相邻列,得到X的起止坐标;
经过步骤1、步骤2就界定了一个黑色像素局部密集的黑色团块,分别用X、Y的起止坐标界定它的区间。
所述的步骤1是指定位双眼上下边界EyesTop和EyesBottom:
Step1、设定从FaceAreaTop到FaceAreaBottom高度为H,从FaceAreaLeft到FaceAreaRight宽度为W的检测区域,其中,H=FaceAreaBottom-FaceAreaTop,W=FaceAreaRight-FaceAreaLeft;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值;
Step3、对检测区域从上向下扫描,求得各行的Y均值,并按照行号存入一个名为Project的数组中,Project数组有H个单元;再建立一个名为DProject的数组,并存放相邻行Y均值之差;
扫描DProject数组,得到其极大值(从明到暗跳变)和极小值(从暗到明跳变的负极大值)所在行号,这两个行号就是黑色团块的起始行号YTop和终止行号YBottom;
同时检验Project极小值(最暗处)所在行号,它在Ytop和Ybottom之间;【这是辅助性检测,如在Ytop和Ybottom之间确实存在极小值,说明Ytop和Ybottom是可信的。】
并将Ytop改称为EyesTop,Ybottom改称为EyesBottom;
所述的步骤2是指定位左右眼的X边界,
(A)左眼X边界检测:
Step1、将FaceArea水平方向的中心边界记为FaceAreaX_Middle;【即取左右边界的中值,FaceAreaX_Middle=(FaceAreaLeft+FaceAreaRight)/2】
检测左眼时从FaceAreaLeft开始前进到FaceAreaX_Middle宽度为W1,从EyesTop到EyesBottom高度为H1的检测区域;W1=FaceAreaX_Middle-FaceAreaLeft;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值。
Step3、对检测区域从左向右扫描,求得各列的Y均值,并按照列号存入一个名为Project的数组中,再建立一个名为DProject的数组,并存放相邻列均值之差;
Step4、扫描DProject数组,得到其极大值(从明到暗跳变)和极小值(从暗到明跳变)所在列号,这两个列号就是黑色团块的起始列号XLeft和终止列号XRight;
Step5、将XLeft改称为LEyeLeft,XRight改称为LEyeRight;
(B)右眼X边界检测:
Step1、将FaceArea水平方向的中心边界记为FaceAreaX_Middle;【即取边界的中值】
检测右眼时从FaceAreaX_Middle开始,前进到FaceAreaRight宽度为W2,从EyesTop到EyesBottom高度为H1的检测区域;W2=FaceAreaRight-FaceAreaX_Middle;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值。
Step3、对检测区域从左向右扫描,求得各列的Y均值,并按照列号存入一个名为Project的数组中,再建立一个名为DProject的数组,并存放相邻列均值之差;
Step4、扫描DProject数组,得到其极大值(从明到暗跳变)和极小值(从暗到明跳变)所在列号,这两个列号就是黑色团块的起始列号XLeft和终止列号XRight;
Step5、并将XLeft改称为REyeLeft,XRight改称为REyeRight。
所述的嘴唇定位包括定位嘴唇上边界LipTop、嘴唇下边界LipBottom、左嘴角边界LipLeft和右嘴角边界LipRight;
定位嘴唇上边界LipTop和嘴唇下边界LipBottom的过程如下:
设定从Eyesbottom到FaceAreaBottom高度为H2,从FaceAreaLeft到FaceAreaRight宽度为W的检测区域;
对检测区域从上向下扫描获得LipTop,相对的,从下向上扫描获得LipBottom;不妨以获得LipTop的过程说明如下:
求得各行的R、G、B均值,并按照行号分别存入名为ProjectR、ProjectG、ProjectB的三个数组中,显然,它们有H2个单元;再建立三个名称分别为DProjectR、DProjectG、DProjectB的数组,并分别存放相邻行均值之差;
建立各有256个单元的数组Ar,Ag,Ab,并将各单元初始化为0;
遍历各行的各像素,按各像素的R、G、B取值累加地存入数组Ar,Ag,Ab的相应单元中;【解释:对于Ar,包括256个元素,分别存储0-255红色分量对应的像素个数,Ag,Ab的含义类似。】【因为每一行有W个像素,每一像素也各有其RGB取值,例如左起像素0的R=250,像素1的R=250,像素2的R=230,像素4的R=220,……则Ar[250]中记录为2,Ar[230]中记录为1,Ar[220]中记录为1,……,这样,250×2+230×1+220×1=950,950/4=237.5,(宽度为4)就是该行的颜色投影,它比较接近250但小于250是合理的】
记本行均值为Average,每行的RGB分量的均值AverageR、AverageG和AverageB如下:
其中ArR是指某行中包含的红色分量值为R的像素总数;
其中AgG是指某行中包含的绿色分量值为G的像素总数;
其中AbB是指某行中包含的蓝色分量值为B的像素总数;
将3个Average存入ProjectR、ProjectG、ProjectB数组相应该行号的单元中;
将相邻行均值之差分别存放到DProjectR、DProjectG、DProjectB数组中;
从上至下扫描DProjectG、DProjectB数组,得到其极大值(从明到暗跳变)所在行号,将这两对个行号相加除2再取整就是红色团块的起始行号LipTop;
从下至上反向地扫描DProjectG、DProjectB数组,得到其极大值所在行号,将这两对个行号相加除2再取整就是红色团块的终止行LipBottom;
同时检验ProjectR应该维持基本不变;基本不变是指突变量小于10%。
定位左嘴角边界LipLeft和右嘴角边界LipRight的过程如下:
检测左嘴角时从FaceAreaLeft开始前进到FaceAreaX_Middle宽度为W1、从LipTop到LipBottom高度为H3的检测区域;
检测右嘴角时从FaceAreaRight开始前进到FaceAreaX_Middle宽度为W2、从LipTop到LipBottom高度为H3的检测区域;
对检测区域从左向右扫描,求得各列的R、G、B均值,并按照列号分别存入名为ProjectR、ProjectG、ProjectB的三个数组中,显然,它们有H3个单元;再建立三个名称分别为DProjectR、DProjectG、DProjectB的数组,并分别存放相邻列均值之差;
具体步骤如下:
SubStep 2a、建立各有256个单元的数组Ar,Ag,Ab并将各单元初始化为0;
SubStep 2b、遍历各行的各像素,按各像素的R、G、B取值累加地存入数组Ar,Ag,Ab的相应单元中;
SubStep 2c、设本列均值(即直方图中的投影值)为AverageR、AverageG、AverageB,且
其中ArR是指某列中包含的红色分量值为R的像素总数;
其中AgG是指某列中包含的绿色分量值为G的像素总数;
其中AbB是指某列中包含的蓝色分量值为B的像素总数;
【之所以前文每行的平均值和每列的平均值都采用AverageR、AverageG、AverageB,且每行和每列的所述像素总数都采用ArR、AgG和AbB,那是因为声明的变量越少,对硬件资源的消耗越少】
SubStep 2d、将3个AverageR、AverageG、AverageB存入ProjectR、ProjectG、ProjectB数组相应该列号的单元中;
Step 3、将相邻列均值之差(左列减右列的增量值)存放到DProjectR、DProjectG、DProjectB数组中;
Step 4、从左至右扫描DProjectG、DProjectB数组,得到其极大值(从明到暗跳变)所在列号,将这两对个列号相加除2再取整就是红色团块的起始列号,即为左嘴角边界LipLeft;
从右左至左扫描DProjectG、DProjectB数组,得到其极大值(从明到暗跳变)所在列号,将这两对个列号相加除2再取整就是红色团块的起始列号,即为右嘴角边界LipRight;
同时检验ProjectR应该维持基本不变;基本不变是指突变量小于10%;
至此,用亮红感器定位了嘴唇的区域,该区域的四条边界的对应值分别是LipLeft、LipRight、LipTop和Lipbottom。
本发明基于手游脸谱中器官定位的特点,即这种定位仅要求服务于美化、搞怪的创作需要,极大的简化了数据结构,从而推进算法的快速、有效,使得这种定位方法在低速CPU的环境下仍能快速地运行。本发明借鉴雄性啮小蜂(Tetrastichus)触角中存在起着控制和调节自身行为(如运动、振翅、交配等)作用的感器(Sensilla),设计了“黝黑感器”和“亮红感器”,并分别用于定位彩色照片中的眼睛和嘴唇。
其核心的步骤在于:
(1)用BS从上向下定位脸部照片中两瞳孔的垂直区间,再用BS从左向右定位左眼的水平区间,继而用BS从右向左定位右眼的水平区间。
(2)用RS从上向下定位脸部照片中嘴唇的垂直区间,再用RS从左向右定位左嘴角的水平位置,继而RS从右向左定位右嘴角的水平位置。
有益效果:
本发明的借鉴昆虫触角功能在手游脸谱中实现器官定位的方法,注意减少数据量和提高CPU运行效率,使受制约于手机屏幕尺寸和手机计算能力的手机彩信作品能够以实现最小的内存消耗和快速的运行效果,满足用户的对图片处理的要求。特别要指出:本发明目的之一要是在手机这种软硬件资源相对弱于计算机的平台上实现DIY图像操作,所以在算法设计中以减少数据量和提高CPU运行效率为重要目标,并取得有效成果。
本发明基于仿生学的原理,独创了“黝黑感器”和“亮红感器”分别用于定位彩色照片中的眼睛和嘴唇,能够快速有效的实现眼睛和嘴唇的定位。
附图说明
图1从上向下红色渐深的红色柱体示意图;
图2眼睛、嘴唇定位效果图;
图3本发明流程图。
具体实施方式
以下将结合附图和具体实施例对本发明做进一步详细说明:
实施例1:
昆虫学家发现触角是各种感器(Sensilla)最为富集的器官之一,其表面生有许多不同种类的化学感器。例如,桃树蚜虫(Myzus persicae)的触角具有钟形感器、毛形感器、原生感觉圈和次生感觉圈等四种感器。其中,雄性桃树蚜虫所具有的次生感觉圈不仅仅分布在触角的第三节,也分布在触角的第四、五节上,而雌性蚜虫则仅分布在触角的第三节上;同时雄性蚜虫具有的次生感觉圈也多于雌性蚜虫。
昆虫学家指出,各类化学感器是由昆虫体壁特化的表皮细胞演化而成,它们是能对周围环境和内部刺激产生各种反应的重要器官,感器末端与神经系统相连,起着控制和调节昆虫的各种行为(如运动、振翅、交配等)的作用。例如,啮小峰(Tetrastichus)是一种群聚性的蛹内寄生蜂,啮小峰的触角呈膝状,触角表面共有毛形感器、多孔板状感器等八种感器。
昆虫学家通过用黑色素涂抹啮小蜂的触角实施了对比性实验,结果证明已涂抹黑色素的雄蜂在寻找配偶上明显弱于未涂抹的雄蜂:后者在1Cm左右能够发现雌蜂立刻兴奋地紧随雌蜂,不停地振翅,然后爬上雌蜂背部用自身不断分泌“性信息素”的触角敲打雌蜂触角,直到雌蜂接受并完成交尾。从而表明,雄性啮小峰的三类器官相继地影响并完成交尾过程:(1)具有视觉功能的毛形感器发现并追逐配偶的存在;(2)感器向神经系统报告配偶的存在,并通过触角的柄节的分泌小孔不断分泌物质;(3)雄蜂不断地用触角柄节敲打雌蜂触角的鞭节将分泌物传送给雌蜂。概言之,啮小峰雄蜂的毛形感器是能发现雌蜂存在(具有类似“雷达”作用)的感器;交配过程中触角柄节所分泌“性信息素”(Pheromone)则起促进交尾兴奋的作用。
黄种人脸部彩色照片除了黄色的皮肤外,主要还有黑色(头发、眉毛、瞳孔)和红色(嘴唇)两种颜色。鉴于我们的技术定位是下一步瞄准手机游戏中的人物脸谱创作,添加眼影、唇膏等夸张绚丽的色彩,所以器官定位主要着力于眼睛和嘴唇。受到昆虫触角感器具有某种近距离的视觉能力的启发,我们认为用计算机模拟“雄性啮小峰触角感器”的视觉能力,设计出服务于某种技术需要的计算机感器是完全可能的。
出于手游脸谱创作的需要,我们分别设计了“黝黑感器(Black Sensilla,简称为BS)”和“亮红感器(Red Sensilla,简称为RS)”,以检测、定位彩色照片中的眼睛和嘴唇。
其中包含如下实施步骤:
步骤一、在彩色原图上大致地划定一个矩形的脸部检测区域FaceArea:眉毛以下、下巴以上,包括左右双眼;脸部检测区域FaceArea的4条边界即左边界、右边界、上边界和下边界的坐标分别记为做编FaceAreaLeft、FaceAreaRight、FaceAreaTop和FaceAreaBottom。
这里,因为许多女孩留着刘海,而且刘海往往盖住眉毛,为提高定位精度所以程序提示将FaceArea设在眉毛以下。
步骤二:建立黝黑感器定位双眼
黝黑感器的设计初衷是用于在某一区域内发现、定位密集的由黑色像素构成的黑色团块。在本环节中用于定位双眼。
为建立黝黑感器,我们应用彩色的YUV(YCrCb)制式。其中“Y”表示亮度(Luminance),而“U”和“V”表示色度(Chrominance)。“亮度”是将RGB信号的RGB分量按某种比例叠加而成。“色度”则定义了色调与饱和度,分别用Cr和Cb来表示(Cr反映了RGB中红色部分与RGB亮度间的差异。而Cb反映的是RGB蓝色部分与RGB亮度间的差异)。YCrCb制式与RGB制式之间变换公式如下:
Y=(0.257*R+0.504*G+0.098*B)+16 (1)
Cr=(0.439*R+0.368*G+0.071*B)+128 (2)
Cb=(-0.148*R-0.291*G+0.439*B)+128 (3)
它们的取值范围均在0~255之间,而且颜色越浅的像素(例如皮肤)Y值越大,颜色越深的像素(例如瞳孔)Y值越小。
因为我们在检测黑色团块时用亮度Y作为自变量,所以从明亮区域进入黝暗区域时必然伴随亮度Y值的减小;反之,从黝暗区域进入明亮区域时必然伴随亮度Y值的加大。这就是黝黑感器发觉黝黑区域的物理基础。
在目前的应用条件下,如果从上向下扫描彩色照片,当从上眼皮区域(浅黄色)进入瞳孔区域(黑色)时必然发生亮度Y值的突然减小;反之,从瞳孔区域(黑色)进入下眼皮区域(浅黄色)时无疑发生亮度Y值的突然加大。
步骤1、从上向下,发现定位黑色像素局部密集的黑色相邻行,即界定一个黑色像素局部密集的相邻行,得到Y的起止坐标;
步骤2、在上述Y的起止坐标限定的区间内,从左至右或从右至左发现、定位黑色像素局部密集的黑色相邻列,得到X的起止坐标;
经过步骤1、步骤2就界定了一个黑色像素局部密集的黑色团块,分别用X、Y的起止坐标界定它的区间。
下面我们将步骤1、步骤2具体化:
所述的步骤1是指定位双眼上下边界EyesTop和EyesBottom:
Step1、设定从FaceAreaTop到FaceAreaBottom高度为H,从FaceAreaLeft到FaceAreaRight宽度为W的检测区域,其中,H=FaceAreaBottom-FaceAreaTop,W=FaceAreaRight-FaceAreaLeft;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值;
Step3、对检测区域从上向下扫描,求得各行的Y均值,并按照行号存入一个名为Project的数组中,Project数组有H个单元;再建立一个名为DProject的数组,并存放相邻行Y均值之差;
扫描DProject数组,得到其极大值(从明到暗跳变)和极小值(从暗到明跳变的负极大值)所在行号,这两个行号就是黑色团块的起始行号YTop和终止行号YBottom;
同时检验Project极小值(最暗处)所在行号,它在Ytop和Ybottom之间;【这是辅助性检测,如在Ytop和Ybottom之间确实存在极小值,说明Ytop和Ybottom是可信的。】
并将Ytop改称为EyesTop,Ybottom改称为EyesBottom;
同时检验Project极小值(最暗处)所在行号,它应在Ytop和Ybottom之间。
下面,列出一组从上向下检测双眼瞳孔区域的实测数据如下:
从上述数据可以发现:增量极大值为7(在247行),增量极小值为-6(在265行),所以它们分别是黑色团块(双眼瞳孔区域)的起始行号YTop和终止行号YBottom;均值极小值在117(在253行)满足Step5的判断条件,因此试图定位的双眼瞳孔上下边界已经正确获得,并将Ytop改称为EyesTop,Ybottom改称为EyesBottom。
步骤2定位左右眼的X边界
所述的步骤2是指定位左右眼的X边界,
(A)左眼X边界检测:
Step1、将FaceArea水平方向的中心边界记为FaceAreaX_Middle;【即取左右边界的中值,FaceAreaX_Middle=(FaceAreaLeft+FaceAreaRight)/2】
检测左眼时从FaceAreaLeft开始前进到FaceAreaX_Middle宽度为W1,从EyesTop到EyesBottom高度为H的检测区域;W1=FaceAreaX_Middle-FaceAreaLeft;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值。
Step3、对检测区域从左向右扫描,求得各列的Y均值,并按照列号存入一个名为Project的数组中,再建立一个名为DProject的数组,并存放相邻列均值之差;
Step4、扫描DProject数组,得到其极大值(从明到暗跳变)和极小值(从暗到明跳变)所在列号,这两个列号就是黑色团块的起始列号XLeft和终止列号XRight;
Step5、将XLeft改称为LEyeLeft,XRight改称为LEyeRight;
(B)右眼X边界检测:
Step1、将FaceArea水平方向的中心边界记为FaceAreaX_Middle;【即取边界的中值】
检测右眼时从FaceAreaX_Middle开始,前进到FaceAreaRight宽度为W2,从EyesTop到EyesBottom高度为H的检测区域;W2=FaceAreaRight-FaceAreaX_Middle;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值。
Step3、对检测区域从左向右扫描,求得各列的Y均值,并按照列号存入一个名为Project的数组中,再建立一个名为DProject的数组,并存放相邻列均值之差;
Step4、扫描DProject数组,得到其极大值(从明到暗跳变)和极小值(从暗到明跳变)所在列号,这两个列号就是黑色团块的起始列号XLeft和终止列号XRight;
Step5、并将XLeft改称为REyeLeft,XRight改称为REyeRight。
至此,我们用黝黑感器定位了双眼的区域,它们分别是
左眼:LEyeLeft、LEyeRight、EyesTop和Eyesbottom
右眼:REyeLeft、REyeRight、EyesTop和Eyesbottom
建立亮红感器定位嘴唇
所述的嘴唇定位包括定位嘴唇上边界LipTop、嘴唇下边界LipBottom、左嘴角边界LipLeft和右嘴角边界LipRight;
亮红感器设计初衷是用于在某一区域内发现、定位密集的由红色像素构成的红色团块。在本环节中用于定位嘴唇。
为建立亮红感器,我们仔细研究了在RGB制式中视觉上呈现为红色团块的形成机理并获得了重要发现。
直觉地猜想必然是在RGB三分量中红色分量R越大则该像素越红,但实际上仅仅说对了问题的一半。事实是:
(1)如果G、B分量也随着R的加大而加大,其结果是该像素向浅色发展,当RGB都很大时几乎变成白色。
(2)要使像素向深红发展必须在保持R值较大的情况下减小G、B值。
为证明这一发现,为展示RGB的数值与视觉上红色的关系,我们在图1左侧展示了一个从上向下红色渐深的红色柱体(为与女孩的肤色对照,我们将红色柱放置在照片左侧)。
上部白色、下部深红色的渐变红色柱的形成算法是:
(1)从上到下,R值始终设定为254保持不变;
(2)G、B初值为255,向下逐行递减0.5(每向下2行,B、G值减1)。
这一发现奠定了亮红感器的物理基础:即从乳白区域进入亮红区域时必然是R值基本不变而G、B值减小;反之从亮红区域进入乳白区域时必然是R值基本不变而G、B值加大。
在目前的应用环境下,如果从上向下扫描彩色照片,当从上嘴唇上方(浅黄色)进入上嘴唇(红色)时必然发生G、B值的突然减小;反之,从下嘴唇(红色)进入下嘴唇下方(浅黄色)时无疑发生G、B值的突然加大。
进一步,为叙述方便我们将亮红感器定位嘴唇的过程分解为:
步骤1、从上向下,发现亮红像素局部密集的红色相邻行,即界定一个红色像素局部密集的相邻行,得到Y的起始坐标;然后从下向上,发现亮红像素局部密集的红色相邻行,得到Y的终止坐标。(之所以将垂直扫描拆分为2步是因为上下唇之间往往有白色的牙齿)
步骤2、(与步骤1相似地)在上述Y区间内,从左至右然后从右至左,发现、定位红色像素局部密集的红色相邻列,得到X的起止坐标。
经过步骤1、步骤2就界定了一个红色像素局部密集的红色团块,分别用X、Y的起止坐标界定它的区间。
下面我们将步骤1、步骤2具体化:
步骤1、定位嘴唇上边界(LipTop):
定位嘴唇上边界LipTop和嘴唇下边界LipBottom的过程如下:
设定从Eyesbottom到FaceAreaBottom高度为H,从FaceAreaLeft到FaceAreaRight宽度为W的检测区域;
对检测区域从上向下扫描获得LipTop,相对的,从下向上扫描获得LipBottom;不妨以获得LipTop的过程说明如下:
求得各行的R、G、B均值,并按照行号分别存入名为ProjectR、ProjectG、ProjectB的三个数组中,显然,它们有H个单元;再建立一个名为DProjectR、DProjectG、DProjectB的数组,并分别存放相邻行均值之差;
建立各有256个单元的数组Ar,Ag,Ab,并将各单元初始化为0;
遍历该行各像素,按各像素的R、G、B取值累加地存入数组Ar,Ag,Ab的相应单元中;【解释:对于Ar,包括256个元素,分别存储0-255红色分量对应的像素个数,Ag,Ab的含义类似。】【因为每一行有W个像素,每一像素也各有其RGB取值,例如左起像素0的R=250,像素1的R=250,像素2的R=230,像素4的R=220,……则Ar[250]中记录为2,Ar[230]中记录为1,Ar[220]中记录为1,……,这样,250×2+230×1+220×1=950,950/4=237.5,(宽度为4)就是该行的颜色投影,它比较接近250但小于250是合理的】
记本行均值为Average,每行的RGB分量的均值AverageR、AverageG和AverageB如下:
其中ArR是指某行中包含的红色分量值为R的像素总数;
其中AgG是指某行中包含的绿色分量值为G的像素总数;
其中AbB是指某行中包含的蓝色分量值为B的像素总数;
将3个Average存入ProjectR、ProjectG、ProjectB数组相应该行号的单元中;
将相邻行均值之差分别存放到DProjectR、DProjectG、DProjectB数组中;
扫描DProjectG、DProjectB数组,得到其极大值(从明到暗跳变)所在行号,将这两对个行号相加除2再取整就是红色团块的起始行号LipTop;
同时检验ProjectR应该维持基本不变;基本不变是指突变量小于10%。
下面,列出一组从上向下检测上嘴唇的实测数据如下:
可以看出,蓝和绿的最大增量行虽然不相同,但基本上都在443行或444行,而且红均值一直保持200以上的稳定数值。所以将Ytop定为443无疑是可行的。
不再赘述,将上述步骤1从下向上反向地再做一遍,得到红色团块的终止行号(命名为YBottom)。至此试图定位的嘴唇上下边界已经正确获得,并将Ytop改称为LipTop,Ybottom改称为LipBottom。
步骤2定位嘴唇的X边界
定位左嘴角边界LipLeft和右嘴角边界LipRight的过程如下:
检测左嘴角时从FaceAreaLeft开始前进到FaceAreaX_Middle宽度为W1、从LipTop到LipBottom高度为H的检测区域;
检测右嘴角时从FaceAreaRight开始前进到FaceAreaX_Middle宽度为W2、从LipTop到LipBottom高度为H的检测区域;
对检测区域从左向右扫描,求得各列的R、G、B均值,并按照列号分别存入名为ProjectR、ProjectG、ProjectB的三个数组中,显然,它们有H个单元;再建立一个名为DProjectR、DProjectG、DProjectB的数组,并分别存放相邻列均值之差;
具体步骤如下:
SubStep 2a、建立各有256个单元的数组Ar,Ag,Ab并将各单元初始化为0;
SubStep 2b、遍历该列各像素,按各像素的R、G、B取值累加地存入数组Ar,Ag,Ab的相应单元中;
SubStep 2c、设本列均值(即直方图中的投影值)为AverageR、AverageG、AverageB,且
其中ArR是指某列中包含的红色分量值为R的像素总数;
其中AgG是指某列中包含的绿色分量值为G的像素总数;
其中AbB是指某列中包含的蓝色分量值为B的像素总数;
【之所以前文每行的平均值和每列的平均值都采用AverageR、AverageG、AverageB,且每行和每列的所述像素总数都采用ArR、AgG和AbB,那是因为声明的变量越少,对硬件资源的消耗越少】
SubStep 2d、将3个AverageR、AverageG、AverageB存入ProjectR、ProjectG、ProjectB数组相应该列号的单元中;
Step 3、将相邻列均值之差(左列减右列的增量值)存放到DProjectR、DProjectG、DProjectB数组中;
Step 4、从左至右扫描DProjectG、DProjectB数组,得到其极大值(从明到暗跳变)所在列号,将这两对个列号相加除2再取整就是红色团块的起始列号,即为左嘴角边界LipLeft;
从右左至左扫描DProjectG、DProjectB数组,得到其极大值(从明到暗跳变)所在列号,将这两对个列号相加除2再取整就是红色团块的起始列号,即为右嘴角边界LipRight;
同时检验ProjectR应该维持基本不变;基本不变是指突变量小于10%;
至此,用亮红感器定位了嘴唇的区域,该区域的四条边界的对应值分别是LipLeft、LipRight、LipTop和Lipbottom。
图2是本发明的器官定位效果图,表明本发明的方法能实现准确的脸部器官定位。
图3是本发明的流程图。
Claims (1)
1.一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法,其特征在于,包括以下步骤:
步骤一:针对手游脸谱的彩色原图,设定脸部的大致范围;
步骤二:基于颜色感器实现双眼定位及嘴唇定位;
(1)双眼定位:
采用黝黑感器,从上向下定位彩色原图中两瞳孔的垂直区间,再从左向右定位左眼的水平区间,继而从右向左定位右眼的水平区间;完成双眼定位;
所述的黝黑感器用以感知相邻行或相邻列的亮度均值的突变;
(2)嘴唇定位:
采用亮红感器,从上向下定位彩色原图中嘴唇的垂直区间,再从左向右定位左嘴角的水平位置,继而从右向左定位右嘴角的水平位置;完成嘴唇定位;
所述的亮红感器用以感知相邻行或相邻列的在红色分量基本不变的情况下蓝色分量或绿色分量发生的突变;基本不变是指突变量小于10%;
所述的步骤一中,在彩色原图上大致地划定一个矩形的脸部检测区域FaceArea:眉毛以下、下巴以上,包括左右双眼;脸部检测区域FaceArea的4条边界即左边界、右边界、上边界和下边界的坐标分别记为做编FaceAreaLeft、FaceAreaRight、FaceAreaTop和FaceAreaBottom;
所述的双眼定位过程为:
步骤1、从上向下,发现定位黑色像素局部密集的黑色相邻行,即界定一个黑色像素局部密集的相邻行,得到Y的起止坐标;
步骤2、在上述Y的起止坐标限定的区间内,从左至右或从右至左发现、定位黑色像素局部密集的黑色相邻列,得到X的起止坐标;
经过步骤1、步骤2就界定了一个黑色像素局部密集的黑色团块,分别用X、Y的起止坐标界定它的区间;
所述的步骤1是指定位双眼上下边界EyesTop和EyesBottom:
Step 1、设定从FaceAreaTop到FaceAreaBottom高度为H,从FaceAreaLeft到FaceAreaRight宽度为W的检测区域,其中,H=FaceAreaTop-FaceAreaBottom,W=FaceAreaRight-FaceAreaLeft;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值;
Step3、对检测区域从上向下扫描,求得各行的Y均值,并按照行号存入一个名为TB_Project的数组中,TB_Project数组有H个单元;再建立一个名为TB_DProject的数组,并存放相邻行Y均值之差;
扫描TB_DProject数组,得到其极大值和极小值所在行号,这两个行号就是黑色团块的起始行号YTop和终止行号YBottom;
同时检验TB_Project极小值所在行号,它在Ytop和Ybottom之间;
并将Ytop改称为EyesTop,Ybottom改称为EyesBottom;
所述的步骤2是指定位左右眼的X边界,
(A)左眼X边界检测:
Step 1、将FaceArea水平方向的中心边界记为FaceAreaX_Middle;
检测左眼时从FaceAreaLeft开始前进到FaceAreaX_Middle宽度为W1,从EyesTop到EyesBottom高度为H1的检测区域;W1=FaceAreaX_Middle-FaceAreaLeft;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值;
Step3、对检测区域从左向右扫描,求得各列的Y均值,并按照列号存入一个名为Left_Project的数组中,再建立一个名为Left_DProject的数组,并存放相邻列均值之差;
Step4、扫描Left_DProject数组,得到其极大值和极小值所在列号,这两个列号就是黑色团块的起始列号XLeft和终止列号XRight;
Step5、将XLeft改称为LEyeLeft,XRight改称为LEyeRight;
(B)右眼X边界检测:
Step 1、将FaceArea水平方向的中心边界记为FaceAreaX_Middle;
检测右眼时从FaceAreaX_Middle开始,前进到FaceAreaRight宽度为W2,从EyesTop到EyesBottom高度为H1的检测区域;W2=FaceAreaRight-FaceAreaX_Middle;
Step2、按公式Y=(0.257*R+0.504*G+0.098*B)+16将检测区域中像素的RGB数值变换为Y值;
Step3、对检测区域从左向右扫描,求得各列的Y均值,并按照列号存入一个名为Right_Project的数组中,再建立一个名为Right_DProject的数组,并存放相邻列均值之差;
Step4、扫描Right_DProject数组,得到其极大值和极小值所在列号,这两个列号就是黑色团块的起始列号XLeft和终止列号XRight;
Step5、并将XLeft改称为REyeLeft,XRight改称为REyeRight;
所述的嘴唇定位包括定位嘴唇上边界LipTop、嘴唇下边界LipBottom、左嘴角边界LipLeft和右嘴角边界LipRight;
定位嘴唇上边界LipTop和嘴唇下边界LipBottom的过程如下:
设定从Eyesbottom到FaceAreaBottom高度为H2,从FaceAreaLeft到FaceAreaRight宽度为W的检测区域;
对检测区域从上向下扫描获得LipTop,相对的,从下向上扫描获得LipBottom;获得LipTop的过程如下:
求得各行的R、G、B均值,并按照行号分别存入名为Column_ProjectR、Column_ProjectG、Column_ProjectB的三个数组中,显然,它们有H2个单元;再建立三个名称分别为Column_DProjectR、Column_DProjectG、Column_DProjectB的数组,并分别存放相邻行均值之差;
建立各有256个单元的数组Column_Ar、Column_Ag、Column_Ab,并将各单元初始化为0;
遍历各行的各像素,按各像素的R、G、B取值累加地存入数组Column_Ar、Column_Ag、Column_Ab的相应单元中;
记本行均值为Average,每行的RGB分量的均值CAverageR、CAverageG和CAverageB如下:
其中CArR是指某行中包含的红色分量值为R的像素总数;
其中CAgG是指某行中包含的绿色分量值为G的像素总数;
其中CAbB是指某行中包含的蓝色分量值为B的像素总数;
将3个CAverageR、CAverageG和CAverageB存入Column_ProjectR、Column_ProjectG、Column_ProjectB数组相应行号的单元中;
将相邻行均值之差分别存放到Column_DProjectR、Column_DProjectG、Column_DProjectB数组中;
从上至下扫描Column_DProjectG、Column_DProjectB数组,得到其极大值所在行号,将这两个行号相加除2再取整就是红色团块的起始行号LipTop;
从下至上反向地扫描Column_DProjectG、Column_DProjectB数组,得到其极大值所在行号,将这两个行号相加除2再取整就是红色团块的终止行LipBottom;
同时检验Column_ProjectR应该维持基本不变;
定位左嘴角边界LipLeft和右嘴角边界LipRight的过程如下:
检测左嘴角时从FaceAreaLeft开始前进到FaceAreaX_Middle宽度为W1、从LipTop到LipBottom高度为H3的检测区域;
检测右嘴角时从FaceAreaRight开始前进到FaceAreaX_Middle宽度为W2、从LipTop到LipBottom高度为H3的检测区域;
对检测区域从左向右扫描,求得各列的R、G、B均值,并按照列号分别存入名为Line_ProjectR、Line_ProjectG、Line_ProjectB的三个数组中,显然,它们有H3个单元;再建立三个名称分别为Line_DProjectR、Line_DProjectG、Line_DProjectB的数组,并分别存放相邻列均值之差;
具体步骤如下:
SubStep 2a、建立各有256个单元的数组Line_Ar、Line_Ag、Line_Ab并将各单元初始化为0;
SubStep 2b、遍历各列的各像素,按各像素的R、G、B取值累加地存入数组Line_Ar、Line_Ag、Line_Ab的相应单元中;
SubStep 2c、设本列均值为LAverageR、LAverageG、LAverageB,且
其中LArR是指某列中包含的红色分量值为R的像素总数;
其中LAgG是指某列中包含的绿色分量值为G的像素总数;
其中LAbB是指某列中包含的蓝色分量值为B的像素总数;
SubStep 2d、将3个LAverageR、LAverageG、LAverageB存入Line_ProjectR、Line_ProjectG、Line_ProjectB数组相应列号的单元中;
Step 3、将相邻列均值之差存放到Line_DProjectR、Line_DProjectG、Line_DProjectB数组中;
Step 4、从左至右扫描Line_DProjectG、Line_DProjectB数组,得到其极大值所在列号,将这两个列号相加除2再取整就是红色团块的起始列号,即为左嘴角边界LipLeft;
从右左至左扫描Line_DProjectG、Line_DProjectB数组,得到其极大值所在列号,将这两个列号相加除2再取整就是红色团块的起始列号,即为右嘴角边界LipRight;
同时检验Line_ProjectR应该维持基本不变;
至此,用亮红感器定位了嘴唇的区域,该区域的四条边界的对应值分别是LipLeft、LipRight、LipTop和Lipbottom。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410153206.8A CN103902986B (zh) | 2014-04-17 | 2014-04-17 | 一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410153206.8A CN103902986B (zh) | 2014-04-17 | 2014-04-17 | 一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103902986A CN103902986A (zh) | 2014-07-02 |
CN103902986B true CN103902986B (zh) | 2017-04-26 |
Family
ID=50994298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410153206.8A Active CN103902986B (zh) | 2014-04-17 | 2014-04-17 | 一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103902986B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101032405A (zh) * | 2007-03-21 | 2007-09-12 | 汤一平 | 基于全方位计算机视觉的安全驾驶辅助装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4845698B2 (ja) * | 2006-12-06 | 2011-12-28 | アイシン精機株式会社 | 眼部検出装置、眼部検出方法及びプログラム |
-
2014
- 2014-04-17 CN CN201410153206.8A patent/CN103902986B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101032405A (zh) * | 2007-03-21 | 2007-09-12 | 汤一平 | 基于全方位计算机视觉的安全驾驶辅助装置 |
Non-Patent Citations (2)
Title |
---|
A New Algorithm to Classify Face Emotions through Eye and Lip Features by Using Particle Swarm Optimization;A. Habibizad navin1 等;《2012 4th International Conference on Computer Modeling and Simulation (ICCMS 2012)》;20121231;第268页-274页 * |
基于色素分布的驾驶员面部特征点的定位方法;杨英 等;《东北大学学报(自然科学版)》;20070430;第28卷(第4期);第557页-560页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103902986A (zh) | 2014-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7764828B2 (en) | Method, apparatus, and computer program for processing image | |
CN104798101B (zh) | 化妆辅助装置、化妆辅助方法以及化妆辅助程序 | |
CN102799868B (zh) | 人脸面部关键表情识别方法 | |
CN111291642B (zh) | 一种妆容处理方法、装置、电子设备及存储介质 | |
US20120176409A1 (en) | Computer-Readable Storage Medium Having Image Processing Program Stored Therein, Image Processing Apparatus, Image Processing System, and Image Processing Method | |
CN108159700B (zh) | 生成验证码的方法、装置、存储介质、处理器及终端 | |
CN105513013B (zh) | 一种手机图片发型合成方法 | |
CN104599297B (zh) | 一种对人脸自动上腮红的图像处理方法 | |
CN109087379A (zh) | 人脸表情的迁移方法和人脸表情的迁移装置 | |
Podro | Depiction and the golden calf | |
CN107452049A (zh) | 一种三维头部建模方法及装置 | |
WO2023077742A1 (zh) | 视频处理方法及装置、神经网络的训练方法及装置 | |
CN106097354A (zh) | 一种结合自适应高斯肤色检测和区域生长的手部图像分割方法 | |
US10957092B2 (en) | Method and apparatus for distinguishing between objects | |
CN103902986B (zh) | 一种借鉴昆虫触角功能在手游脸谱中实现器官定位的方法 | |
CN107948534A (zh) | 一种基于人体肤色差异的拍照方法、装置及移动终端 | |
CN106778658A (zh) | 基于课堂场景及学习者视线分析学习者注意力的方法 | |
US20230298253A1 (en) | Appearance editing method and apparatus for virtual pet, terminal, and storage medium | |
CN110730303B (zh) | 图像染发处理方法、装置、终端和存储介质 | |
KR101513931B1 (ko) | 구도의 자동보정 방법 및 이러한 구도의 자동보정 기능이 탑재된 영상 장치 | |
KR100859315B1 (ko) | 게임 시스템에서의 게임 캐릭터 얼굴 변경 방법 | |
Ulucan et al. | BIO-CC: Biologically inspired color constancy. | |
CN114519773A (zh) | 生成三维虚拟人物的方法、装置、存储介质及家教机 | |
TW201123837A (en) | Image processing method | |
CN106355134A (zh) | 基于人脸影像的人脸肤色的侦测与数据库建立方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |