具体实施方式
在这里讨论区分真人面部与平坦表面。为了针对特定访问(例如访问计算机或网络、访问建筑物或其他位置等等)认证用户,捕获并分析由用户呈现的面部的多幅图像。由用户呈现的面部可以是用户的实际面部,或者可以是由冒充者呈现的用户面部的照片。尝试确定图像包括真人面部(例如所捕获的图像属于真人)还是面部照片。如果确定图像包括真人面部,则假设由用户呈现的面部是请求特定访问的实际用户的面部,并且可以针对访问认证用户。但是如果确定图像包括照片,则假设由用户呈现的面部是使用照片的冒充者的面部,并且无法针对访问认证用户。
图1示出了根据一个或更多实施例的实施真人面部与平坦表面的区分的示例性***100。***100包括图像捕获组件102和真人面部检测模块104。图像捕获组件102和真人面部检测模块104可以分别由一个或更多计算设备实施。多种不同类型的计算设备可以被用来实施图像捕获组件102和真人面部检测模块104,比如台式计算机、膝上型或笔记本计算机、记事本计算机、移动站、娱乐电器、可通信地耦合到显示设备的机顶盒、电视、蜂窝或其他无线电话、数字摄影机或视频摄影机、游戏机、汽车计算机等等。
图像捕获组件102和真人面部检测模块104可以被实施为同一计算设备的一部分,或者可替换地可以被实施为单独的设备。当被实施为单独的设备时,实施图像捕获组件102和真人面部检测模块104的设备可以通过多种不同网络当中的任一种彼此通信,比如因特网、局域网(LAN)、公共电话网、内联网、其他公共和/或专有网络或者其组合等等。可替换地,当被实施为单独的设备时,实施图像捕获组件102和真人面部检测模块104的设备可以通过其他有线和/或无线连接机制彼此通信,比如通用串行总线(USB)、无线USB、Bluetooth、射频等等。
***100是访问控制***的一部分或者与之通信。这样的访问控制***可以被用来限制对于特定***、资源、位置等等的访问。举例来说,***100可以被用在访问控制***中,其限制哪些用户可以访问(例如进入)特定建筑物、哪些用户可以访问(例如登录)特定计算设备、哪些用户可以访问(例如登录)特定网络等等。***100通过确定图像包括真人面部还是面部照片而促进限制这样的访问,正如下面将更加详细地描述的那样。
图像捕获组件102捕获分别包括由用户108呈现的面部的多幅图像106,并且使得图像106可用于真人面部检测模块104。图像捕获组件102可以通过多种不同方式捕获图像106,比如使用各种数字成像技术(例如电荷耦合设备(CCD)、互补金属氧化物半导体(CMOS)传感器等等)。通常来说,用户108将其自己呈现到图像捕获组件102,从而允许组件102捕获用户108的图像106。在这种情况下,由用户108呈现的面部是真人的面部,并且包括在图像106中的面部是真人的面部。但是冒充者可能试图通过向图像捕获组件102呈现他人面部的照片来蒙混访问控制***。在这种情况下,由用户108呈现的面部是照片,并且包括在图像106中的面部是所述面部的照片。
真人面部检测模块104分析图像106以便确定图像106包括真人面部还是面部照片,并且输出表明图像106包括真人面部还是面部照片的指示110。指示110例如可以是用以表明图像106包括真人面部的第一值(例如“真人”、“是”、“认证”等等)以及用以表明图像106包括面部照片的第二值(例如“照片”、“否”、“不认证”等等)。真人面部指的是实际人类的面部(即图像捕获组件102捕获到实际人类的图像)而不是人类面部的照片。如果检测模块104确定图像106包括真人面部,则真人面部指示110表明图像106包括真人面部。在这种情况下,真人面部指示110表明可以针对访问(例如用户108请求访问的任何***、资源、位置等等)认证用户108,这是因为认定作为用户108的实际人类正请求特定访问。对于用户108的认证可以由另一个组件或模块(未示出)通过多种不同方式施行,比如通过把一个或更多图像106与先前捕获的用户108的图像进行比较。可替换地,可以在模块104施行的真人面部检测之前施行认证,在这种情况下,真人面部指示110表明对于用户108的任何先前认证是有效的。
但是如果确定图像106包括平坦表面上的面部,则认定用户108是使用照片的冒充者。在这种情况下,真人面部指示110表明无法针对访问(例如用户108请求访问的任何***、资源、位置等等)认证用户108,这是因为认定用户108是请求特定访问的冒充者。如果用户108在由模块104施行的真人面部检测之前被另一个组件或模块(未示出)认证,则真人面部指示110表明对于用户108的任何先前认证是无效的。
真人面部检测模块104可以通过多种不同方式确定图像106包括真人面部还是面部照片。在一个或更多实施例中,真人面部检测模块104包括3维(3D)结构确定模块112和面部组成部分移动确定模块114的其中之一或全部二者。通常来说,3D结构确定模块112确定图像106包括作为3D结构(例如实际人类)的面部还是平坦表面(例如相片),并且面部组成部分移动确定模块114确定在图像106中的面部的一个或更多组成部分中是否存在运动。下面将更加详细地讨论由模块112和114做出这些确定的方式。
图2是示出了根据一个或更多实施例的用于区分真人面部与平坦表面的示例性处理200的流程图。处理200由真人面部检测模块实施,比如图1的真人面部检测模块104,并且可以用软件、固件、硬件或其组合来实施。处理200被显示为步骤集合,并且不限于针对施行各个步骤的操作所示出的顺序。处理200是用于区分真人面部与平坦表面的示例性处理;在这里参照不同的附图包括了关于区分真人面部与平坦表面的附加讨论。
在处理200中,访问包括由用户呈现的面部的多幅图像(步骤202)。所述多幅图像可以是包括真人面部的图像或者包括面部照片的图像。所述多幅图像是由图像捕获组件(例如图1的图像捕获组件102)捕获的图像。可以在步骤202中通过多种不同方式来访问所述多幅图像,比如响应于发送到图像捕获组件的针对所述多幅图像的请求而接收、响应于发送到另一个组件或设备的请求而接收(其中所述图像由图像捕获组件存储)、(例如从图像捕获组件)被流送或推送到实施处理200的真人面部检测模块的图像等等。
处理200继续确定所述面部是3D结构还是平坦表面(步骤204),并且/或者确定在面部的一个或更多组成部分中是否存在运动(步骤206)。可以施行步骤204和206的其中之一,或者可替换地可以施行全部两个步骤204和206。如果施行全部两个步骤204和206,则可以同时施行步骤204和206,或者可替换地可以先施行步骤204和206的其中之一并且随后施行步骤204和206当中的另一步骤。
处理200基于所述面部是否被确定为3D结构以及/或者在一个或更多面部组成部分中是否存在运动而继续(步骤208)。如果面部被确定为3D结构并且/或者在一个或更多面部组成部分中存在运动,则确定图像106包括真人面部并且提供表明可以认证用户的指示(步骤210)。但是如果面部被确定为平坦表面并且/或者在一个或更多面部组成部分中不存在运动,则确定图像106不包括真人面部并且提供表明无法认证用户的指示(步骤212)。如果步骤204和206都被施行,则只有在步骤204中将面部确定为3D结构并且同时在步骤206中确定在一个或更多面部组成部分中存在运动的情况下,才能确定图像106包括真人面部。可替换地,在步骤204和206都被施行的情况下,如果在步骤204中将面部确定为3D结构以及在步骤206中确定在一个或更多面部组成部分中存在运动二者当中的至少一项成立,就可以确定图像106包括真人面部。
回到图1,在一个或更多实施例中,3D结构确定模块112使用基于同形的技术来确定包括在图像106中的面部是3D结构还是平坦表面。可替换地也可以使用其他技术,比如来自运动估计技术的结构。
基于同形的技术使用3x3同形矩阵,其在这里也被称作矩阵H。基于同形的技术利用以下事实:平坦(平面状)表面的两个视图基于同形矩阵H而相关。相应地,在分析第一图像和第二图像时,可以利用同形矩阵H扭曲或变换第一图像从而生成扭曲图像。随后把扭曲图像与第二图像进行比较。如果第一和第二图像是平坦表面(例如面部的照片)的视图,则扭曲图像将与第二图像相似。因此,如果第二图像与扭曲图像之间的差异较小(例如低于一定阈值),则第一和第二图像包括作为平坦表面而非真人面部的面部。但是如果第二图像与扭曲图像之间的差异较大(例如至少是一定阈值),则第一和第二图像包括作为真人面部而非平坦表面的面部。
图3是示出了根据一个或更多实施例的使用基于同形的技术来确定多幅图像中的面部是3D结构还是平坦表面的示例性处理300的流程图。处理300由3D结构确定模块实施,比如图1的3D结构确定模块112,并且可以用软件、固件、硬件或其组合来实施。处理300例如可以实施图2的步骤204。处理300被显示为步骤集合,并且不限于针对施行各个步骤的操作所示出的顺序。
在处理300中,从两幅图像中提取出一个或更多特征点,所述两幅图像在处理300中被称作第一和第二图像(步骤302)。第一和第二图像分别包括同一人的面部,并且例如可以是图1的图像106。所述一个或更多特征点是第一和第二图像中的面部的特征点。可以提取多种不同的特征点,比如眼角、嘴角、鼻尖等等。每一个特征点可以是单个像素或者包括多个像素的一个区段。可以通过多种不同的传统方式提取这些特征点,比如使用模板匹配算法、特征匹配算法等等。在一个或更多实施例中,在Zhang等人的“A Robust Technique for Matching Two Uncalibrated Images Through the Recovery of the Unknown Epipolar Geometry”(French National Institute for Research in Computer Science and Control,1994年)中讨论了用于提取特征点的技术。
在第一和第二图像上匹配在步骤302中提取的特征点(步骤304)。在第一和第二图像上针对特征点的这一匹配指的是识别出两幅图像当中的每一幅中的相同特征点的位置。举例来说,识别出第一和第二图像中的面部中的同一只眼的同一眼角的位置。可以通过多种不同的传统方式来施行第一和第二图像之间的特征点匹配,比如使用模板匹配技术、特征匹配技术等等。在匹配之后就知晓两幅图像上的匹配特征点以及两幅图像中的处于这些特征的匹配特征点内的相应像素。
生成第一和第二图像之间的同形矩阵H(步骤306)。第一和第二图像如下通过同形矩阵H相关:
其中,
指代第一图像中的位置,
指代第二图像中的位置,H指代同形矩阵,并且
λ指代非零标量值。第一图像中的位置被表示成
,其中
u和
v是第一图像中的位置的坐标。第二图像中的位置被表示成
,其中
和
是第二图像中的位置的坐标。当计算同形矩阵H时,
,并且
。给定两幅图像中的两个位置并且
是两幅图像当中的第一幅中的位置,计算同形矩阵H,这是通过确定使得通过
计算的
与第二图像中的实际位置之间的差异较小的同形矩阵H而实现的。可以通过不同方式来确定该同形矩阵,比如利用多种传统算法当中的任一种来确定通过
计算的
与第二图像中的实际位置之间的差异被最小化、低于一定阈值等等。在一个或更多实施例中,可以从两幅图像中的4对或更多对相应位置确定同形矩阵,正如下面将描述的那样。设
为
N对(
N≥4)。每一对给出等式
。通过消除未知标量因数
λ i 产生两个标量等式:
其中,
是同形矩阵H的第j行矢量。按照矩阵形式是
B i h=0,其中
是由未知的同形元素构成的9D矢量,并且
是一个2x9矩阵。对于
N对,通过堆叠所有的
B i 形成一个2
Nx9矩阵
B,并且获得等式
Bh=0。由于
h被定义为一个标量因数,因此众所周知其解是与最小特征值相关联的9x9矩阵
B T B的特征矢量。该解包括将被用于扭曲第一图像的同形矩阵H的各个元素(所述解的特征矢量),正如下面所讨论的那样。
随后通过利用同形矩阵H扭曲第一图像而生成扭曲图像(步骤308)。该同形矩阵H是在步骤306中生成的同形矩阵H。基于计算
(其与
相同,不同之处在于
y指代扭曲图像,因此使用
y来替代
)来扭曲第一图像。第一图像中的每一个像素具有值
,其被用来通过
计算值
y。值
y是一个矢量,并且
y的第一和第二元素分别除以
y的第三元素以便获得扭曲图像中的像素位置。换句话说,对于值
,扭曲图像中的像素位置是
。随后将第一图像中的所述像素的强度或颜色(其值为
)施加到扭曲图像中的位置
处的像素。可以通过多种不同方式来表示这些像素的强度或颜色,比如使用传统的RGB值、传统的CMYK值等等。
确定扭曲图像(其在步骤308中生成)与第二图像之间的图像差异(步骤310)。可以通过不同方式计算所述图像差异。在一个或更多实施例中,将扭曲图像与第二图像叠加,并且确定两幅图像中的相同像素(位置)处的颜色或强度值的差。换句话说,针对扭曲图像中的每一个位置
,确定扭曲图像中的位置
处与第二图像中的位置
处的颜色或强度值之间的差。随后组合针对这些不同位置确定的差从而生成图像差异。可以通过不同方式组合所述差,比如平均在一起、相加在一起等等。
在一个或更多实施例中,通过对于扭曲图像和第二图像中的每一个位置获得扭曲图像与第二图像之间的颜色或强度值的差来确定步骤310中的图像差异。在其他实施例中,通过对于扭曲图像和第二图像中的所选位置获得扭曲图像与第二图像之间的颜色或强度值的差来确定步骤310中的图像差异。可以通过不同方式识别或选择出所述所选位置。举例来说,可以使用多种传统面部检测算法或面部识别算法当中的任一种来检测每一幅图像内的面部,并且所述所选位置是作为扭曲图像和第二图像的至少其中之一内的面部的一部分的位置。作为另一个例子,可以使用传统的面部检测算法来检测面部内的各个子区段集合(比如眼睛、嘴、鼻子等等),并且所述所选位置是作为扭曲图像和第二图像的至少其中之一内的某一子区段的一部分的位置。
随后确定在步骤310中确定的图像差异是否满足一定阈值(步骤312)。所述图像差异例如可以通过大于阈值、大于或等于阈值等等而满足阈值。在其中颜色值可以是256个灰度级的其中之一的情况中,该阈值例如可以是10。该阈值可以是固定值(例如10个灰度级)或者可以是相对值(例如可能的颜色或强度值数目的5%)。
如果图像差异满足阈值,则第一和第二图像中的面部被确定为真人面部(步骤314)。但是如果图像差异不满足阈值,则第一和第二图像中的面部被确定为平坦表面并且从而是面部的照片(步骤316)。
在一个或更多实施例中,处理300中的第一和第二图像是包括三幅或更多幅图像的序列中的邻近图像。举例来说,可以由实施处理300的3D结构确定模块访问多幅图像(比如30或60幅图像)。假设所述多幅图像具有其捕获顺序,即图像1、图像2、图像3、图像4...图像z。处理300中的第一和第二图像可以是所述多幅图像的序列中的邻近或顺序图像,比如图像1和图像2、图像4和图像5等等。可替换地,处理300中的第一和第二图像可以是非邻近图像,在所述图像序列中具有处于二者之间的一幅或更多幅中间图像。举例来说,处理300中的第一和第二图像可以是图像1和图像10、图像12和图像37等等。
此外,即使处理300中的第一和第二图像不是序列中的邻近或顺序图像,也可以对于序列中的每一个邻近图像对施行处理300的至少一部分。举例来说,可以对于序列中的每一个邻近图像对生成步骤302和304中的特征点提取和特征点匹配,从而在具有一幅或更多幅中间图像的两幅图像上匹配特征时可以促进特征匹配处理。
此外,可以对于多个图像对重复处理300。每一次施行处理300时,确定所述图像对中的面部是真人面部还是面部照片。可以通过不同的方式组合这些不同的确定,并且从而可以生成表明多幅图像中的面部是真人面部还是面部照片的最终指示。举例来说,如果确定至少一个图像对中的面部是面部照片,则实施处理300的3D结构确定模块的最终指示可以表明所述多幅图像包括面部照片。作为另一个例子,如果确定至少一定阈值数目的图像对中的面部是真人面部,则实施处理300的3D结构确定模块的最终指示可以表明所述多幅图像包括真人面部。该阈值数目可以是固定数目(例如至少10个图像对)或者可以是相对数目(例如为之施行了处理300的图像对的至少90%)。
在一个或更多实施例中,处理300还确定第一和第二图像是否包括相同的面部。可以通过多种不同方式施行这一确定。举例来说,在步骤304的特征点匹配期间,如果无法匹配所有的(或者至少一定阈值数目的)特征点,则确定第一和第二图像是不同的面部。作为另一个例子,可以使用多种不同的传统面部识别技术来识别第一和第二图像中的面部是否属于同一人。如果确定第一和第二图像不包括相同的面部,则可以采取各种补救措施,比如停止对于第一和第二图像的处理300(但是可选地对于其他图像重复处理300)、在步骤316中表明第一和第二图像中的面部是面部照片等等。
回到图1,在其他实施例中,3D结构确定模块112使用来自运动估计技术的结构来确定包括在图像106中的面部是3D结构还是平坦表面。来自运动估计技术的结构利用以下事实:可以使用运动估计来把平坦(平面状)表面的两个视图相关。相应地,在分析第一图像和第二图像时,可以利用来自运动估计的结构生成场景的估计3D描述。随后可以把一个平面拟合到所述估计3D场景。如果拟合误差较小(例如低于一定阈值),则第一和第二图像是平坦表面而非真人面部。但是如果拟合误差较大(例如至少是一定阈值),则第一和第二图像不是平坦表面而是真人面部。
图4是示出了根据一个或更多实施例的使用来自运动估计技术的结构来确定多幅图像中的面部是3D结构还是平坦表面的示例性处理400的流程图。处理400由来自确定模块的3D结构实施,比如图1的3D结构确定模块112,并且可以用软件、固件、硬件或其组合来实施。处理400例如可以实施图2的步骤204。处理400被显示为步骤集合,并且不限于针对施行各个步骤的操作所示出的顺序。
在处理400中,从两幅图像中提取出一个或更多特征点,所述两幅图像在处理400中被称作第一和第二图像(步骤402)。第一和第二图像分别包括同一人的面部,并且例如可以是图1的图像106。所述一个或更多特征点是第一和第二图像中的面部的特征点。可以提取多种不同的特征点,比如眼角、嘴角、鼻尖等等。每一个特征点是单个像素或者包括多个像素的一个区段。与前面关于图3的步骤302的讨论类似,可以通过多种不同的传统方式提取这些特征点。
在第一和第二图像上匹配在步骤402中提取的特征点(步骤404)。在第一和第二图像上对于特征点的这一匹配指的是识别出两幅图像当中的每一幅中的相同特征点的位置。举例来说,识别出第一和第二图像中的面部中的同一只眼的同一眼角的位置。与前面关于图3的步骤304的讨论类似,可以通过多种不同的传统方式来施行第一和第二图像上的特征点匹配。在匹配之后就知晓两幅图像上的匹配特征点以及两幅图像中的处于这些特征的匹配特征点内的相应像素。
利用来自运动估计的结构从第一和第二图像重建3D场景(步骤406)。该重建3D场景是基于第一和第二图像之间的估计运动的第一和第二图像所表示的场景的3维描述。可以利用众所周知的来自运动估计的结构和立体视觉技术通过多种不同的传统方式生成重建3D场景。这样的来自运动估计的结构和立体视觉技术是基于步骤404中的匹配特征点。
所述重建3D场景也被拟合到平面(步骤408)。可以通过多种不同的传统方式来施行该拟合,比如通过使用各种众所周知的技术把重建3D场景投影到平面。
针对(在步骤408中生成的)拟合到平面的重建3D场景的特性进行分析(步骤410)。可以通过不同的方式分析所述特性,比如通过把各种面部组成部分或特征点的比值相互比较。所述各种面部组成部分或特征点例如可以是眼睛、眼角、嘴角、鼻子、鼻尖等等。举例来说,可以通过以下方式分析所述特性:获得作为重建3D场景中的特定特征(例如鼻尖)到所述平面的最大距离的第一值,作为所述平面上的两个面部组成部分之间的距离(比如两眼之间的距离或者眼角之间的距离)的第二值,并且计算第一值与第二值的比值。可以可选地获得附加的值集合,并且可以把这些附加的值集合的结果(例如从这些附加的值集合生成的各个比值)组合在一起(例如可以把所计算的各个比值平均在一起)。
随后确定在步骤410中分析的特性是否满足一定阈值(步骤412)。所述特性例如可以通过大于阈值、大于或等于阈值等等而满足阈值。该阈值可以是固定值(例如来自步骤410的第一值与第二值的比值大于10%)或相对值(例如来自步骤410的第一值与第二值的比值大于第二值的5%)。
如果所分析的特性满足阈值,则第一和第二图像中的面部被确定为真人面部(步骤414)。但是如果所分析的特性不满足阈值,则第一和第二图像中的面部被确定为平坦表面并且从而是面部的照片(步骤416)。
与前面关于图3的处理300的讨论类似,处理400中的第一和第二图像可以是包括三幅或更多幅图像的序列中的邻近图像,或者可以在所述图像序列中彼此更加远离。此外,与前面关于图3的处理300的讨论类似,即使处理400中的第一和第二图像不是序列中的邻近或顺序图像,也可以对于图像序列中的每一个邻近图像对施行处理400的至少一部分(例如步骤402和404)。
此外,可以对于多个图像对重复处理400。每一次施行处理400时,确定所述图像对中的面部是真人面部还是面部照片。可以通过不同的方式组合这些不同的确定,并且从而可以生成表明多幅图像中的面部是真人面部还是面部照片的最终指示。举例来说,如果确定至少一个图像对中的面部是面部照片,则实施处理400的3D结构确定模块的最终指示可以表明所述多幅图像包括面部照片。作为另一个例子,如果确定至少一定阈值数目的图像对中的面部是真人面部,则实施处理400的3D结构确定模块的最终指示可以表明所述多幅图像包括真人面部。该阈值数目可以是固定数目(例如至少10个图像对)或者可以是相对数目(例如为之施行了处理400的图像对的至少90%)。
此外,可以施行图3的处理300和图4的处理400两者来确定多幅图像中的面部是真人面部还是面部照片。可以通过不同方式组合由处理300和处理400做出的确定,从而生成关于多幅图像中的面部是真人面部还是面部照片的最终指示。举例来说,如果确定处理300和处理400的至少其中之一中的面部是真人面部,则实施处理300和处理400的3D结构确定模块的最终指示可以表明所述多幅图像包括真人面部。作为另一个例子,只有在处理300和处理400都确定多幅图像中的面部是真人面部的情况下,实施处理300和400的3D结构确定模块才可以表明所述多幅图像包括真人面部。
回到图1,在一个或更多实施例中,面部组成部分移动确定模块114确定在图像106中的面部的一个或更多组成部分中是否存在运动。这一确定可以作为针对前面所讨论的3D结构确定模块112确定包括在图像106中的面部是3D结构还是平坦表面的替代或补充。在一个或更多实施例中,只有在3D结构确定模块112确定包括在图像106中的面部是3D结构并且面部组成部分移动确定模块114确定在图像106中的面部的一个或更多组成部分中存在运动的情况下,真人面部检测模块104才确定图像106包括真人面部。在其他实施例中,如果3D结构确定模块112确定包括在图像106中的面部是3D结构以及面部组成部分移动确定模块114确定在图像106中的面部的一个或更多组成部分中存在运动二者的至少其中之一成立,则真人面部检测模块104确定图像106包括真人面部。
图5是示出了根据一个或更多实施例的用于确定在面部的一个或更多组成部分中是否存在运动的示例性处理500的流程图。处理500由面部组成部分移动确定模块实施,比如图1的面部组成部分移动确定模块114,并且可以用软件、固件、硬件或其组合来实施。处理500例如可以实施图2的步骤206。处理500被显示为步骤集合,并且不限于针对施行各个步骤的操作所示出的顺序。
在处理500中,从包括面部的多幅图像中提取出面部组成部分(步骤502)。第一和第二图像包括面部,并且例如可以是图1的图像106。面部组成部分可以是面部的多种不同部分,并且通常是预期会在较短持续时间内改变的面部的一部分。在一个或更多实施例中,面部组成部分是一只眼或全部两只眼,其例如在人眨眼时或者看向不同对象时通常预期会在较短持续时间内改变。在其他实施例中,面部组成部分是嘴,其例如在人说话时通常预期会在较短持续时间内改变。可替换地在步骤502中可以提取其他面部组成部分。可以通过多种不同的传统方式提取这些面部组成部分,并且在一个或更多实施例中是利用与前面关于图3的步骤302所讨论的被用来提取特征点的相同或类似技术来提取的。
在多幅图像上匹配在步骤502中提取的面部组成部分(步骤504)。在多幅图像之间对于面部组成部分的这一匹配指的是识别出所述多幅图像当中的每一幅中的相同面部组成部分的位置。举例来说,识别出多幅图像中的面部中的同一只眼的位置。可以通过多种不同的传统方式来施行多幅图像上的面部组成部分的匹配,并且在一个或更多实施例中是利用与前面关于图3的步骤304讨论的被用来匹配各幅图像上的特征点的相同或类似技术来施行的。
随后检查在所述面部组成部分中是否存在运动(步骤506)。可以通过多种不同方式来确定在面部组成部分中是否存在运动。
在一个或更多实施例中,生成两幅图像中的面部组成部分之间的面部组成部分差异。与前面关于图3中的步骤310所讨论的确定图像差异类似,例如可以通过叠加两幅图像的面部组成部分并且确定所述面部组成部分的相同像素(位置)处的颜色或强度值的差来确定两幅图像中的面部组成部分之间的差异。与前面关于图3中的步骤310所讨论的确定图像差异类似,可以通过不同方式组合对应于面部组成部分的各个像素的颜色或强度值的差(例如平均在一起或者相加在一起),从而生成面部组成部分差异。如果两幅图像之间的面部组成部分差异满足一定阈值,则确定在所述面部组成部分中存在运动。两幅图像之间的面部组成部分差异可以例如通过大于阈值、大于或等于阈值等等而满足阈值。
可替换地,可以通过其他方式确定在面部组成部分中是否存在运动。举例来说,可以训练神经网、决策树或其他学习机器来确定面部中的眼睛是睁开还是闭合。如果所述神经网、决策树或其他学习机器确定面部组成部分在多幅图像中从眼睛睁开变为眼睛闭合(或者反之亦然),则可以确定在所述面部组成部分中存在运动。
如果确定在面部组成部分中存在运动,则把多幅图像中的面部确定为真人面部(步骤508)。但是如果确定在面部组成部分中不存在运动,则把多幅图像中的面部确定为平坦表面并且从而是面部的照片(步骤510)。
处理500是参照面部组成部分讨论的。应当提到的是,可以对于多个不同的面部组成部分同时施行处理500,并且/或者可以对于附加的面部组成部分重复处理500。
在一个或更多实施例中,步骤506中关于在面部组成部分中是否存在运动的确定是通过分析包括三幅或更多幅图像的序列中的两幅邻近图像(并且例如确定其面部组成部分之间的面部组成部分差异)而做出的。举例来说,可以由实施处理500的面部组成部分移动确定模块访问多幅图像(比如30或60幅图像)。假设所述多幅图像具有其捕获顺序,即图像1、图像2、图像3、图像4...图像z。在步骤506中分析(并且为之确定面部组成部分差异)的两幅图像可以是所述多幅图像的序列中的邻近或顺序图像,比如图像1和图像2、图像4和图像5等等。可替换地,被分析(比如例如在步骤506中为之确定面部组成部分差异)的两幅图像可以是非邻近图像,在所述图像序列中具有处于二者之间的一幅或更多幅中间图像。举例来说,在步骤506中分析的两幅图像可以是图像1和图像9、图像18和图像39等等。
此外,即使在步骤506中分析的两幅图像不是序列中的邻近或顺序图像,也可以针对序列中的每一个邻近图像对施行处理500的至少一部分。举例来说,可以针对序列中的每一个邻近图像对生成步骤502和504中的面部组成部分提取和面部组成部分匹配,从而在具有一幅或更多幅中间图像的两幅图像上匹配面部组成部分时可以促进面部组成部分匹配处理。
此外,可以对于多个图像对重复处理500。每一次施行处理500时,确定所述图像对中的面部是真人面部还是面部照片。可以通过不同的方式组合这些不同的确定,并且生成表明多幅图像中的面部是真人面部还是面部照片的最终指示。举例来说,如果确定至少一个图像对中的面部是真人面部,则实施处理500的面部组成部分移动确定模块的最终指示可以表明所述多幅图像中的面部是真人面部。作为另一个例子,如果确定至少一定阈值数量的图像对中的面部是真人面部,则实施处理500的面部组成部分移动确定模块的最终指示可以表明所述多幅图像中的面部是真人面部。该阈值数量可以是固定数量(例如至少4个图像对)或者可以是相对数量(例如为之施行了处理500的图像对的至少30%)。
图6示出了根据一个或更多实施例的可以被配置成实施真人面部与平坦表面的区分的示例性计算设备600。计算设备600例如可以实施图1的图像捕获组件102和/或图1的真人面部检测模块104。
计算设备600包括一个或更多处理器或者处理单元602、一个或更多计算机可读介质604(其可以包括一个或更多存储器和/或存储组件)、一个或更多输入/输出(I/O)设备608以及允许各个组件和设备彼此通信的总线610。计算机可读介质604以及/或者一个或更多I/O设备608可以被包括为计算设备600的一部分或者可替换地可以与之耦合。总线610代表几种类型的总线结构当中的一种或更多种,其中包括利用多种不同的总线体系结构的存储器总线或存储器控制器、***总线、加速图形端口以及处理器或局部总线。总线610可以包括有线和/或无线总线。
存储器/存储组件606代表一种或更多种计算机存储介质。组件606可以包括易失性介质(比如随机存取存储器(RAM))和/或非易失性介质(比如只读存储器(ROM)、闪存、光盘、磁盘等等)。组件606可以包括固定介质(例如RAM、ROM、固定硬盘等等)以及可移除介质(例如闪存驱动器、可移除硬盘、光盘等等)。
这里讨论的技术可以用软件实施,其具有由一个或更多处理单元602执行的指令。应当认识到,不同的指令可以被存储在计算设备600的不同组件中,比如存储在处理单元602中、存储在处理单元602的各种高速缓冲存储器中、存储在设备600的其他高速缓冲存储器(未示出)中、存储在其他计算机可读介质上等等。此外还应当认识到,指令存储在计算设备600中的位置可以随时间改变。
一个或更多输入/输出设备608允许用户向计算设备600输入命令和信息,并且还允许向用户和/或其他组件或设备呈现信息。输入设备的例子包括键盘、光标控制设备(例如鼠标)、麦克风、扫描仪等等。输出设备的例子包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡等等。
在这里,各种技术可能是在软件或程序模块的一般情境中描述的。通常来说,软件包括施行特定任务或实施特定抽象数据结构的例程、程序、对象、组件、数据结构等等。这些模块和技术的一种实现方式可以被存储在某种形式的计算机可读介质上或者通过其发送。计算机可读介质可以是能够由计算设备访问的任何一种或多种可用介质。作为举例而非限制,计算机可读介质可以包括“计算机存储介质”和“通信介质”。
“计算机存储介质”包括按照任何方法或技术实施的易失性和非易失性、可移除和不可移除介质,以用于存储诸如计算机可读指令、数据结构、程序模块或者其他数据之类的信息。计算机存储介质包括(但不限于)RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备或者可以被用来存储所期望的信息并且可由计算机访问的任何其他介质。
“通信介质”通常把计算机可读指令、数据结构、程序模块或其他数据具体实现在已调数据信号中,比如载波或其他传输机制。通信介质还包括任何信息递送介质。术语“已调数据信号”意味着信号的一项或更多项特性被设定或改变从而在所述信号中编码信息。作为举例而非限制,通信介质包括例如有线网络或直接连线连接之类的有线介质,以及例如声学、RF、红外和其他无线介质之类的无线介质。前述任何内容的各种组合也被包括在计算机可读介质的范围内。
通常来说,可以利用软件、固件、硬件(例如固定逻辑电路)、人工处理或者这些实现方式的某种组合来实施这里所描述的任何功能或技术。这里所使用的术语“模块”和“组件”通常表示软件、固件、硬件或其组合。在软件实现方式的情况下,所述模块或组件表示在处理器(例如一个或更多CPU)上执行时施行指定任务的程序代码。所述程序代码可以被存储在一个或更多计算机可读存储器设备中,关于这方面的进一步描述可以参照图6找到。这里所描述的区分真人面部与平坦表面的特征是独立于平台的,这意味着可以在具有多种处理器的多种商用计算平台上实施所述技术。
虽然前面用特定于结构特征和/或方法步骤的语言描述了本发明的主题内容,但是应当理解的是,在所附权利要求书中限定的主题内容不一定受限于前面描述的具体特征或步骤。相反,前面描述的具体特征和步骤是作为实施权利要求书的示例性形式而公开的。