红眼检测的方法

文档序号:6479969阅读:388来源:国知局
专利名称:红眼检测的方法
红眼检测的方法
背景技术
尽管有在减少照片中的红眼的发生方面的技术改进,但红眼对于专业人员、消费者和公司而言仍是普遍的问题。已经尝试了许多解决方案以处理此频繁的问题,包括产生红眼消减算法。然而,尝试解决红眼问题的大多数先前的方法已简单地包括在应用检测处理之前降低图像的分辨率。另外,与存储器效率相反,先前的算法是针对计算速度和性能的稳健性而设计的。先前的算法要求多达7个附加平面,要求每个像素7字节的存储。一个平面需要存储RGB空间中的红色(redness)的测量结果,一个平面存储CieLab空间中的红色的测量结果,四个平面存储综合的(integrated) RGB红色值,并且一个平面存储超出红色阈值的像素的二进制图。虽然这些方法已经在个人计算机上产生了令人满意的结果,但对于嵌入式硬件而言还不能这样说。现有红眼消减算法常常要求大量的可用存储器。诸如打印机、 数字照相机、扫描仪之类的依赖于嵌入式硬件的设备和所有一体化设备通常由于存储器限制而在利用红眼消减算法时表现得不好。


通过结合附图进行的以下详细说明,本发明的各种特征和优点将是显而易见的, 附图一起以示例的方式举例说明本发明的特征,并且在附图中
图1举例说明正在被系统访问的数字图像和由系统产生的其中已识别红眼的数字图像。图2是举例说明根据本发明的实施例的、用于标记红像素的方法的流程图。图3举例说明根据本发明的实施例的、在像素图(pixel map)上描绘的二维阵列的表示。图4是举例说明根据本发明的实施例的、用于产生和扩展相邻群组的方法的流程图。图5是举例说明用于确定相邻群组是否是红眼的方法的流程图。图6是举例说明根据本发明的实施例的、用于检测红眼的高级方法的流程图。图7举例说明可以独立地或相互结合地使用所述系统的不同装置和设备、打印机、数字照相机、计算机、服务器和存储介质。
具体实施例方式现在将对在附图中举例说明的示例性实施例进行参考,并且将在本文中使用特定语言来对其进行描述。然而,应理解的是,并不从而意图限制本发明的范围。在相关领域内并已拥有本公开的普通技术人员将想到的本文举例说明的发明特征的变更和其它修改以及如本文举例说明的本发明的原理的附加应用将被视为在本发明的范围内。图1举例说明正在被系统100访问的数字图像110和由系统100产生的其中已识别红眼的数字图像180。该系统包括数字采样器120、下采样数字图像130、下采样数字图像130的像素图140、像素消除器(eliminator) 150、像素分段器(segmentor) 160和群组分类器170。如本领域内的普通技术人员能够认识到的,除图1中所描绘的那些之外和/或替代图1中所描绘的那些,系统100可以包括附加的组件或子系统。如上所述,数字图像110被系统100访问。图1中所示的数字采样器120接收数字图像110并产生下采样数字图像130。然后由像素消除器150来产生并访问下采样数字图像130的像素图140。如上所述,如图1中所示的像素消除器150访问下采样数字图像 130的像素图140。像素消除器150扫描包含在下采样数字图像130的像素图140中的每个像素,并计算每个像素的红色水平。每个像素的红色水平的计算可以在一个或多个阶段中完成。现在将参考图2中的流程图来解释如图1中所描绘的像素消除器150的操作。图 2是举例说明根据本发明的实施例的、用于标记像素的方法的流程图。在一个实施例中,该方法可以由系统100来执行。在其中由系统100来执行图2的方法的实施例中,计算每个像素的红色值,需要像素消除器150最初定义红阈值,如在步骤210中那样。然后,像素消除器可以在步骤220中检查是否已经分析并标记了像素图150上的每个像素。像素消除器 150可以扫描像素图140上的任何未标记像素,并且随后到达下一个像素,如在步骤230中那样。然后,像素消除器可以计算每个像素的红色,如在步骤240中那样。在计算每个像素的红色时,像素消除器将当前正在被扫描的像素的红色水平与所定义的红阈值相比较,如在步骤250中那样。根据像素彩色成分来测量每个像素的红色。如果红色值在阈值之上,则将像素标记为“红”,如在步骤260中那样。如果红色值在阈值之下,则中止红色计算且方法返回至步骤220。然后,像素消除器150可以扫描并计算像素图140上的任何另外的未标记像素的红色。在另一实施例中,在计算像素图140上的每个像素的红色水平时,像素消除器150 可以进一步确定标记为红的像素的RGB整数值并使用具有在步骤210中使用的仅一个除运算的整数算法。然后,像素消除器可以产生阈值RGB值并将这些值与来自步骤210的标记为红的像素的RGB整数值相比较。然后,系统100可以记录计算的结果并在群组分类器 170中使用所述结果,如在步骤270中那样。在另一实施例中,可以使用步骤210中的像素的CieLab值来执行上述计算。如本领域的普通技术人员能够认识到的,除图1和图2中所描绘的那些之外和/或替代图1和图2中所描绘的那些,可以使用其它方法或值来计算像素图140上的每个像素的红色值。如本领域的普通技术人员能够认识到的,图1的像素消除器150使用单个平面来存储红色的基于RGB的测量结果180。另外,此算法的实验结果已导致仅四分之一的平面被用来存储通过像素消除器180的像素的像素图。结果,对算法的动态存储器要求已被减少到不到以前的五分之一,因为对于图1和2的实施例而言,仅要求每个像素1. 25个字节。因此大大地减少了处理数字图像110所需的图像相关存储量。另外,提出的方法具有急剧减小的动态存储器印迹(memory footprint),尤其是当与其中可能要求每个像素7个字节的传统方法相比时。此外,在执行单个除运算时,系统节省时钟周期和处理时间。许多先前的方法已经围绕跨越相同尺寸的许多区域连续地计算红色测量结果或彩色成分的平均值(需要多次除运算)的想法进行考虑。
本发明的实施例通过执行单个除运算而不同于先前的方法,这导致在嵌入式硬件设备中的改善的性能时间和较少的资源分配。结果,本发明使用较少的资源并因此产生主机设备在检测红眼的同时执行另外的任务的机会。在一个实施例中,可以以分批的方式或者作为在用户在便携式打印设备或手持式数字照相机上浏览图像的同时执行的后台例行程序来执行图2的方法。因此,执行图2的方法(尤其是作为后台进程)对于本领域的普通技术人员来说将不是明显或显而易见的。现在返回至图1,已采样数字图像130的像素图140 (其中像素被像素消除器150 标记)随后被传递至像素分段器160。像素分段器160完整地对像素图140进行操作,并扫描像素图的每行以得到已标记的红像素,并且在发现一个或多个已标记红像素相互邻近时产生已标记红像素的“相邻群组”。在本文中,“相邻群组”被定义为可以在数字图像中产生红眼的一个或多个已标记红像素。图3举例说明根据本发明的实施例的、在(图1)的下采样数字图像130的像素图 140上描绘的二维阵列300的表示。图3的示例包括像素图140、未被扫描的像素图的下 20% 330、二维阵列300的层一(310)和二维阵列300的层二(320)。在一个实施例中,像素分段器160最初生成二维阵列300。二维阵列300可以用来扫描像素图140以得到已标记红像素并存储像素图140上的已发现并标记的红像素的坐标。阵列300的第一层(诸如层310)可以用来扫描过像素图140的每行以搜索已标记红像素。阵列300的第二层320可以用来存储来自先前扫描的行的先前发现的已标记红像素的坐标。在另一实施例中,还可以使用双重链接列表来扫描像素图并存储来自像素图的信息。 如本领域的普通技术人员能够认识到的,除图3中所描绘的那些之外和/或替代图3中所描绘的那些,可以使用另外的扫描仪和管理器(organizer)来扫描并存储附加信息。现在将参考图4中的流程图来解释(图1和3)的像素分段器160的操作。图4是举例说明根据本发明的实施例的、用于产生和扩展相邻群组的方法的流程图。在一个实施例中,像素分段器160可以检查像素图140以确定在像素图140上是否存在任何未扫描行, 如在步骤401中那样。如果步骤401的结果指示已经扫描了像素图的每行,则像素分段器 160可以终止并前进至(图1的)群组分类器170。如果尚未扫描每一行,则可以使用阵列的第一层310来临时存储在未扫描行的扫描期间发现的任何红像素的坐标402。然后,阵列的第一层310可以确定在所述行中是否仍存在像素403。如果不存在, 则像素分段器160更新所有现有相邻群组并前进至下一行413。如果在该行中仍存在像素, 则像素分段器160检查该行中的每个像素,如在步骤404中那样。像素分段器160检查每个像素是否被标记为红的,如在步骤405中那样。如果未发现已标记红像素,则像素分段器 160继续进行以扫描行403中的其余像素。如果发现了已标记红像素,则像素分段器160将所发现的已标记红像素的坐标存储在阵列的第二层320中,如在步骤406中那样。然后,像素分段器160可以将所发现的已标记红像素的坐标与存储在阵列的第二层320中的每个先前发现的已标记红像素相比较,以确定先前发现的已标记红像素的任何坐标是否具有来自先前行的匹配的相应y轴坐标,如在步骤407中那样。如果发现匹配, 则像素分段器160将现有相邻群组340扩展以围绕当前发现的红像素,如在步骤411中那样。如果未发现匹配,则像素分段器160生成新的相邻群组340,408,并进一步确定是否存在靠近当前发现的红像素409的水平毗邻的红像素。如果不存在靠近当前发现的红像素的
6水平毗邻的红像素,则像素分段器160继续扫描该行以得到已标记红像素,如在步骤403中那样。如果发现一个或多个红像素水平地邻近于当前发现的已标记红像素,则像素分段器 160将现有相邻群组340扩展以围绕当前发现的已标记红像素以及与来自步骤410的所发现的已标记红像素水平毗邻的红像素。然后,像素分段器160确定是否存在任何现有相邻群组,诸如如在步骤412中那样与扩展的相邻群组340相连或与之重叠的先前行中的相邻群组340。如果未发现相连或重叠的相邻群组,则像素分段器继续扫描行以得到已标记红像素403。如果在先前行中发现相连或重叠的相邻群组340,则已扩展的相邻群组340被再次扩展以围绕所有相连的已标记红像素410。然后,像素分段器160继续进行以扫描该行的其余部分和像素图的每行以得到已标记红像素,并重复用于产生并扩展相邻群组340的先前标准。如本领域的普通技术人员能够认识到的,除图3中所描绘的那些之外和/或替代图3中所描绘的那些,可以在相邻群组的产生和扩展时考虑另外的元素或因素。传统方法包括了测试以确定非标准色空间中的复杂三维形状内的候选像素的包含,而本发明已针对存储器性能使操作的关键顺序最优化。用像素图上的单遍(single pass)来实现像素分段器160且像素分段器160产生更简单且更快的比较操作。由于所提出的方法出于此目的使用更标准的色空间,所以现在可以采用先前存在的硬件加速算法来进行色彩转换。另外,像素分段器160仅扫描图像的上80%,因为实验已显示候选伪像很少出现在图像的下20% 330中。上述实施例针对存储器性能使操作最优化,并且不要求附加的处理时间或存储器资源以扫描不必要的像素。结果,利用上述实施例对于本领域的普通技术人员来说将不是明显或显而易见的。在由像素分段器160扫描像素图140的每行以得到已标记红像素之后,群组分类器170检查每个相邻群组340并确定相邻群组是否是数字图像110中的红眼,如图1中所示(180)。群组分类器170对每个相邻群组340运行稍后在本文中描述的一系列测试,并考虑相邻群组;340的尺寸以及围绕相邻群组340的像素。现在将参考图5的流程图来解释如图1中所描绘的群组分类器170的操作,图5 举例说明了用于确定相邻群组是否是红眼的方法。在一个实施例中,该方法可以由系统 100来执行。在一个实施例中,群组分类器170可以首先检查以确定是否存在任何相邻群组340,如在步骤510中那样。如果发现任何相邻群组,则群组分类器170定义上和下阈值。 在一个实施例中,系统100的群组分类器170可以包括上阈值和下阈值的预编程值。在另一实施例中,可以由用户来定义上和下阈值。如本领域的普通技术人员能够认识到的,可以由除图5中所描绘的那些之外和/或替代图5中所描绘的那些的手段来定义上阈值和下阈值。然后,群组分类器170将相邻群组340的尺寸与用户定义的上阈值和用户定义的下阈值相比较。在一个实施例中,群组分类器170可以将每个相邻群组340的尺寸与上阈值相比较并确定相邻群组340是否大于上阈值群组520。如果相邻群组340的尺寸大于上阈值,则丢弃670相邻群组340。如果相邻群组340不大于,则群组分类器170随后将相邻群组340的尺寸与下阈值530相比较。如果相邻群组340的尺寸小于下阈值,则丢弃670 相邻群组340。
如果相邻群组340的尺寸大于下界阈值且小于上界阈值,则群组分类器170将相邻群组340的已标记红像素与围绕相邻群组340的像素相比较,如在步骤MO中那样。然后,群组分类器170确定围绕相邻群组340的像素是否具有通常表示眼睛的色彩,如在步骤 550中那样。如果像素色彩是正确的,则相邻群组340被标记为红眼560。如本领域的普通技术人员能够认识到的,除图5中所描绘的那些之外和/或替代图5中所描绘的那些,群组分类器170可以在确定相邻群组340是否是数字图像110中的红眼时考虑另外的因素和元
ο现在将参考图6中的流程图来解释如图1中所描绘的系统100的操作,图6举例说明了根据本发明的实施例的用于检测红眼的高级方法。在一个实施例中,该方法可以由系统100来执行。在图6的实施例中,由系统100来生成像素图140,如在步骤610中那样。 然后,系统100扫描像素图140并标记每个发现的红像素,如在步骤620中那样。另外,系统100可以由具有毗邻坐标的像素产生相邻群组340,如在步骤630中那样。接下来,系统 100随后可以确定每个相邻群组340是否是红眼伪像,如在步骤640中那样。系统100随后可以产生表示数字图像上的红眼伪像的坐标的列表,如在步骤650中那样。如上所述,由系统100来访问图1中所示的数字图像110。可以将数字图像110本地地存储在设备、装置中或连接到该设备或装置的存储介质上或通过网络存储在设备、装置中或连接到该设备或装置的存储介质上。在一个实施例中,可以通过连接到打印机的通用存储设备来存储和访问数字图像。在另一实施例中,可以将数字图像110存储在服务器上或由系统100通过网络可以访问的另一计算机上。如本领域的普通技术人员能够认识到的,除图1中所描绘的那些之外和/或替代图1中所描绘的那些,可以将系统100所访问的数字图像110存储在另外的本地或联网位置。此外,如上所述,图1中所示的数字采样器120接收数字图像110并产生下采样数字图像130。数字采样器是可以降低或增加原始数字图像110的分辨率的数字缩放器 (scaler)。在一个实施例中,数字采样器120可以接收数字图像110并对数字图像110进行向下采样以产生下采样数字图像130。在另一实施例中,数字采样器120可以接收数字图像并对数字图像进行向上采样且产生其中已识别红眼的数字图像180。如本领域的普通技术人员能够认识到的,除图1中所描绘的那些之外和/或替代图1中所描绘的那些,数字采样器120可以对附加图像或数据进行采样。如图1中所示,然后由像素消除器150产生并访问下采样数字图像130的像素图 140。在一个实施例中,像素图140是下采样数字图像130上的每个像素的二维图。在另一实施例中,像素图140可以是三维图像上的每个像素的三维图。如本领域的普通技术人员能够认识到的,除图1中所描绘的那些之外和/或替代图1中所描绘的那些,像素图140可以具有不同的尺度以表示数字图像110。图7举例说明了可以独立地或相互结合地使用所述系统100的各种装置和设备、 打印机710、数字照相机720、计算机730、服务器740和存储介质750。在一个实施例中,系统100可以在诸如打印机710、数字照相机720或计算机系统730之类的单个设备或装置上独立地使用。在另一实施例中,可以将系统100与多个装置或设备相结合地使用,诸如通过连接到打印机710的数字照相机720、连接到打印机710的计算机730或连接到计算机730 的数字照相机720,其被连接到打印机710。如本领域的普通技术人员能够认识到的,除图7中所描绘的那些之外和/或替代图7中所描绘的那些,不同的装置或设备可以独立地或相互结合地使用该系统。 如图7中所示,可以将系统100嵌入设备或装置的硬件上,诸如在打印机710、数字照相机720或计算机730的非易失性存储器上。另外,可以将系统100本地地存储在计算机730或存储介质750上并被计算机730或连接到计算机730或存储介质750的其它设备或装置访问。此外,可以通过网络740来存储或访问系统100。在一个实施例中,可以将网络740连接到万维网且可以由一个或多个计算机730、打印机710或数字照相机720进行访问,其可以通过网络来利用系统100。本发明允许较大范围的设备和装置包括红眼检测作为特征。如本领域的普通技术人员能够认识到的,除图1中所描绘的那些之外和/或替代图 1中所描绘的那些,可以在不同的装置或设备中存储和访问该系统。
权利要求
1.一种方法,包括生成数字图像的像素图;扫描像素图并标记所发现的红像素;其中,扫描像素图的每行以得到红像素;其中,每个已标记红像素的坐标被存储并与周围的红像素相比较;安排所发现的已标记红像素与先前发现的毗邻的已标记红像素从而产生相邻群组;确定该相邻群组是否是红眼伪像;以及产生表示数字图像内的红眼伪像的坐标的列表。
2.权利要求1的方法,还包括将每个已标记红像素的坐标存储在阵列中。
3.权利要求2的方法,其中,所述阵列是二维阵列。
4.权利要求3的方法,其中,所述阵列的第一层存储像素图的当前行中的红像素的坐标,并且其中,所述阵列的第二层存储先前扫描的行中的已发现红像素的先前坐标。
5.权利要求4的方法,其中,将所述阵列的第一层上的所发现的已标记红像素的坐标与所述阵列的第二层上的所发现的已标记红像素的坐标相比较,以确定是否所发现的已标记红像素和先前发现的已标记红像素具有匹配的相应y轴坐标且先前发现的像素存在于先前行上。
6.权利要求1的方法,其中,可以由双重链接列表来执行像素图上的所发现的已标记红像素的扫描和存储。
7.权利要求5的方法,其中,如果所发现的已标记红像素具有与来自先前行的先前发现的已标记红像素匹配的相应y轴坐标且尚不存在相邻群组,则产生新的相邻群组。
8.权利要求7的方法,其中,现有相邻群组被扩展以围绕所有毗邻的所发现的已标记红像素和先前发现的已标记红像素。
9.一种用于确定红眼的存在的系统,包括 数字采样器;其中,由所述数字采样器对数字图像进行向下采样; 像素图;其中,所述像素图是数字图像的二维图; 像素消除器; 像素分段器;其中,所述像素分段器使用二维阵列一次扫过数据;以及群组分类器,其检查红像素的相邻群组以确定是否存在红眼条件。
10.权利要求9的系统,其中,所述群组分类器放弃在用户针对红眼定义的边界之外的非红眼相邻群组。
11.权利要求10的系统,其中,所述群组分类器将来自相邻群组的像素与围绕像素群组的像素相比较,以确定相邻群组是否是红眼。
12.一种用于确定红眼的存在的方法,包括扫描像素图并采用红色计算来测量每个像素的红色水平; 其中,在一个或多个阶段中完成红色计算;其中,在每个阶段中将每个像素的红色水平与定义的红色阈值相比较;标记每个发现的红像素并将相应的坐标存储在像素图上;安排所发现的已标记红像素与具有相应y轴坐标的先前发现的已标记红像素,从而产生相邻群组;确定该相邻群组是否是红眼伪像;以及产生表示数字图像内的红眼伪像的坐标的列表。
13.权利要求12的方法,其中,由整数算法来执行所述红色计算,且所述红色计算要求至多一次除运算。
14.权利要求13的方法,其中,具有在红色阈值之上的红色水平的当前像素被标记为红的。
15.权利要求12的方法,其中,所述红色计算可以使用RGB或CieLab分量。
全文摘要
一种方法包括生成数字图像的像素图,扫描像素图并标记所发现的红像素,其中,扫描像素图的每行以得到红像素,其中,每个已标记红像素的坐标被存储并与周围的红像素相比较,安排所发现的已标记红像素与先前发现的具有相应y轴坐标的已标记红像素从而产生相邻群组,确定该相邻群组是否是红眼伪像,并产生表示数字图像内的红眼伪像的坐标的列表。
文档编号G06T7/00GK102171723SQ200880131372
公开日2011年8月31日 申请日期2008年8月1日 优先权日2008年8月1日
发明者J·德奥纳赖恩, M·高巴茨 申请人:惠普开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1