数字图像的红眼处理方法
技术领域
本发明涉及一种数字图像处理方法,特别是涉及一种数字图像中的红眼处理方法。
背景技术
随着数码产品在家庭、办公领域的普及,数字图像处理技术已经在人们日常工作生活中得到了广泛的应用。我们在用数码相机拍照时,有时人和动物的眼睛就会变成红色,这就是俗称的“红眼”。“红眼”是指在用闪光灯拍摄人或动物的特写时,在照片上的瞳孔呈现红色斑点的现象。通常在比较暗的环境中,人或动物瞳孔会放大,此时,如果闪光灯的光轴和相机镜头的光轴比较近,强烈的闪光灯光线会通过眼底反射到镜头,眼底有丰富的毛细血管,这些血管是红色的,因此就形成了红色的光斑。
随着数码相机机身日益紧凑,闪光灯和镜头的距离也在减小,因为小型相机和数码相机在设计上,较着重于考虑轻薄短小、携带方便等方面,设计时镜头与闪光灯常常靠得很近,因此红眼现象也越来越严重。
尽管现在部分先进相机有了红眼减少模式,但是在数字元图像中这个问题依然比较普遍。一般相机的消除红眼功能主要是通过闪光灯的预闪,促使瞳孔做某种程度的收缩,以减小反射回来的红光。在实务上,这种方法可以减少的红眼现象还是极其有限,并非真的可以消除或避免掉拍摄结果中出现红眼。
市场上也有很多商业软件可以从图像中消除红眼,其主张在后期进行红眼消除。具体的处理方法都需要用户手动调节找到红眼,然后判断瞳孔的颜色,进而对红色区域进行覆盖。这种方法通常需要多次调整,其速度较慢,也比较耗费人力,特别是需要处理数量较多的图像时,相应的处理效率也比较低。
也有利用软件自动消除红眼的方式,与手动调节相比较,这种方式更为方便,不需要用户干涉。但是其是通过用椭圆或是近似面部模型在肤色区域中找到人脸,在整个人脸的范围内搜索红点,搜索的面积比较大,不但搜索速度相对较慢,而且搜索的准确度不高,经常会出现错报、漏报的情况,使图像的处理结果不够精确。
发明内容
有鉴于此,本发明所要解决的技术问题是提出一种数字图像的红眼处理方法,它能够普遍适用于各种复杂情况而且准确率很高的红眼消除方法,能够自动地定位并修复红眼,而无需人工干涉,并且能够准确地将红眼定位。
为了实现上述目的,本发明揭露一种数字图像的红眼处理方法,首先检测图像中的肤色区域,然后提取该肤色区域中的所有边界,再检测该肤色区域内与眼睑二次曲线匹配的边界,以确定眼睑区域,最后检测该眼睑区域内的红色像素并将其填充。其中检测图像中的肤色区域之步骤更包括如下步骤:将图像转化为HIS格式;将HIS值在肤色范围的像素标记为肤色像素;及将肤色像素组成的连续区域标记为肤色区域。
本发明揭露一种数字图像的红眼处理方法,是在该肤色区域中检测人脸区域,提取该人脸区域中的所有边界,再将人脸区域内的边界与眼睑二次曲线匹配以确定眼睑区域,最后检测该眼睑区域内的红色像素并将其填充。
本发明揭露一种数字图像的红眼处理方法,首先检测图像中的肤色区域,然后提取该肤色区域中的所有边界,以确定眼睑区域,在该眼睑区域内,检测与虹膜二次曲线匹配的边界,以确定虹膜区域,在该虹膜区域内检测并填充红眼。
本发明揭露一种数字图像的红眼处理方法,首先检测图像中的肤色区域,然后在该肤色区域中检测人脸区域,在检测到的人脸区域内提取所有边界,检测该人脸区域内与眼睑二次曲线匹配的边界,以确定眼睑区域,在眼睑区域内,检测与虹膜二次曲线匹配的边界,以确定虹膜区域,最后检测该虹膜区域内的红色像素并将其填充。
根据本发明揭露的数字图像的红眼处理方法,通过在肤色区域以及人脸区域内检测眼睑区域,可以在很大程度上减小红眼检测的搜索范围,降低误报率,进而大大提高红眼检测的整体性能。本发明中检测肤色区域是在HIS格式下完 成的。通过二次曲线进行匹配进而找到眼睑区域以及虹膜区域,从而在更有效的区域内检测红眼,使红眼的定位更加精确,同时也缩小了检测范围,提高了检测速度。对于提高红眼处理的正确率、降低误报率都有很大的帮助。
有关本发明的详细内容及技术,兹配合附图说明如下:
附图说明
图1是红眼位置的示意图;
图2是本发明的数字图像的红眼处理方法的第一实施例的流程图;
图3是本发明提取的肤色区域示意图;
图4是本发明的数字图像的红眼处理方法的第二实施例的流程图;
图5是本发明的数字图像的红眼处理方法的第三实施例的流程图;及
图6是本发明的数字图像的红眼处理方法的第四实施例的流程图。
具体实施方式
下面结合附图对本发明进行详细说明。
请参照图1,该图为红眼位置的示意图。由于视网膜上的血管对闪光灯的发射使得红眼现象对整张照片的美观造成严重影响,数字图像中的红眼经常出现在20所示的位置,这都是完美的照片上所不愿意看到的。
数字化的图像输入计算机以后,就可以发挥计算机的图像处理优势了。红眼消除最重要的部分就是搜索速度、红眼识别的准确程度以及红眼颜色的覆盖。根据本发明提供的数字图像的红眼处理方法,请参见图2,该图是为本发明的数字图像的红眼处理方法的第一实施例的流程图。在对数字图像中的红眼进行处理的过程中,最重要也最为关键的环节就是对红眼进行定位,在输入的图像中检测出红眼的位置。我们所要检测的对象大多是由图像捕捉设备所采集的数字图像,所以采集条件特别是光照条件以及背景图案等都会影响我们对红眼的检测。对红眼进行定位首要的就是要进行肤色判断,即,首先在步骤210中,检测图像中的肤色区域。由肤色像素构成的连续的闭合区域称之为肤色区域。本发明中检测肤色区域是在HIS格式下完成的,HSI格式反映了人类观察色彩的方式,同时也有利于图像处理。在对色彩信息的利用中,这种格式的优点在于它将亮度(I)与反映色彩本质特性的两个参数——色度(H)和饱和度(S)分开。在HIS格式中检测肤色区域。根据图像中像素点的HIS的值,来判断该像素是否为肤色像素。其中黄种人的肤色范围为:
24<H<40;
0.2*255<S<0.6*255;
I>0.5*255。
因此就可以根据上述范围将图像中肤色像素标记出来,请参见图3,该图为检测到的肤色区域的示意图,该图所示的即为经过检测后标记出来的肤色区域。然后,对该肤色区域进行处理,进而在该肤色区域中找到眼睛的轮廓,也就是眼睑区域,从而在该眼睑区域中搜索红点,使搜索的面积大大减小。确定眼睑区域就需要提取该肤色区域中的边界,即步骤220,利用这些物体边界,就可以分割出一个一个的物体。边界就是图像中界线,其可以划分出差别较大的像素。肤色中的边界可以在灰度图像中提取,先将其变换为灰度图像,然后计算该灰度图像的梯度,再比较图像中相邻两行像素的梯度值,如果该梯度值大于一梯度门限制,则将其标记为边界,这里的梯度门限制为10,也就是说将相邻两行像素的梯度值大于10的像素标记为边界。同样,也可以通过边缘检测技术找到边界。边缘检测技术就是将图像中的像素与其周围8个方向的相邻像素进行比较,如果该像素与其相邻像素的差别很大,则将其标记为边缘。找出的边界可能相互连接,也可能只是一些孤立的线段,由于眼睑都是承抛物线形状,因此,在步骤230中,将找到的边界与眼睑二次曲线进行匹配,该眼睑二次曲线的解析式为Y=aX2+bX+c,由解析式可以得出,该眼睑二次曲线是关于X轴对称的抛物线,其中,当0.01<-a<0.05时,该二次曲线为上眼睑二次曲线;当0.01<a<0.05时,该二次曲线为下眼睑二次曲线。找到两个分别对应于上下眼睑二次曲线的边界,由这两个边界所围成的区域就可能是眼睑区域,但是如果这两条二次曲线的顶点的横坐标如果相差较远,那么找到的曲线可能就不是眼睑轮廓,因此还要判断上下眼睑二次曲线中顶点横坐标的差,如果该顶点横坐标的差小于一顶点基准值,则找到的二次曲线所围成的区域就可以认为是眼睑区域。这里顶点基准值为4。在RGB彩色区域中,R值代表红色,所述红点就是指R值对于G值,并且R值大于B值的像素点。因此此时需要将图像由HIS格式转换为RGB格式,检测出红色像素,然后将红眼区域填充,步骤240,具体的填充方法是将所有的红眼都通过灰色填充,即将红点由彩色图 像变为灰度图像,从而消除图像中的红眼。
请参见图4,该图为本发明的数字图像的红眼处理方法的第二实施例的流程图。首先,在步骤410,检测图像中的肤色区域,其也是通过判断HIS的值的范围来确定肤色区域,然后,在步骤420,在肤色区域中检测人脸区域,,在图像中,人脸区域通常都是肤色区域中面积较大的区域。人脸区域是通过计算该肤色区域的像素个数以及像素行数,将该像素个数大于一像素个数基准值,并且该像素行数大于一像素行数基准值的像素所围成的闭合区域标记为人脸区域。通常像素个数大于5000,并像素行数大于100的区域即为人脸区域。通过确定人脸区域,就可以过滤掉不可能的肤色区域,这部分区域的像素点比较少,例如手部区域等,从而在人脸区域内检测眼睑,相应的缩小了检测范围。接下来,在步骤430,提取人脸区域中的所有边界,可以通过判读灰度图像的梯度的方法标记边界,也可以通过边缘检测的方法提取边界。然后将该人脸区域内的边界与眼睑二次曲线匹配,找到上下眼睑二次曲线,然后判断上下眼睑二次曲线中顶点横坐标之差,如果该顶点横坐标之差小于一顶点基准值4,则找到的二次曲线所围成的区域就可以认为是眼睑区域,步骤440。找到眼睑区域后,就可以在眼睑区域内检测的红色像素,进而将其填充,步骤450。
请参见图5,该图是为本发明第三实施例的流程图。首先,在步骤510,检测图像中的肤色区域,其也是通过判断HIS的值的范围来确定肤色区域,然后提取肤色区域中的所有边界,在步骤520,可以通过判读灰度图像的梯度的方法标记边界,也可以通过边缘检测的方法提取边界。接下来检测整个肤色区域内与眼睑二次曲线匹配的边界,找到两个分别对应于上下眼睑二次曲线的边界,然后判断上下眼睑二次曲线中顶点横坐标之差,如果该顶点横坐标之差小于一顶点基准值4,则找到的二次曲线所围成的区域就可以认为是眼睑区域。这样就确定了眼睑区域,步骤530。再将找到的边界与眼睑二次曲线进行匹配,二次曲线的解析式为Y=aX2+bX+c,其中,当0.01<-a<0.05时,该二次曲线为上眼睑二次曲线;当0.01<a<0.05时,该二次曲线为下眼睑二次曲线。找到两个相对应的上下眼睑就可以确定眼睑区域。在眼睑区域中更包含有虹膜区域,虹膜是瞳孔周围含有色素的环形薄膜,它的功能是调节瞳孔大小,是瞳孔与巩膜间的环形可视部分,其形状可以认为是由左右两个抛物线组成。红眼中的红色像素都集中在虹膜区域内,如果进而找到虹膜区域,在虹膜区域内检测红点, 会使红点的定位更加精确。因此,接下来就是要确定虹膜区域。确定虹膜区域时,同样需要利用眼睑区域内的边界,与眼睑区域不同的是虹膜区域是由两条关于Y轴对称抛物线构成的。虹膜二次曲线的表达式为
X=aY2+bY+c
其中,当a>0时,为左虹膜二次曲线;当a<0时,为右虹膜二次曲线。因此将眼睑区域内的边界与虹膜二次曲线匹配(步骤540),找到两个分别对应于左右虹膜二次曲线的两个边界,由这两个边界所围成的区域即为虹膜区域。找到虹膜区域后,就可以在虹膜区域内检测的红色像素,进而将其填充,步骤550。
请参见图6,该图为本发明第四实施例的流程图。首先,在步骤610,检测图像中的肤色区域。然后在该肤色区域中检测人脸区域,即执行步骤620,再提取该人脸区域中的所有边界,步骤630,检测该人脸区域内与眼睑二次曲线匹配的边界,找到两个分别对应于上下眼睑二次曲线的边界,然后判断上下眼睑二次曲线中顶点横坐标之差,如果该顶点横坐标之差小于一顶点基准值,则找到的二次曲线所围成的区域就可以认为是眼睑区域,步骤640,在本实施例中,该顶点基准值为4。在步骤650中,进一步检测该眼睑区域内与虹膜二次曲线匹配的边界,以确定虹膜区域,这样,在最后的步骤660,检测该虹膜区域内的红色像素并将其填充。本实施例既包含有检测人脸区域,同时也包含检测虹膜区域,因此与其它实施例相比较,其对红眼的定位最为精确。
虽然本发明以前述的较佳实施例揭露如上,然其并非用以限定本发明,任何本领域普通技术人员,在不脱离本发明的精神和范围内,当可作些相应更动与润饰,因此本发明的专利保护范围须视本发明权利要求书所要求保护的范围为准。