缩减大数据集中数据密度的系统和方法与流程

文档序号:14254452阅读:320来源:国知局
相关申请的交叉引用本申请主张2015年4月17日提交的美国临时申请no.62/149,193的权益,其全部内容以引用方式并入本文。本申请涉及2010年5月27日提交的美国专利申请序列号12/788,748、2010年5月27日提交的美国专利申请序列号12/788,721、2013年11月25日提交的美国专利申请序列号14/089,003、2014年3月17日提交的专利申请序列号14/217,075、2014年3月17日提交的美国专利申请序列号14/217,039、2014年3月17日提交的美国专利申请序列号14/217,094、2014年3月17日提交的美国专利申请序列号14/217,375、2014年3月17日提交的美国专利申请序列号14/217,425、2014年3月17日提交的美国专利申请序列号14/217,435、2014年11月24日提交的美国专利申请序列号14/551,933以及2014年12月23日提交的美国专利申请序列号14/763,158,其全部内容以引用方式并入本文。本发明通常涉及有效地识别内容,同时限制识别内容所需的数据量。例如,提供各种技术和系统用于识别内容,同时缩减大数据集中的数据密度。
背景技术
::管理密集数据集给出了重大挑战。例如,存储、索引和管理某些系统发挥功能所需的大量数据存在困难。出现这类问题的一个领域包括使用存储在大数据集中的参考数据来搜索和识别数据之间最接近的匹配的系统。实际数据点的存储构成数据库中很大程度的存储量。技术实现要素:本发明的某些方面和特征涉及识别未知内容。例如,可以从原点投射(project)多个向量。可以确定在参考数据点与未知数据点之间的多个向量中的向量的数量。向量的数量可用于估计第一向量(从原点到参考数据点)与第二向量(从原点到未知数据点)之间的角度。然后可以确定参考数据点与未知数据点之间的距离。使用所确定的距离,可以从一组参考数据点中确定候选数据点。可以分析候选数据点以识别未知数据点。本文描述的技术允许识别未知内容,同时缩减大数据集中的数据密度。例如,描述了用于提高存储和搜索大数据集的效率的系统和方法。这些技术可以应用于收获和操纵大量数据的任何系统。这类系统可以包括例如基于内容的自动搜索系统(例如,用于视频相关应用或其它合适应用的自动内容识别)、mapreduce系统、bigtable系统、模式识别系统、面部识别系统、分类系统、计算机视觉系统、数据压缩系统、聚类分析,或任何其它合适的系统。在一些实例中,使用本文描述的系统和方法执行的技术显著地减少了必须存储的数据量,以便搜索和查找未知和已知数据组之间的关系。例如,通过消除存储实际已知数据点的需求,可以减少必须存储的数据量。根据至少一个实例,提供了一种用于识别由显示器显示的视频内容的系统。该系统包括一个或多个处理器。该系统还包括一个非暂时性机器可读存储介质,其包含当在一个或多个处理器上执行时使一个或多个处理器执行以下操作指令,包括:获得多个参考视频数据点;确定从原点到该多个参考视频数据点中的参考视频数据点的第一向量的长度;获得与由显示器呈现的视频内容相关联的未知视频数据点;确定从原点到未知视频数据点的第二向量的长度;从原点投射多个向量;确定参考视频数据点与未知视频数据点之间的多个向量的数量;估计第一向量与第二向量之间的角度,其中使用多个向量的数量来估计所述角度;确定参考视频数据点与未知视频数据点之间的距离,其中使用第一向量和第二向量的估计角度和确定长度来确定所述距离;从多个参考视频数据点识别一个或多个候选视频数据点,其中候选视频数据点是用于匹配未知视频数据点的候选,并且其中基于一个或多个参考视频数据点与未知视频数据点之间的确定距离来确定一个或多个候选视频数据点;以及识别由显示器呈现的视频内容,其中通过将未知视频数据点与一个或多个候选视频数据点进行比较来识别由显示器呈现的视频内容。在另一实例中,提供了一种计算机实现的方法,包括:获得多个参考视频数据点;确定从原点到该多个参考视频数据点中的参考视频数据点的第一向量的长度;获得与显示器呈现的视频内容相关联的未知视频数据点;确定从原点到未知视频数据点的第二向量的长度;从原点投射多个向量;确定多个参考视频数据点与未知视频数据点之间的多个向量的数量;估计第一向量与第二向量之间的角度,其中使用多个向量的数量来估计所述角度;确定参考视频数据点与未知视频数据点之间的距离,其中使用第一向量和第二向量的估计角度和确定长度来确定所述距离;从多个参考视频数据点识别一个或多个候选视频数据点,其中候选视频数据点是用于匹配未知视频数据点的候选,并且其中基于一个或多个参考视频数据点与未知视频数据点之间的确定距离来确定一个或多个候选视频数据点;以及识别由显示器呈现的视频内容,其中通过将未知视频数据点与一个或多个候选视频数据点进行比较来识别由显示器呈现的视频内容。在另一实例中,可以提供一种有形地体现在计算装置的非暂时性机器可读存储介质中的计算机程序产品。计算机程序产品可以包括被配置成使一个或多个数据处理器进行以下操作的指令:获得多个参考视频数据点;确定从原点到该多个参考视频数据点中的参考视频数据点的第一向量的长度;获得与由显示器呈现的视频内容相关联的未知视频数据点;确定从原点到未知视频数据点的第二向量的长度;从原点投射多个向量;确定参考视频数据点与未知视频数据点之间的多个向量的数量;估计第一向量与第二向量之间的角度,其中使用多个向量的数量来估计所述角度;确定参考视频数据点与未知视频数据点之间的距离,其中使用第一向量和第二向量的估计角度和确定长度来确定所述距离;从多个参考视频数据点识别一个或多个候选视频数据点,其中候选视频数据点是用于匹配未知视频数据点的候选,并且其中基于一个或多个参考视频数据点与未知视频数据点之间的确定距离来确定一个或多个候选视频数据点;以及识别由显示器呈现的视频内容,其中通过将未知视频数据点与一个或多个候选视频数据点进行比较来识别显示器呈现的视频内容。在一些实施例中,多个参考视频数据点包括从一个或多个视频帧提取的视频数据。在一些实施例中,多个投射向量是伪随机生成的。在一些实施例中,确定参考视频数据点与未知视频数据点之间的多个向量的数量包括:确定多个向量中的每个向量是在参考视频数据点的第一向量的代数右边或是代数左边;确定多个向量中的每个向量是在未知视频数据点的第二向量的代数右边或是代数左边;以及确定参考视频数据点与未知视频数据点之间的多个向量的数量,其中多个向量的数量包括在第一向量的代数左边并在第二向量的代数右边的向量,或在第一向量的代数右边并在第二向量的代数左边的向量。在一些实施例中,在确定参考视频数据点的第一向量的长度之后,并且在确定多个向量中的每个向量是在第一向量的代数右边或在其代数左边之后,丢弃参考视频数据点。在一些实施例中,上述用于识别视频内容的方法、系统和计算机程序产品还包括:为确定为在参考视频数据点的第一向量的代数右边的每个向量存储第一二进制值;以及为确定为在参考视频数据点的第一向量的代数左边的每个向量存储第二二进制值。在一些实施例中,上述用于识别视频内容的方法、系统和计算机程序产品还包括:为确定为在未知视频数据点的第二向量的代数右边的每个向量存储第一二进制值;以及为确定为在未知视频数据点的第二向量的代数左边的每个向量存储第二二进制值。在一些实施例中,估计参考视频数据点的第一向量与未知视频数据点的第二向量之间的角度包括将常数乘以比率,其中该比率包括参考视频数据点与未知视频数据点之间的多个向量的数量除以多个向量的总数。在一些实施例中,确定参考视频数据点与未知视频数据点之间的距离包括使用第一向量和第二向量的估计角度和确定长度来执行毕达哥拉斯恒等式计算(pythagoreanidentitycalculation)。在一些实施例中,识别由显示器呈现的视频内容包括确定未知视频数据点与候选视频数据点之间的匹配,其中匹配是基于候选视频数据点作为一个或多个候选视频数据点中与未知视频数据点最接近的视频数据点的近似匹配。根据至少另一个实例,可以提供一种识别一个或多个未知数据点的系统,其包括一个或多个处理器。该系统还包括一个非暂时性机器可读存储介质,其包含当在一个或多个处理器上执行时使一个或多个处理器执行以下操作的指令,包括:获得多个参考数据点;确定从原点到该多个参考数据点中的参考数据点的第一向量的长度;获得未知数据点;确定从原点到未知数据点的第二向量的长度;从原点投射多个向量;确定参考数据点与未知数据点之间的多个向量的数量;估计第一向量与第二向量之间的角度,其中使用多个向量的数量来估计所述角度;确定参考数据点与未知数据点之间的距离,其中使用第一向量和第二向量的估计角度和确定长度来确定所述距离;以及从多个参考数据点识别一个或多个候选数据点,其中候选数据点是用于匹配未知数据点的候选,并且其中基于一个或多个参考数据点与未知数据点之间的确定距离来确定一个或多个候选数据点。在另一实例中,提供了一种计算机实现的方法,包括:获得多个参考数据点;确定从原点到该多个参考数据点中的参考数据点的第一向量的长度;获得未知数据点;确定从原点到未知数据点的第二向量的长度;从原点投射多个向量;确定参考数据点与未知数据点之间的多个向量的数量;估计第一向量与第二向量之间的角度,其中使用多个向量的数量来估计所述角度;确定参考数据点与未知数据点之间的距离,其中使用第一向量和第二向量的估计角度和确定长度来确定所述距离;以及从多个参考数据点识别一个或多个候选数据点,其中候选数据点是用于匹配未知数据点的候选,并且其中基于一个或多个参考数据点与未知数据点之间的确定距离来确定一个或多个候选数据点。在另一实例中,可以提供有形地体现在电视系统的非暂时性机器可读存储介质中的计算机程序产品。计算机程序产品可以包括被配置成使一个或多个数据处理器进行以下操作的指令:获得多个参考数据点;确定从原点到该多个参考数据点中的参考数据点的第一向量的长度;获得未知数据点;确定从原点到未知数据点的第二向量的长度;从原点投射多个向量;确定参考数据点与未知数据点之间的多个向量的数量;估计第一向量与第二向量之间的角度,其中使用多个向量的数量来估计所述角度;确定参考数据点与未知数据点之间的距离,其中使用第一向量和第二向量的估计角度和确定长度来确定所述距离;以及从多个参考数据点识别一个或多个候选数据点,其中候选数据点是用于匹配未知数据点的候选,并且其中基于一个或多个参考数据点与未知数据点之间的确定距离来确定一个或多个候选数据点。在一些实施例中,上述用于识别一个或多个未知数据点的方法、系统和计算机程序产品包括确定未知数据点与候选数据点之间的匹配,其中该匹配是基于候选数据点作为一个或多个候选数据点中与未知数据点最接近的数据点的近似匹配。在一些实施例中,多个投射向量是伪随机生成的。在一些实施例中,确定参考数据点与未知数据点之间的多个向量的数量包括:确定多个向量中的每个向量是在参考数据点的第一向量的代数右边或是代数左边;确定多个向量中的每个向量是在未知数据点的第二向量的代数右边或是代数左边;以及确定参考数据点与未知数据点之间的多个向量的数量,其中多个向量的数量包括在第一向量的代数左边并在第二向量的代数右边的向量,或在第一向量的代数右边并在第二向量的代数左边的向量。在一些实施例中,在确定参考数据点的第一向量的长度之后,并且在确定多个向量中的每个向量是在第一向量的代数右边或在其代数左边之后,丢弃参考数据点。在一些实施例中,上述用于识别一个或多个未知数据点的方法、系统和计算机程序产品还包括:为确定为在参考数据点的第一向量的代数右边的每个向量存储第一二进制值;以及为确定为在参考数据点的第一向量的代数左边的每个向量存储第二二进制值。在一些实施例中,上述用于识别一个或多个未知数据点的方法、系统和计算机程序产品还包括:为确定为在未知数据点的第二向量的代数右边的每个向量存储第一二进制值;以及为确定为在未知数据点的第二向量的代数左边的每个向量存储第二二进制值。在一些实施例中,估计参考数据点的第一向量与未知数据点的第二向量之间的角度包括将常数乘以比率,其中该比率包括参考数据点与未知数据点之间的多个向量的数量除以多个向量的总数。在一些实施例中,确定参考数据点与未知数据点之间的距离包括使用第一向量和第二向量的估计角度和确定长度来执行毕达哥拉斯恒等式计算(pythagoreanidentitycalculation)。本内容并不旨在认同所要求保护的主题的关键或基本特征,也不旨在孤立地用以确定所要求保护的主题的范围。应通过参考本专利的整个说明书的适当部分,任何或所有附图以及每项权利要求来理解主题。参考以下说明书、权利要求书和附图之后,前述以及其它特征和实施例将变得更加明显。附图说明以下参考下列附图详细描述本发明的说明性实施例:图1是匹配系统的实例的框图。图2是示出识别未知数据点的匹配系统的实例的框图。图3是示出两个数据点以及两个数据点之间的向量距离的图。图4是示出到两个数据点的两个向量以及向量之间的角度的图。图5是示出如何确定两个向量的长度的图。图6是示出如何确定两点之间的距离的图。图7是示出相对于数据点的投射向量的图。图8是示出相对于另一个数据点的投射向量的图。图9是示出如何使用投射向量来确定两个向量之间的角度的图。图10是另一个示出如何使用投射向量来确定两个向量之间的角度的图。图11是示出通过匹配过程生成的数据的数据聚类的图。图12是另一个示出通过匹配过程生成的数据的数据聚类的图。图13是示出不均匀分布的投射向量的图。图14是示出与由本文讨论的数据缩减技术匹配的数据相比较的匹配的实际数据的图。图15是示出更均匀聚类的投射向量的图。图16是示出与由本文讨论的数据缩减技术匹配的数据相比较的匹配的实际数据的图。图17是示出识别显示的视频内容并提供相关内容的过程的实施例的流程图。图18是用于识别由显示器观看的视频内容的匹配系统的实例的框图。图19是视频捕获系统的实例的框图。图20是用于收集由显示器呈现的视频内容的系统的实例的框图。图21是示出识别显示的视频内容并提供相关内容的过程的另一个实施例的流程图。图22是示出点位置和它们周围的路径点的图表。图23是示出位于距查询点的距离内的一组点的图表。图24是示出可能的点值的图表。图25是示出分成指数型增长宽度的环的空间的图表。图26是示出自相交路径和查询点的图表。图27是示出三个连续点位置和它们周围的路径点的图表。具体实施方式在下面的描述中,为了说明的目的,阐述了具体细节以提供对本发明的实施例的全面理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不是限制性的。接下来的描述仅提供示例性实施例,并不旨在限制本发明的范围、适用性或配置。相反,接下来对示例性实施例的描述将为本领域技术人员提供实现示例性实施例的可用描述。应当理解,在不脱离如所附权利要求中阐述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。在以下描述中给出具体细节以提供对实施例的全面理解。然而,本领域普通技术人员将理解,可以在没有这些具体细节的情况下实践实施例。例如,电路、系统、网络、过程和其它组件可以以框图的形式被示出为组件,以便不会在不必要的细节上模糊实施例。在其它情况下,可以示出公知的电路、过程、算法、结构和技术,而不需要不必要的细节,以避免实施例模糊化。另外,应注意,可以将各个实施例描述为过程,其被描绘成流程图、流程图解、数据流程图、结构图或框图。虽然流程图可以将操作描述为顺序过程,但是许多操作可以并行或同时执行。此外,可以重新布置操作的顺序。过程在其操作完成后终止,但是图中可能没有附加的步骤。过程可以对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,其终止可以对应于函数返回到调用函数或主函数。术语“机器可读存储介质”或“计算机可读存储介质”包括但不限于便携式或非便携式存储装置、光学存储装备,以及能够存储、包含或携带指令和/或数据的各种其它介质。机器可读存储介质或计算机可读存储介质可以包括其中可以存储数据并且不包括无线地或通过有线连接进行传播的载波和/或暂时电子信号的非暂时性介质。非暂时性介质的实例可以包括但不限于磁盘或磁带、光学存储介质诸如光盘(cd)或数字通用盘(dvd)、闪存、存储器或存储装置。计算机程序产品可以包括代码和/或机器可执行指令,其可以表示程序、函数、子程序、程序、例程、子例程、模块、软件包、类,或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、类数组对象、参数或存储器内容而耦合到另一代码段或硬件电路。信息、参数、类数组对象、数据或其它信息可以使用包括存储器共享、消息传递、令牌传递、网络传输或其它传输技术的任何合适方式进行传递、转发或发送。此外,实施例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当在软件、固件、中间件或微代码中实现时,用于执行必要任务(例如,计算机程序产品)的程序代码或代码段可以存储在机器可读介质中。处理器可以执行必要的任务。可以以各种配置提供一些附图中描绘的系统。在一些实施例中,系统可以配置成分布式系统,其中系统的一个或多个组件分布在云计算系统中的一个或多个网络上。如下面进一步详细描述的,本发明的某些方面和特征涉及通过将未知数据点与一个或多个参考数据点进行比较来识别未知数据点。本文描述的系统和方法提高了存储和搜索用于识别未知数据点的大数据集的效率。例如,所述系统和方法允许识别未知数据点,同时缩减执行识别所需的大数据集的密度。所述技术可以应用于收获和操纵大量数据的任何系统。这些系统的说明性实例包括基于内容的自动搜索系统(例如,用于视频相关应用或其它合适应用的自动内容识别)、mapreduce系统、bigtable系统、模式识别系统、面部识别系统、分类系统、计算机视觉系统、数据压缩系统、聚类分析或任何其它合适的系统。本领域普通技术人员将理解,本文描述的技术可以应用于存储与未知数据相比较的数据的任何其它系统。在自动内容识别(acr)的背景下,例如,所述系统和方法减少必须存储的数据量,以便匹配系统搜索和查找未知数据组与已知数据组之间的关系。仅作为实例而非限制,本文所述的一些实例使用自动音频和/或视频内容识别系统来进行说明。然而,本领域普通技术人员将理解,其它系统可以使用相同的技术。使用大量数据的acr系统和其它系统的一个重大挑战是管理系统发挥功能所需的数据量。使用基于视频的acr系统作为一个实例,一个挑战包括尝试识别由数百万家庭中的一个家庭中的电视显示器显示的视频片段。另一个挑战包括需要建立和维护已知视频内容的数据库,以作为匹配对比的参考。建立和维护这样的数据库涉及收集和整理大量(例如数百、数千或更多)分布在全国范围内的电视节目,以及在许多其它潜在的内容来源中的更大数量的本地电视广播。可以使用将视频或音频的原始数据缩减为压缩的可搜索数据(例如,标记)的任何可用技术来执行整理。由于24小时、每周七天的操作时间表以及可能需要存储两周电视节目的滑动窗口,执行acr所需的数据量也快速增长。收获和操纵大量数据的其它系统(诸如上述示例系统)中呈现出类似的挑战。本文描述的系统和方法允许使用比常规技术所需的数据集进一步缩减的数据集来识别未知数据点。例如,需要生成、存储和比较以搜索和查找未知数据组与已知数据组之间的关系的数据量大大缩减(例如,取决于系统类型,大约一个数量级或其它数量),从而提供了一种更有效的技术来存储和索引数据。图1示出了可以识别未知内容的匹配系统100。例如,匹配系统100可以将未知数据点与参考数据点进行匹配,以识别未知数据点。匹配系统100包括客户端装置102和匹配服务器104。客户端装置包括匹配请求引擎106、输入装置108和输出装置110。输入装置108可以包括允许请求或其它信息输入到匹配请求引擎106的任何合适的装置。例如,输入装置108可以包括键盘、鼠标、语音识别输入装置、用于从无线装置(例如,从远程控制器、移动装置或其它合适的无线装置)接收无线输入的无线接口,或任何其它合适的输入装置。输出装置110可以包括可以呈现或以其它方式输出信息的任何合适的装置,诸如显示器、用于将无线输出发送到无线装置(例如,发送到移动装置或其它合适的无线装置)的无线接口、打印机,或其它合适的输出装置。匹配请求引擎106可以将通信124发送到匹配服务器104的匹配引擎112。通信124可以包括对匹配引擎112以识别未知内容的请求。匹配引擎112可以通过将内容与参考数据库116中的参考数据进行匹配来识别未知内容。例如,未知内容可以包括一个或多个未知数据点,并且参考数据库116可以包括多个参考数据点。在一些实例中,未知内容可以包括由显示器(用于基于视频的acr)呈现的未知视频数据、搜索查询(对于mapreduce系统、bigtable系统或其它数据存储系统)、未知的面部图像(用于面部识别)、未知的图案图像(用于图案识别)或可以与参考数据的数据库匹配的任何其它未知数据。参考数据点可以源自于从数据源118接收的数据。例如,数据点可以从数据源118提供的信息中提取出来,并且可被索引并存储在数据库116中。匹配引擎112可以向候选确定引擎114发送请求以从参考数据库116确定候选数据点。候选数据点是距未知数据点一定确定距离的参考数据点。候选确定引擎114可以将候选数据点返回到匹配引擎112。使用候选数据点,匹配引擎112可以确定最接近未知数据点的参考数据点。例如,如下面更详细地描述,路径追踪算法(pathpursuitalgorithm)可用于从候选数据点识别最接近的参考数据点。图2示出了识别未知数据点的匹配系统200的组件。例如,匹配引擎212可以执行用于将未知内容(例如,未知媒体片段、搜索查询、面部图像或图案图像等)与已知内容的数据库(例如,已知媒体片段、存储在用于搜索的数据库中的信息、已知的面部或图案等)进行比较的匹配过程。例如,匹配引擎212接收使用参考数据库中的参考数据点204来识别的未知数据内容202(其可以被称为“提示”)。未知数据内容202也由候选确定引擎214接收。候选确定引擎214可以通过搜索参考数据库中的参考数据点204来进行搜索过程以识别候选数据点206。在一个实例中,搜索过程可以包括最近邻搜索过程(nearestneighborsearchprocess)以生成一组邻近值(距未知数据内容202的未知值一定距离。未知数据内容202和候选数据点206被输入到匹配引擎212进行匹配过程以生成匹配结果208。根据应用,匹配结果208可以包括由显示器呈现的视频数据、搜索结果、使用面部识别确定的面部、使用模式识别确定的模式,或任何其它结果。在确定未知数据点(例如,未知数据内容202)的候选数据点206时,候选确定引擎214确定参考数据库中的未知数据点与参考数据点204之间的距离。距未知数据点一定距离的参考数据点被识别为候选数据点206。图3示出了两个数据点,包括数据点a(示出为数据点a302)和数据点b(示出为数据点b304)。数据点a302可以是参考数据点,数据点b304可以是未知数据点。数据点a302与数据点b304之间的距离d306也被示出。使用二维向量空间作为实例描述一些实例,但是同样适用于其它向量空间维度。例如,虽然图3和其它图中所示的实例是以二维空间示出,本文描述的相同技术可以以任何维数应用。例如,其它向量维度包括1维、3维、26维、75维或任何其它向量空间维度。可以使用各种技术来确定数据点之间的距离。例如,在n维空间中,确定两点a与b之间的距离的一种技术是使用以下等式:a.a+b.b-2ab=d^2.其中a是从原点(例如,在点(0,0))到点a的向量,b是从原点到点b的向量。a.a是向量a与其自身的点积,并且b.b是向量b与其自身的点积。a.a和b.b的结果是标量值。确定两个数据点a与b之间的距离的另一种技术可以包括使用以下等式:a.a/2+b.b/2-a.b=d2/2用于确定两个或多个数据点之间的距离的另一种技术可以包括使用经过数据点的向量之间的角度。图4是具有从原点o(例如,在点(0,0))到数据点a302的向量402(称为向量a402)和从原点o到数据点b304的向量404(称为向量b404)的图。点a302可以位于坐标(a.x,a.y)处,并且点b304可以位于坐标(b.x,b.y)处。数据点a302的向量a402与数据点b304的向量b404之间的角度410可用于确定数据点a302与数据点b304之间的距离。角度410可以通过首先查找向量a402的标量长度406和向量b404的标量长度408,然后使用长度406和408来计算向量402与404之间的角度410而确定。可以使用用于确定向量长度的任何合适的技术来确定标量长度406和408。图5所示的一个实例包括通过查找点积a.a502来查找向量a402(对于数据点a302)的标量长度406。点积a.a502是向量a402与其自身的点积。类似地,向量b404(对于数据点b304)的标量长度408可以通过查找作为向量b404与其自身的点积的点积b.b504来确定。一旦确定了角度410以及标量长度406和408,就可以确定距离306。例如,图6是示出计算数据点a302与数据点b304之间的向量距离306的最后步骤的图。在一个说明性实例中,可以通过应用毕达哥拉斯恒等式使用以下等式来使用角度410而确定距离306:d2=(sin(θ)*b.b)2+(a.a-cosine(θ)*b.b)2,其中θ是角度410。本文描述了使用向量投射来确定数据点之间的距离的系统和方法,与上述技术相比,需要存储比较少的数据。考虑到点积a.a是从原点o到点a302的向量a402的长度,并且点积b.b是从原点o到点b304的向量b404的长度,这两个长度值(长度406和408)可以提前计算(例如,对于参考数据点),并且每个长度406和408可以被存储为单个数字。保留实际点值的唯一原因是为了计算点积:a.b。应该存储实际的未知数据点值,因为在执行匹配过程时,它不能在运行时间之前获得。例如,在匹配过程期间需要未知数据点,以便与为参考数据点存储的数据进行比较。在使用电视内容的一个实例中,当电视发送呈现的视频数据时,匹配系统100和200接收未知数据点(例如,数据点b304)。然而,参考数据点(例如,参考数据点a302)可以在它们被用于确定之后可以用于使用投射向量来确定数据点向量(例如,向量a402和b404)之间的角度的信息之后被丢弃,如下面更详细描述。丢弃和不保留参考数据点的实际值,同时仍然能够计算参考数据点(点a)与未知数据点(点b)之间的距离是有利的。点a302和b304具有来自原点(例如,(0,0))到相应点的向量402和404。候选确定引擎(例如,候选确定引擎114或214)的目标是查找点a302和b304之间的距离d306,以便识别候选数据点。在一些实例中,距离d306可以仅用向量a402(经过点a的向量)的长度、向量b404的长度(经过点b的向量)以及向量a402与向量b404之间的角度410来计算。在一些实例中,可以存储向量a402与x轴的角度,然后可以计算角度410,但是这种方法的缺点将是随着维数增加,系统必须保持和存储每个维度的角度。结果是系统将存储如先前所需要的(例如,当存储所有参考数据点值时)尽可能多的定义每个点的数量的系统。本文描述的系统和方法包括以规定维数生成多个投射。例如,可以在不同的方向上投射多个向量,诸如在向量a402和向量b404所在的空间周围。虽然本文描述的实例使用80个总投射向量作为说明性实例,但是本领域普通技术人员将会理解,可以生成任何数量的投射。投射向量可以用于确定两个向量(例如,向量a402与向量b404)之间的角度,这可以减少在由匹配引擎执行的匹配过程期间在运行时所需的数据量。使用投射技术,参考数据点可以在最初使用之后被丢弃,如下面进一步描述。在简要描述使用投射的技术的一个说明性实例中,80个规则分布的向量可以以每十度进行投射,在这种情况下,投射之间的θ等于十。例如,如果向量a402与向量b404间隔103度,那么在向量a402与b404之间将有预期的五个投射。可能直观地看起来在向量a402与b404之间将有10个投射,但是有五个。例如,投射在两个方向上延伸,并且就角度而言,投射到第三象限中的投射将仍然在a与b“之间”。然而,为了本文讨论的实例的目的,每个投射可以被认为仅在一个象限中,因为这对于概念目的来说足够接近。在该实例中,由于80个投射向量中的5个向量落在向量a402与向量b404之间,因此可以确定向量a402与向量b404之间的角度为10度,如下面更详细描述。一旦确定了两个向量a402与b404之间的角度410以及向量a402和向量b404的长度,那么可以使用三角函数来计算点a302与b304之间的距离d306。进一步的细节是关于图7至图10提供。图7至图10示出了通过使用投射向量来确定点之间的角度来查找两点之间的向量距离而不需要存储参考数据点的实际值或坐标的技术。生成任意数量的随机投射。在一个说明性实例中,围绕360度轴生成一组80个随机向量。对于参考数据库中的每个参考数据点,匹配系统确定每个投射向量是在每个参考数据点的每个向量(例如,点a302的向量a402)的代数右边或是代数左边,诸如通过计算投射向量与向量(从原点到参考数据点)的点积,如下面参考图7和图8所述。投射向量和参考数据点的点积的结果可以存储为二进制字,并在接收到未知数据点时用以确定落在参考数据点与未知数据点之间的投射向量。除了确定投射向量相对于每个参考数据点的位置之外,还计算每个参考数据点向量(从原点到参考数据点)的相应长度。参考点向量的长度是向量与原点的距离,并且可以通过执行向量与其自身的点积来确定。匹配系统可以存储表示代数左边二进制数据和代数右边二进制数据的位以及参考数据点向量的长度(或距离)。在将未知数据点与参考数据点进行比较以识别候选数据点的运行时间期间,匹配系统仅需要将表示代数左边二进制数据和代数右边二进制数据(下面详细描述)的位以及每个参考数据点向量的长度加载到存储器中。因此,不需要加载实际的参考数据点,一旦为参考数据点确定了左边二进制数据和右边二进制数据以及向量长度,就可以丢弃参考数据点位。当接收到未知数据点时(例如,当从电视机接收到视频数据点时),匹配系统可以从为参考数据点存储的信息(例如,左边二进制数据和右边二进制数据以及参考数据点的向量长度)来确定候选数据点,例如通过搜索参考数据库中的最近邻点。然后,匹配系统可以确定投射向量是在未知数据点的向量的代数右边或是代数左边(例如,通过获取点积)来获得左边二进制值和右边二进制值。匹配系统还可以计算未知数据点向量的长度。可以使用落在参考数据点与未知数据点之间的投射向量来确定参考数据点的向量与未知数据点的向量之间的角度。图7至图9示出了用于确定落在参考数据点a302与未知数据点b304之间的投射的技术。为了确定投射向量是否落在参考数据点a302与未知数据点b304之间,确定哪些投射是在点a302和点b304的代数左边,哪些投射是在点a302和点b304的代数右边。点a302的代数右边的投射和点b304的代数左边的投射落在点a302与b304之间。例如,如图7所示,通过确定每个投射向量是在点a302(以及因此在向量a402)的代数右边或是在代数左边而相对于点a302来评估投射向量。在一个实例中,可以通过将投射向量和向量a402(从原点o到参考点a302)的点积来确定投射向量是在点a302的代数右边或是代数左边。例如,投射向量702和向量a402的点积等于正数,指示投射向量702是在点a302和向量a402的代数右边。可以为相对于点a302的投射向量702存储二进制值1,指示向量702是在点a302和向量a402的代数右边。作为另一实例,投射向量704和向量a404的点积等于负数,指示投射向量704是在点a302和向量a402的代数左边。可以为相对于点a的投射向量704存储二进制值0,指示它是在点a302和向量a的代数左边。可以为相对于点a302的所有投射向量执行相同的计算。如图7所示,在点a302(和向量a402)的代数左边的所有投射向量相对于点a302存储为二进制值0,并且在点a302(和向量a402)的代数右边的所有投射向量相对于点a302存储为二进制值1。本领域普通技术人员将理解,可以为在点a302右边的投射向量存储0值,并且可以为在点a302左边的投射向量存储1值。图8示出了将相同的计算应用于点b304,导致为相对于点b304的投射向量存储相应的1和0。例如,通过确定每个投射向量是在点b304(以及因此在向量b404)的代数右边或是代数左边而相对于点b304来评估投射向量。在一个实例中,可以通过将投射向量和向量b404(从原点o到参考点b304)的点积来确定投射向量是在点b304的代数右边或是代数左边。例如,在点b304(和向量b404)的代数左边的所有投射向量相对于点b304存储为二进制值0,并且在点b304(和向量b404)的代数右边的所有投射向量存储相对于点b304存储二进制值为1。本领域普通技术人员将理解,可以为在点b304右边的投射向量存储0值,并且可以为在点b304左边的投射向量存储1值。图9示出了落在点a302与点b304之间的投射向量。落在点a302与b304之间的投射向量包括在点a302的代数右边的投射(由a1值902示出)和在点b304的代数左边的投射(由b0值904示出)。落在点a302与点b304之间的投射向量可以通过取相对于点a302存储的80个二进制向量值与相对于点b304存储的80个二进制向量值的异或(xor)来确定。xor的结果生成具有a1值902和b0值904的投射向量,如图9所示。图10示出了查找点a302与点b302之间的角度910所需的所有分量。然后可以基于点a302与b304之间的投射的数量来查找向量a402(数据点a302)与向量b404(数据点b304)之间的角度910。角度确定是近似的,但足够接近以获得点a302与b304之间的精确距离d。在一个实例中,参考数据点向量与未知数据点向量之间的近似角度通过将常数乘以比率来确定。该比率包括参考数据点与未知数据点之间的投射向量的数量除以投射向量的总数。常数可以是预定义的数字,例如180。例如,点a302与点b304之间的角度910包括异或运算的结果除以向量的总数(在该实例中为80)。当提到计算未知数据点304与参考数据点(包括数据点a302)之间的距离时,在每个参考数据点的二进制数据(用于投射)与未知数据点的二进制数据值之间计算异或。如上所述,未知数据点(例如,数据点b304)与参考数据点(例如,数据点a302)的二进制数据之间的异或结果是未知数据点与参考数据点之间的投射数量。再次,导出的角度910等于数据点302与304之间的投射数量除以总投射数量(在该实例中为80),再乘以180。然后可以通过使用等式执行毕达哥拉斯恒等式计算来计算导出的距离:d2=(sin(θ)*b.b)2+(a.a-cos(θ)*b.b)2点积b.b表示向量b404的长度,并且点积a.a表示向量a402的长度。一旦确定了从未知数据点b304到存储在参考数据库中的参考数据点的距离,可以如前所述确定候选数据点。然后可以通过其中一个候选数据点来识别未知数据点b304。例如,可以将参考数据点中的一个确定为与未知数据点b304的最接近匹配。然后,未知数据点b304可以被识别为与作为最接近的匹配查找到的候选数据点相同的数据。在一些实例中,可以使用最近邻方法来识别候选数据点,并且可以使用路径追踪算法来识别未知数据点。关于图23至图27来描述最近邻技术和路径追踪技术的细节。使用上述向量投射技术,需要较少的数据来确定参考数据点与未知数据点之间的距离。这种技术可以用于在多个参考数据点之间查找候选数据点。如前所述,在接收到未知数据点之前,向量a402的长度(由点积a.a表示)已经是已知的,因此在运行时不需要确定生成候选数据点的距离。所需的唯一数据是参考数据点向量的长度(或距离)以及表示相对于参考数据点和未知数据点的投射向量的代数左边和右边二进制数据的位(其用于确定参考数据点与未知数据点向量之间的角度)。例如,由于为相对于点a302(在匹配过程之前)的所有投射向量和相对于点b304的所有投射向量计算了点积,所以除了参考数据点的向量长度之外,匹配系统可以存储每个参考数据点的每个投射的位,以及未知数据点的每个投射的位。因此,当将未知数据点与参考数据点进行比较以在运行时识别候选数据点时,匹配系统可以丢弃实际的参考数据点。上面描述的向量投射技术的一个优点是所保存的精确数据量取决于需要多少投射来获得可接受的结果。例如,当与一个数据点相比较时,每个投射向存储器添加一位来使用,因此如果随机投射的数量是合理的数量诸如80,那么原始的75个字节的数据集(点)可以用10个字节的左/右二进制结构加上例如该点的向量的长度的2个字节,共12个字节来代替。这样的实例为存储器中的每个点节省了63个字节。因此,当计算大数据搜索和比较时,向量投射技术非常有利地缩减了数据大小,并且可以用于许多大规模应用。图11示出了由匹配引擎执行的匹配过程生成的数据1101。数据1101可以表示引入数据,诸如参考数据和/或未知数据。在图11所示的实例中,数据点聚类不以投射向量为中心。例如,数据点聚类的位置用不以向量投射为中心的聚类原点来示出。相应的,投射向量集不利地远离数据聚类的统计中心。将向量投射的原点移动到向量空间的中间可以使投射更富成效并且可以生成最佳结果。图12示出了通过匹配过程生成的数据1202,其可以类似于图11所示的数据1101。使用本领域技术人员熟知的统计方法,可以计算偏移以使投射向量居中,如图12所示。在该实例中,向量聚类在典型系统数据的代表性样本上重新居中。通过统计方式查找组中心,其用于将原点偏移到投射向量的中心。例如,可以确定数据聚类的统计平均值(或平均数)。统计平均值(或平均数)可用于使投射向量集居中于数据聚类的近似中间位置。使投射向量重新居中于数据聚类的中间区域改善了上述技术的结果。可以随机地或伪随机地投射向量。伪随机投射包括呈分布式方式的预定投射。例如,机器可以多次生成相同的投射,但是投射可以看起来是随机的。随机投射是随机的,但本领域的技术人员将理解它们实际上是从正态分布中随机选择的。因此,并不是所有的空间定义都相同。如本领域技术人员已知的,可以采用蒙特卡罗方法(montecarlomethod)来选择良好的随机或伪随机投射。一旦选择了合适的足够的随机投射,那么随机投射可用于许多距离确定(例如,以确定许多数据点向量之间的角度),并且不需要改变它,除非期望增加或减少投射数量。由于这是概率计算,结果可能不是正确的答案,但会非常接近正确。技术人员将会明白,结果不一定是“正确的”,而仅仅是足够接近来为大数据应用提供有用的实用程序。为了测量足够的随机分布,执行直接合适性测试,如下面更详细讨论。图13示出了生成待比较数据的一组投射向量的随机(或伪随机)过程的输出。在该实例中,随机过程已经生成过度聚类在一起的向量,其中向量之间的角距离(例如,间隙1302、1304和1306)过度不均匀。随机投射似乎过多聚类在某些值,使得距离或间隙1301、1302和1303显示太大的变化。向量的过度聚类会降低系统的整体精度。例如,当使用投射向量执行匹配或其它过程时,向量之间的不均匀的结果可以包括过多的平均误差。图13中的投射向量集因此不合适。图15中示出了令人满意的分布式随机投射集的实例。例如,图15示出了生成要比较数据的一组投射向量的随机(或伪随机)处理的输出。在该实例中,随机过程已经生成充分均匀聚类的向量,其中向量之间的角距离(例如,间隙1502、1504和1506)是可接受的,并且当使用投射向量执行匹配或其它过程时平均误差将在预定阈值之下(如下面关于图16描述)。如下所述,阈值可以包括任何合适的误差值,诸如5%。投射的合适性可以通过实验一次确定,并保留并用于随机或伪随机生成。例如,投射向量的合适性可以通过执行测试与现有系统相比之下的上述距离确定技术(使用投射来确定参考点和未知点的向量之间的角度)的充分的测试并比较结果来确定。可以使用5%误差的目标作为阈值来确定随机投射向量的合适性。本领域普通技术人员将理解,可以使用任何阈值百分比,这取决于具体应用和期望的所需质量。图14是示出使用图13所示的投射向量的这种测试的结果1400的实例的图1400。图1400示出了被匹配的实际数据与通过本文所描述的使用向量投射的技术所匹配的数据的数据比较。在这个实例中,用于生成多维向量的随机投射没有充分均匀分布,如图13中二维绘制所见。实际数据与缩减数据之间的测量差等于11.9%。图14所示的数据结果相对于阈值误差过大。例如,使用5%的阈值,测试中使用的图13的随机向量不充分,因为11.9%的平均误差高于预定阈值5%。在这种情况下,生成另一组投射以尝试获得令人满意的投射。图15的投射向量包括一组充分均匀分布的向量。例如,图16表示充分性测试的结果1600的实例,其包括使用本文所述的向量投射技术的实际匹配与匹配结果之间的可接受的误差差。图1600示出了被匹配的实际数据与本文所描述的使用向量投射的技术所匹配的数据的数据比较。在该实例中,用于生成多维向量的随机投射充分均匀分布,如图15中二维绘制所见。实际数据与缩减数据之间的测量差等于4.60%,其低于5%的阈值,表明图15所示的随机向量足以获得准确的结果。图17示出了用于识别一个或多个未知数据点的过程1700的实施例。在一些方面,过程1700可由诸如匹配服务器104之类的计算装置执行。过程1700被示出为逻辑流程图,其操作表示可以在硬件、计算机指令或其组合中实现的操作序列。在计算机指令的背景下,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何顺序和/或并行地组合以实现该过程。另外,过程1700可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上通过硬件或其组合集体执行的代码(例如,可执行指令、一个或多个计算机程序,或一个或多个应用程序)。如上所述,代码可以存储在机器可读存储介质上,例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储。机器可读存储介质可以是非暂时性的。在1702中,过程1700包括获得多个参考数据点。在一些实施例中,多个参考数据点包括存储在参考数据库中的数据,如图1所示的参考数据库116。参考数据点可以包括可以与未知数据进行比较以识别未知数据的任何数据。在1704中,过程1700包括确定从原点到多个参考数据点中的参考数据点的第一向量的长度。参考数据点可以包括数据点302,原点可以包括原点o,并且第一向量可以包括图3至图5中所示的参考数据点向量402。长度可以通过任何合适的技术来确定,诸如通过计算第一向量与其自身的点积。在1706中,过程1700包括获得与由显示器呈现的内容相关联的未知数据点。在1708中,过程1700包括确定从原点到未知数据点的第二向量的长度。未知数据点可以包括数据点304,原点可以包括原点o,并且第二向量可以包括图3至图5中所示的未知数据点向量404。长度可以通过任何合适的技术来确定,诸如通过计算第二向量与其自身的点积。在1710中,过程1700包括从原点投射多个向量。在一个实例中,多个投射向量可以包括图7至图10中所示的投射向量。可以随机地生成向量或者可以伪随机地生成向量,如关于图13至图16所讨论。在1712中,过程1700包括确定参考数据点与未知数据点之间的多个向量的数量。在一些实施例中,确定参考数据点与未知数据点之间的多个向量的数量包括确定多个向量中的每个向量是在参考数据的第一向量的代数右边或是代数左边。确定多个向量的投射向量是在第一向量的代数右边或是代数左边可以包括在投射向量和第一向量上执行点积。确定参考数据点与未知数据点之间的多个向量的数量还包括确定多个向量中的每个向量是在未知数据点的第二向量的代数右边或是代数左边。也可以使用点积。确定参考数据点与未知数据点之间的多个向量的数量还包括确定参考数据点与未知数据点之间的多个向量的数量。多个向量的数量包括在第一向量的代数左边并在第二向量的代数右边的向量,或在第一向量的代数右边并在第二向量的代数左边的向量。图9中示出了一个实例作为具有存储的a1值902和b0值904的向量。在一些实例中,过程1700还包括为确定为在参考数据点的第一向量的代数右边的每个向量存储第一二进制值,并且为确定为在参考数据点的第一向量的代数左边的每个向量存储第二二进制值。在一个实例中,第一二进制值可以是0,并且第二二进制值可以是1。在另一个实例中,第一二进制值可以是1,并且第二二进制值可以是0。在一些实例中,过程1700还包括为确定为在未知数据点的第二向量的代数右边的每个向量存储第一二进制值,并且为确定为在未知数据点的第二向量的代数左边的每个向量存储第二二进制值。在一个实例中,第一二进制值可以是0,并且第二二进制值可以是1。在另一个实例中,第一二进制值可以是1,并且第二二进制值可以是0。在一些实例中,在确定参考数据点的第一向量的长度之后,并且在确定多个向量的每个向量是在第一向量的代数右边或在其代数左边之后,丢弃参考数据点。例如,表示参考数据点的位可以从存储器中移除。丢弃参考数据点允许由匹配系统存储较少的信息。在1714中,过程1700包括估计第一向量与第二向量之间的角度。使用多个向量的数量来估计该角度。例如,估计参考数据点的第一向量与未知数据点的第二向量之间的角度包括将常数乘以比率。该比率包括参考数据点与未知数据点之间的多个向量的数量除以多个向量的总数。常数可以包括预定值(例如,180、360或其它合适的数量)。在1716中,过程1700包括确定参考数据点与未知数据点之间的距离。使用第一向量和第二向量的估计角度和确定长度来确定该距离。例如,确定参考数据点与未知数据点之间的距离包括使用第一向量和第二向量的估计角度和确定长度来执行毕达哥拉斯恒等式计算。在1718中,过程1700包括从多个参考数据点识别一个或多个候选数据点。候选数据点是用于匹配未知数据点的候选。一个或多个候选数据点是基于一个或多个参考数据点与未知数据点之间的确定距离来确定的。例如,可以使用最近邻算法来基于距离确定候选。在一些实施例中,过程1700包括确定未知数据点与候选数据点之间的匹配。匹配是基于候选数据点作为一个或多个候选数据点中与未知数据点最接近的数据点的近似匹配。在一些实施例中,过程1700可以通过将未知数据点与一个或多个候选数据点进行比较以识别未知数据点来确定匹配。在一些实例中,可以使用路径追踪算法来识别未知数据点。由本文描述的系统和方法执行的技术可以应用于收获和操纵大量数据的任何系统。如上所述,这些系统的说明性实例包括基于内容的自动搜索系统(例如,用于视频相关应用或其它合适应用的自动内容识别)、mapreduce系统、bigtable系统、模式识别系统、面部识别系统、分类系统、计算机视觉系统、数据压缩系统、聚类分析,或任何其它合适的系统。本领域普通技术人员将理解,本文描述的技术可以应用于存储与未知数据进行比较的数据的任何其它系统。在自动内容识别(acr)的背景下,例如,上述技术可以缩减必须存储的数据量,以便匹配系统搜索并查找未知和已知数据组之间的关系。例如,在本文描述的方法和系统的许多应用中,向量投射技术允许识别由显示器(例如,电视(tv)、智能电视、具有有线或卫星馈送的电视、互联网启用的视频机顶盒、移动装置,或任何其它观看装置)呈现的音频和/或视频信息的媒体片段。此外,片段识别系统可以准确地识别任何类型的片段是否正在广播,包括先前录制的节目,或包括商业消息。通过使用向量投射技术,基于视频的acr系统可以缩减必须存储以供参考的视频数据量。下面将电视节目的匹配视频片段用作为本文描述的向量投射技术的应用的一个实例。然而,本领域普通技术人员将理解,本文描述的技术和系统可以应用任何数量的大数据库搜索、分析和比较问题,在一般意义上也称为“大数据分析”。图18示出了可以使用本文描述的向量投射技术来提高数据效率的视频匹配系统1800的实例。包括电视系统的客户端装置1802的电视(tv)客户端1806,可以解码与视频节目1828相关联的电视信号。tv客户端1806可以将视频的每一帧的解码内容放置在视频帧缓冲器以准备用于显示或进一步处理视频帧的像素信息。客户端装置1802可以是能够接收和解码视频信号的任何电视解码系统。客户端装置1802可以接收视频节目1828并将视频信息存储在视频缓冲器(未示出)中。客户端装置1802可以处理视频缓冲器信息并产生未知数据点(其可以被称为“提示”),下面参照图20更详细地描述。电视客户端1806可以将未知数据点发送到视频匹配服务器1804,以与参考数据库1816中的参考数据点进行比较,类似于上述技术。匹配系统1800可以通过首先从已知视频数据源1818收集数据样本来开始匹配视频片段的过程。例如,视频匹配服务器1804从多种视频数据源1818收集数据以构建并维护参考视频数据库1816。视频数据源1818可以包括电视节目、电影或任何其它合适的视频源。视频数据源1818可以作为空中广播、作为有线电视频道、作为来自互联网的流媒体以及从任何其它视频数据源提供。在一些实施例中,视频匹配服务器1804可以处理从视频数据源1818接收的视频,以生成并收集参考数据库1816中的参考视频数据点,如以下关于图18所描述。在一些实施例中,来自视频数据源1818的视频节目可以由参考视频节目摄取系统(未示出)来处理,该系统可以产生参考视频数据点并将它们发送到参考数据库1816进行存储。可以如上所述使用参考数据点来确定然后用于分析未知数据点的信息。例如,可以关于多个投射向量来分析参考数据点,以获得左二进制数据和右二进制数据。也可以确定与参考数据点相关的向量的长度。一旦为参考数据点确定了参考数据点向量的长度以及左二进制数据和右二进制数据,那么可以丢弃实际的参考数据点位。视频匹配服务器1804可以将一段时间(例如,数天、数周、数月或任何其它合适的时间段)接收的每个视频节目的参考视频数据点存储在参考数据库1816中,直到确定必要的信息。视频匹配服务器1804可以构建并连续地或周期性地更新电视节目样本的参考数据库1816(例如,包括参考数据点,其也可以被称为提示或提示值)。在一些实例中,收集的数据是从周期性视频帧(例如,每第五个视频帧、每第十个视频帧、每第十五个视频帧,或其它适当编号的帧)采样的视频信息的压缩表示。在一些实例中,为每个节目源收集每帧数据的字节数(例如,25个字节、50个字节、75个字节、100个字节,或每帧的任何其它字节量)。可以使用任何数量的节目源来获得视频,诸如25个通道、50个通道、75个通道、100个通道、200个通道或任何其它数量的节目源。使用实例数据量,在三天内的24小时期间收集的总数据变得非常大。因此,丢弃实际的参考视频数据点位有利于缩减视频匹配服务器1804的存储负载。在一个说明性实例中,图19示出了包括解码器的存储缓冲器1902的视频摄取捕获系统1900。解码器可以是视频匹配服务器1804或电视客户端1806的一部分。解码器可能不与实体电视显示面板或装置一起操作或不需要实体电视显示面板或装置。解码器可以解码,并且在需要时将数字视频节目解密成电视节目的未压缩位图表示。为了构建参考视频数据的参考数据库(例如,参考数据库1816),视频匹配服务器1804可以获取从视频帧缓冲器读取的一个或多个视频像素阵列。视频像素阵列被称为视频块。视频块可以是任何任意的形状或图案,但是为了该特定实例的目的,将其描述为10×10像素阵列,其中包括水平的10个像素乘以垂直的10个像素。此外,为了该实例的目的,假设从视频帧缓冲器内提取均匀分布在缓冲器的边界内的25个像素块位置。像素块(例如,像素块1904)的示例分配如图19所示。如上所述,像素块可以包括诸如10×10阵列的像素阵列。例如,像素块1904包括10×10像素阵列。像素可以包括颜色值,诸如红色值、绿色值和蓝色值。例如,示出了具有红-绿-蓝(rgb)颜色值的像素1906。像素的颜色值可以由每种颜色的八位二进制值表示。可以用于表示像素的颜色的其它合适的颜色值,包括亮度和色度(y,cb,cr)值或任何其它合适的颜色值。取每个像素块的平均值(或某些情况下的平均值),并且创建并使用时间码(或时间戳)标记结果数据记录。例如,针对每个10×10像素块阵列查找平均值,在这种情况下,每二十五个显示缓冲器位置产生二十四位数据,每帧总共有600位像素信息。在一个实例中,计算像素块1904的平均值,并且由像素块平均值1908示出。在一个说明性实例中,时间码可以包括表示从1970年1月1日午夜开始的总用时(以秒为单位)的“新纪元时间”。例如,像素块平均值1908用时间码1912组装。新纪元时间是计算系统包括例如基于unix的系统中被接受的惯例。称为元数据的关于视频节目的信息被附加到数据记录。元数据可以包括关于节目的任何信息,诸如节目标识符、节目时间、节目长度或任何其它信息。包括像素块的平均值、时间码和元数据的数据记录形成“数据点”(也称为“提示”)。数据点1910是参考视频数据点的一个实例。识别未知视频片段的过程以类似于创建参考数据库的步骤开始。例如,图20示出了包括解码器的存储缓冲器2002的视频捕获系统2000。视频捕获系统2000可以是处理由显示器呈现的电视数据(例如,在互联网连接的电视监视器上,诸如智能电视、移动装置或其它电视观看装置)的客户端装置1802(例如,电视系统)的一部分。视频捕获系统2000可以利用与系统1900用于创建参考视频数据点1910的过程类似的过程来生成未知视频数据点2010。在一个实例中,tv客户端1806可以将未知视频数据点2010传送到视频匹配服务器1804以由匹配服务器1804识别。如图20所示,视频块2004可以包括10×10像素阵列。可以从由显示器呈现的视频帧中提取视频块2004。可以从视频帧中提取多个这类像素块。在一个说明性实例中,如果从视频帧中提取了二十五个这类像素块,那么结果将是表示75维空间中的位置的点。可以对阵列的每个颜色值(例如,rgb颜色值,y、cr、cb颜色值,或类似的)计算平均值。由平均像素值形成数据记录(例如,未知视频数据点2010),并且将当前时间附加到数据。可以使用上述向量投射技术将一个或多个未知视频数据点发送到视频匹配服务器1804以与来自参考数据库1816的数据进行匹配。本领域技术人员将知晓,存储实际参考数据点位值的参考数据库1816创建大搜索空间,将需要大量的计算资源来搜索和匹配数据。本文描述的向量投射技术提供了显着更有效的方式来搜索大数据库,而不需要实际存储表示参考数据点的大值(也称为参考数据提示)。图21示出了用于识别视频内容(例如,由显示器显示的视频内容)的过程2100的实施例。在某些方面,过程2100可以由诸如视频匹配服务器1804的计算装置来执行。过程2100被示为逻辑流程图,其操作表示可以在硬件、计算机指令或其组合中实现的操作序列。在计算机指令的背景下,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,执行所列举的操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何顺序和/或并行地组合以实现该过程。另外,过程2100可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上通过硬件或其组合集体执行的代码(例如,可执行指令、一个或多个计算机程序,或一个或多个应用程序)。如上所述,代码可以存储在机器可读存储介质上,例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储。机器可读存储介质可以是非暂时性的。在2102中,过程2100包括获得多个参考视频数据点。在一些实施例中,多个参考视频数据点包括从一个或多个视频帧提取的视频数据。参考视频数据点可以包括图19中所示的数据点1910,包括像素块的平均像素值、时间码和元数据。在一些实施例中,参考视频数据点可以不包括元数据和/或时间码。在一些实施例中,像素数据可以用于帧的每个像素,而不是像素块。在2104中,过程2100包括确定从原点到多个参考视频数据点中的参考视频数据点的第一向量的长度。原点可以包括原点o,并且第一向量可以包括图3至图5中所示的参考数据点向量402。长度可以通过任何合适的技术来确定,例如通过计算第一向量与其自身的点积。在2106中,过程2100包括获得与由显示器呈现的视频内容相关联的未知视频数据点。未知视频数据点可以包括图20中所示的数据点2010,包括与视频帧相关联的像素块的平均像素值和当前时间(称为时间码)。在一些实施例中,未知视频数据点可以不包括时间码。在一些实施例中,像素数据可以用于帧的每个像素,而不是像素块。在2108中,过程2100包括确定从原点到未知视频数据点的第二向量的长度。原点可以包括原点o,并且第二向量可以包括图3至图5中所示的未知数据点向量404。长度可以通过任何合适的技术来确定,例如通过计算第二向量与其自身的点积。在2110中,过程2100包括从原点投射多个向量。在一个实例中,多个投射向量可以包括图7至图10中所示的投射向量。可以随机地生成向量或者可以伪随机地生成向量,如关于图13至图16所讨论。在2112中,过程2100包括确定参考视频数据点与未知视频数据点之间的多个向量的数量。在一些实施例中,确定参考视频数据点与未知视频数据点之间的多个向量的数量包括确定多个向量中的每个向量是在参考视频数据点的第一向量的代数右边或是代数左边。确定多个向量的投射向量是在第一向量的代数右边或是代数左边可以包括在投射向量和第一向量上执行点积。确定参考视频数据点与未知视频数据点之间的多个向量的数量还包括确定多个向量中的每个向量是在未知视频数据点的第二向量的代数右边或是代数左边。也可以使用点积。确定参考视频数据点与未知视频数据点之间的多个向量的数量还包括确定参考视频数据点与未知视频数据点之间的多个向量的数量。多个向量的数量包括在第一向量的代数左边并在第二向量的代数右边的向量,或在第一向量的代数右边并在第二向量的代数左边的向量。图9中示出了一个实例作为具有存储的a1值902和b0值904的向量。在一些实例中,过程2100还包括为确定为在参考视频数据点的第一向量的代数右边的每个向量存储第一二进制值,并且为确定为在参考视频数据点的第一向量的代数左边的每个向量存储第二二进制值。在一个实例中,第一二进制值可以是0,并且第二二进制值可以是1。在另一个实例中,第一二进制值可以是1,并且第二二进制值可以是0。在一些实例中,过程2100还包括为确定为未知视频数据点的第二向量的代数右边的每个向量存储第一二进制值,并且为确定为在未知视频数据点的第二向量的代数左边的每个向量存储第二二进制值。在一个实例中,第一二进制值可以是0,并且第二二进制值可以是1。在另一个实例中,第一二进制值可以是1,并且第二二进制值可以是0。在一些实例中,在确定参考视频数据点的第一向量的长度之后,并且在确定多个向量的每个向量是在第一向量的代数右边或在其代数左边之后,丢弃参考视频数据点。例如,表示参考视频数据点的位可以从存储器中移除。丢弃参考时视频数据点允许由匹配系统存储较少的信息。在2114中,过程2100包括估计第一向量与第二向量之间的角度。使用多个向量的数量来估计该角度。例如,估计参考视频数据点的第一向量与未知视频数据点的第二向量之间的角度包括将常数乘以比率。该比率包括参考视频数据点与未知视频数据点之间的多个向量的数量除以多个向量的总数。常数可以包括预定值(例如,180、360或其它合适的数量)。在2116中,过程2100包括确定参考视频数据点与未知视频数据点之间的距离。使用第一向量和第二向量的估计角度和确定长度来确定该距离。例如,确定参考视频数据点与未知视频数据点之间的距离包括使用第一向量和第二向量的估计角度和确定长度来执行毕达哥拉斯恒等式计算。在2118中,过程2100包括从多个参考视频数据点识别一个或多个候选视频数据点。候选视频数据点是用于匹配未知视频数据点的候选。一个或多个候选视频数据点是基于一个或多个参考视频数据点与未知视频数据点之间的确定距离来确定的。例如,可以使用最近邻算法来基于距离确定候选。在2120中,过程2100包括识别由显示器呈现的视频内容。通过将未知视频数据点与一个或多个候选视频数据点进行比较来识别由显示器呈现的视频内容。例如,识别由显示器呈现的视频内容包括确定未知视频数据点和候选视频数据点之间的匹配。匹配是基于候选视频数据点作为一个或多个候选视频数据点中与未知视频数据点最接近的视频数据点的近似匹配。在一些实例中,可以使用路径追踪算法来识别呈现的视频内容。现在详细描述前面提到的最近邻技术和路径追踪技术。给出使用模糊提示追踪视频传输的实例,但是通用概念可以应用于诸如上述的那些领域。提出了一种有效的视频追踪方法。给定大量的视频片段,系统必须能够实时识别是从给定的查询视频输入中提取的什么片段以及在什么时间偏移。片段和偏移一起被称为位置。该方法被称为视频追踪,因为它必须能够有效地检测和适于暂停、快速转发、倒回、突然切换到其它片段并切换到未知片段。在能够追踪直播视频之前,处理数据库。视觉提示(少量像素值)以每恒定秒数从帧中获取,并放入专门的数据结构中(注意,这也可以实时完成)。视频追踪是通过从输入视频连续接收提示并更新关于其当前位置的一组观点或估计来执行。每个提示同意或者不同意所述估计,并进行调整以反映新的证据。如果对此的信心足够高,那么视频位置被认为是正确的。通过追踪一小组可能的“可疑”位置,可以有效地完成此操作。描述了用于视频追踪的方法,但是使用数学构造来解释和研究。这个介绍的目的是为读者提供必要的工具来在两个领域之间进行翻译。视频信号由序列帧组成。每个都可以被认为是静止图像。每一个帧都是像素的栅格。每个像素由对应于该像素的颜色红色、绿色和蓝色(rgb)的三个强度值构成。在本文的术语中,提示是帧中的像素的子集的rgb值和相应的时间戳的列表。提示中的像素数明显小于帧中,通常在5个到15个之间。作为标量值的有序列表,提示值实际上是向量。该向量也称为点。虽然这些点呈高维度,通常在15个到150个之间,但是它们可以被想象成呈二维的点。事实上,附图将作为二维图给出。现在,考虑一个视频的进展及其相应的提示点。通常,小的时间变化会产生像素值的小变化。像素点可以看作是帧之间“移动”了一点。在从帧到帧的这些微小的运动之后,提示遵循空间中的路径,如同弯曲的线上的珠子。用这种类比的语言,在视频追踪中,接收到空间中的珠的位置(提示点),并且查找珠所遵循的线部分(路径)。这因为两个事实变得更加困难。首先,珠子不完全遵循线,而是与其保持一定变化的未知距离。其次,线都缠结在一起。这些说明在第2节中作了准确的描述。下面描述的算法在两个概念性步骤中进行。当接收到提示时,它会查找足够靠近提示点的所有已知路径上的所有点;这些被称为可疑点。使用等球中的概率点位置算法(probabilisticpointlocationinequalballsalgorithm)可以有效地完成此项。这些可疑点被添加到历史数据结构中,并且计算每个可疑点指示真实位置的概率。该步骤还包括移除充分不可能的可疑位置。这个历史更新过程确保一方面只保留一小段历史,而另一方面将不可能的位置永远删除。通用算法在算法1中给出,并如图22所示。该文件以描述第1节中的等球中的概率点位置(ppleb)算法开始。其用以有效地执行算法1中第5行。对可疑点执行快速搜索的能力对于这种方法的适用性至关重要。随后,在第2节中,描述了一个可能的统计模型,用于执行第6行和第7行。所描述的模型是设置的自然选择。还示出了如何非常有效地使用它。第1节-等球中的概率点位置以下节描述了用于执行等球中的概率点位置(ppleb)的简单算法。在传统的pleb(等球中的点位置)中,一个以在lrd和一个指定的半径为r的球中的一组n点x开始。该算法给出o(poly(n)))预处理时间以产生有效的数据结构。然后,给定查询点x,需要算法返回所有点x,使得||x-xi||≤r。该组的点,使得||x-xi||≤r几何地位于围绕查询x的半径为r的球内(见图23)。该关系称作为x,接近x,或作为x以及x是邻近的。ppleb的问题和最近邻搜索的问题是学术界受到很多关注的两个类似的问题。事实上,这些问题是计算几何领域首先研究的问题。许多不同的方法适应于其中环境维度小或恒定的情况。这些以不同的方式分割空间并递归地搜索各部分。这些方法包括kd树、覆盖树等。虽然在低维度上非常有效,但是当环境维度较大时,它们往往执行得很差。这被称为“维度灾难”。各种方法试图解决这个问题,同时克服维度灾难。本文使用的算法使用更简单和更快速版本的算法,并且可以依赖于局部敏感哈希(localsensitivehashing)。第1.1节局部敏感哈希在局部敏感哈希的方案中,人员设计了一组哈希函数h,使得:换句话说,如果x和y彼此接近,那么它们被映射到相同值h的概率显著更高。为了清楚起见,让我们首先处理简化的场景,其中所有传入向量具有相同的长度r’,且后一种情况的原因将稍后变得清楚。首先,定义一个随机函数u∈u,其根据x与y之间的角度在它们之间分离。令是从单位球体sd-1均匀选择的随机向量,并且令u(x)=符号(见图24)。很容易验证pru-u(u(x))≠u(y))=0x,y/π。此外,对于圆上的任何点x、y、x'、y',使得实现||x'-y'||≤2,||x-y||0x',y≤20x,y。定义p,使用以下等式:函数族h被设置为u的t个独立副本的交叉乘积,即h(x)=[u1(x),...,ut(x)]。直觉上可能想要有,如果h(x)=h(y),那么x和y可能彼此接近。让我们量化一下。首先,计算假正误差的预期数量nfp。这些是h(x)=h(y)但||x-y||>2r的情况。查找到nfp不大于1的值t,即不期望出错的点。e[nft]≤n(1-2p)t≤1→t≥log(1/n)/log(1-2p)现在,计算给定它们是近邻的h(x)=h(y)的概率:注意,这里必须具有2p<1,这需要这可能听起来不是很高的成功概率。的确,明显小于1/2。下一节将介绍如何将这一概率提高到1/2。第1.2节点搜索算法每个函数h将空间中的每个点映射到bucket。将关于哈希函数h的点x的bucket函数定义为bh(x)≡{xi|h(xi)=h(x)}。保持的数据结构是bucket函数[bh1,...,bhm]的实例。当搜索点x时,函数返回根据上一节,有两个理想的结果:pr(xi∈b(x)|||xi-x||≤r)≥1/2换句话说,当发现x的每个近邻的概率至少为1/2时,不太会找到许多非近邻。第1.3节处理不同的半径输入向量前面的章节仅涉及通过相同长度的向量搜索,即r'。现在描述的是如何将建构作为构建块来支持不同半径的搜索。如图25所示,空间分为指数增长宽度的环。由ri表示的环i包括所有点xi,使得‖xi‖∈[2r(1+∈)i,2r(1+∈)i+1]。这样做实现了两个结果。首先,如果xi和xj属于相同的环,那么‖xj‖/(1+∈)≤‖xi‖≤‖xj‖(1+∈)。第二,任何搜索可以在最多1/∈这样的环中进行。此外,如果数据集中的最大长度向量为r',那么系统中的总环数为o(log(r'/r))。第2节路径追踪问题在路径追踪问题中,空间中的固定路径连同粒子在时间点序列中的位置一起被给出。术语粒子、提示和点可互换使用。该算法需要输出粒子在路径上的位置。这会由于以下几个因素而变得更加困难:粒子仅大致遵循路径;路径可以是不连续的,并且自身相交很多次;粒子和路径位置都以时间点序列(每个不同)给出。重要的是要注意,这个问题可以模拟追踪任何数量的路径上的粒子。这通过将路径连接到一个长路径中并将所得位置解释为各个路径上的位置来简单地完成。更精确地,令路径p是参数曲线曲线参数将被称为时间。在任意时间点ti给出了我们已知的路径上的点,即给出了n对(ti,p(ti))。粒子遵循路径,但其位置在不同的时间点给出,如图26所示。此外,给出m对(t'j,x(t'j)),其中x(t'j)是时间t'j中粒子的位置。第2.1节似然估计由于粒子不完全遵循路径,并且由于路径可以自身相交很多次,所以通常不可能明确地识别粒子实际上在路径上的位置。因此,在所有可能的路径位置上计算概率分布。如果位置概率显著可能,那么假设粒子位置是已知的。以下部分将描述如何有效地完成此操作。如果粒子遵循路径,那么粒子时间戳与p上对应点的偏移之间的时间差应该是相对固定的。换句话说,如果x(t')当前在路径上偏移t,那么它应该接近于p(t)。此外,τ秒前它应该已经偏移t-τ。因此,x(t'-τ)应该接近p(t-τ)(注意,如果粒子与路径相交,并且x(t')暂时接近p(t),那么x(t'-τ)和p(t-τ)也将接近)。将相对偏移定义为δ=t-t'。注意,只要粒子遵循路径,相对偏移δ保持不变。即,x(t')接近p(t'+δ)。通过以下计算得到最大似然相对偏移:换句话说,最可能的相对偏移是粒子的历史最有可能的偏移。然而,如果没有统计模型,这个等式是无法解决的。该模型必须量化:遵循路径的紧密程度x;位置之间的x')umps"有多可能;路径和粒子曲线在测量点之间的平滑程度如何。第2.2节时间折扣分箱现在描述了用于估计似然函数的统计模型。该模型假设粒子离开路径的偏差在标准偏差ar下正常地分布。还假设在任何给定的时间点,存在一些非零概率是粒子将突然切换到另一条路径。这表现为过去时间点的指数折扣。除了作为建模观点的合理选择,该模型还具有有效更新的优点。对于某一恒定时间单位1:,将似然函数设置为与f成比例,f定义如下:这里α<<1是比例系数,并且ζ>0是在给定时间单位中粒子将跳转到路径上的随机位置的概率。可以使用以下简单的观察来高效地更新函数f。此外,由于α<<1,如果‖x(t'm)-p(ti)‖≥r,那么发生以下情况:这是似然函数的重要属性,因为总更新现在可以仅在x(t'j)的近邻而不是整个路径上执行。s表示(ti,p(ti))的集合,使得‖x(t'm)-p(ti)‖≤r。发生以下等式:这在下面的算法2.2中描述。项f用作还接收负整数指数的稀疏向量。集合s是路径上x(ti)的所有近邻的集合,并且可以使用ppleb算法快速计算。很容易验证,如果x(ti)的近邻数由某一常数nnear界定,那么向量f中的非零数被限定在nnear/ζ,其只是较大的常数因子。如果高于某个阈值,那么算法的最后阶段是输出δ的特定值。算法2有效似然更新图22给出三个连续的点位置和它们周围的路径点。注意,底点和中间点单独都不足以识别路径的正确部分。然而,它们是一起的。添加顶点增加了粒子确实是路径最终(左)曲线的确定性。在图23中,给定一组n(灰色)点,该算法给出查询点(黑色),并返回位于距其距离r内的点集(圆内的点)。在传统的设置中,该算法必须返回所有这些点。在概率设置中,每个这样的点应仅以某一恒定概率返回。图24示出了u(x1),u(x2)和u(x)的值。直观地,如果虚线在x1与x2之间通过,那么函数u给予它们不同的值,否则给予相同的值。在随机方向上经过虚线确保这种发生的概率与x1和x2之间的角度成正比。图25示出了通过将空间划分成环,使得环ri在半径2r(1+∈)i与2r(1+∈)i+1之间,可以确保环内的任何两个向量是相同的长度最多为(1+∈)因子,并且任何搜索最多在1/∈环中执行。图26示出了自相交路径和查询点(黑色)。它表明,没有粒子位置的历史,就不可能知道它在路径上的位置。图27给出了三个连续的点位置和它们周围的路径点。注意,x(t1)和x(t2)都不足以单独识别路径的正确部分。然而,它们是一起的。添加x(t3)增加了粒子确实是路径最终(左)曲线的确定性。可以根据具体要求进行实质性变更。例如,还可以使用定制硬件,和/或特定元件可以在硬件、软件(包括便携式软件,诸如小应用程序等)或两者中实现。此外,可以采用与其它访问或计算装置诸如网络输入/输出装置的连接。在前述说明书中,参照本发明的具体实施方式对本发明的各方面进行了说明,但是本领域技术人员将认识到本发明不限于此。上述发明的各种特征和方面可以单独使用或共同使用。此外,在不脱离本说明书的更广泛的精神和范围的情况下,实施例可以用于超出本文所描述的任何数量的环境和应用中。因此,说明书和附图被认为是说明性的而不是限制性的。在前述的描述中,为了说明的目的,以特定顺序描述了方法。应当理解,在替代实施例中,可以以与所描述的不同的顺序执行方法。还应当理解,上述方法可以由硬件组件执行,或者可以体现在机器可执行指令的序列中,机器可执行指令可用于使诸如通用或专用处理器之类的机器或者用指令编程的逻辑电路执行这些方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,诸如cd-rom或其它类型的光盘、软盘、rom、ram、eprom、eeprom、磁盘或光卡、闪存或适合于存储电子指令的其它类型的机器可读介质。或者,可以通过硬件和软件的组合来执行这些方法。在将组件描述为被配置为执行某些操作的情况下,可以例如通过设计电子电路或其它硬件来执行操作,通过编程可编程电子电路(例如,微处理器或其它合适的电子电路)以执行操作,或其任何组合来实现这种配置。尽管已经在本文中详细描述了本申请的说明性实施例,但是应当理解,本发明的概念可以以其它方式实施和使用,并且所附权利要求旨在被解释为包括这类变型,除了受限于现有技术。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1