发明内容
为了提供一种用于面部跟踪的改进的技术,根据本发明的示例实施例提供了一种方法、装置和计算机程序产品。在这点上,可以按照减小相关联的计算需求而同时继续提供可靠的和鲁棒的面部跟踪的方式来提供一个实施例的方法、装置和计算机程序产品以用于面部跟踪。确实地,一个示例实施例的方法、装置和计算机程序产品可以提供面部跟踪,包括以计算高效的方式利用积分投影估计连续帧的面部区域之间的平移运动和/或缩放因子。利用积分梯度投影完成对在连续帧的面部区域之间的平移运动和/或缩放因子的验证。
在一个实施例中,提供了一种方法,包括基于第一帧中的具有预定位置(x0,y0)和预定尺寸的面部区域以及第二帧中的相同尺寸的共置窗口的相应积分投影来确定第一帧和第二帧的面部区域之间的平移运动。该方法也包括验证属于相应帧的第一面部区域和第二面部区域之间的平移运动。在这点上,验证包括确定在通过第一面部区域和第二面部区域之间的平移运动移动第二帧中的窗口之后针对第一面部区域和窗口的积分梯度投影。验证也包括确定在通过平移运动移动之后的窗口和面部区域的积分梯度投影之间的距离。此外,验证包括确定是否基于距离和预定阈值之间的关系来验证两个帧中的面部之间的平移运动。
一个实施例的方法也可以包括确定在第一和第二互相正交的方向中第一帧中面部区域的积分投影,以及确定在第一和第二互相正交的方向针对第二帧中的窗口的积分投影。在一个实施例中,确定平移运动包括移位第一面部区域和第二面部区域的相应积分投影曲线,并且确定在第一面部区域和第二面部区域的相应积分投影曲线之间创建最小距离的移位的量。
确定在通过平移运动移动第二帧中的窗口之后针对窗口的积分梯度投影可以包括确定在第一和第二互相正交的方向中针对第二帧中的窗口的积分梯度投影。此外,确定针对第一帧中的面部区域的积分梯度投影可以包括确定在第一和第二互相正交的方向中针对第一帧中的面部区域的积分梯度投影。一个实施例的方法也可以包括在其中验证了平移运动的情形下基于平移运动来重新限定针对其他帧的预定位置。在又一实施例中,方法可以包括在其中因为距离未能满足预定阈值而未验证平移运动的情形下评价第一帧的面部区域与第二帧中相同尺寸的共置窗口之间的缩放因子。
在另一实施例中,提供了一种装置,包括至少一个处理器以及包括计算机程序代码的至少一个存储器,计算机程序代码被配置用于与至少一个处理器一起使得装置基于第一帧中的具有预定位置和预定尺寸的面部区域和第二帧中相同尺寸共置窗口的相应积分投影来确定第一面部区域和第二面部区域之间的平移运动。至少一个处理器包括计算机程序代码,还被配置用于与至少一个存储器一起使得装置验证第一和第二面部区域之间的平移运动。在这点上,验证包括确定在通过第一面部区域和第二面部区域之间的平移运动移动第二帧中的窗口后第一帧中的面部区域与窗口的积分梯度投影。验证也包括确定针对第一帧中的面部区域的积分梯度投影,以及确定在通过平移运动移动之后的窗口和面部区域的积分梯度投影之间的距离。此外,验证包括确定是否基于距离和预定阈值之间的关系来验证面部区域之间的平移运动。
一个实施例的包括计算机程序代码的至少一个存储器也被配置用于与至少一个处理器一起使得装置确定在第一和第二互相正交的方向中第一帧中的面部区域的积分投影,并且确定在第一和第二互相正交的方向中针对第二帧中的窗口的积分投影。在一个实施例中,确定面部区域之间的平移运动包括移位第一帧和第二帧的相应积分投影曲线,并且确定在第一帧和第二帧的相应积分投影曲线之间创建最小距离的移位的量。
确定在通过平移运动移动窗口之后针对第二帧中的窗口的积分投影可以包括确定在第一和第二互相正交的方向中针对第二帧中的窗口的积分投影。此外,确定针对第一帧中的面部区域的积分投影可以包括确定在第一和第二互相正交的方向中针对第一帧中的面部区域的积分投影。包括计算机程序代码的至少一个处理器也被配置用于与至少一个处理器一起使得装置在其中验证了平移运动的情形下基于平移运动来重新限定针对其他帧的预定位置。在又一实施例中,包括计算机程序代码的至少一个处理器也配配置用于与至少一个处理器一起使得装置在其中因为距离未能满足预定阈值而未验证平移运动的情形下评价第一帧的面部区域和第二帧的窗口之间的缩放因子。
在又一实施例中,提供了一种计算机程序产品,包括具有存储在其中的计算机可读程序指令的至少一个非瞬态计算机可读存储介质,其中计算机可读程序指令包括被配置用于基于第一帧中具有预定位置和预定尺寸的面部区域与第二帧中相同尺寸的共置窗口的相应积分投影来确定第一面部区域和第二面部区域之间的平移运动的程序指令。计算机可读程序指令也包括被配置用于验证相应帧中的第一面部区域和第二面部区域之间的平移运动的程序指令。在这点上,验证包括确定在通过第一面部区域和第二面部区域之间的平移运动移动第二帧中的窗口之后针对窗口的积分梯度投影。验证也包括确定针对第一帧中的面部区域的积分梯度投影,以及确定在通过平移运动移动之后窗口的积分梯度投影和面部区域之间的距离。此外,验证包括确定是否基于距离和预定阈值之间的关系来验证平移运动。
在又一实施例中,提供了一种设备,包括用于基于第一帧中具有预定位置和预定尺寸的面部区域和第二帧中相同尺寸共置窗口的相应积分投影来确定第一面部区域和第二面部区域之间的平移运动的装置。设备也包括用于验证在相应帧中的第一面部区域和第二面部区域之间的平移运动的装置。在这点上,验证包括确定在通过第一面部区域和第二面部区域之间的平移运动移动第二帧中的窗口之后针对窗口的积分梯度投影。验证也包括确定针对第一帧中的面部区域的积分梯度投影,以及确定在通过平移运动移动之后窗口的积分梯度投影和面部区域之间的距离。此外,验证包括确定是否基于距离和预定阈值之间的关系来验证平移运动。
在又一实施例中,提供了一种计算机程序,该计算机程序当被执行时被配置用于基于第一帧中具有预定位置和预定尺寸的面部区域和第二帧中相同尺寸共置窗口的相应积分投影来确定第一面部区域和第二面部区域之间的平移运动。该计算机程序当被执行时还被配置用于验证相应帧中的第一面部区域和第二面部区域之间的平移运动。在这点上,验证包括确定在通过第一面部区域和第二面部区域之间的平移运动移动第二帧中的窗口之后针对窗口的积分梯度投影。验证也包括确定针对第一帧中的面部区域的积分梯度投影,以及确定在通过平移运动移动之后窗口的积分梯度投影和面部区域之间的距离。此外,验证包括确定是否基于距离和预定阈值之间的关系来验证平移运动。
在一个实施例中,提供了一种方法,包括确定关于在第一帧中的具有预定位置和预定尺寸的面部区域与第二帧中相同尺寸的共置窗口的积分投影曲线的转移函数。这一实施例的方法也通过基于转移函数来使用第一面部区域和第二面部区域的积分投影来确定缩放因子。为了计算不同缩放的两个面部区域之间的距离,通过将转移函数应用至第一帧的面部区域的积分投影的坐标来初始地补偿缩放差值。方法也包括确定使用转移函数变换的第一帧中的面部区域与第二帧中的窗口的积分投影之间的距离,以及可以确定是否基于距离和预定阈值之间的关系来验证缩放因子。
确定转移函数可以包括确定在积分投影曲线之间提供最小点到点距离的转移函数线。确定缩放因子可以包括基于在第一和第二互相正交的方向中的缩放因子来确定缩放因子。一个实施例的方法也可以包括在其中因为距离未能满足预定阈值而未验证缩放因子的情形下使用基于模式识别的面部分类器来执行面部搜索。此外,一个实施例的方法也可以包括在其中验证了缩放因子的情形下基于缩放因子来重新限定针对其他帧的预定尺寸。
在另一实施例中,提供了一种装置,包括至少一个处理器和包括计算机程序代码的至少一个存储器,至少一个存储器被配置用于与至少一个处理器一起使得装置确定与第一帧中的具有预定位置和预定尺寸的面部区域和第二帧中具有相同尺寸的共置窗口的积分投影曲线有关的转移函数。在这一实施例中包括计算机程序代码的至少一个存储器也可以被配置用于与至少一个处理器一起使得装置基于转移函数和针对第一帧和第二帧中的窗口的积分投影来确定缩放因子。包括计算机程序代码的至少一个存储器也可以被配置用于与至少一个处理器一起使得装置确定第一帧中的面部区域和第二帧中具有基于缩放因子的尺寸的窗口之间的积分投影的距离,以及确定是否基于距离和预定阈值之间的关系验证缩放因子。
转移函数的确定可以包括确定在积分投影曲线之间提供最小点到点距离的转移函数线。通过首先针对缩放而补偿针对第一帧的面部区域的积分投影曲线、以及使用该缩放以计算针对第二帧的面部区域的积分投影曲线的点到点距离,来计算以特定缩放因子的两个面部投影曲线之间的点到点距离。缩放因子的确定可以包括基于在第一和第二互相正交的方向中的缩放因子来确定缩放因子。在一个实施例中包括计算机程序代码的至少一个存储器也可以被配置用于与至少一个处理器一起使得装置在其中因为距离未能满足预定阈值而未验证缩放因子的情形下使用基于模式识别的面部分类器来执行面部搜索。此外,包括计算机程序代码的至少一个存储器也可以被配置用于与至少一个处理器一起使得装置在其中验证了缩放因子的情形下基于缩放因子来重新限定针对其他帧的预定尺寸。
在另一实施例中,提供了一种计算机程序产品,包括具有存储在其中的计算机可读程序指令的至少一个非瞬态计算机可读存储介质,其中计算机可读程序指令包括被配置用于确定与第一帧中具有预定位置和预定尺寸的面部区域和第二帧中相同尺寸的共置窗口的积分投影曲线有关的转移函数的程序指令。计算机可读程序指令也包括被配置用于基于转移函数并且使用针对第一帧中的面部区域和第二帧中的窗口的积分投影来确定缩放因子的程序指令。计算机可读程序指令也可以包括被配置用于确定第一帧中的面部区域和第二珍重具有基于缩放因子的尺寸的窗口的积分投影之间的距离的程序指令,以及被配置用于确定是否基于距离和预定阈值之间的关系来验证缩放因子的程序指令。
在又一实施例中,提供了一种设备,包括用于确定与第一帧中具有预定位置和预定尺寸的面部区域和第二帧中相同尺寸的共置窗口的积分投影曲线有关的转移函数的装置。这一实施例的设备也包括用于使用第一帧中的面部区域和针对具有基于缩放因子的尺寸的窗口的第二帧中的窗口的积分投影而基于转移函数确定缩放因子的装置。设备也可以包括用于确定第一帧中的面部区域和第二帧中具有基于缩放因子的尺寸的窗口的积分投影之间的距离的装置,以及用于确定是否基于距离和预定阈值之间的关系来验证缩放因子的装置。
在又一实施例中,提供了一种计算机程序,该计算机程序当被执行时被配置用于确定与第一帧中具有预定位置和预定尺寸的面部区域和第二帧中的相同尺寸的共置窗口的积分投影曲线有关的转移函数。该计算机程序当被执行时也被配置用于基于转移函数并且使用针对第一帧中的面部区域和第二帧中的窗口的积分投影来确定缩放因子。该计算机程序进一步被配置用于确定第一帧中的面部区域以及具有基于缩放因子的尺寸的第二帧中的窗口的积分投影之间的距离,以及确定是否基于距离和预定阈值之间的关系验证缩放因子。
具体实施方式
现在将参照附图在以下更全面地描述本发明的一些示例实施例,附图中示出了本发明的一些但是并非全部实施例。确实地,可以按照许多不同形式实施本发明,并且本发明不应被解释为限于在此所描述的实施例;相反地,提供这些实施例以使得本公开内容将满足可适用的法律要求。全文中相同的附图标记指代相同的元件。
如在此所用,术语“数据”、“内容”、“信息”和类似术语可以被互换地使用以指代根据各种示例实施例而能够被传输、接收、显示和/或存储的数据。因此,对任何这些术语的使用不应被视作限制本公开内容的精神和范围。
如在此所用的术语“计算机可读介质”指代被配置用于参与向处理器提供包括用于执行的指令的信息的任何介质。这样的介质可以采用许多形式,包括但是不限于非瞬态计算机可读存储介质(例如,非易失性介质,易失性介质),以及传输介质。传输介质例如包括同轴电缆、铜线、光纤光缆,以及不采用引线或电缆而通过空间行进的载波,诸如声波和电磁波,包括无线电波、光波和红外波。非瞬态计算机可读介质的示例包括软盘、硬盘、磁带、任何其他非瞬态磁介质、压缩盘只读存储器(CD-ROM)、压缩盘可复写(CD-RW)、数字通用盘(DVD)、蓝光、任何其他非瞬态光介质、随机访问存储器(RAM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、快闪EPROM、任何其他存储器芯片或卡和、或者计算机可以从其读取的任何其他非瞬态介质。在此使用术语计算机可读存储介质以指代除了传输介质之外的任何计算机可读介质。然而,应该领会到,在实施例被描述为使用计算机可读存储介质时,在备选实施例中可以将计算机可读存储介质替换为或除了计算机可读存储介质之外使用其他类型的计算机可读介质。
此外,如在此所用,术语“电路”指代(a)仅硬件的电路实现方式(例如,按照模拟电路和/或数字电路的实现方式);(b)共同作用以使得装置执行在此所描述的一个或多个功能的电路与包括存储在一个或多个计算机可读存储器上的软件和/或固件指令的计算机程序产品的组合;以及(c)电路,诸如例如微处理器或微处理器的一部分,其需要软件或固件以用于操作,即使软件或固件并未真实存在。“电路”的这一定义适用于这一数据在此的所有使用,包括在任何权利要求中的使用。作为进一步的示例,如在此所用,术语“电路”也包括包含一个或多个处理器和/或处理器的部分以及伴随的软件和/或固件的实现方式。作为另一示例,术语“电路”如在此所用也包括例如用于移动电话的基带集成电路或应用处理器集成电路,或者服务器、蜂窝网络设备、其他网络设备和/或其他计算设备中的类似集成电路。
图1中示出了根据本发明的示例实施例的用于执行面部跟踪的装置10。装置可以体现在广泛各种计算设备中,诸如移动终端,例如,移动电话、移动计算机、个人数字助理(PDA)、寻呼机、膝上型计算机、台式计算机、游戏设备、电视和其他类型的移动电子系统,或各种固定计算设备,诸如工作站、个人计算机等。应该注意的是,尽管图1图示了用于执行面部跟踪的装置的配置的一个示例,但多种其他配置结构也可以用于实施本发明的实施例。同样地,在一些实施例中,尽管设备或元件被示出为相互通信,但在下文中这样的设备或元件应该被视作能够被体现在同一设备或元件内,并且因此所示的通信的设备或元件应该被理解为备选地是同一设备或元件的部分。
现在参照图1,提供了用于执行面部跟踪的装置10,并且装置10可以包括处理器12、存储器设备14、通信接口16以及用户接口18或者以其他方式与它们通信。在一些实施例中,处理器(和/或协处理器,或辅助处理器或者以其他方式与处理器相关联的任何其他处理电路)可以经由用于在装置的部件之间传递信息的总线而与存储器设备通信。存储器设备例如可以包括一个或多个易失性和/或非易失性存储器。换言之,例如,存储器设备可以是电子存储设备(例如,计算机可读存储介质),其包括被配置用于存储可以由机器(例如,类似处理器的计算设备)可取回的数据(例如,比特)的门。存储器设备可以被配置用于存储用于使得装置能够执行根据本发明的示例实施例的各个功能的信息、数据、应用、指令等。例如,存储器设备可以被配置用于缓冲用于由处理器处理的输入数据。附加地或者备选地,存储器设备可以被配置用于存储用于由处理器执行的指令。
在一些实施例中,装置10可以是被配置用于利用本发明的示例实施例的移动终端或其他计算设备。然而,在一些实施例中,装置可以被体现为芯片或芯片组。换言之,装置可以包括一个或多个物理封装(例如,芯片),其包括在结构组件(例如,基板)上的材料、部件和/或引线。结构组件可以为其上包括的部件电路提供物理强度、尺寸守恒、和/或电相互作用的限制。因此,在一些情形下,装置可以被配置用于在单个芯片上或作为单个“片上系统”实施本发明的实施例。同样地,在一些情形下,芯片或芯片组可以构成用于执行用于提供在此所描述的功能的一个或多个操作的装置。
可以按照多种不同方式体现处理器12。例如,处理器可以被实施为各种硬件处理装置中的一个或多个硬件处理壮汉子,诸如协处理器、微处理器、控制器、数字信号处理器(DSP)、具有或者不具有伴随的DSP的处理元件,或包括集成电路的各种其他处理电路,集成电路诸如例如ASIC(专用集成电路)、FPGA(现场可编程门阵列)、微控制器单元(MCU)、硬件加速器、专用计算机芯片等。同样地,在一些实施例中,处理器可以包括被配置用于独立执行的一个或多个处理核。多核处理器可以支持在单个物理封装内的多重处理。附加地或者备选地,处理器可以包括经由总线被协力配置以支持独立执行指令、流水线和/或多线程的一个或多个处理器。
在示例实施例中,处理器12可以被配置用于执行存储在存储器设备14中或者处理器以其他方式可访问的指令。备选地或者附加地,处理器可以被配置用于执行硬件编码功能。同样地,不论是否由硬件或软件方法或由其组合配置,处理器都可以代表能够执行根据本发明的实施例的操作而同时被相应地配置的实体(例如,物理地体现在电路中)。因此,例如,当处理器被体现为ASIC、FPGA等时,处理器可以是用于进行在此所描述的操作的被具体配置的硬件。备选地,作为另一示例,当处理器被体现为软件指令的执行器时,指令可以具体配置处理器102以当指令被执行时执行在此所描述的算法和/或操作。然而,在一些情形下,处理器可以是具体设备(例如,移动终端或其他计算设备)的处理器,诸如移动电话的处理器,其被适配用于通过由用于执行在此所描述的算法和/或操作的指令进一步配置处理器而采用本发明的实施例。这些处理器此外可以包括被配置用于支持处理器的操作的时钟、算法逻辑单元(ALU)和逻辑门。
同时,通信接口16可以是任何装置,诸如体现在硬件或者硬件与软件组合中的设备或电路,其被配置用于从网络和/或与装置10通信的任何其他设备或模块接收数据或向其传输数据。在这点上,通信接口可以包括例如天线(或多个天线)以及用于使得能够与无线通信网络通信的支持硬件和/或软件。附加地或者备选地,通信接口可以包括用于与天线交互以使得经由天线传输信号或者处理经由天线接收的信号的接收的电路。在一些环境下,通信接口可以备选地或者附加地支持有线通信。同样地,例如,通信接口可以包括通信调制解调器和/或用于支持经由电缆、数字用户线(DSL)、通用串行总线(USB)或其他机制通信的其他硬件/软件。
用户接口18可以与处理器12通信以在用户接口处接收用户输入的指示和/或引起向用户提供可听、可视、机械或其他输出。同样地,用户接口18可以例如包括键盘、鼠标、操纵杆、显示器、触摸屏、触摸区、软键盘、麦克风、扬声器或其他输入/输出机构。备选地或者附加地,处理器可以包括被配置用于控制诸如例如扬声器、电铃、麦克风、显示器等的用户接口的一个或多个元件的至少一些功能的用户接口电路。处理器和/或包括处理器的用户接口电路可以被配置用于通过存储在处理器可访问的存储器(例如,存储器设备14等)上的计算机程序指令(例如,软件和/或固件)控制用户接口的一个或多个元件的一个或多个功能。
如图2中所示,示出了确定如果在其中跟踪面部的两个帧之间存在平移运动则确定平移运动的方法。在确定连续帧中的面部区域之间的平移运动之前,在第一帧中检测面部。可以通过任何通用目标检测方法(诸如Viola-Jones方法)在第一帧中检测面部。一旦在第一帧中检测到面部,则确定诸如被标注为(x0,y0)的面部的中心的面部的位置以及被标注为M×M的面部的尺寸。此后,可以确定在第一帧和后续的第二帧之间中面部区域的平移运动。在这点上,装置10可以包括诸如处理器12等的装置以用于基于第一帧中的具有预定位置(x0,y0)和预定尺寸M×M的第面部区域与第二帧中围绕预定位置(x0,y0)具有预定尺寸M×M的窗口的相应积分投影来确定第一帧和第二帧之间的平移运动。参见图2的操作20。
图3的流程图提供关于确定第一帧和第二帧之间的平移运动的进一步细节以使得现在参照图3并且特别地参照图3的操作30。在这点上,装置10可以包括诸如处理器12等的装置以用于确定在诸如x和y方向的第一和第二互相正交的方向中的第一帧中的面部区域的积分投影。例如,可以如下确定第一帧I(x,y)中尺寸为M×M的面部区域的水平和垂直积分投影曲线h(y)和v(x):
h(y)=Σx∈{-M/2,M/2}|I(x-x0,y-y0)|where y∈{-M/2,M/2}for the face centeredat[x0,y0]
v(x)=Σy∈{-M/2,M/2}|I(x-x0,y-y0)|where x∈{-M/2,M/2}for the face centeredat[x0,y0]
如图3的操作32中所示,装置10也可以包括诸如处理器12等的装置以用于确定用于在诸如x和y方向的第一和第二互相正交的方向中的第二帧中的对应窗口的积分投影曲线。可以按照包括如下的各种方式确定第二帧中的窗口的积分投影曲线:
h′(y)=Σx∈{-M/2,M/2}|I(x-x0,y-y0)|where y∈{-M/2,M/2}for the facecentered at[x0,y0]
v′(x)=Σy∈{-M/2,M/2}|I(x-x0,y-y0)|where x∈{-M/2,M/2}for the facecentered at[x0,y0]
其中在第二帧I’(x,y)中h’()代表水平积分投影曲线并且v’()代表垂直积分投影曲线。
基于这些积分投影,随后可以确定第一帧I(x,y)和第二帧I’(x,y)之间的面部区域的平移运动。如图3的操作34中所示,装置10可以包括诸如处理器12等的装置以用于移位第一帧和第二帧的积分投影曲线。该实施例的装置10也可以包括诸如处理器12等的装置以用于如图3的操作36中所示确定在第一帧和第二帧的相应积分投影曲线之间创建最小距离的移位的量。通过示例,可以通过移位针对第一帧和第二帧的垂直积分投影曲线(例如,如上所描述的v(x)和v’(x))并且确定导致在两个垂直积分投影曲线之间的最小距离dx的移位的量来获得在x方向中的平移运动。在一个实施例中,例如,可以如下确定在针对第一帧和第二帧的垂直积分投影曲线之间的最小距离dx:
类似地,可以通过移位针对第一帧和第二帧的水平积分投影曲线(例如,如上所描述的h(y)和h’(y))并且确定导致在两个水平积分投影曲线之间的最小距离dy的移位的量来获得在y方向中的运动。在一个实施例中,例如,可以如下确定针对第一帧和第二帧的水平积分投影曲线之间的最小距离dy:
一旦已经确定了平移运动,则一个示例实施例的方法和装置10可以验证在第一帧和第二帧之间的平移运动。如图2的操作22和图3的操作38中所示,装置10可以包括诸如处理器12等的装置以用于通过在第一帧和第二帧之间确定的平移运动来确定在第二帧中的窗口的移动之后针对窗口的积分梯度投影。根据前述示例,可以通过被确定为(dx,dy)的平移运动来移动第二帧I’(x,y)中的窗口。当在第二帧I’(x,y)中移动窗口之后,可以利用代表垂直梯度的水平投影的h”(x)和代表水平梯度的垂直投影v”(y)来如下确定在x和y方向中第二帧中的窗口的积分梯度投影:
h″(x)=Σy∈{-M/2,M/2}|I′(x+dx-x0,y+dy-y0)-I(x+dx-x0,y+dy+1-y0)|
其中x∈{-M/2,M/2}
v″(y)=Σx∈{-M/2,M/2}|I′(x+dx-x0,y+dy-y0)-I(x+dx+1-x0,y+dy-y0)|
其中y∈{-M/2,M/2}
如图2的操作24和图3的操作40中所示,装置10也可以包括诸如处理器12等的装置以用于确定针对第一帧中的面部区域的积分梯度投影。例如,可以如下确定在第一帧I(x,y)中垂直梯度的水平投影hg(x)和水平梯度的垂直投影vg(y):
hg(x)=Σy∈{-M/2,M/2}|I(x-x0,y-y0)-I(x-x0,y+1-y0)|
其中对于中心在[x0,y0]处的面部而言x∈{-M/2,M/2}
Vg(y)=Σx∈{-M/2,M/2}|I(x-x0,y-y0)-I(x+1-x0,y-y0)|
其中对于中心在[x0,y0]处的面部而言y∈{-M/2,M/2}
通过利用积分梯度投影执行对平移运动的验证,本发明的示例实施例的方法和装置10可以避免照明的不良效果以便更精确地估计平移运动。
如图2的操作26和图3的操作42中所示,装置10也可以包括诸如处理器12等的装置以用于确定在由平移运动移动之后的窗口与面部区域的积分梯度投影之间的距离。在这点上,可以如下在第一帧和第二帧的水平积分梯度投影曲线与第一帧和第二帧的垂直积分梯度投影曲线之间确定在x和y方向中的距离,fdx,fdy:
装置10也可以包括诸如处理器12等以用于如图2的操作28和图3的操作44中所示确定是否基于积分梯度投影之间的距离和预定阈值thrl之间的关系验证平移运动。在一个实施例中,诸如处理器的装置可以在其中距离小于预定阈值(例如fdx<thrl并且fdy<tthrl)的情形下验证第一帧和第二帧之间的面部的平移运动。尽管同一预定阈值thrl被与在x方向中的积分梯度投影之间距离以及在y方向中的积分梯度投影之间距离二者结合使用,但在其他实施例中可以在x方向和y方向中利用不同的预定阈值。在其中验证了第一帧和第二帧之间的面部的平移运动的情形下,装置可以包括诸如处理器12等的装置以用于基于平移运动而重新限定诸如后续帧的其他帧的预定位置。参见图3的操作46。换言之,可以基于如上所描述的标识的平移运动来更新面部区域以其为中心的面部区域的预定位置。然而,如果诸如处理器的装置未能验证平移运动,诸如在其中积分梯度投影之间距离未能满足预定阈值(例如,fdx>thrl或fdy>thrl)的情形下,一个实施例的方法、装置和计算机程序产品继而可以计算第一帧的面部区域与第二帧的窗口之间的缩放因子以便确定它们之间的可能的缩放,如图3的操作48中所示并且如以下结合图4所描述。
以上结合图2和图3所描述的本发明的示例实施例的方法、装置和计算机程序产品例如可以通过与帧的更大部分或者甚至整体相反、确定针对仅第一帧中的面部区域以及第二帧中的对应窗口的积分梯度投影以及通过利用一维搜索估计平移运动来提供具有增大的计算效率的实质性计算优点。
在其中未验证平移运动的情形中,诸如在其中积分梯度投影之间的距离未能满足预定阈值的情形中,一个示例实施例的方法、装置和计算机程序产品继而可以针对第一帧的面部区域与第二帧的对应窗口之间的缩放的存在分析积分投影曲线。尽管可以出于各种原因引入缩放,但缩放可以通常发生在其中面部或者例如相机的图像捕捉器件相对于对方移动(诸如相对于对方靠近或者远离)的情形中。
根据这一实施例,装置10可以包括诸如处理器12等的装置以用于确定与第一帧的面部区域和第二帧中的对应窗口的积分梯度投影曲线有关的转移函数。参见图4的操作50。通过示例,现在参照图5,其中h1(x)和h2(x)分别是针对第一帧的面部区域和第二帧的对应窗口的水平积分投影曲线。为了确定转移函数,一个示例实施例的装置10可以包括诸如处理器12等的装置以用于确定在积分投影曲线之间提供最小点到点距离的转移函数线。关于图5的实施例中,例如,转移函数线可以被定义为i=m*j+c。在这点上,j是h2(x)的指数并且i是h1(x)的系数。此外,这一示例实施例的积分投影曲线之间的距离被限定为两个曲线之间绝对值的总和。
在两个曲线之间的多个潜在映射之中,一个示例实施例的搜索可以被约束为搜索斜率m,其中m被限定在0.75至1.25之间,因为面部区域的缩放改变通常将不会在两帧内改变多于1.25倍。可以在这一示例实施例中如下确定水平积分投影曲线之间的转移函数线的斜率:
mx=arg minm{|h2(.j)-h1(m*j+ck)|}其中m∈(0.75,01.25)
在这点上,可以通过假设积分转移函数线与延伸穿过原点并且在图5中被示出为虚线的对角线在(k*M/4,k*M/4)处相交(其中M是线的长度而k是[0,3]的元素)来确定ck。尽管以上结合确定水平积分投影曲线之间的转移函数线的斜率mx而被描述,但装置10也可以包括诸如处理器12等的装置以用于确定与第一帧的面部区域和第二帧的对应窗口的垂直积分投影曲线有关的转移函数线的斜率my。
也可以通过将中心点固定在由图5中的虚线代表的对角线上的某点处并且继而旋转转移函数线至对应于不同斜率m的不同角度θ来图形地查看由转移函数(诸如转移函数线)确定在积分投影之间的最佳映射,其中由提供如由针对mx和my的前述等式限定的最小距离的转移函数线限定最佳映射。在这一分析中,注意的是中心点可以被固定在四个不同位置处,即,在(k*M/4,k*M/4)处,其中k是元素[0,3]。
一个示例实施例的装置10也可以包括诸如处理器12等的装置以用于基于x和y方向中的缩放因子来确定缩放因子。参见图4的操作52。在这点上,缩放因子mf可以被确定为mx和my的平均值,即,mf=(mx+my)/2。基于缩放因子,可以基于缩放因子来修改第二帧中的窗口的尺寸,诸如基于缩放因子在尺寸上增大或者减小。如图4的操作54中所示,装置10也可以包括诸如处理器12等的装置以用于在基于缩放因子重新划定窗口的大小后确定针对第二帧中的窗口的积分梯度投影曲线。在这点上,可以如上所述确定水平和垂直积分梯度投影曲线h”(x)和v”(y),虽然采用重新划定尺寸或者缩放的窗口。一个示例实施例的装置10也可以包括诸如处理器12等的装置以用于将水平和垂直积分梯度投影曲线h”(x)和v”(y)的长度重新限定为与针对第一帧的投影长度相同,即,M。
一个实施例的装置10也可以包括诸如处理器12等的装置以用于诸如按照以上结合针对fdx和fdy的等式描述的方式确定第一帧中的面部区域与第二帧中的重新划定尺寸的窗口的积分梯度投影曲线之间的距离。参见图4的操作56。此后,装置10可以包括诸如处理器12等的装置以用于确定是否基于积分梯度投影之间的距离与预定阈值之间的关系来验证缩放因子。参见操作58。例如,可以如以上结合图2的操作28和图3的操作44所述通过将距离fdx、fdy与预定阈值thrl比较来验证缩放因子。尽管如上所述利用了同一阈值,但是也可以利用不同阈值,并且的确可以在一个实施例中针对x和y方向使用不同阈值。在其中验证了缩放因子的情形中,装置10可以包括诸如处理器12等的装置以用于基于缩放因子来针对诸如后续帧的其他帧重新限定面部区域和对应窗口的预定尺寸。参见图4的操作60。备选地,在其中未验证缩放因子的情形中,诸如通过未能满足预定阈值的一个或多个距离,一个示例实施例的方法、装置和计算机程序产品可以如图4的操作62中所示利用基于模式识别的面部分类器来执行面部搜索。
在其中既没有验证平移运动又没有验证缩放因子的情形中,第一帧和第二帧之间可以已经存在姿势变化和实质上的模糊。同样地,装置10可以包括诸如处理器12等的装置以用于使用基于模式识别的面部分类器来执行有约束的面部搜索。可以针对预定数目的面部尺寸(诸如x、1.25x和0.75x)执行这一面部搜索,其中x是针对之前找到的面部的面部尺寸。对于每个面部尺寸,诸如处理器的装置可以在围绕在之前帧中面部之前所处的位置的感兴趣的区域中执行面部搜索。通过对于预定数目的面部尺寸使用基于模式识别的面部分类器来执行面部搜索,可以在姿势变化以及在某些情形下大量模糊的情况中仍然能够在第一帧和第二帧中找到面部。
积分梯度投影的使用可以对于以可靠的方式标识平移运动和/或缩放,特别是关于其中经常发生平移和放大或缩放的视频有利。通过以在大多数情形下成功验证的方式确定平移运动和/或缩放,面部跟踪可以在大多数情形下是成功的,由此提高了面部跟踪过程的效率。
如上所述,图2至图4是根据本发明的示例实施例的方法和程序产品的流程图。应该理解的是,流程图的每个框以及流程图中的框的组合可以由各种装置实施,诸如硬件、固件、处理器、电路和/或与包括一个或多个计算机程序指令的软件的执行相关联的其他设备。例如,可以由计算机程序指令体现如上所述的过程中的一个或多个过程。在这点上,体现如上所述的过程的计算机程序指令可以由装置10的存储器设备14存储并且由装置10的处理器12执行。应该领会到的是,任何此类计算机程序指令可以被加载到计算机或其他可编程装置(例如,硬件)上以形成机器,从而使得在计算机或其他可编程装置上执行的指令创建用于实施在流程图的框中所指定的功能的装置。这些计算机程序指令也可以被存储在可以指导计算机或其他可编程装置以特定方式工作的非瞬态计算机可读存储器中,从而使得存储在计算机可读存储器中的指令产生实施在流程图的框中所指定的功能的制品。计算机程序指令也可以被加载到计算机或其他可编程装置上以引起在计算机或其他可编程装置上执行一系列操作以产生计算机实施的过程,从而使得在计算机或其他可编程装置上执行的指令实施在流程图的框中所指定的功能。
因此,图2至图4的流程图的框支持用于执行指定的功能的装置的组合以及用于执行指定的功能的操作的组合。也应该理解的是,流程图的框中的一个或多个框以及流程图中的框的组合可以由执行指定功能的专用的基于硬件的计算机系统或者专用硬件和计算机指令的组合来实施。
从在之前的描述和相关联的附图中呈现的教示获益的、本发明所述属于的领域的技术人员将认识到在此阐明的本发明的许多修改和其他实施例。因此,应该理解的是,本发明并不限定于所公开的特定实施例,并且修改和其他实施例旨在于落入所附权利要求的范围内。此外,尽管前述描述和相关联的附图在元件和/或功能的某些示例组合的上下文中描述一些示例实施例,但应该领会到的是可以在不脱离所附权利要求的范围的情况下通过备选实施例提供元件和/或功能的不同组合。在这点上,例如,也如在一些所附权利要求中所阐明的那样预期了与如上明确描述的不同的元件和/或功能的不同组合。尽管在此使用了特定术语,但它们是统称的并且仅具有描述意义而不是为了限制目的。