发明内容
本发明要解决的技术问题是提供一种红眼检测装置及其检测方法,能够快速检测出红眼区域,以方便对红眼区域进行修正,得到满意的图像。
为了解决上述技术问题,本发明提供了一种红眼检测方法,包含如下步骤:
在欲处理的图像中定位出眼睛区域;
对所述眼睛区域内每个像素分别计算其为红色素的概率;
根据每个像素为红色素的概率,确定红色素集中的区域;
根据所述红色素集中的区域,确定红眼区域。
进一步地,上述红眼检测方法还可具有以下特点:
所述根据每个像素为红色素的概率,确定红色素集中的区域的步骤包含:
将每个像素为红色素的概率与一特征阈值进行比较,根据比较结果为每个像素分配对应的特征值;
分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和,筛选出一具有最大特征值之和的矩形区域作为所述红色素集中的区域。
进一步地,上述红眼检测方法还可具有以下特点:
所述分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和的步骤包含:
将各个像素对应的特征值组成一特征图像,求取该特征图像对应的积分图像,定义该积分图像中点(x,y)处的积分值II(x,y)为该点左上角的矩形区域内的所有像素的特征值f(p(x′,y′))之和:
根据所述眼睛区域中各矩形的4个顶点对应的特征图像的积分图像值,计算各矩形内的像素的特征值之和:
sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))=II(x,y)-II(x-a,y)-II(x,y-b)+II(x-a,y-b)
其中,sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))为一顶点坐标分别为(x,y),(x-a,y),(x,y-b),(x-a,y-b)的矩形,a为该矩形x轴方向的边长,b为该矩形y轴方向的边长。
进一步地,上述红眼检测方法还可具有以下特点:
所述分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和的步骤包含:
定义所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值f(p(x′,y′))之和为sum((x,y),(x-a,y),(x,y-b),(x-a,y-b)):
其中,sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))为一顶点坐标分别为(x,y),(x-a,y),(x,y-b),(x-a,y-b)的矩形,a为该矩形x轴方向的边长,b为该矩形y轴方向的边长。
进一步地,上述红眼检测方法还可具有以下特点:
所述分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和的步骤之前还包含:
设置所述矩形沿x轴方向上的边长的取值范围和步长值;以及
设置所述矩形沿y轴方向上的边长的取值范围和步长值。
进一步地,上述红眼检测方法还可具有以下特点:
在确定红色素集中的矩形区域之后,对所述红色素集中的区域的边缘采用曲线拟合技术得到更精确的区域作为红色素集中区域。
进一步地,上述红眼检测方法还可具有以下特点:
所述根据所述红色素集中的区域,确定红眼区域的步骤包含:
计算所述红色素集中的区域中所有像素为红色素的平均概率,如判断该平均概率大于一红色素概率阈值,则判定所述红色素集中的区域为红眼区域。
进一步地,上述红眼检测方法还可具有以下特点:
所述对眼睛区域内每个像素分别计算其为红色素的概率的步骤包含:
采集大量红眼图像,标定其中的红眼区域作为样本,训练出红眼区域内像素的归一化红色分量所服从的高斯模型;
计算出欲处理的图像中眼睛区域内各像素的归一化红色分量,分别与所述高斯模型进行匹配,从而获得各像素为红色素的概率:
其中R(x,y)、G(x,y)、B(x,y)分别为坐标为(x,y)处像素在RGB空间表示的值,r(x,y)为坐标为(x,y)处像素的归一化红色分量,ρ(x,y)为坐标为(x,y)处像素为红色素的概率,μ为红眼区域内像素的归一化红色分量所服从的高斯模型的均值,σ为红眼区域内像素的归一化红色分量所服从的高斯模型的方差。
进一步地,上述红眼检测方法还可具有以下特点:
所述对眼睛区域内每个像素分别计算其为红色素的概率的步骤包含:
采集大量红眼图像和正常眼睛图像,标定其中的红眼区域作为红色素样本,并根据所述红眼区域在眼睛区域中的位置,在正常眼睛图像中标定相同的区域作为正常色素样本,建立红色像素分布直方图和正常色素分布直方图;
计算出欲处理的图像中眼睛区域内各像素的归一化红色分量的离散化值,将其分别与所述红色像素分布直方图和正常色素分布直方图进行匹配,读取该离散化值在红色像素直方图中对应的累积值C
r,和其在正常像素直方图累积直方图中对应的累计值C
n,采用
的值作为该像素为红色素的概率。
为了解决上述技术问题,本发明还提供了一种红眼检测装置,包含依次相连的眼睛区域定位模块、红色素概率计算模块、红色素区域分析模块和判定模块,其中:
所述眼睛区域定位模块,用于在欲处理的图像中定位出眼睛区域;
所述红色素概率计算模块,用于对所述眼睛区域定位模块定位出的眼睛区域内的每个像素分别计算其为红色素的概率;
所述红色素区域分析模块,用于从所述红色素概率计算模块中获取各像素为红色素的概率,并分别将每个像素为红色素的概率与一特征阈值进行比较,根据比较结果为每个像素分配对应的特征值,然后分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和,筛选出一具有最大特征值之和的矩形区域作为所述红色素集中的区域。
所述判定模块,用于从所述红色素区域分析模块中获取所述红色素集中的区域,并判断该区域是否为红眼区域。
进一步地,上述红眼检测装置还可具有以下特点:
所述红色素区域分析模块在为每个像素分配对应的特征值之后,将各个像素对应的特征值组成一特征图像,计算该特征图像的积分图像,定义该积分图像中点(x,y)处的积分值II(x,y)为该点左上角的矩形区域内的所有像素的特征值f(p(x′,y′))之和:
根据所述眼睛区域中各矩形的4个顶点对应的特征图像的积分图像值,计算各矩形内的像素的特征值之和:
sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))=II(x,y)-II(x-a,y)-II(x,y-b)+II(x-a,y-b)
其中,sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))为一顶点坐标分别为(x,y),(x-a,y),(x,y-b),(x-a,y-b)的矩形,a为该矩形x轴方向的边长,b为该矩形y轴方向的边长。
本发明所述的一种红眼检测方法,能够快速检测出红眼区域,以方便对红眼区域进行修正,得到满意的图像。
具体实施方式
本发明提出一种红眼检测装置及其检测方法,能够快速检测出红眼区域。其基本构思是:在欲处理的图像中定位出眼睛区域;计算所述眼睛区域中每个像素为红色素的概率;根据每个像素为红色素的概率,确定红色素集中的区域;根据所述红色素集中的区域,确定红眼区域。
下面结合附图对本发明实施方式进行详细介绍。
参考图1,该图示出了本发明实施例一种红眼检测装置,包含依次相连的眼睛区域定位模块、红色素概率计算模块、红色素区域分析模块和判定模块,其中:
所述眼睛区域定位模块,用于在欲处理的图像中定位出眼睛区域;
所述红色素概率计算模块,用于对所述眼睛区域定位模块定位出的眼睛区域内的每个像素分别计算其为红色素的概率;
所述红色素区域分析模块,用于从所述红色素概率计算模块中获取各像素为红色素的概率,并分别将每个像素为红色素的概率与一特征阈值进行比较,根据比较结果为每个像素分配对应的特征值,然后分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和,筛选出一具有最大特征值之和的矩形区域作为所述红色素集中的区域。
所述红色素区域分析模块在分别计算所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值之和之前,设置所述矩形沿x轴方向上的边长的取值范围和步长值,以及所述矩形沿y轴方向上的边长的取值范围和步长值。
所述红色素区域分析模块在为每个像素分配对应的特征值之后,将各个像素对应的特征值组成一特征图像,计算该特征图像的积分图像,定义该积分图像中点(x,y)处的积分值II(x,y)为该点左上角的矩形区域内的所有像素的特征值f(p(x′,y′))之和:
根据所述眼睛区域中各矩形的4个顶点对应的特征图像的积分图像值,计算各矩形内的像素的特征值之和:
sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))=II(x,y)-II(x-a,y)-II(x,y-b)+II(x-a,y-b)
其中,sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))为一顶点坐标分别为(x,y),(x-a,y),(x,y-b),(x-a,y-b)的矩形,a为该矩形x轴方向的边长,b为该矩形y轴方向的边长。
所述红色素区域分析模块在确定红色素集中的矩形区域之后,对所述红色素集中的区域的边缘采用曲线拟合技术得到更精确的区域作为红色素集中区域。
所述判定模块,用于从所述红色素区域分析模块中获取所述红色素集中的区域,并判断该区域是否为红眼区域。所述判定模块是计算所述红色素集中的区域中所有像素为红色素的平均概率,如判断该平均概率大于一红色素概率阈值,则判定所述红色素集中的区域为红眼区域。
参考图2,该图示出了采用图1所示红眼检测装置对欲处理的图像进行红眼检测的方法,具体包含如下步骤:
步骤S201:对欲处理的图像进行人脸检测,确定人脸区域;
可以采用全角度的人脸检测器对采集到的图像进行人脸检测。
步骤S202:在人脸区域内,定位出眼睛区域;
可以按照现行方法定位眼睛区域,比如,可以先采用基于自适应增强(Adaboost)算法和微结构特征(haar-like)的分类器模型为左眼和右眼分别训练分类器,然后根据左眼区域和右眼区域在人脸区域中的分布情况确定欲处理的图像中的左眼搜索范围和右眼搜索范围,从所述左眼搜索范围内的图像上提取微结构特征输入到上述为左眼训练好的分类器中,从所述右眼搜索范围内的图像上提取微结构特征输入到上述为右眼训练好的分类器中,根据分类检测结果来定位出左眼区域和右眼区域。
步骤S203:计算眼睛区域内每个像素为红色素的概率;
本发明实施例可以事先训练出红眼区域内像素的归一化红色分量所服从的高斯模型η(μ,σ),其中μ为高斯模型的均值,σ为方差。具体来说,可以采集各种情况下,如不同光照强度下、不同拍摄角度下等,拍摄到的红眼图像,利用现有的图像处理技术标定该些红眼图像中的红眼区域,提取该些红眼区域内每个像素的红色分量,较佳地可以采用归一化RGB空间的红色分量 作为特征,之后采用高斯模型训练得到红眼区域中归一化红色分量服从的高斯模型η(μ,σ),其中μ为高斯模型的均值,σ为方差。
步骤S203中分别计算眼睛区域内每个像素为红色素的概率时,可以先计算出所述眼睛区域内每个像素的归一化红色分量r(x,y),然后与训练好的红眼区域中归一化红色分量服从的高斯模型η(μ,σ)进行匹配,从而得到所述每个像素属于红色素的概率ρ(x,y):
其中R(x,y)、G(x,y)、B(x,y)分别为坐标为(x,y)处像素在RGB空间表示的值,r(x,y)为坐标为(x,y)处像素的归一化红色分量,ρ(x,y)为坐标为(x,y)处像素为红色素的概率,μ为红眼区域内像素的归一化红色分量所服从的高斯模型的均值,σ为红眼区域内像素的归一化红色分量所服从的高斯模型的方差。
在另一实施例中,还可以采用统计直方图的方法计算眼睛区域内每个像素为红色素的概率。具体来说,可以先采集大量红眼图像和正常的眼睛图像,利用现有的图像处理技术标定出红眼图像中的红眼区域,并且根据该区域在眼睛上的位置,还在所述正常的眼睛图像中相应的位置处进行标定。之后,对标定的红眼区域中的每个像素以及标定的正常眼睛区域中的每个像素分别进行如下处理:将红色分量进行离散化,比如将[0,1]间的归一化红色分量值离散化为64个区间,采周其落入区间的序号作为其离散化值。建立两个直方图,一个是红色像素分布直方图,一个是正常像素分布直方图,如果当前像素为红像素,则将该像素归一化红色分量离散化值对应的红色像素直方图累积值加1,如果当前像素为正常像素,则将该像素归一化红色分量离散化值对应的正常像素直方图累积值加1。
相应地,对待处理图像上眼睛区域内的每个像素,可采用如下方式判定其属于红色素的概率:计算该眼睛区域内某一像素的归一化红色分量的离散化值,然后将其分别与所述红色像素分布直方图和正常像素分布直方图进行匹配,读取该离散化值在红色像素直方图中对应的累积值C
r,和其在正常像素直方图累积直方图中对应的累计值C
n,采用
的值作为该像素为红色素的概率。
步骤S204:将眼睛区域内每个像素为红色素的概率与一特征阈值进行比较,根据比较结果为每个像素(x,y)分配对应的特征值f(p(x,y));
所述特征值f(p(x,y))的分配方法可以是,如果一个像素(x,y)为红色素的概率ρ(x,y)大于或者等于特征阈值T,则为该像素分配一个正特征值,否则,则为该像素分配一个负特征值。所述正特征值和所述负特征值的绝对值相同,比如,正特征值可以是1,负特征值可以是-1。
步骤S205:计算眼睛区域内各像素对应的特征值f(p(x,y))组成的特征图像的积分图像;
在所述积分图像中,在点(x,y)处的值定义为该点左上角的矩形区域内的所有像素特征值之和,即:
其中,II(x,y)表示在积分图像中点(x,y)处的积分值。
较佳地,本发明实施例还提供了一种快速计算积分图像的方法:
对任意y=0,1,2...H-1及x=0,1,2...W-1,设定II(-1,y)=0,II(x,-1)=0;
对图像所有行,可以按照y=0,1,2...H-1的顺序进行如下处理:
设定rs=0表示当前行所有像素和初始值为0;
对图像y行中的所有像素按照x=0,1,2...W-1的顺序进行如下处理:
令rs=rs+f(p(x,y));
则当前像素(x,y)的积分图像II(x,y)=II(x,y-1)+rs;
计算完第y行的积分图像后接着计算第y+1行的积分图像;
对图像的所有行处理完毕后,完成积分图像的计算。
由上述内容可知,本发明实施例只需要保存一个rs(x,y)对应的数据,对于一些内存要求较高的应用,比如芯片设计,采用本发明实施例提供的方法更具优点。
步骤S206:利用该积分图像,分别计算眼睛区域内沿x轴或者y轴方向上各矩形内的像素的特征值之和;
由于该积分图像中点(x,y)处的积分值的定义为该点左上角的矩形区域内的所有像素的特征值之和,因此,可以根据简单的几何面积计算方法便可以计算出以点(x,y)为右下角顶点的矩形内的像素的特征值之和。
假设要计算一顶点坐标分别为(x,y),(x-a,y),(x,y-b),(x-a,y-b)的矩形内所有像素的特征值之和sum((x,y),(x-a,y),(x,y-b),(x-a,y-b)),只需要用该矩形右下角顶点(x,y)处的积分值减去该矩形右上角顶点(x,y-b)和左下角顶点(x-a,y)对应的积分值,之后再加上该矩形左上角顶点(x-a,y-b)对应的积分值即可,即:
sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))=II(x,y)-II(x-a,y)-II(x,y-b)+II(x-a,y-b)
其中,a为该矩形x轴方向的边长,b为该矩形y轴方向的边长。
由于上述处理方法,只需要三次加减法运算就求得了一矩形区域内的特征值之和,因此处理速度很快,便于实时处理。
上述沿x轴或者y轴方向上的各矩形,包括眼睛区域内包含的各种大小,各个位置的矩形。在实际处理中,也并不需要对满足上述条件的所有矩形区域都进行处理,可以设定上述矩形的最大宽度(即a的最大取值),最小宽度(即a的最小取值),最大高度(即b的最大取值),最小高度(即b的最小取值),水平方向的步长(即a取值的间隔),垂直方向的步长(即b取值的间隔),只处理在眼睛区域内的宽度在最小宽度和最大宽度之间的,高度在最小高度和最大高度之间的,以水平步长和垂直步长遍历其所有可能位置得到的所有矩形。
上述步骤S205和步骤S206提出一种快速计算眼睛区域内沿x轴或者y轴方向上各矩形内的像素的特征值之和的方法,通过获取眼睛区域内像素对应的特征图像的积分图像,以及简单的加减运算来实现,能够满足实时处理的要求。
在另一实施例中,在为每个像素(x,y)分配对应的特征值f(p(x,y))之后,也可以直接对眼睛区域中各个矩形中的像素的特征值进行求和运算,即定义所述眼睛区域中沿x轴或者y轴方向上各矩形内的像素的特征值f(p(x′,y′))之和为sum((x,y),(x-a,y),(x,y-b),(x-a,y-b)):
其中,sum((x,y),(x-a,y),(x,y-b),(x-a,y-b))为一顶点坐标分别为(x,y),(x-a,y),(x,y-b),(x-a,y-b)的矩形,a为该矩形x轴方向的边长,b为该矩形y轴方向的边长。
按照上述定义计算矩形区域内特征值之和的方法,其运算量较大。因此,本发明实施例较佳地推荐采用步骤S205和步骤S206所述的快速计算方法来计算矩形区域内的特征值之和。
步骤S207:筛选出该些矩形中像素的特征值之和最大的一矩形;
筛选出的该矩形区域即为红色素集中的区域。
步骤S208:对所述筛选出的矩形区域的边缘采用曲线拟合技术进行处理;
由于红眼图像的饱和度很高,因此边缘基本上没有,得到的边缘为眼球区域与周围区域的边缘,可以采用曲线拟合方式,得到上述边缘连接得到的椭圆形区域。
具体来说,可以先采用canny、sobel或者prewitt算子,提取所述红色素集中的矩形区域中的图像边缘强度,将边缘强度与一边缘强度阈值相比较,将小于边缘强度阈值的边缘点删除。对于大于或者等于边缘强度阈值的边缘点,采用椭圆形的广义哈夫变换,检测到眼球与周围区域的边缘,曲线内部的区域即为瞳孔区域。
步骤S209:计算上述瞳孔区域内像素为红色素的平均概率,并判断该平均概率是否大于一红色素概率阈值,如果判断结果为“是”,则判定上述区域是红眼区域,对该红眼区域内的像素进行如亮度补偿等相应的红眼消除处理,结束;否则,判定上述区域不是红眼区域,结束。
当然,根据每个像素为红色素的概率,还可以利用多种其他图像处理方法来确定红色素集中的区域,比如,还可以分别将各像素为红色素的概率与一红色素概率阈值进行比较,筛选出为红色素的像素,并对该些像素进行连通域分析来获得红眼区域。
本发明提供的一种红眼检测装置及其检测方法,可以广泛地应用于摄像装置中,便于在拍摄图像后快速定位出红眼区域并进行修正,得到满意的图像。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。