发明领域 本发明涉及目标检测。 背景技术 以下说明涉及出现在各种类型的目标检测中的问题,但为了说明 的简洁,将讨论关于面部检测。 在文献中已经提出了多种人面部检测算法,包括使用所谓的本征 面部、面部模板匹配、可变形模板匹配或神经网络分类。这其中没有 一个是完美的,总的来说每一个都有优点和缺点。没有一种给出图像 包含面部的绝对可靠的指示,相反,它们都是根据概率估算、基于图 像的数学分析,给出图像是否具有至少一定的包含面部的的可能性。 根据它们的应用,这些算法一般具有设置成很高的可能性值阈值,以 试图避免面部的假检测。 目标检测倾向于需要多个处理器(processor-intensive)。在 目标检测必须实时运行的情况下,难以在允许的时间(例如视频信号 的一帧周期)内完成所有的目标检测处理。 发明内容 本发明提供目标检测设备,在其中处理有序图像系列中的图像以 检测目标,每幅图像具有关联的图像周期,整个图像中的对象检测需 要执行一组处理任务,该设备包括: 用于在与该有序系列中的两个或多个图像的组相关联的相应图像 周期期间执行处理任务集的子集的装置; 子集被安排成在与该图像组相关的图像周期期间执行该处理任务 集的基本上所有处理任务,并且每个这样的任务针对该图像组中的至 少一个相应图像来执行。 检测目标(例如,面部)所需要的处理任务在时间上、空间上或 两者的意义上分开,以便减少在每个单独图像上需要执行的任务。本 发明认识到在很多情况下,图像与图像之间的变化是充分的小,以至 于仍然能够获得满意的对象检测结果。 应该明白,上述措辞涉及到图像测试的顺序,并不一定涉及视频 序列的前向时间顺序。 附图说明 本发明的上述和其它目的、特征和优点将通过参考附图进行阅读 的说明性实施例的下列详细描述变得明显,其中: 图1是用作面部检测系统和/或非线性编辑系统的通用计算机系统 的示意图; 图2是使用面部检测的视频摄像机-记录器(摄录机)的示意图; 图3是说明训练(training)过程的示意图; 图4是说明检测过程的示意图; 图5示意性地说明特征直方图; 图6示意性说明用以产生本征块的抽样过程; 图7和8示意性地说明了本征块集; 图9示意性地说明了建造表示块位置的直方图的过程; 图10示意性地说明了直方图仓号的产生; 图11示意性地说明了面部概率的计算; 图12a-12f是利用上述方法所产生的直方图的示意性实例; 图13a和13b示意性地说明了该直方图的数据结构; 图14示意性地说明了叠有面部窗口的所谓仓映像; 图15a-15g示意性地说明了所谓多尺度面部检测; 图16是说明用于在多尺度方案(arrangement)中检测面部位置 的技术的示意性流程图; 图17示意性地说明了运动检测器; 图18a-18e示意性地说明了用于检测图像中变化的区域的技术; 图19a-19c示意性地说明了对图18a-18e技术的改进; 图20a-20c示意性地说明了空间抽选技术; 图21a-21d示意性地说明了另外一个空间抽取技术; 图22示意性地说明了面部跟法; 图23a和23b示意性地说明了用于皮肤颜色检测的搜索区域的导 出; 图24示意性地说明了施加到皮肤颜色检测的掩蔽; 图25a-25c示意性地说明了图24的掩蔽的使用; 图26是示意性距离映像; 图27示意性地说明了颜色掩蔽过程; 图28示意性地说明了颜色映像更新过程;以及 图29a-29c示意性地说明了梯度(变化)预处理技术。 具体实施方式 现在描述通过用代表所需的目标的训练图像进行训练进行面部检 测的实施例,但同样可应用于其它目标,诸如汽车的检测。 图1是用作面部检测系统和/或非线性编辑系统的通用计算机系统 的示意图。计算机系统包括处理单元10,处理单元10具有(在其他常 规元件中)中央处理器(CPU)20,诸如随机存取存储器(RAM)30之 类的存储器和诸如盘驱动器40之类的非易失存储装置。计算机系统可 以连接到诸如局域网或因特网(或两者)之类的网络50。还配备键盘 60、鼠标或其它用户输入设备70和显示屏80。本领域普通技术人员应 该明白通用计算机系统可以包括不必在这里说明的很多其它常规部 件。 图2是使用面部检测的视频摄像机-记录器(摄录机)的示意图。 摄录机100包括透镜110,透镜110将图像聚焦到电荷耦合器件(CCD) 图像捕获器件120。产生的电子形式的图像由图像处理逻辑130进行处 理,用于在诸如盒式磁带130的记录介质上记录。由器件120捕获到 的图像也可以显示在可以通过目镜160进行观察的用户显示器150 上。 为了捕获与图像关联的声音,使用一个或多个麦克风,这些麦克 风可以是外置麦克风,也就是说它们通过柔性电缆连接到摄录机,也 可以安装在摄录机体内。 来自(多个)麦克风的模拟音频信号由音频处理装置107处理, 以便产生记录在存储介质140上的适当的音频信号。 应当注意视频和音频信号既可以数据形式也可以模拟形式甚至以 该两种形式记录在存储介质140上。因此,图像处理装置130和音频 处理装置170可以包括模拟向数字转换的级。 摄录机用户能够通过用户控制180控制透镜110的性能的某些方 面,用户控制180影响透镜控制装置190,以发送电控制信号200给 透镜110。一般来说,像聚焦、缩放之类的属性按这种方式进行控制, 但透镜孔径或其它属性也可以由用户控制。 示意性地说明了两种另外的用户控制。配置按钮210来启动和停 止向记录介质140上的记录。例如,按一下控制120可以开始记录, 并且再按一下可以停止记录,或控制可能需要保持在按下的状态下以 进行记录,或者,可以按下一定的时间(例如5秒钟)以启动记录。 在这些装置的任何一个中,技术上讲可以直接根据摄录机的记录操作 建立,在这种记录操作中出现每次“拍摄”(记录的连续周期)的开始 和结束。 图2中示意性所示的其他用户控制是“良好拍摄标记”(GSM)220, 它可以由用户操作来使得要存储的“元数据”(相关数据)与记录介质 140上的视频和音频材料联系起来,指示该特定的拍摄是由操作员主观 考虑为在某些方面“良好”(例如演员表演的特别好;新闻记者每个字 的发音都正确等等)。 根据所使用的特定格式和标准,元数据可以记录在记录介质140 上的某些备用容量(例如“用户数据”)中。或者,元数据可以存储在 像可拆卸存储棒(MemoryStickRTM)存储器(未示出)之类的分离存储介 质上。或者元数据能够存储在外部数据库(未示出),例如通过无线 链路(未示出)传递到这样的数据库。这种元数据不仅可以包括GSM 信息,也包括拍摄边界、透镜属性、用户输入的字符信息(例如在键 盘上-未示出)、来自全球定位系统接收机(未示出)的地理位置信息 等。 到目前为止,说明书已经描述了允许元数据(metadata enabled) 的摄录机。现在描述面部检测可以应用到这种摄录机的方式。当然, 可以理解,这些技术是可以应用于例如,像因特网协议(IP)摄像机、 视频会议摄像机等之类的联网摄像机。 这种摄录机包括面部检测器装置230。下面以更详细的方式描述适 当的装置,但是对于这部分说明,足以说明面部检测器装置230从图 像处理装置130接收图像并且检测或者试图检测这样的图像包含一个 或多个面部。面部检测器可以以“是/否”标志的形式输出面部检测数 据,也可以是包括面部图像坐标的更详细的数据,诸如每个所检测到 的面部内的眼睛位置的坐标。这种信息可以作为另一种类型的元数据 进行处理,并以上面描述的其它任何格式存储。 如上所述,面部检测可以使用检测处理内的其它类型的元数据来 协助。例如,面部检测器230从透镜控制装置190接受控制信号,以 指示透镜110的当前聚焦和缩放设置。这些可以通过给任何面部的期 望的图像尺寸的初始指示来帮助面部检测器,所述的面部可以出现在 图像的前景中。在这种情况下,应该注意它们之间的聚焦和缩放设置 限定了摄录机100和正在被拍摄的人之间的期望的分开的距离,并且 还有透镜110的放大倍数。从这两种属性中,基于平均面部尺寸,能 够计算出所产生图像数据中的面部的期望的尺寸(以像素计算)。 传统的(已知的)语音检测器240从音频处理装置170中接收音 频信息并在这样的音频信息中检测语音的出现。这样的语音出现可以 是一个指示符,指示在对应的图像中正在出现面部的可能性高于没有 检测到语音的情况。在以下要讨论的一些实施例中,可以改进语音检 测器,以便通过检测一组麦克风中最有效的麦克风,或者通过多个麦 克风之间的三角测量或类似技术来提供说话者的位置程度。 最后,将GSM信息220和拍摄信息(来自控制210)提供给面部 检测器230,以指示拍摄边界和那些被用户认为最有用的镜头。 当然,如果摄录机是基于模拟记录技术的,进一步的模拟数据转 换(ADC)可能需要用来处理图像和音频信息。 本实施例使用安排成两个阶段的面部检测技术。图3是说明训练 阶段的示意图,图4是说明检测阶段的示意图。 不像以前提出的某些面部检测方法(参见下面的对比文件4和 5),本方法是基于部分模拟面部而不是整体模拟面部。这些部分既可 以是中心在面部特征的假定的位置的块(所谓的“有选择的抽样”), 也可以是在面部上以规则间隔抽样的块(所谓的“规则抽样”)。本说 明将主要涉及规则抽样,因为在经验测试中发现这给出更好的结果。 在训练阶段,将分析过程应用于已知包含面部的一组图像,和(可 选)已经知道不包含面部的另一组图像(“非面部图像”)。这种分析 过程建立面部和非面部特征的数学模型,以后可以用其与测试图像相 比较(在检测阶段)。 因此,为了建立数学模型(图3的训练过程310),基本步骤如下: 1.从标准化为具有相同眼睛位置的面部图像的集合300,每个面 部被规则地抽样成小块。 2.计算每个块的属性;这些属性将在下面进一步解释。 3.这些属性被量化为便于管理的数目的不同值。 4.然后将量化的属性组合起来,以产生关于那个块位置的单一量 化值。 5.然后将该单一量化值作为一项记录在直方图中,直方图诸如为 图5所示的示意性直方图。所有训练图的所有块位置的集体直方图信 息320形成面部特征的数学模型的基础。 通过关于大量测试面部图像重复上述步骤,为每一个可能的块位 置准备一个这样的直方图。在下面的附录A中,会进一步描述该测试 数据。因此,在使用8×8块的阵列的系统中,准备64个直方图。在该 处理的后面部分,将测试量化的属性与直方图数据比较;整个直方图 用于模拟数据的事实意味着不必关于它是否遵循参数化分布(例如高 斯或其它分布)作出任何假设。为了节约数据存储器空间(如果需要 的话),相似的那些直方图可以合并起来,以便相同的直方图可以为 不同的块位置重复使用。 在检测阶段,为了将面部检测器应用于测试图像350,按照下列方 式处理340测试图像中的连续窗口: 6.该窗口被规则地抽样为一系列块,并且每个块的属性可以按照 上述步骤1-4来计算和量化。 7.从相应的直方图中查找每个块位置的量化的属性值的对应“概 率”。也就是说,对于每个块位置产生各自的量化属性,并与关于那个 块位置事先产生的直方图相比较。直方图导致“概率”数据的方式将在 以下描述。 8.上述获得的所有概率乘在一起以形成最终概率,该最终概率被 与一阈值比较,以便将该窗口分类为“面部”或“非面部”。应该理解,“面 部”或“非面部”的检测结果是基于概率的测量而非绝对检测。有时,不 包括面部的图像可能会错误地检测成“面部”,即所谓的错误肯定。在 另一些时候,包含面部的图像可能被检测成“非面部”,即所谓的错误 否定。任何面部检测系统的目的是减少错误肯定的比例和错误否定的 比例,但当然也应该理解,利用当前的技术,即便不是不可能,将这 些比例减少成零也是很困难的。 如上所述,在训练阶段,一组“非面部”图像可以用于产生一组相 应的“非面部”直方图。然后,为了获得面部检测,从非面部直方图产 生的“概率”可以与一个独立的阈值比较,因此,对于测试窗口包含 面部,该概率必须是在该阈值之下。或者,面部概率与非面部概率的 比率可以与一阈值比较。 额外的训练数据可以通过将“合成变化”330应用到原始训练集来 产生,原始训练集诸如为位置、方向、大小、长宽比、背景、光强和 频率内容的变量。 现在将描述属性的导出和它们的量化。在目前的技术中,属性是 关于所谓的本征块进行测量的,本征块表示可能呈现在窗口化图像中 的不同类型的块的核心块(本征向量)。首先,参考图6描述本征块 的产生。 本征块创建 本实施例中的属性基于所谓的本征块。在训练集中,本征块被设 计成具有良好的块表示能力。因此,通过在大的块集合上执行主成分 分析,来从训练集创建它们。这个过程被示意性地示出在图6中,并 且在附录B中更详细地描述。 训练该系统 用两种不同的训练块集合进行实验。 本征块集I 起初,使用从训练集中的25个面部图像中取出的一个块集。16×16 块被按每16个像素抽样,因此是不重叠的。这种抽样被示出在图6中。 像所看到的那样,16个块是从每个64×64训练图像中产生的。这导致 总共400个训练块。 从这些训练块产生的头10个本征块显示在图7中。 本征块集II 本征块的第二个集从更大的训练块集产生。这些块是从训练集的 500个面部图像中取出。在这种情况下,16×16块被按每8个像素抽样, 因此重叠8个像素。这从每个64×64训练图像产生49个块,并且导致 总共24500个训练块。 从这些训练块中产生的头12个本征块示出在图8中。 经验结果显示本征集II表现出稍微好于本征集I的结果。这是因 为它是从面部图像取出的更大的训练块集合中计算出来的,因此被认 为是在表示面部变化方面更好。然而,性能改善不大。 构造直方图 直方图是对64×64面部图像内的每个抽样块位置建立的。直方图 的数量依赖于块间隔。例如,对于16像素的块间隔存在16种可能的 块位置,因此使用16个直方图。 构造表示单个块位置的直方图的过程显示在图9中。使用M个面 部图像中的大型训练集400创建该直方图。对每个面部图像,该过程 包括: ●从面部图像的位置(i,j)取出410相关块。 ●计算关于该块的基于本征块的属性,并且从这些属性中确定相 关的仓号420。 ●增加直方图430中的相关仓号。 该过程对训练集中的M个图像中的每一个重复,以便创建一个很 好表现属性发生频率分布的直方图。理想情况下,M非常大,例如是几 千。这可以通过使用由一组原始面部和每个原始面部的几百个合成变 化组成的训练集来轻易地实现。 产生直方图仓号 使用下列过程从给定块中产生直方图仓号,如图10所示。从64×64 窗口或面部图像中提取16×16块440。该块被投影到A个本征块的集 合450上,以产生一组“本征块权”。这些本征块权是用在这种实现中 的“属性”。它们具有-1到+1的范围。这种处理将在附录B中详细描述。 每个权被量化成固定数量的级L,以产生量化属性470,wi,i=1...A。 量化的权被按如下方式组合成单一值: h=w1.LA-1+w2LA-2+w3LA-3+...+wA-1L1+wAL0 其中所产生的值h是直方图仓号480。注意,直方图中仓的总数由 LA给出。 如果它除以训练图像的数量M,仓内容(即引起那个仓号的属性集 出现的频率)可以被看作是一个概率值。但是,因为该概率与一阈值 比较,因此,事实上不需要被M来除,因为这个值将在计算的时候消 去。因此,在下面的讨论中,仓“内容”将被称作“概率值”,并被处 理成好像它就是概率值,即使在严格意义上来说它实际上是出现的频 率。 上述过程被用于训练过程阶段和检测阶段。 面部检测阶段 面部检测过程包括用运动64×64窗口抽样测试图像,并且计算每 个窗口位置的面部概率。 在图11中示出了面部概率的计算。对于窗口中的每个块位置,按 照前一段描述的方式计算块的仓号490。利用关于块位置的适当直方图 500查找每个仓号并且确定那个仓号的概率510。然后,计算所有块的 这些概率的对数和520,以产生面部概率值P面部(另外也可称为对数可 能性值)。 这种过程产生关于整个测试图像的概率“映像”。换句话说,概率 值是关于整个图像的每一个可能的窗口中心位置导出的。然后,将所 有这些概率值组合成方形阵列的组合(或无论什么形状)看成是相应 于该图像的概率“映像”。 然后,反转该映像,从而找出面部的过程包括找出该反转映像中 的最小值(当然这等效于不反转该映像并找出最大值;两种都可以)。 使用所谓的基于距离的技术。这种技术可以概述如下:选择在反转的 概率映像中具有最小值的映像(像素)位置。如果这个值大于阈值 (TD),则不再选择任何面部。这是终止判据。否则,对应于所选择 的中心像素位置的面部尺寸块被取消(即从下面的计算中省略),并 且在该图像的剩余部分上重复候选面部位置查找步骤,直到达到终止 判据。 非面部方法 非面部模型包括代表非面部图像中的属性概率分布的另一直方图 集合。除了训练图像包括非面部的例子而不是包括面部的例子之外, 以与面部模型中严格一致的方式创建直方图。 在检测期间,计算两个对数概率值,一个使用面部模型,一个使 用非面部模型。然后,通过从面部概率中减去非面部概率来组合这些 概率值: P组合=P面部-P非面部 然后,使用P组合代替P面部来产生概率映像(在反转之前)。 注意,从P面部中减去P非面部的理由是它们是对数概率值。 还要注意,面部和非面部直方图可以通过简单的将对数直方图相 加而在训练过程结束(在面部检测之前)时有选择地进行组合: 直方图总计=log(直方图(面部))+log(直方图(非面部))。 这是在下面的描述中为什么对每个块位置/姿势/眼睛间隔组合只 需要一个直方图的原因。 直方图示例 图12a-12f是利用上述训练过程所产生的直方图的某些示例。 图12a、12b和12c是从面部图像训练集中导出的,图12d、12e 和12f是从非面部图像训练集中导出的。具体地: 面部直方图 非面部直方图 整个直方图 图12a 图12d 在大约h=1500处 缩放到主峰值 图12b 图12e 进一步缩放到大约 h=1570的区域 图12c 图12f 可以清楚地看到,峰值是处于面部直方图和非面部直方图的不同 的地方。 直方图存储 如上所述,直方图存储与图像中给定尺度和位置的面部可能性有 关的统计信息。但是,直方图的排序对于系统性能具有出人意料地重 要性。简单排序可以导致非局部化的访问(即连续的访问在内存中通 常远离)。当使用微处理器或定制处理器实施时,这可能表现出差的 高速缓冲性能。为了处理该问题,重新对直方图排序以便对数据的访 问更加局域化。 在本实施例中,存在总共6个直方图: F38 具有38个像素的眼距的正面面部(即“放大”直方 图) L38 面向左25°具有38个像素的眼距的面部 R38 面向右25°具有38个像素的眼距的面部 F22 具有22个像素的眼距的正面面部(即“全面部”直方 图) L22 面向左25°具有22个像素的眼距的面部 R22 面向右25°具有22个像素的眼距的面部 在下面的讨论中: c是来自给定尺度的图像中的给定位置的仓映象(binmap)(一 种给出关于该图像中的每个位置的直方图项的映像)中的值-在当前的 情况下,这是9位二进制数。 仓映象是通过将该图像与9个本征块卷积、量化所得到的9个本 征块权并且将其组合成单一值而预先计算出来的; x是面部窗口内的x位置(0和6之间);和 y是面部窗口内的x位置(0和6之间)。 这意味着每种姿势(例如F38)的直方图具有512×7×7=25088字节 的尺寸。 F38c,x,y是关于给定的c,x和y的直方图的值。 例如,F3815,4,5是对于仓映象值为15的具有在面部窗口位置(4,5) 处38眼距的正面直方图给出的值。 存储器中直方图的顺向排序是按照c,然后x,然后y,然后姿势, 然后眼距排序的。这种排序的示意性示例显示在图13a中。一种改进 的排序系统是按照姿势、然后x,然后y,然后c,然后眼距排序的, 这种排序的示意性示例被显示在图13b中。 当直方图按照新方式排序时,存在两种高速缓冲存储性能方面改 进的原因: (i)访问姿势的方式,和 (ii)面部窗口在面部搜索期间移动的方式。 对于每个位置总是访问具有相同仓号和位置的3个不同的姿势 (左、右和前)。即,如果F38329,2,1被访问,则L38329,2,1和R38329,2,1也被 访问。因为在新方法中这些是相邻的,因此获得优越的高速缓冲存储 性能。 组织这些直方图的新方法也利用了面部测试窗口在搜索图像中的 面部期间移动的方式。由于面部窗口移动的方式,将在很多(x,y)查 找相同的c值。 图14示出来自仓映像的哪个值用于在确定位置内查找面部。例 如,F38329,2,1是来自面部窗口中的(2,1)位置的眼距38的前直方图的 值。 可以看出,当面部检测窗口向右移动2空格时,高亮方块将向左 移动一个位置,即相同的值将在不同的位置上查找到。在图14的实例 中,当面部窗口已经向右移动两空格时,F38329,2,1将变成F38329,1,1。 由于该算法通过将面部测试窗口移过图像来搜索面部,它将在几 个位置查找到相同的仓映象。这意味着如果这些值在存储器中存储的 非常接近,则将改善高速缓冲存储性能。 对直方图结构另一个改进(与上述改进一起或者独立于上述改 进)是侧姿势比前姿势使用更少的位。存储在每个直方图仓中的值根 据它们表示的姿势来量化成不同的数量的位。 用于6个直方图中的每一个的位数总结如下: F38 具有38个像素的眼距的前面部-8位 L38 面向左25°具有38个像素的眼距的面部-4位 R38 面向右25°具有38个像素的眼距的面部-4位 F22 具有22个像素的眼距的前面部-8位 L22 面向左25°具有22个像素的眼距的面部-4位 R22 面向右25°具有22个像素的眼距的面部-4位 这样做的好处是,每一组3个直方图值可以存储在2字节而不是3 字节中。 发现由于侧姿势比前姿势对算法的整体性能具有更少的重要性, 因此这是可能的,所以这些可以利用减少的分辨率来表示而不会显著 地影响精度。 多尺度面部检测 为了检测测试图像中不同尺寸的面部,测试图像由一个因子的范 围调节尺度,并且距离(即概率)映像对每种尺度产生。在图15a-15c 中,图像和它们的相应距离映像以3种不同的尺度显示。该方法对在 最小尺度(图15a)的大型(中心)目标给出最好的响应(最高的概率 或最小的距离),而对在较大尺度的较小的目标(主图的左边)给出 较好的响应。(在映像中的较黑的颜色表示反转映像中的较低值,或 者换句话说,较高概率意味着有面部)。候选面部位置通过首先发现 在所有尺度上的给出最好响应的位置来跨越不同尺度提取。也就是 说,最高的概率(最低距离)是在所有标尺的全部概率映像中建立的。 这种候选位置是将首先被标注为面部的位置。然后中心在那个面部位 置的测试窗口被从每种尺度的概率映像中消除。被消除的测试窗口的 尺寸与概率映像的尺度成比例。 这种被调节尺度的消除过程的示例示出在图15a-15c中。具体地 说,跨越所有映像的最高概率在最大尺度映像的左手侧找到(图15c)。 对应于面部的假设尺度的区域530在图15c中被遮盖。在更小的映像 中对应的但是被调节尺度的区域532、534被遮盖。 比测试窗口大的区域可以在映像中被遮盖,以避免重叠检测。具 体地说,等于被长/宽为该测试窗口的一半的边框所包围的测试窗口的 尺寸的区域适用于避免这样的重叠检测。 其它的面部通过接着搜索下一个最好的响应并消除对应的测试窗 口进行检测。 在被处理的尺度之间允许的间隔受该方法对尺寸变化的灵敏度的 影响。在尺度不变性的初步研究中发现,该方法对尺寸变化不是极其 敏感,因为在某一尺度处给出良好响应的面部通常在相邻的尺度处也 给出良好的响应。 上述描述涉及即使在图像中的面部尺寸在检测过程的开始时不知 道的情况下也能检测面部。多尺度面部检测的另一个方面是利用不同 尺度的两个或多个并行检测,以便使得检测过程有效。如果例如,要 检测的面部是部分模糊的,或者是人带着帽子的等,这是有利的。 图15d-15g示意性地图解了这一过程。在训练期间,在围绕整个 测试面部(图15d)的窗口(按照上述那样分成相应的块)上训练该系 统,以便产生“全面部”直方图数据,并且还在一个扩展尺度的窗口上 训练该系统,以便仅仅包括测试面部的中心区域(图15e),以便产生 “放大”直方图数据。这产生两个直方图数据集。一个集合涉及图15d 的“全面部”窗口,而另一个则涉及图15e的“中心面部区域”窗口。 在检测阶段,对于任意给定的测试窗口536,将该窗口应用到测试 图像的两种不同尺度上,以便在一种情况下(图15f)测试窗口环绕整 个面部的期望尺寸,而在另一种情况下(图15g)测试窗口包围那个期 望尺寸处的面部中心区域。这每一个按照上述那样处理,与分别适合 于该窗口类型的直方图数据集比较。在进行与一阈值的比较之前,将 来自每个并行处理的对数概率相加。 将多尺度面部检测的这两个方面放在一起,使得需要存储的数据 量特别巨大的节省。 具体地说,在这些实施例中,对于图15a-15c的排列的多尺度以 几何序列排列。在本示例中,该序列中的每种尺度与该序列中的相邻 尺度相差因子 然后,对于参考图15d-15g描述的并行检测,对于 更大的尺度、中心区域,利用与该序列中高3级的尺度有关的属性数 据,以该序列中高3级的尺度进行检测,也就是说,是“全面部”尺度 的23/4倍。因此,除了多尺度范围的极端情况外,几何级数意味着图 15d-15g的并行检测总是能够利用关于另一个在该序列中高3级的多 尺度产生的属性数据来实现。 这两种处理(多尺度检测和并行尺度检测)可以按照各种方式组 合。例如,图15a-15c的多尺度检测过程可以首先被应用,然后在该 多尺度检测过程中识别出的区域(和尺度)上应用图15d-15g的并行 尺度检测过程。然而,属性数据的方便而有效的使用可以按照下列方 式实现: ●导出关于每种尺度的测试窗口的属性(如图15a-15c) ●将这些属性与“全面部”直方图数据比较,以产生距离映像的“全 面部”集合 ●将这些属性与“放大”直方图数据比较,以产生“放大”距离映像 的集合 ●对每种尺度n,将尺度n的“全面部”距离映像与尺度n+3的“放 大”距离映像组合 ●按照上述参考图15a-15c所述,从所组合的距离映像中导出面 部位置 可以执行进一步的并行测试来检测不同的姿势,诸如正面直视、 部分向上看、向下看、向左看、向右看等。在此,需要直方图的各自 的集合并且最好使用“max”函数组合这些结果,也就是说,给出最高概 率的姿势被与阈值比较,其它被放弃。 多尺度的改进使用 面部检测算法提供多个尺度的多个概率映像;要求是发现概率超 过给定阈值的图像中的所有位置,而保证没有重叠的面部。 上述方法的缺点是必须储存所有尺度的概率映像的整个集合,这 需要一个很大的存储器。下列技术不需要同时储存所有概率映像。 概括说来,是维护一个候选面部位置临时列表。当计算关于每个 尺度的概率映像时,找出概率最大值,并与该候选面部位置列表比较, 以保证不存在重叠面部。 详细地说,当可能存在面部时,这种方法使用面部列表来维护当 前位置列表。面部列表中的每个面部具有一个面部位置和一个面部尺 寸。该阈值是这样一个概率阈值,在其上的一个对象被认为是面部。 尺度因子是连续尺度之间的尺寸系数(在本实施方案中为1.189207115 或 )。 在下述示例描述中考虑16×16面部尺寸。 该过程被示意性地图解在图16的流程中。 参考图16,在步骤1400中该过程关于尺度之一(在所示出的示例 中为最小尺度)开始。步骤1400发生的第一次面部列表是空的,但一 般来说,对于面部列表中的所有面部,在步骤1400中通过将各自的面 部尺寸乘以尺度因子来修改每个面部的面部尺寸。这保证了关于前一 尺度检测的面部是正确地被按大小排列,以便与当前尺度中的任何最 大值有效比较。 在步骤1410中,在当前映像中检测最大概率值mp。 在步骤1420中,将该最大概率值mp与阈值比较。如果mp大于该 阈值,则控制转到步骤1430。另一方面,如果mp不大于该阈值,则在 步骤1440中启动下一个映像(对应于要处理的下一个尺度因子)的处 理。 返回步骤1430,如果最大值mp在当前尺度的概率映像中的位置与 面部列表(考虑在步骤1400中导出的修改尺寸)中的一个面部重叠(一 致),那么,将控制传递到步骤1450。如果不是这样,则将控制传递 到1460。 在步骤1450中,将值mp与关于存在的面部的所存储的概率值比 较。如果mp大于那个概率,则在步骤1470中删除该存在的面部,并 且在面部列表中创建与mp的当前值和位置对应的一个新的项。具体地 说,在面部列表中,关于该新项存储值mp并且在步骤1480中将以当 前最大概率的图像位置为中心的16×16像素区域设置成该阈值。在步 骤1490中,将最大概率值的当前位置添加到具有面部尺寸为16的面 部列表中。然后,将控制返回步骤1410。 返回步骤1460,如果检测到最大概率位置不与面部列表中的任何 面部重叠(在步骤1430),则在面部列表中创建一个新的项。如上所 述,在步骤1460中,存储值mp并且将环绕当前最大值的16×16区域 设置成该阈值。在步骤1465中,将当前最大位置添加到具有面部尺寸 为16的面部列表并且将控制返回的步骤1410。 如果在步骤1450中检测到最大概率值mp不大于存在(重叠)的 面部的概率,则将控制传递到步骤1455,其中将存在的面部区域设置 成该阈值,并且将控制返回到步骤1410。 在这些步骤的每一个中,当控制返回到步骤1410时,再次检测一 个最大概率值mp,但是这将根据在步骤1460、1455和1480中对环绕 检测到的面部的的概率值的修改。因此,在这些步骤中所创建的修改 值事实上将不会通过步骤1420的测试,因为设置成等于阈值的值将发 现不超过它。相应地,步骤1420将确定是否有另一个位置存在于阈值 被超过的校正映像中。 这种方法的好处在于它允许单独考虑概率映像的每个尺度。只有 面部列表需要在处理每个尺度之间被存储。这有下列优点: ·较少存储器需要:不需要存储概率映像的整个集合。只有面部 列表需要存储,这需要很少的存储器。 ·允许临时抽选:该算法可以使用诸如临时抽取的方法,对于一 帧的处理在几个时隙之间分配,并且在每个时隙只处理尺度的一个子 集。这种方法现在可以在只需要在每次调用之间保持一个面部列表 时,而不是到目前为止所计算的整个概率映像集的情况下使用。 ·允许更快地搜索:一次仅仅考虑一种尺度。因此,当每次发现 最大值时,我们不需要消除在概率映像集中的跨越所有尺度的区域。 变化检测 在面部检测不得不实时运行的情况下,难以在允许的时间-例如, 视频信号的一帧周期内完成所有的面部检测处理。 改变检测过程用于检测图像的哪一个区域自从前一帧以来已经发 生改变,或者至少从面部检测过程中去除自从前一帧以来检测到的没 有发生改变的某些区域。 自从前一帧以来没有发生改变的图像区域不需要对它们再次进行 面部检测,因为结果有可能是和前一帧的结果相同。然而,已经发生 改变的图像区域需要对它们重新执行面部检测。这些图像区域在变化 检测期间被标注为“感兴趣的区域”。 在本实施例中,仅仅在单个固定尺度(例如,面部检测中使用的 原始图像尺度或最大尺度)进行改变检测。该过程在图17中示出,图 17中示意性示出了一个运动检测器。 首先通过低通滤波器处理当前和先前的帧。然后这两帧被提供给 差分器1120以便产生一个帧差别图像,例如,帧之间的绝对像素(或 块)差别的表示,每个像素(或块)位置一个差别值。然后,该差别 图像的绝对值通过与一个阈值Thrdiff比较来被限定1130,以便创建二 进制差别图像,即一位值阵列(每个象素(或块)一个值):即非常 小的差别被设置成0(没有变化),而较大的差别被设置成1(检测的 变化)。最后,对该二进制差别图像执行1140一种形态学开运算 (opening operation),以创建更多的检测到的改变/运动的邻接区 域。 在实践中,可以省略低通滤波操作。 形态学开运算是已知的图像处理技术,在这个实例中是在3×3(即 3×3块被用作形态学结构元素)区域上进行,并且包括其后跟随着形态 学膨胀运算的形态学侵蚀运算。为了在基本上是基于光栅的系统中运 行这种运算,在每隔2行的处理之后,进行该形态学处理。 如上所述,变化检测可以应用到整个图像,以创建已经检测到改 变的图像的区域的映像。面部检测被应用到这些区域。 或者,改变检测可以用于从面部检测中消除图像的某些区域,虽 然不需要检测所有运动的区域或“无运动”的区域。这种技术有利于减 少变化检测过程的处理要求,同时在处理面部检测本身时仍然能潜在 地提供有效的节约。这种处理的示意性示例被图解在图18a-18e中。 在图18a中,变化检测被应用在光栅扫描装置中,在其中(像素 或块)的水平线扫描1150是从图像的左上至右下。使用在图像17中 示出的基本过程(没有形态学处理并且优选没有低通滤波),并且将 该图像与先前的图像比较。在每个扫描点,将所检测到的绝对差别与 阈值Thrdirr比较。 扫描1150继续直到关于一个扫描位置1160的所检测到的绝对差 别超过阈值Thrdirr。在这一点扫描1150终止。 进行3种类似的扫描1170、1180、1190。扫描1170是开始于图 像底部的水平扫描,并且当扫描位置1200引起绝对差别值超过阈值 Thrdirr时终止。扫描1180是开始于图像左侧的向下垂直扫描,并且当 扫描位置1210引起绝对差别值超过阈值Thrdirr时终止。扫描1190是 开始于图像右侧的向下垂直扫描,并且当扫描位置1220引起绝对差别 值超过阈值Thrdirr时终止。 在图18e中,四个点1160、1200、1210、1220限定了一个边界 框1230。具体地说,如果点nnnn的图像坐标是(xnnnn,ynnnn),那么边 界框1230的四个顶点被给定如下: 左上 (x1210,y1160) 右上 (x1220,y1160) 左下 (x1210,y1200) 右下 (x1220,y1200) 因此,边界框不限定其中已经检测到改变的图像的所有区域,而 是限定被从面部处理中排除的区域(边界框以外),因为在这里没有 检测到变化。对于边界框内的区域,有可能所有这些区域已经改变, 但最常见的情况是这些区域中的一部分已经改变而另一部分没有改 变。 当然,这种技术有几种排列: (a)执行4次搜索的顺序; (b)执行每次搜索的方向(每个图中的箭头可以是反向的,而算 法的效果没有改变); (c)扫描是否顺序进行(一个扫描接着另一个扫描)或平行进行 (两个或多个扫描同时进行); 在图19a-19c示意性地示出的变化中,两个垂直扫描1180’和 1190’只对于没有被两个水平扫描1150和1170消除的那些行1240进 行。这种变化可以降低处理需求。 上述变化检测技术可以与下述面部检测技术合作地很好。从图像 的四个极端(边缘)开始进行变化检测,当任何一侧检测到变化时停 止。于是,除了每一个变化检测过程的潜在的最终像素(或块)或部 分行/列,变化检测只关于没有准备经受面部检测的那些图像区域进 行。类似地,除了最终像素、块或部分行/列以外,面部检测只关于还 没有经受变化检测过程的那些区域进行。记住,变化检测比面部检测 使用较少处理器,在这两种处理方法之间只有相对微小的重叠(几乎 在所有的情况下),变化检测的使用将减少一个图像的整个处理要求。 将变化检测的一种不同方法应用于运动编码信号,诸如MPEG-编码 的信号,或那些已经预先以这种形式编码并且为面部检测解码的信 号。与所述信号相关的运动向量等可以指示哪里发生了图像内改变。 在每个运动向量的终点(当前图像)处的块(例如MPEG宏块)可以标 记为变化的区域。可以这样做来代替上述变化检测技术,或者在改变 检测技术之外再这样做。 如下描述另一种降低处理需求的方法。将面部检测算法分成许多 阶段,这些阶段在很多尺度上重复。这种算法仅仅在n次呼叫后完成。 该算法自动分割从而使每次呼叫占用几乎相等的时间。这种方法的关 键特征在于: ·该方法使用自动方法将算法分割成占用等量处理时间的段。 ·估计每一阶段占用的处理时间,从而如果给定阶段占用太长时 间,则该算法在执行该阶段之前返回。 ·该算法只有在每一阶段结束时才能返回;它不能在进行了阶段 的一部分时返回。这限制了局部存储所需的量,并简化了程序流程控 制。 ·用于每个阶段占用处理时间的估计可以从实时测量的定时信息 精确化-尽管目前没有这样做。 ·在每次呼叫结束时可以进行面部跟踪,从而即使没有新的面部 检测给出新的面部位置,但皮肤颜色跟踪将继续跟踪面部。 ·或者,只在第n+1次呼叫(完成所有n次面部检测呼叫之后) 时才执行跟踪。这意味着跟踪以较低速率进行,因此准确性较差,但 允许该算法按比例缩小到较短的执行时间/每次呼叫,如果需要的话。 下表显示了对于在6个尺度上的面部搜索执行的阶段的顺序: 处理 尺度 描述 运动 1 使用运动以减少搜索区 域 变化 1 使用图像变化以减少搜 索区域 抽取 1→2 图像尺寸减小到下一尺 度 卷积 2 图像卷积以产生仓映像 抽取 2→3 卷积 3 抽取 3→4 卷积 4 查找 4 仓映像用于查找面部概 率 最大搜索 4 最大概率被发现并定界 抽取 4→5 卷积 5 查找 5 最大搜索 5 抽取 5→6 卷积 6 查找 6 最大搜索 6 跟踪 - 下表显示如果使用4的临时抽样可能会发生什么。算法自动划分 处理为时间相等的“大块”-由于处理较早尺度所需的时间多于处理较 晚尺度所需的时间(较早尺度的图像较大)这一事实,使其复杂化了。 算法在每次执行它之前估计每一阶段所需的时间量。这一估计通过特 定的处理和给定尺度的将要处理的像素的数目给出。例如,可以使用 下列估计: 运动 1/像素 变化 1/像素 抽取 2/像素 卷积 3/像素 查找 4/像素 最大搜索 3/像素 处理 尺度 呼叫 #尺度中 的象素 所需 处理单元 每次呼叫的 累计处理单 元 运动 1 1 1000 1000 1000 变化 1 1 1000 1000 2000 抽取 1→2 1 1000 2000 4000 跟踪 - 1 返回 卷积 2 2 700 2100 2100 抽取 2→3 2 700 1400 3500 卷积 3 2 500 1500 5000 跟踪 - 2 返回 抽取 3→4 3 500 1000 1000 卷积 4 3 354 1062 2062 查找 4 3 354 1416 3478 最大 搜索 4 3 354 1062 4540 抽取 4→5 3 354 708 5248 跟踪 - 3 返回 卷积 5 4 250 750 750 查找 5 4 250 1000 1750 最大 搜索 5 4 250 750 2500 抽取 5→6 4 177 354 2854 卷积 6 4 177 531 3385 查找 6 4 177 708 4093 最大 搜索 6 4 177 531 4624 跟踪 4 返回 有可能预先计算总的处理,因为所有尺度需要18872处理单元。 这意味将处理分成4个等量的大块,则系统在每一呼叫必须执行大约 4718个处理单元。 在执行每一阶段之前,系统计算所需的累积处理单元的数目是否 将其带到一些预先安排的水平(例如5300)。如果这样,则不执行该 阶段而返回。这比定时的优势在于在做某事前预先知道其会不会超出 分配的时间。 空间抽取 空间抽取是另一种可用于减少关于每个图像的处理要求的技术。 下面将描述空间抽取的两个实例:一个方法搜索水平条纹中的图像, 另一个以稀疏方式搜索图像。 尽管可以使用任何种类的划分(矩形的、垂直条纹等),但是因 为考虑到处理水平条纹更有效,因此选择了水平划分条纹。 也能够以稀疏方式控制空间抽取。这不如使用条纹那样有效,但 由于在每次该算法被呼叫时都可以在整个图像中的任何地方检测到面 部,因此可以给出更好的结果。 图20a-20c示意性地示出了条纹技术。在图20a中,没有使用空 间抽取,并且整个图像1300经受面部检测。在图20b中,图像被分裂 成两部分1310、1320。它们分别在交替的图像中经受面部检测。在图 20c中,图像被分裂成三部分1330、1340、1350,以便每个部分经受 面部检测(每三个图像中有一个)。所述部分可以是独立的或可以略 微重叠。 图21a-21d示意性地示出了所谓稀疏空间抽样。 三个变量定义如下: 稀疏X是在水平方向中的抽取度。如果稀疏X=1,则没有水平抽 取。如果稀疏X=2,则每一个图像的交替的像素或块经受面部检测,从 而使任何一个象素或块位置在每两个图像中经历一次面部检测,等 等。 稀疏Y是在垂直方向中的相同的抽样度。 UseChequerBoard如果抽取在连续的行和列中排列,则设置为 0,如果是连续的行或列(或行/列的组)之间的偏移,则设置为1。 图21a-21d的实例如下所示: 图21a 图21b 图21c 图21d 稀疏X 2 2 2 2 稀疏Y 1 1 2 2 UseChequerBoar d 0 1 0 1 可以使用空间和临时抽取的组合。例如,图像的离散空间部分(例 如图像的三分之一)可以在很多帧上处理。以这种方式处理的部分(例 如三个三分之一)可以来自相同的图像或分别来自不同的图像。 面部跟踪 下面将描述面部跟踪算法。跟踪算法旨在改善在图像系列中的面 部检测性能。 跟踪算法的最初目的在于检测图像序列的每一帧中的每一个面 部。然而,认识到有些时候在序列中的面部没有被检测。在这些情况 下,跟踪算法有助于穿过丢失的面部检测内插。 最终,面部跟踪的目标是能够从属于图像序列中相同场景的每一 组帧输出一些有用的元数据。这可以包括: ·面部的数目。 ·每个面部的“面部照片(Mugshot)”(一个人的面部图像的俗 语,得自警察档案照片中的术语)。 ·每个面部首次出现的帧数。 ·每个面部最后一次出现的帧数。 ·每个面部的特性(要么与前一场景中所见的面部匹配,要么与 面部数据库匹配)-这也需要一些面部识别。 该跟踪算法利用面部检测算法的结果,在图像序列的每一帧上独 立地运行,如它的开始点一样。由于面部检测算法在有时会丢失(未 检测)一些面部,因此,内插丢失的面部的一些方法是有用的。为此, 使用Kalman过滤器以预测面部的下一个位置,并且使用皮肤颜色匹配 算法以有助于面部跟踪。另外,由于面部检测算法常常引起假接受, 排斥这些的一些算法也是有用的。 该算法示意性地显示在图22中。 下面将向详细描述该算法,但总之,将输入视频545(代表图像序 列)供应给这个申请中所述类型的面部检测器和皮肤颜色匹配检测器 550。所述面部检测器试图检测每个图像中的一个或多个面部。当检测 到面部时,建立Kalman过滤器560来跟踪那个面部的位置。Kalman 过滤器为该序列中的下一图像中的同一面部产生预测位置。眼睛位置 比较器570、580检测面部检测器540是否在所述下一图像中的那个位 置(或那个位置的某个阈值距离内)处检测到面部。如果被发现事实 如此,则将所检测到的面部位置用于更新Kalman过滤器,并且继续该 过程。 如果在或接近所述预测位置没有检测到面部,则使用皮肤颜色匹 配检测器550。这是一种精度较低的面部检测技术,它被设置成具有比 面部检测器540更低可接受阈值,因此即使当面部检测器不能在那个 位置作为正检测时也可能使用皮肤颜色匹配技术检测(考虑是什么) 面部。如果由皮肤颜色匹配检测“面部”,将其位置作为更新后的位置 传递给Kalman过滤器,并且继续该过程。 如果面部检测器450或皮肤颜色检测器550都没有发现匹配,则 使用预测位置更新Kalman过滤器。 这些全部结果受接受的判据(参见如下)控制。因此,例如将拒 绝这样的面部,该面部基于一个正检测在整个序列中被跟踪,其余的 作为预测或者将其余的作为皮肤颜色检测。 独立的Kalman过滤器用于在跟踪算法中跟踪每一个面部。 为了使用Kalman过滤器跟踪面部,必须创建代表面部的状态模 型。在这种模型中,每个面部的位置由包含左和右眼睛的坐标的四维 向量表示,它反过来与由针对窗口的中心位置的预定的关系和正被使 用的尺度导出: 其中k是帧数。 面部的当前状态由其位置、速度和加速度以12维向量表示: 检测到的第一面部 所述跟踪算法不做任何事,直至它接收一帧,伴随该帧的面部检 测结果显示有面部出现。 然后,对在这一帧中的每个检测到的面部初始化Kalman过滤器。 其状态由所述面部位置、零速度与加速度初始化: 它也被指派了某些其他特性:状态模型误差协方差Q和观察误差 协方差R。也初始化Kalman过滤器的误差协方差P。这些参数在下面 详细描述。在跟着的帧和每一个后续帧的开头,运行Kalman过滤器预 测过程。 Kalman过滤器预测过程 对于每个存在的Kalman过滤器使用以下示出的标准Kalman过滤 器预测方程预测面部的下一个位置。过滤器使用前一状态(在帧k-1) 以及某些其它内部和外部变量来估计过滤器的当前状态(在帧k)。 状态预测方程: 协方差预测方程: Pb(k)=Φ(k,k-1)Pa(k-1)Φ(k,k-1)T+Q(k) 其中 表示更新帧k的过滤之前的状态, 表示更新帧k-1 的过滤之后的状态(或者初始化的状态,如果是新滤波器的话), φ(k,k-1)是状态转移矩阵。如下所述,状态转移矩阵是经过实验获得的。 类似地,Pb(k)表示更新帧k的过滤之前的过滤器的误差协方差,Pa(k-1) 表示更新前一帧的过滤之后的过滤器的误差协方差(或者初始化的状 态,如果是新滤波器的话)。Pb(k)可以被认为是过滤器中模拟其精度 内部变量。 Q(k)是该状态模型的误差协方差。Q(k)的高值意味着过滤器的状态 的预测值(即面部的位置)将被假定具有高电平的误差。通过调整这 个参数,可以改变并且针对面部检测潜在地改进滤波器的行为。 状态转变矩阵 状态转变矩阵φ(k,k-1)确定怎样产生下一个状态的预测。使用关于 运动的方程可以导出关于φ(k,k-1)的下列矩阵: 其中,O4是4×4的零矩阵,而I4是4×4的单位矩阵。Δt可以被简 单地设置成1(即t的单位是帧周期)。 这种状态转移矩阵模拟位置、速度和加速度。然而,发现当没有 任何面部检测可用来校正所述预测状态时,加速度的使用倾向于使得 面部预测朝着图片的边缘加速。因此,最好选择不使用加速度的较简 单的状态转变矩阵: 所预测的每一个Kalman过滤器的眼睛位置 被与当前帧中的所 有面部检测结果(如果有的话)比较。如果眼睛位置之间的距离低于 给定的阈值,则假定所述面部检测属于与Kalman过滤器模拟的相同的 面部。然后,将面部检测结果处理成面部的当前状态的观察y(k): 其中p(k)是面部检测结果中的眼睛的位置。这种观测在Kalman过 滤器更新阶段来帮助校正所述预测期间使用。 皮肤颜色匹配 皮肤颜色匹配不用于成功地匹配面部检测结果的面部。面部颜色 匹配仅仅对其位置已经由Kalman过滤器预测但在当前帧没有匹配的 面部检测结果的面部执行。 在第一种技术中,从先前的帧中提取中心在面部的先前位置上的 椭圆。在面部窗口610中的这种区域600的示例被示意性地示出在图 24中。基于高斯模型,使用这个区域的色度数据种植色彩模型以产生 Cr和Cb值的平均值和协方差的估计。 然后搜索围绕当前帧的预测面部位置的区域,并且选择最好地匹 配色彩模型、再在椭圆区域上平均的位置。如果色彩匹配满足给定的 相似性判据,则这个位置以在前一部分中关于面部检测结果所描述的 同样方式,用作面部的当前状态的观察y(k)。 图23a和23b示意性地图解了搜索区域的产生。具体地说,图23a 示意性地图解了下一图像630中的面部的预测位置620。在皮肤颜色匹 配中,在环绕下一图像中的预测位置620的搜索区域640中搜索面部。 如果颜色匹配不满足相似性判据,则对当前帧没有可靠的观察数 据可用。相反,预测状态 被用作观察: 上述皮肤颜色匹配方法使用简单的高斯皮肤色彩模型。这个模型 被种植在中心位于前一帧的面部的椭圆区域,并用于在当前帧中找出 最佳匹配椭圆区域。然而,为了提供潜在的更高的性能,开发另外两 种方法:颜色直方图方法和颜色掩蔽方法。它们将在以下被描述。 颜色直方图方法 在这种方中,不使用高斯模型来模拟所跟踪的面部中的颜色分 布,而是用颜色直方图。 对于前一帧中每一个所跟踪的面部,计算该面部周围的方块窗口 中的Cr和Cb值的直方图。为此,对于每个像素Cr和Cb值首先被组 合成单个值。然后,计算直方图,该直方图测量整个窗口中的这些值 发生的频率。因为所组合的Cr和Cb值的数量较大(256×256个可能 的组合),这些值在计算直方图之前被量化。 由于已经为在前一帧所跟踪的面部计算了直方图,在当前帧中使 用该直方图以试图通过找出具有最相似的颜色分布的图像区域来估计 面部的最可能的新位置。如图23a和23b所示意性地示出,这通过以 与当前帧的搜索区域内的窗口位置的范围同样方式计算直方图来实 现。该搜索区域覆盖围绕所预测的面部位置的给定区域。然后,通过 计算关于先前帧中所跟踪的面部的原始直方图和当前帧中每一个直方 图之间的均方误差(MSE)来比较这些直方图。当前帧中面部的估计位 置由MSE最小的位置给定。 可以对这种算法作出各种修改,包括: ·使用三个通道(Y,Cr和Cb)代替两种通道(Cr,Cb)。 ·改变量化级的数量。 ·将窗口划分为块并为每一块计算直方图。以这种方式,颜色直 方图方法变成与位置有关。在这种方法中,将每对直方图之间的MSE 相加。 ·改变窗口分割成的块数。 ·改变实际使用的块-例如,省略可能仅仅部分地包括面部像素的 外部块。 对于使用在这些技术中的经验试验中的测试数据,使用下列条件 达到最好的结果,虽然其它条件集合可以用不同的测试数据提供同样 良好或更好的结果: ·3通道(Y,Cr和Cb)。 ·每个通道8个量化级(即直方图包括8×8×8=512个仓)。 ·将窗口划分成16个块。 ·使用所有16个块。 彩色掩蔽方法 该方法基于上面首先描述的方法。它使用Gaussian皮肤色彩模型 来描述面部中像素的分布。 在上面首先描述的方法中,使用中心在面部的椭圆形区域来颜色 匹配面部,因为这可以减低或最小化有损于该模型的背景像素的量。 在本颜色掩蔽模型中,一个类似的椭圆形区域仍然被用来在先前 帧的原始跟踪的面部上种植彩色模型,例如,通过应用RGB或YCrCb 的均数和协方差来设置Gaussian模型的参数(或者,可以使用诸如 Gaussian模型的默认色彩模型,见以下)。然而,在当搜索当前帧中 的最佳匹配时没有使用它。取而代之的是根据前一帧的原始面部窗口 中的像素分布来计算掩蔽面积。通过发现最匹配该色彩模型的窗口中 的50%的像素来计算该掩蔽。图25a-25c显示了一个实例。具体地说, 图25a示意性地显示了测试中的初始窗口;图25b示意性地显示了用 于种植该色彩模型的椭圆形窗口;图25c示意性地显示了由与色彩模 型最接近匹配的像素的50%限定的掩蔽。 为了估计在当前帧中的面部的位置,搜索围绕预测面部位置的搜 索区域(如前所述)并且对每一像素计算与该色彩模型的“距离”。该“距 离”是指与平均数的差别,该平均数在每个维度上被该维度上的变化归 一化。图26显示了所得距离图像的实例。对于该距离映像中的每个位 置(或为了减少计算时间,对于减少的抽样位置集合),距离图像的 像素在掩蔽形状的区域上平均。然后,具有最低平均的距离的位置被 选做这一帧中面部位置的最佳估计。 因此,该方法与原始方法之不同在于:在距离图像中使用掩蔽形 状的区域,而不是椭圆形区域。这允许使颜色匹配方法可使用颜色和 形状两种信息。 建议两种变化并将其用于该技术的经验性试验中: (a)使用中心在前一帧中的跟踪面部上的椭圆形区域的Cr 和Cb的均数和协方差来种植Gaussian皮肤色彩模型。 (b)使用默认Gaussian皮肤色彩模型来计算在前一帧中的 掩蔽和计算当前帧中的距离图像。 下面将进一步描述Gaussian皮肤色彩模型的使用。使用YCbCr色 彩空间的色度成分来建立用于皮肤颜色分类的Gaussian模型。然后可 以测量测试像素与皮肤颜色分类的相似性。因此,该方法独立于基于 本征面部的方法,提供每一像素的皮肤颜色相似性估计。 使w作为测试像素的CbCr值的向量。通过二维-Gaussian建立属 于皮肤颜色分类S的w的概率模型: 其中该分布的均数μs和协方差矩阵∑s是(先前)根据皮肤颜色值 的训练集估计的。 当仅仅单独使用时,皮肤颜色检测并不被认为是有效的面部检 测。这是由于在图像中存在许多类似于皮肤颜色但并不一定是面部的 区域,例如,身体的其他部分。然而,它可通过使用关于本面部跟踪 系统描述的联合方法来改善基于本征块方法的性能。存储就是否接受 面部检测的眼睛位置或颜色匹配的眼睛位置作为Kalman过滤器的观 测值,或是否不接收任何观测值所作出的决定。这些在以后使用以评 估由每个Kalman过滤器建立的面部模型的进行中的有效性。 下面将参考图27和28描述色彩掩蔽方法的变化。 Kalman过滤器更新步骤 更新步骤用于根据状态预测和观察数据来确定用于当前帧的过滤 器的适宜的输出。它也基于预测的状态和观察到的状态之间的误差来 更新过滤器的内部变量。 在更新步骤中使用下列方程: Kalman增益方程 K(k)=Pb(k)HT(k)(H(k)Pb(k)HT(k)+R(k))-1 状态更新方程 协方差更新方程 Pa(k)=Pb(k)-K(k)H(k)Pb(k) 这里,K(k)代表Kalman增益,Kalman过滤器的另一个内部变量内 部。它被用来基于观察到的状态y(k)来确定预测的状态应该调整多少。 H(k)是观察矩阵。它确定状态的哪一部分可被观察。在我们的例 子中,只有面部的位置可以观察,而不是其速度或加速度,所以对 H(k)使用下列矩阵: R(k))是观察数据的误差协方差。以类似于Q(k)的方式,R(k))的高 值意味着观察到的过滤器状态的值(即面部检测结果或颜色匹配)将 被假设具有高的误差级别。通过调整该参数,可以改变并可能改善面 部检测的过滤器的行为。对于我们的实验,发现相对于Q(k)较大的 R(k))值是适当的(这意味着预测的面部位置被认为比观察更可信)。 注意从一帧到另一帧改变这些参数是允许的。因此,将来研究的感兴 趣的领域可能是根据观察是基于面部检测结果(可靠)还是颜色匹配 (可靠性略差)来调整R(k))和Q(k)的相对值。 对于每个Kalman过滤器,将更新状态 用作面部位置的最终决 定。该数据被输出到文件并存储。 不匹配的面部检测结果被视作新面部。对于这些中的每一个初始 化Kalman过滤器。这样的面部被除去: ·离开图片的边缘和/或 ·缺乏支持它们的正在进行的证据(当基于Kalman过滤器预测 而不是面部检测结果或颜色匹配的观察的比例高时) 对于这些面部,除去相关的Kalman过滤器并且没有数据被输出到 文件。作为该方法的可选择的差异,其中检测到面部离开图片,至其 离开该图片之前的帧的跟踪结果可以被存储并作为有效面部跟踪结果 处理(条件是这些结果满足应用到有效跟踪结果的其它标准)。 可以引入其它一些变量使这些规则正式化并建立起来: 预测_接受_ 如果在跟踪一个给定面部期间,接受的Kalman 比例_阈值 预测面部位置的比例超过该阈值,则丢弃所跟踪 的面部。 当前这被设置为0.8 检测_接受_ 在最终通过所有帧期间,如果对于给定的面部, 比例_阈值 接受的面部检测的比例落在该阈值以下,则拒绝 跟踪的面部。 当前这被设置为0.08 最少帧 在最终通过所有帧期间,如果面部的出现数少于 最少帧,则拒绝该面部。这仅可能发生在接近序 列的结束时。 最小帧当前被设置为5。 最终_预测_ 在最终通过所有帧期间,如果给定的跟踪面部的 接受_比例_ 出现数小于最少帧2,并且接受的Kalman预测的 阈值和最少 面部位置的比例超过最终_预测_接受_比例_阈 帧2 值,则该面部被拒绝。同样,这仅仅可能发生在 序列的结束时。 最终_预测_接受_比例_门限当前设置为0.5,且 最少帧2当前设置为10。 最小眼间距 另外,如果面部被跟踪到眼睛间距下降到给定的 最小距离以下,则该面部被除去。这可发生在如 果Kalman过滤器错误地相信眼睛距离变小,并且 没有其他证据,例如面部检测结果来校正这一假 设的情况下。如果没有校正,眼睛距离最终将变 成零。作为选择性的可替换方案,可以强制规定 眼睛间隔的最小或下限,从而当检测到眼镜的间 隔减少到最小眼睛间隔时,检测处理继续以搜索 具有该眼睛间隔而不是更小的眼睛间隔的面部。 应当注意的是,跟踪处理不限于通过视频序列以向前时间方向跟 踪。假定图像数据保持为可存取的(即该处理不是实时的,或图像数 据被缓冲用于临时继续使用),整个跟踪处理可以以反时间方向执行。 或者,当执行第一面部检测时(通常在视频序列的中途),跟踪处理 可以在两个时间方向上启动。作为进一步的选择,跟踪处理可以通过 视频序列在两个时间方向进行,组合结果,从而(例如)使满足接受 标准的被跟踪的面部作为有效结果被包括,而不管跟踪发生在哪个方 向。 下面将描述可应用于面部跟踪的进一步的一些规则。 开始/维护面部跟踪的备选的/另外的规则 在上述方法中,对每一个不能与现有跟踪匹配的面部检测启动面 部跟踪。这可能导致在最终被现有规则之一(例如预测_接受_比例_阈 值)拒绝之前,许多误检测被错误地跟踪并持续好几帧。 同样,用于拒绝跟踪的规则(例如预测_接受_比例_阈值,检测_ 接受_比例_阈值)对跟踪将他们的头偏向一侧相当长时间的人不重 视。实际上,跟踪这样做的人常常是有用的。 该方案的第一部分有助于避免由于开始错误跟踪导致的误检测。 对与现有跟踪不匹配的每个面部检测仍然从内部开始面部跟踪。 然而,它不从算法输出。 为了维持这个跟踪,在跟踪中的第一f帧必须是面部检测(即D 型)。如果所有第一f帧都是D型,则保持跟踪并且面部位置从帧f 向前从该算法中输出。如果所有的第一n帧都不是D型,则终止面部 跟踪,并且从该跟踪中没有输出任何面部位置。F典型地被设置为2, 3或5。 该方案的第二部分允许轮廓中的面部被长期跟踪,而不因为低的 检测_接受_比例,预测_接受_比例_阈值和检测_接受_比例_阈值在这 种情况中没有开始而终止对它们的跟踪。相反,包括下列标准的选择 用以维持面部跟踪: 每n个帧需要g个连续的面部检测以维持面部跟踪,其中g通常 被设置为与f相似的值,例如,1-5帧,且n相应于我们希望能够跟踪 某位离开照相机(例如10秒(=250或300帧,依赖于帧频))的人所 用的帧的最大数目。这也可以与预测_接受_比例_阈值和检测_接受_比 例_阈值规则相结合。或者,可以将预测_接受_比例_阈值和检测_接受 _比例_阈值应用于循环制(rolling basis),例如仅在最后的30帧 上,而不是从跟踪开始起。 色泽不正阈值规则 在上述方法中,面部的皮肤颜色仅仅在皮肤颜色跟踪期间才被检 查。这意味使用预测面部位置,可能跟踪到非皮肤色的错误检测,或 者面部跟踪可能偏离到非皮肤色的位置。 为了解决这一问题,不论面部的接受类型如何(检测、皮肤颜色 或Kalman预测),皮肤颜色都要被检查。如果它与皮肤颜色的距离超 过色泽不正阈值,则终止面部跟踪。 执行这种方案的一个有效方法是使用在皮肤颜色跟踪期间计算的 与每个像素的皮肤颜色的距离。如果该测量在面部区域(根据所使用 的皮肤颜色跟踪方法,在掩蔽形状区域、椭圆形区域或在整个面部窗 口)的平均值超过固定的阈值,则面部跟踪终止。 感兴趣的映像的区域的验证 在这里描述的其它方法中,使用感兴趣的预处理器的区域以查明 该图像的那些区域具有不像面部的变化。在每一尺度重复这一过程, 然后这些区域被从面部检测处理中省略。然而,还有一个可能是将皮 肤颜色跟踪的或Kalman预测的面部移动进入(非面部样)低或高图像 变化区域。 为处理该问题,在变化预处理期间,存储围绕现有面部的区域的 变化值(或梯度值)。 当作出(以任何接受类型:面部检测、皮肤颜色或Kalman预测) 面部的下一个位置的最终决定时,相对于感兴趣的映像的区域中的存 储变化(或梯度)值验证该位置。如果发现该位置有非常高或非常低 的变化(或梯度),则其被认为不像面部,并且面部跟踪终止。这避 免了面部跟踪进入图像的低(或高)变化背景区域。或者,再重新计 算新的面部位置的变化(如果没有使用变化-预-处理则有用)。 注意,所用的变化测量可以是传统变化或邻近像素的差的和(梯 度)或任何其它变化型测量的总和。 示意性地显示在图22中的跟踪系统中,还包括另外三个特征。 镜头边界数据560(来自与测试中的图像系列相关的元数据;或图 2的照相机内产生的元数据)限定该图像系列内的每个邻接“镜头”的界 限。在拍摄边界重新设置Kalman过滤器,并且不允许其对后继的镜头 进行预测,因为该预测可能是无意义的。 用户元数据542和照相机设置元数据544被作为输入提供给面部 检测器540。这些也可以用于非跟踪系统。上面描述了照相机设置元数 据的实例。用户元数据可以包括诸如以下信息: ·程序类型(例如新闻、访谈、戏剧); ·脚本信息,如“长镜头”、“中近景镜头”等的说明书(产生预期 的面部大小的子范围的照相机镜头的特殊类型),每一镜头中包括了 多少人(也产生预期的面部大小的子范围)等等。 ·运动相关的信息-经常使用标准视野和镜头从固定的照相机位 置拍摄运动。通过在元数据中规定这些,也可以产生面部大小的子范 围。 程序的类型与在图像或图像系列中期望的面部的类型相关。例 如,在新闻程序中,人们希望在许多图像系列中看到单一面部,占据 屏幕的10%面积(比如说)。不同尺度的面部的检测可以响应该数据加 权,从而使大约具有该尺寸的面部被给出增强的概率。另一个可供选 择哦或另外的方法是减小搜索范围,从而仅仅在尺度的子集内搜索, 而不是在所有可能的尺度内搜索面部。这可以减少面部检测处理的处 理需求。在基于软件的系统中,软件可运行得很快和/或在功能稍差的 处理器上运行。在基于硬件的系统(包括例如专用集成电路(ASIC) 或现场可编程门阵列(FPGA)系统)中,对硬件的要求可降低。 上面提到的用户元数据的其它类型也可以这种方式应用。例如, “预期面部尺寸”的子范围也可以查找表的方式储存在存储器30中。 关于照相机元数据,例如,透镜110的当前聚焦和缩放设置,这 些可以通过给出可能存在于图像的前景的任何面部的预期图像大小的 初始指示来辅助面部检测器。在这一方面,注意到它们之间的聚焦和 缩放设置限定摄录机100和被拍摄的人之间的预期间隔,以及透镜110 的放大倍数。从这两种属性,根据平均面部大小,有可能在所得图像 数据中计算预期面部尺寸(以像素表示),这也可以产生用于搜索的 尺寸的子范围和预期面部尺寸的加权。 跟踪算法的优点 面部跟踪技术主要有以下三种优势: ·通过在其中没有可用的面部检测结果的帧中使用Kalman过滤 器和皮肤颜色跟踪,允许使丢失的面部被填入。这增加了在整个图像 序列中的真实接受率。 ·它提供了面部链接:通过成功地跟踪面部,该算法自动地知道 未来帧中检测到的面部属于同一人还是不同人。因此,场景元数据可 以很容易地从该算法中产生,其包括该场景中的面部数、它们出现的 帧,并提供每一面部的代表性面部照片。 ·误面部检测倾向于被拒绝,因为这种检测倾向于不在图像间向 前进行。 上面所述的实施方案涉及面部检测系统(包括训练和检测阶段) 及其在摄录机和编辑系统中的可能应用。可以理解是这种技术还有许 多其它可能的用途,例如(并不限于)安全监视系统、普通处理媒体 (诸如视频磁带记录器控制器)、视频会议系统等。 关于颜色掩蔽技术的变化 这些变化可以独立地应用或者在技术适当的情况下组合应用。 变化1:默认高斯皮肤颜色模型被用于计算该图像中的每个像素的 颜色距离值(以给出颜色距离映像)。当检测到面部时,在掩蔽形区 域上计算其与默认模型的平均距离。当证实未来颜色跟踪面部(或检 测的面部或Kalman预测的面部)时,如果与默认颜色模型的距离在给 定的容限之外变化,则终止面部跟踪。这意味着(a)相同的颜色距离 值可以用于所有面部跟踪(不需要针对每个面部的不同模型,因为我 们使用默认颜色模型而不是种植在面部颜色上),以及(b)如果跟踪 偏离面部到不同的有色背景时,则面部跟踪终止而不是继续。 变化2:替代缺省颜色模型,对每一个面部使用不同的颜色模型, 当其第一次被检测到时种植到那个面部的颜色上。然后,当计算出颜 色距离映像时,根据前一帧的每个面部的位置,在图像的不同区域中 使用不同的颜色模型参数。所述颜色距离值可以被作为在两个面部之 间的区域上的加权和被混合在一起。这允许颜色跟踪对每个面部的实 际颜色上被模拟得更精确,而不需要针对该图像中的每个像素位置计 算多于一个的颜色距离值。 变化3:代替缺省颜色模型或每一个面部的不同颜色模型,将通用 颜色模型种植在前一帧中的所有检测到的面部的平均颜色上。 变化4:当使用头部尺寸的平方的窗口搜索颜色距离映像以找出离 皮肤颜色的最小平均距离时,掩蔽内的区域有正贡献,而掩蔽外的区 域有负贡献。这意味着平的、皮肤颜色的区域与皮肤颜色的净距离因 该为零。也意味着掩蔽法的形状匹配属性被加强。在上述方法中,只 有面部掩蔽内部的区域被使用。 变化5:首先将颜色距离映像量化成两级,以使得每一个像素或者 为皮肤颜色(1)或者为非皮肤颜色(-1)。这防止颜色距离值的幅度 对于与皮肤颜色计算的距离有不适当的影响,即当与上述4个变化结 合的时候,该掩蔽外部的很多非皮肤颜色像素不会有不适当的影响。 变化6:皮肤颜色掩蔽被更逐渐地更新。新的掩蔽被计算为前一帧 的掩蔽的90%,当前帧的掩蔽仅仅有10%的加权。这有助于避免由临时 部分阻塞现象所引起的问题,例如,手暂时通过面部前方。也有助于 避免人非常慢地移动的问题。 前面描述的皮肤颜色跟踪技术通过将前一帧中的面部的颜色距离 掩蔽与当前帧的颜色距离映像匹配来工作。这种方法有三个方面,至 少某些变化目标在于改善: (i)在部分阻塞的情况下(例如面部前方的手),跟踪手而不 是面部是可能的。 (ii)因为在粗栅格(根据面部尺寸)上跟踪面部,颜色距离映 像慢慢地‘滑出’面部是可能的,如果面部移动很慢的话。 (iii)由于只考虑皮肤颜色相近的区域,因此,在平滑皮肤颜色 区域上发现良好匹配是可能的。 变化6(在其中面部的颜色距离掩蔽仅仅很慢地更新的)处理方面 (i)和(ii)。以及获得在面部掩蔽内的皮肤颜色区域的良好匹配,非面 部颜色区域也在变化5中考虑,它处理(iii)。 更详细地说,对于每个面部,从前一帧的该面部的位置处的该帧 的颜色距离映像计算二进制掩蔽。 如果掩蔽的每一个元素小于整个掩蔽的平均颜色距离值,则其为1 (即它是皮肤色的),否则为0(非皮肤色)。 在搜索窗口上使用该二进制掩蔽进行搜索。在搜索窗口内的每一 点处通过将掩蔽为‘1’处的所有颜色距离值取和,并减去掩蔽为‘0’处的 所有颜色距离值来计算一个值。最好的匹配是这样的位置,在该位置 掩蔽给出最小取和的颜色距离值。 对该图像中的每一个面部,参见图28,当前颜色距离映像(对帧 n)通过将旧面部位置1500处的旧颜色距离映像的90%与新面部位置 1510处的新颜色距离值的10%取和来更新。 这具有缓慢改变每一个面部的颜色距离掩蔽的效果。因此,如果 面部是部分地被阻塞,则阻塞物仅仅轻微地改变颜色距离映像,因此, 匹配过程仍然可能匹配原始面部,而不是阻塞物。 这种方法的额外效果是即使仅仅在粗栅格上执行搜索,也可以成 功地跟踪缓慢移动的面部。其原因是明显的,如果考虑一下情况的话: 假设利用前面的方法在4×4栅格(即搜索不能比4个像素更精确) 上进行搜索。如果面部移动1个像素,则搜索算法将在同一(前一) 位置上找到面部。由于面部距离映像完全由新的一个替换,所以如果 面部继续以1像素/帧移动,则在4帧之后,面部将仍然在原始位置上 找到,即使它应该具有新的移动的4个像素-换句话说,该掩蔽已经从 面部“滑出”。 如果使用变化6的方法,其中颜色距离掩蔽缓慢更新,则在4帧 后该搜索算法将仍然是使用具有4帧之前的面部的某些记忆的颜色距 离映像。这意味着该搜索算法可以推导出面部已经真正的移动了4个 像素。 性能方面的进一步的改善可以通过当搜索具有二进制掩蔽的映像 (如变化5)时将该颜色距离映像量化成两级来获得。该映像中的每个 像素被设置成-1,如果它是在该掩蔽的平均颜色距离之下的话;并且 在该映像中的每一个像素被设置成+1,如果它是在该掩蔽的平均颜色 距离值之上的话(“该掩蔽的平均颜色距离”指的是在其量化成‘1’和‘0’ 以形成掩蔽之前的面部窗口的平均颜色距离)。 然后,如前所述,通过将掩蔽为‘1’处的所有颜色距离值相加并减 去为掩蔽为‘0’处的所有颜色距离值,在搜索窗口内的每一点计算一个 值。 总之,这意味着面部窗口内的每个像素位置根据掩蔽值和图像颜 色距离值具有下列贡献: 颜色距离映像值 <=掩蔽平均颜色距 离[皮肤色] 颜色距离映像值> 掩蔽平均颜色距离 [非皮肤色] 在面部窗口中的 像素位于掩蔽之内 (即掩蔽=1)[皮肤 色] -1 +1 在面部窗口中的 像素位于掩蔽之外 (即掩蔽=0)[非皮 肤色] +1 -1 在搜索窗口中的每一个位置上,对于面部大小的窗口计算和相加 这些值。如前,将最佳匹配取作获得最小值的像素的位置(即掩蔽与 图像匹配最佳的地方)。 这种方法防止颜色距离值的幅度对与皮肤颜色距离值的计算有不 适当影响,以使得该掩蔽外部的许多非皮肤色像素没有不适当的影 响。 面部跟踪和抽取 在使用抽取的系统中,特别是上述的临时抽取系统中,对于某些 帧可以是这样一种情况:在处理该帧的结尾没有确定的面部检测结果 可用。在这种情况下,可以对时间抽取意味着没有面部检测可用的帧 使用皮肤颜色跟踪。与连续的面部检测所需要的数量有关的规则等将 适当地放宽。如果空间抽取意味着结果关于仅仅一部分图像可用,则 面部跟踪可以在获得完整的新结果的任何时候或者在每一图像中执 行,根据在那时候关于整个图像可用的最佳信息。 梯度预处理 图29a-29c示意性地图解了一种梯度预处理技术。 已经注意到示出像素变化小的图像窗口可以倾向于被面部检测装 置基于本征面部或本征块检测为面部。因此,提出预处理步骤来从面 部检测过程中去除像素变化小的区域。在多尺度系统的情况下(如上 所述),可以在每一种尺度上执行预处理步骤。 基本处理是将“梯度测试”应用于跨越整个图像的每个可能的窗口 位置。根据应用到那个窗口的测试的结果,标记或标注每个窗口位置 的预定像素位置,诸如在或最接近于那个窗口位置的中心的象素。如 果该测试示出窗口具有小像素变化,则那个窗口位置就不在该面部检 测过程中使用。 第一步是被图解在图29a中。这示出了图像中的任意窗口位置上 的窗口。如上所述,在每个可能的窗口位置上,重复该预处理。参考 图29a,虽然梯度预处理可以被应用于整个窗口,但已经发现,如果预 处理被应用于测试窗口1010的中心区域1000,则会获得更好的结果。 参考图29b,从该窗口(或从在图29a中所示的窗口的中心区域) 得出基于梯度的测量,那是在该窗口的水平或垂直方向中的所有相邻 像素1011之间的绝对差的均值。每个窗口中心位置使用这个基于梯度 的测量标记以产生图像的梯度“映像”。然后将产生的梯度映像与阈值 梯度值比较。对于那些基于梯度的测量位于该阈值梯度值之下的任何 窗口位置被从关于那个图像的面部检测过程中排除。 可以使用替换的基于梯度的测量,诸如,像素变化或与平均像素 值的平均绝对像素差。 最好关于像素亮度值执行基于梯度的测量,但当然可以应用于彩 色图像的其它图像成份。 图29c示意性地说明了从一个示例图像中导出的梯度映像。在此, 从面部检测装置排除了较低梯度区域1070(被显示成阴影),并且仅 仅使用较高梯度区域1080。上述实施例已经涉及了面部检测系统(包 括训练和检测阶段),及其在摄录机和编辑系统中的可能应用。应该 理解,这种技术可能有很多其它的应用,例如(但不限于)安全监视 系统、通用媒体处理(诸如视频磁带记录器控制器)、视频会议系统、 IP摄像机、数字相机等。 在其他实施例中,具有高像素差的窗口位置也可以被标记或标 注,并且也从面部检测过程中排除。“高”像素差别意味着上述关于图 29b的测量超过上限阈值。 因此,按照上述方式产生梯度映像。梯度测量低于上述(第一) 阈值梯度值的任何位置被排除在面部检测处理之外,就像是梯度测量 高于该上限阈值的任何位置。 上面提到优选将“低阈值”处理应用到测试窗口1010的中心部分 1000。同样的处理也可以应用到“上限阈值”处理。这将意味着仅需要 关于每个窗口位置导出单个梯度测量。或者,如果关于低阈值测试使 用整个窗口,则关于上限阈值测试也可以类似地使用整个窗口。还有, 对于每个窗口位置仅需要导出单个梯度测量。然而,当然可能使用两 种不同的配置,以便(例如)测试窗口1010的中心部分1000被用来 产生用于低阈值测试的梯度测量,但关于上限阈值测试则使用整个测 试窗口。 前面提到的用于拒绝面部跟踪的另一个判据是它的变化或梯度非 常低或非常高。 在该技术中,所跟踪到的面部位置被感兴趣的映像的区域的变化 验证。每个面部只有在检测尺度上的映射的面部大小的区域被存储, 以用于下一个重复跟踪。 尽管上面描述了梯度预处理,但皮肤颜色跟踪或Kalman预测的面 部仍然有可能移进图像的(非面部)低或高变化区域。从而在梯度预 处理期间,存储围绕现有面部痕迹的区域的变化值(或梯度值)。 当作出(用任何可接受类型:面部检测、皮肤颜色或Kalman预测) 关于面部的下一个位置的最终决定时,该位置根据感兴趣的映像的区 域内存储的变化值(或梯度)被验证。如果发现该位置具有非常高或 非常低的变化(或梯度),则被认为是非面部并且停止面部跟踪。这 防止了面部跟踪进入图像的低(或高)变化背景区域。 或者,即使不使用梯度预处理,也可以重新计算新面部位置的变 化。在任一情况下所用变化测量可以是传统变化或相邻像素的差别(梯 度)的和或任何其它变化类型测量。 组合变化预处理和变化检测 如上所述,用变化检测技术,将一个或多个矩形边界框放置在检 测到运动的区域周围(或至少,以排除没有检测到运动的区域)。然 后重新调节这些框到所有要在该尺度上进行面部检测的尺度。 感兴趣的区域的决定(也就是说决定那个区域将经历面部检测) 是根据自变化预处理和变化检测处理的输出而做出的。 只有图像的以下区域需要在面部检测算法中被处理: (i)在变化预处理期间已经被选作候选面部区域的,和 (ii)在变化检测期间已经被标注为检测到运动的区域 因此,感兴趣的区域的决定将来自变化预处理和变化检测模块的 感兴趣的区域逻辑结合,以产生最终兴趣区域。这些被一个或多个矩 形边界框在每个尺度或(没有边界框限制)多尺度“兴趣区域”映像束 缚,每个象素位置被标记为感兴趣的区域或非感兴趣的区域。 对面部检测算法还有用的是知道哪一个区域没有相应于“缺乏检测 到的改变”被处理,以便产生自前面的帧的面部检测结果可以对这些区域 重复。因此,该信息也被传送到面部检测中。 可以理解,上述本发明的实施方案当然可以至少是一部分,使用 软件控制的数据处理设备来实施。例如,以上示意性显示或描述的一 个或多个部件可作为软件控制的通用数据处理装置或定制程序控制数 据处理装置,诸如专用集成电路、现场可编程门阵列等实现。应当理 解的是,提供这种软件或程序控制的计算机程序和存储、传输或提供 这样的计算机程序的其它提供媒介被设想为本发明的一个方面。 所列举的参考文献和附录如下。为了避免疑问,需要指出的是所 列参考文献和附录形成本发明的一部分。 参考文献 1.H.Schneiderman and T.Kanade,″A statistical model for 3D object detection applied to faces and cars,″IEEE Conference on Computer Vision and Pattern Detection,2000. 2.H.Schneiderman and T.Kanade,″Probabilistic modelling of local appearance and spatial relationships for object detection,″IEEE Conference on Computer Vision and Pattern Detection,1998. 3.H.Schneiderman,″A statistical approach to 3D object detection applied to faces and cars,″PhD thesis,Robotics Institute,Carnegie Mellon University,2000. 4.E.Hjelmas and B.K.Low,″Face Detection:A Survey,″Computer Vision and Image Understanding,no.83,pp.236-274,2001. 5.M.-H.Yang,D.Kriegman and N.Ahuja,″Detecting Faces in Images:A Survey,″IEEE Trans.on Pattern Analysis and Machine Intelligence,vol.24,no.1,pp.34-58,Jan 2002. 附录A:训练面部集 一个数据库由很多个站在室内背景前方的对象的图像组成。另一 个上述技术的实验实施中所用的训练数据库由多于一万个具有从前到 左和右轮廓观察的人头部的8位灰度级图像构成。本领域技术人员自 然会理解,可以使用各种不同的训练集,可选地被描绘成反映当地人 群的面部特征。 附录B-本征块 在针对面部检测和识别(参考文献4和5)的本征方法中,记录每 m×n个面部图像,以便它可以用长度为mn的向量表示。每个图像可以 被认作在mn维空间的点。图像集到这个大空间中的点的集合。 在整个结构上类似的面部图像没有被随机分配在这个mn维图像空 间中,因此它们可以由相对低维子空间描述。使用主成分分析(PCA), 可以发现在整个图像空间代表面部图像的分布最好的向量。PCA包括确 定相应于原始面部图像的协方差矩阵的主要本征向量。这些向量限定 面部图像的子空间,经常被称作面部空间。每个向量代表m×n图像, 并且是原始图像的线性组合。由于这些向量是与原始面部图像对应的 协方差矩阵的本征向量,以及由于它们的外观像面部样,因此它们经 常被称为本征面部[4]。 当出现未知的图像时,它被投影到面部空间。以这种方式,它按 照本征面部的加权和表达。 在本实施方案中,使用了一个密切相关的方法,以产生并应用与 面部图像的块相关的所谓“本征块”或本征向量。一个块的栅格被应用 到图像面部(在训练集中)或测试窗口(在检测期间)以及基于本征 向量的处理,非常类似于本征面部处理,被应用到每个块位置。(或者 在另一个实施方案中,为了节省数据处理,该处理被应用到块位置组 一次,产生一个用在任何块位置的本征块集)。本领域技术人员会理 解,某些块(诸如常常代表图像的鼻部特征的中心块)在决定是否出 现面部时意义更重大。 计算本征块 本征块的计算包括以下步骤: (1)使用NT个图像的训练集。这些被分成每个大小为mxn的图像 块。于是,对于每个块位置,获得图像块集(一个来自每个图像的该 位置):{I0t}t=1NT。 (2)如下计算块{I0t}t=1NT的标准化训练集: 每个图像块I0t,从原始训练集被标准化以具有零的平均数和1的 L2-norm,来产生各自的标准化图像块It。 对于每个图像块I0t,t=1...NT: 其中 并且 (即(I0t-mean_I0t)的L2-norm) (3)通过每个图像块It的像素元素的字典式的重新排序形成向量 {xt}t=1NT训练集。即,每个m×n图像块It被重新排序成向量xt,长度N=mn。 (4)计算偏离向量集, D具有N行和NT列。 (5)计算协方差矩阵∑: ∑=DDT ∑是尺寸为N×N的对称矩阵。 (7)通过求解A=PT∑P,得到协方差矩阵的本征向量P、本征值 λ1,i=1,...N的全集,∑ 这里,Λ是N×N对角线矩阵,具有本征值λ1,沿其对角线(按大小 排序),P是包含N本征向量(每个长度为N)的集合,的N×N矩阵。 这个分解也被称为Karhunen-Loeve变换(KLT)。 本征向量可以被认为是共同表达面部图像的块之间的变化的特征 的特征集。它们形成可以代表任何图像块的正交基,即,原则上讲, 通过本征向量的加权和可以表示任何图像而不会出差错。 如果图像空间的数据点的数目(训练图像)少于空间的维数 (NT<N),则只有NT个有意义的本征向量。其余本征向量将与为0的 本征值有关。因此,由于通常NT<N,所以,i>NT的所有本征值都将是0。 另外,由于训练集中的图像块在整体结构上类似(它们都得自面 部),只有一些剩余的本征向量将表现非常强的在这些图像块中的差 异。这里有具有最大相关的本征值的本征向量。具有较小的相关本征 值的其他剩余本征向量不表现这种大的差异,因此它们在面部之间的 检测或区别时没有用。 因此,在PCA中,只考虑具有最大本征值的M主本征向量,其中 M<N1,即,执行部分KLT。简而言之,PCA提取对应于最大本征值的KLT 基的较低维子空间。 由于主成分描述面部图像之间最强的变化,在外观上可能是面部 块的相似部分,在这里被称为本征块。然而,术语本征向量可以被同 等使用。 使用本征块的面部检测 通过确定一个未知图像能被图像空间表示得有多好,可以测量该 图像与面部的相似性,或它的faceness。使用与训练过程中所用的相 同的块栅格,可以一块一块地实施该处理。 该过程的第一阶段包括将该图像投影到面部空间。 投影图像到面部空间 在讲图像投影到面部空间之前,几乎如在训练集中执行的一样, 在图像上执行很多相同的预处理步骤: (1)获得尺寸为m×n的测试图像块:I0。 (2)使原始测试图像块I0标准化,以具有零平均数和1的L2- norm,来产生标准化的测试图像块I: 其中 并且 (即(I0-mean_I0)的L2-norm) (3)通过图像的像素元素的字典式的重新排序计算偏离向量。图 像被重新排序成向量xt,长度N=mn。 在这些预处理步骤后,使用下列简单步骤将偏离向量x投影到面 部空间: (4)投影到面部空间包括将偏离向量x转化成它的本征块成分。 这包括简单地相乘M个主本征向量(本征块),Pi,i=1,...M,如下获得 每个权yi: 其中Pi是第I个本征向量。 权yi,i=1,...M描述了代表输入面部块的每个本征块的贡献。 外观相似的块将具有相似的权集,而外观不同的块将具有不同的 权集。因此,这里将权用作在面部检测期间分类面部块的特征向量。 尽管这里已经描述了特殊的实施方案,但应当理解的是本发明并 不限于这些,可以在本发明范围内的进行很多修改和添加。例如,不 背离本发明精神的条件下,下列从属权利要求的特征与独立权利要求 的特征的各种组合是可以的。