HK1255273B - Optimizing media fingerprint retention to improve system resource utilization - Google Patents
Optimizing media fingerprint retention to improve system resource utilization Download PDFInfo
- Publication number
- HK1255273B HK1255273B HK18114433.6A HK18114433A HK1255273B HK 1255273 B HK1255273 B HK 1255273B HK 18114433 A HK18114433 A HK 18114433A HK 1255273 B HK1255273 B HK 1255273B
- Authority
- HK
- Hong Kong
- Prior art keywords
- data
- pixel
- new
- frame
- pixel data
- Prior art date
Links
Description
相关申请的交叉引用CROSS-REFERENCE TO RELATED APPLICATIONS
本申请要求于2015年7月16日提交的美国临时申请No.62/193,342的权益,其全部内容通过引用并入本文。本申请还通过引用以下内容整体并入:2013年11月25日提交的美国专利申请No.US 14/089,003,2009年5月29日提交的美国临时申请No.61/182,334,2009年12月29日提交的美国临时申请No.61/290,714,2015年5月27日提交的美国申请No.12/788,748和2015年5月27日提交的美国申请No.12/788,721。This application claims the benefit of U.S. Provisional Application No. 62/193,342, filed July 16, 2015, which is hereby incorporated by reference in its entirety. This application also incorporates by reference in its entirety U.S. Patent Application No. 14/089,003, filed November 25, 2013, U.S. Provisional Application No. 61/182,334, filed May 29, 2009, U.S. Provisional Application No. 61/290,714, filed December 29, 2009, U.S. Application No. 12/788,748, filed May 27, 2015, and U.S. Application No. 12/788,721, filed May 27, 2015.
技术领域Technical Field
本公开涉及改进用于识别由媒体系统(例如,电视系统、计算机系统或能够连接到互联网的其它电子设备)显示的内容的系统资源的管理。在一些示例中,提供各种技术和系统来移除发送到匹配服务器的数据的一些部分,以便减少发送到匹配服务器的数据量以及由匹配服务器或与匹配服务器相关联的数据库存储的数据量。The present disclosure relates to improving the management of system resources used to identify content displayed by a media system (e.g., a television system, a computer system, or other electronic device capable of connecting to the Internet). In some examples, various techniques and systems are provided for removing portions of data sent to a matching server in order to reduce the amount of data sent to the matching server and the amount of data stored by the matching server or a database associated with the matching server.
背景技术Background Art
管理密集数据集提供了重大的挑战。例如,在存储、索引和管理大量数据方面存在困难。在使用存储在数据集中的参考数据来搜索和识别数据之间最接近的匹配的系统中可出现这种困难。Managing dense datasets presents significant challenges. For example, there are difficulties in storing, indexing, and managing large amounts of data. This difficulty can arise in systems that use reference data stored in a dataset to search for and identify the closest matches between data.
发明内容Summary of the Invention
提供了用于移除与帧相关联的冗余数据的设备、计算机程序产品和方法。移除可以由媒体系统或匹配服务器执行。在一些实施方式中,提供了一种用于移除冗余数据的设备、计算机程序产品和方法。例如,一种方法可以包括接收初始帧。在一些示例中,初始帧包括像素数据。该方法可以进一步包括确定初始帧的初始线索数据。在一些示例中,初始线索数据包括与初始帧相关联的多个初始像素数据样本。Devices, computer program products, and methods for removing redundant data associated with a frame are provided. The removal can be performed by a media system or a matching server. In some embodiments, a device, computer program product, and method for removing redundant data are provided. For example, a method may include receiving an initial frame. In some examples, the initial frame includes pixel data. The method may further include determining initial clue data for the initial frame. In some examples, the initial clue data includes a plurality of initial pixel data samples associated with the initial frame.
该方法可以进一步包括发送初始线索数据。在一些示例中,初始线索数据被寻址到服务器。该方法可以进一步包括接收新帧。在一些示例中,新帧包括像素数据。该方法可以进一步包括确定新帧的新线索数据。在一些示例中,新线索数据包括与新帧相关联的多个新像素数据样本。该方法可以进一步包括识别像素值范围。在一些示例中,当像素数据样本之间的像素值差在像素值范围内时,像素数据样本被确定为相似。The method may further include sending initial clue data. In some examples, the initial clue data is addressed to a server. The method may further include receiving a new frame. In some examples, the new frame includes pixel data. The method may further include determining new clue data for the new frame. In some examples, the new clue data includes a plurality of new pixel data samples associated with the new frame. The method may further include identifying a pixel value range. In some examples, the pixel data samples are determined to be similar when a pixel value difference between the pixel data samples is within the pixel value range.
该方法可以进一步包括确定初始像素数据样本与新像素数据样本之间的像素值差。在一些示例中,初始像素数据样本对应于新像素数据样本。该方法可以进一步包括确定像素值差在像素值范围内。该方法可以进一步包括:当像素值差在像素值范围内时,通过从新线索数据中移除新像素数据样本来更新新线索数据。该方法可以进一步包括发送更新的新线索数据。在一些示例中,更新的新线索数据被寻址到服务器。The method may further include determining a pixel value difference between the initial pixel data sample and the new pixel data sample. In some examples, the initial pixel data sample corresponds to the new pixel data sample. The method may further include determining that the pixel value difference is within a pixel value range. The method may further include, when the pixel value difference is within the pixel value range, updating the new clue data by removing the new pixel data sample from the new clue data. The method may further include sending the updated new clue data. In some examples, the updated new clue data is addressed to a server.
在一些实施方式中,该方法可以进一步包括发送指示从新线索数据中移除新像素数据样本的标志。在一些示例中,标志被寻址到服务器。In some embodiments, the method may further include sending a flag indicating removal of the new pixel data sample from the new clue data. In some examples, the flag is addressed to a server.
在一些实施方式中,该方法可以进一步包括发送指示从新线索数据中移除一行像素数据样本的标志。在这种实施方式中,新像素数据样本被包括在该行中。在一些示例中,标志被寻址到服务器。In some embodiments, the method may further include sending a flag indicating removal of a row of pixel data samples from the new clue data. In such embodiments, the new pixel data samples are included in the row. In some examples, the flag is addressed to the server.
在一些实施方式中,像素数据样本从像素块计算。在一些示例中,标志被寻址到服务器。在这种实施方式中,像素块包括帧的像素阵列。在一些实施方式中,像素数据样本通过取像素块中的像素的像素值的平均值来计算。In some embodiments, the pixel data sample is calculated from the pixel block. In some examples, the flag is addressed to the server. In such embodiments, the pixel block comprises an array of pixels of a frame. In some embodiments, the pixel data sample is calculated by taking the average of the pixel values of the pixels in the pixel block.
在一些实施方式中,提供了用于将数据与移除的一个或多个部分匹配的设备、计算机程序产品和方法。例如,该方法可以包括将多个参考数据集存储在参考数据库中。在一些示例中,参考数据集与媒体段相关联。该方法可以进一步包括由服务器接收帧的线索数据。在一些示例中,线索数据包括来自帧的多个像素数据样本。在一些示例中,该帧与未识别的媒体段相关联。In some embodiments, an apparatus, computer program product, and method for matching data to one or more removed portions are provided. For example, the method may include storing a plurality of reference data sets in a reference database. In some examples, the reference data sets are associated with media segments. The method may further include receiving, by a server, clue data for a frame. In some examples, the clue data includes a plurality of pixel data samples from a frame. In some examples, the frame is associated with an unrecognized media segment.
该方法可以进一步包括识别帧的线索数据中不存在像素数据样本。该方法可以进一步包括将帧的线索数据与参考数据集匹配。在一些示例中,匹配包括使用先前线索数据的先前像素数据样本。在一些示例中,先前线索数据来自先前帧。在一些示例中,先前像素数据样本对应于不存在于帧中的像素数据样本。在一些示例中,参考数据集与媒体段相关联。该方法可以进一步包括确定未识别的媒体段是该媒体段。The method may further include identifying a pixel data sample that is absent from the clue data for the frame. The method may further include matching the clue data for the frame to a reference dataset. In some examples, the matching includes using a previous pixel data sample from previous clue data. In some examples, the previous clue data is from a previous frame. In some examples, the previous pixel data sample corresponds to a pixel data sample that is absent from the frame. In some examples, the reference dataset is associated with a media segment. The method may further include determining that the unidentified media segment is the media segment.
在一些实施方式中,该方法可以进一步包括接收指示像素数据样本不存在于线索数据的标志。在这种实施方式中,像素数据样本的不存在使用标志来识别。In some embodiments, the method may further include receiving a flag indicating that the pixel data sample is not present in the clue data. In such embodiments, the absence of the pixel data sample is identified using the flag.
在一些实施方式中,该方法可以进一步包括接收指示一行像素数据样本不存在于线索数据的标志。在这种实施方式中,像素数据样本被包括在行中。In some embodiments, the method may further include receiving a flag indicating that a row of pixel data samples is not present in the clue data. In such embodiments, the pixel data samples are included in the row.
在一些实施方式中,识别不存在像素数据样本包括分析线索数据以寻找丢失的像素数据样本。In some implementations, identifying the absence of pixel data samples includes analyzing clue data for missing pixel data samples.
在一些实施方式中,该方法可以进一步包括识别先前的线索数据。在这种实施方式中,该方法可以进一步包括确定先前的线索数据包括先前的像素数据样本。In some embodiments, the method may further include identifying previous clue data. In such embodiments, the method may further include determining that the previous clue data comprises a previous pixel data sample.
在一些实施方式中,该方法可以进一步包括识别先前的线索数据。在这种实施方式中,该方法可以进一步包括确定先前的像素数据样本不存在于先前的线索数据。在这种实施方式中,该方法可以进一步包括确定使用先前的像素数据样本来将帧的线索数据与参考数据集进行匹配。In some embodiments, the method may further include identifying previous clue data. In such embodiments, the method may further include determining that the previous pixel data sample does not exist in the previous clue data. In such embodiments, the method may further include determining to use the previous pixel data sample to match the clue data of the frame to the reference data set.
当参考附图来阅读以下描述时,本公开的特征、方面和优点将是最容易理解的,在该附图中相同的数字标识在整个附图中表示相同的组件或部分。The features, aspects, and advantages of the present disclosure will be most readily understood when the following description is read with reference to the accompanying drawings, in which like numerals refer to like components or parts throughout.
附图说明BRIEF DESCRIPTION OF THE DRAWINGS
以下参考以下附图详细描述说明性示例:Illustrative examples are described in detail below with reference to the following drawings:
图1是用于识别由媒体系统正在观看的视频内容的匹配系统的示例的框图。1 is a block diagram of an example of a matching system for identifying video content being viewed by a media system.
图2示出识别未知数据点的匹配系统的示例。FIG. 2 illustrates an example of a matching system for identifying unknown data points.
图3是视频捕捉系统的示例的框图。3 is a block diagram of an example of a video capture system.
图4是用于收集由显示器呈现的视频内容的系统的示例的框图。4 is a block diagram of an example of a system for collecting video content presented by a display.
图5示出可以发送到匹配服务器的帧序列的示例。FIG. 5 shows an example of a sequence of frames that may be sent to a matching server.
图6示出移除了若干行的像素数据样本的帧序列的示例。FIG. 6 shows an example of a frame sequence with several rows of pixel data samples removed.
图7示出帧序列的示例,这些帧未被发送到匹配服务器。FIG. 7 shows an example of a sequence of frames that are not sent to the matching server.
图8是示出用于从帧的线索数据丢弃像素数据样本的过程的示例的流程图。8 is a flow diagram illustrating an example of a process for discarding pixel data samples from clue data for a frame.
图9是示出用于使用初始帧数据来确定未识别的媒体段以补充新帧数据的过程的示例的流程图。9 is a flow chart illustrating an example of a process for using initial frame data to determine unidentified media segments to supplement new frame data.
图10是示出点位置和它们周围的路径点的图表。FIG. 10 is a diagram showing point locations and their surrounding waypoints.
图11是示出位于距查询点的距离内的一组点的图表。FIG. 11 is a graph showing a set of points that are within a distance from a query point.
图12是示出可能的点值的图表。FIG. 12 is a chart showing possible point values.
图13是示出被分割成具有指数增长的宽度的若干环的空间的图表。FIG. 13 is a diagram showing a space partitioned into rings of exponentially increasing width.
图14是示出自相交路径和查询点的图表。FIG. 14 is a diagram illustrating self-intersecting paths and query points.
图15是示出三个连续的点位置和它们周围的路径点的图表。FIG. 15 is a diagram showing three consecutive point locations and their surrounding waypoints.
具体实施方式DETAILED DESCRIPTION
在下面的描述中,出于解释的目的,阐述了具体细节以便提供对本公开的示例的透彻理解。然而,显而易见的是,可以在没有这些具体细节的情况下实践各种示例。附图和描述不旨在是限制性的。In the following description, for the purpose of explanation, specific details are set forth in order to provide a thorough understanding of the examples of the present disclosure. However, it is apparent that the various examples can be practiced without these specific details. The drawings and descriptions are not intended to be limiting.
接下来的描述仅提供示例性示例,而不旨在限制本公开的范围、适用性或配置。相反,示例性示例的随后描述将向本领域技术人员提供用于实施示例性示例的可能描述。应该理解的是,在不脱离如所附权利要求阐述的本公开的精神和范围的情况下,可以对各要素的功能和布置进行各种改变。The following description provides only exemplary examples and is not intended to limit the scope, applicability, or configuration of the present disclosure. On the contrary, the subsequent description of the exemplary examples will provide those skilled in the art with possible descriptions for implementing the exemplary examples. It should be understood that various changes may be made to the function and arrangement of the various elements without departing from the spirit and scope of the present disclosure as set forth in the appended claims.
在以下描述中给出具体细节以提供对示例的透彻理解。然而,本领域的普通技术人员将会理解,可以在没有这些具体细节的情况下实践这些示例。例如,电路、系统、网络、过程和其它组件可以以框图形式显示为组件,以免以不必要的细节使示例变得晦涩难懂。在其它情况下,为了避免使这些示例变得晦涩难懂,可以在没有不必要的细节的情况下示出公知的电路、过程、算法、结构和技术。Specific details are provided in the following description to provide a thorough understanding of the examples. However, one of ordinary skill in the art will appreciate that the examples can be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form to avoid obscuring the examples with unnecessary detail. In other cases, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail to avoid obscuring the examples.
另外,应注意的是,各个示例可被描述为过程,所述过程被描绘为流程图、流程示图、数据流程图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但是许多操作可以并行或同时执行。另外,操作的顺序可以重新排列。过程在操作完成时被终止,但是可以具有不包括在图中的额外步骤。过程可以对应于方法、功能、程序、子例程、子程序等。当过程对应于函数时,其终止可以对应于将功能返回到调用函数或主函数。In addition, it should be noted that various examples may be described as processes, which are depicted as flow charts, flow diagrams, data flow diagrams, structure diagrams, or block diagrams. Although a flow chart may describe operations as a sequential process, many operations may be performed in parallel or simultaneously. In addition, the order of the operations may be rearranged. A process is terminated when the operations are completed, but may have additional steps not included in the diagram. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its termination may correspond to returning the functionality to the calling function or the main function.
术语“机器可读存储介质”或“计算机可读存储介质”包括但不限于便携式或非便携式存储设备、光存储设备以及能够存储、包含或携带指令和/或数据的各种其它介质。机器可读存储介质或计算机可读存储介质可以包括其中可以存储数据的非暂态介质并且不包括无线地或通过有线连接传播的载波和/或暂态电子信号。非暂态介质的示例可以包括但不限于磁盘或磁带,诸如光盘(CD)或数字多功能盘(DVD)的光存储介质、闪速存储器、存储器或存储器设备。计算机程序产品可以包括表示程序、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合的代码和/或机器可执行指令。一代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一代码段或硬件电路。信息、自变量、参数、数据或其它信息可以使用包括存储器共享、消息传递、令牌传递、网络传输或其它传输技术的任何合适的手段来传递、转发或发送。The term "machine-readable storage medium" or "computer-readable storage medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or carrying instructions and/or data. A machine-readable storage medium or computer-readable storage medium may include non-transient media in which data can be stored and does not include carrier waves and/or transient electronic signals that are transmitted wirelessly or via a wired connection. Examples of non-transient media may include, but are not limited to, disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), flash memory, memory, or storage devices. A computer program product may include code and/or machine-executable instructions representing any combination of a program, function, subroutine, program, routine, subroutine, module, software package, class, or instruction, data structure, or program statement. A code segment may be coupled to another code segment or hardware circuit by passing and/or receiving information, data, independent variables, parameters, or memory contents. Information, independent variables, parameters, data, or other information may be passed, forwarded, or sent using any suitable means including memory sharing, message passing, token passing, network transmission, or other transmission technology.
此外,可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现示例。当以软件、固件、中间件或微代码实现时,执行必要任务(例如,计算机程序产品)的程序代码或代码段可存储在机器可读介质中。处理器可以执行必要的任务。Furthermore, examples may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments that perform the necessary tasks (e.g., a computer program product) may be stored in a machine-readable medium. A processor may perform the necessary tasks.
在一些附图中描绘的系统可以以各种配置来提供。在一些示例中,系统可以被配置为分布式系统,其中系统的一个或多个组件横跨云计算系统中的一个或多个网络分布。The systems depicted in some figures can be provided in various configurations. In some examples, the system can be configured as a distributed system, where one or more components of the system are distributed across one or more networks in a cloud computing system.
如下面进一步详细描述的,本公开的某些方面和特征涉及通过将未知数据点与一个或多个参考数据点进行比较来识别未知视频段。本文描述的系统和方法提高了存储和搜索用于识别未知视频段的大数据集的效率。例如,该系统和方法允许识别未知数据段,同时减少执行识别所需的大数据集的密度。该技术可以应用于收获和操纵大量数据的任何系统。这些系统的说明性示例包括自动化的基于内容的搜索系统(例如,用于视频相关应用程序或其它合适的应用程序的自动内容识别)、Map Reduce系统、Big table系统、图案识别系统、面部识别系统、分类系统、计算机视觉系统、数据压缩系统、聚类分析或任何其它合适的系统。本领域的普通技术人员将认识到,本文描述的技术可以应用于存储与未知数据进行比较的数据的任何其它系统。例如,在自动内容识别(ACR)的情况下,系统和方法减少了为使匹配系统搜索并找到未知数据组和已知数据组之间的关系所必须存储的数据量。As described in further detail below, certain aspects and features of the present disclosure relate to identifying unknown video segments by comparing unknown data points with one or more reference data points. The systems and methods described herein improve the efficiency of storing and searching large data sets for identifying unknown video segments. For example, the systems and methods allow the identification of unknown data segments while reducing the density of the large data sets required to perform the identification. The technology can be applied to any system that harvests and manipulates large amounts of data. Illustrative examples of these systems include automated content-based search systems (e.g., automatic content recognition for video-related applications or other suitable applications), Map Reduce systems, Big table systems, pattern recognition systems, facial recognition systems, classification systems, computer vision systems, data compression systems, cluster analysis, or any other suitable system. Those of ordinary skill in the art will recognize that the technology described herein can be applied to any other system that stores data for comparison with unknown data. For example, in the case of automatic content recognition (ACR), the system and method reduce the amount of data that must be stored to enable the matching system to search and find the relationship between unknown data groups and known data groups.
仅作为示例而非限制,为了说明的目的,本文描述的一些示例使用自动音频和/或视频内容识别系统。然而,本领域的普通技术人员将认识到,其它系统可以使用相同的技术。By way of example only and not limitation, for purposes of illustration, some of the examples described herein use automatic audio and/or video content recognition systems. However, one of ordinary skill in the art will recognize that other systems may use the same technology.
使用大量数据的ACR系统和其它系统的重大挑战可能是管理系统发挥其作用所需的数据量。另一个挑战包括需要建立和维护已知内容的数据库以作为匹配传入内容的参考。建立和维护这种数据库涉及收集和摘录大量(例如,数百、数千或更多)的内容(例如,全国分布的电视节目和在许多其它潜在的内容源中的更大量的本地电视广播)。可以使用将原始数据(例如,视频或音频)精简为经压缩的可搜索的数据的任何可用技术来执行摘录。通过24小时,每周7天的操作时间表和大概两周内容(例如电视节目)的滑动窗口来存储,执行ACR所需的数据量可以迅速建立。收获和操纵大量数据的其它系统(诸如上述示例系统)可能存在类似的挑战。A significant challenge with ACR systems and other systems that use large amounts of data can be the volume of data required to manage the system to do its job. Another challenge includes the need to establish and maintain a database of known content to use as a reference for matching incoming content. Establishing and maintaining such a database involves collecting and extracting large amounts (e.g., hundreds, thousands, or more) of content (e.g., nationally distributed television programs and an even larger number of local television broadcasts among many other potential content sources). Extraction can be performed using any available technology that reduces raw data (e.g., video or audio) to compressed, searchable data. With a 24-hour, 7-day-a-week operating schedule and a sliding window of approximately two weeks of content (e.g., television programs) to store, the volume of data required to perform ACR can be quickly established. Similar challenges may exist for other systems that harvest and manipulate large amounts of data, such as the example systems described above.
本文描述的系统和方法可以允许对ACR系统中的系统资源的改进管理。例如,示例可以通过管理发送到和/或存储在ACR系统上的数据来提高系统资源利用的效率。尽管本文的描述可以涉及视频段,但是也可以使用其它的媒体段,包括音频段。The systems and methods described herein may allow for improved management of system resources in an ACR system. For example, examples may improve the efficiency of system resource utilization by managing data sent to and/or stored on the ACR system. Although the description herein may relate to video segments, other media segments, including audio segments, may also be used.
图1示出可以识别未知内容的匹配系统100。在一些示例中,未知内容可以包括一个或多个未知数据点。在这种示例中,匹配系统100可以将未知数据点与参考数据点匹配以识别与未知数据点相关联的未知视频段。参考数据点可以被包括在参考数据库116中。FIG1 illustrates a matching system 100 that can identify unknown content. In some examples, the unknown content may include one or more unknown data points. In such examples, the matching system 100 can match the unknown data points with reference data points to identify unknown video segments associated with the unknown data points. The reference data points may be included in a reference database 116.
匹配系统100包括客户端设备102和匹配服务器104。客户端设备102包括媒体客户端106、输入设备108、输出设备110以及一个或多个背景应用程序126。媒体客户端106(其可以包括电视系统、计算机系统或能够连接到互联网的其它电子设备)可以解码与视频节目128相关联的数据(例如,广播信号、数据分组或其它帧数据)。媒体客户端106可以将视频的每个帧的解码内容放置到视频帧缓冲器中以准备显示或进一步处理视频帧的像素信息。客户端设备102可以是可接收和解码视频信号的任何电子解码系统。客户端设备102可以接收视频节目128并将视频信息存储在视频缓冲器(未示出)中。客户端设备102可以处理视频缓冲器信息并且产生未知的数据点(其可以被称为“线索”),如下面参考图3更详细描述的。媒体客户端106可以将未知数据点发送到匹配服务器104,以与参考数据库116中的参考数据点进行比较。Matching system 100 includes a client device 102 and a matching server 104. Client device 102 includes a media client 106, an input device 108, an output device 110, and one or more background applications 126. Media client 106 (which may include a television system, a computer system, or other electronic device capable of connecting to the Internet) can decode data associated with a video program 128 (e.g., a broadcast signal, data packets, or other frame data). Media client 106 can place the decoded content of each frame of the video into a video frame buffer in preparation for display or further processing of the pixel information of the video frame. Client device 102 can be any electronic decoding system that can receive and decode a video signal. Client device 102 can receive video program 128 and store the video information in a video buffer (not shown). Client device 102 can process the video buffer information and generate unknown data points (which may be referred to as "clues"), as described in more detail below with reference to FIG. Media client 106 can send the unknown data points to matching server 104 for comparison with reference data points in reference database 116.
输入设备108可以包括允许请求或其它信息被输入到媒体客户端106的任何合适的设备。例如,输入设备108可以包括键盘、鼠标、语音识别输入设备、用于从无线设备(例如,从遥控器、移动设备或其它合适的无线设备)接收无线输入的无线接口,或者任何其它合适的输入设备。输出设备110可以包括可呈现或以其它方式输出信息的任何合适的设备,诸如显示器、用于向无线设备(例如,向移动设备或其它合适的无线设备)发送无线输出的无线接口、打印机或其它合适的输出设备。The input device 108 may include any suitable device that allows requests or other information to be input into the media client 106. For example, the input device 108 may include a keyboard, a mouse, a voice recognition input device, a wireless interface for receiving wireless input from a wireless device (e.g., from a remote control, a mobile device, or other suitable wireless device), or any other suitable input device. The output device 110 may include any suitable device that can present or otherwise output information, such as a display, a wireless interface for sending wireless output to a wireless device (e.g., to a mobile device or other suitable wireless device), a printer, or other suitable output device.
匹配系统100可通过首先从已知视频数据源118收集数据样本来开始识别视频段的过程。例如,匹配服务器104收集数据以从各种视频数据源118建立和维护参考数据库116。视频数据源118可以包括电视节目、电影或任何其它合适的视频源的媒体提供者。来自视频数据源118的视频数据可以作为无线电广播、有线电视频道、来自互联网和来自任何其它视频数据源的流式传送来源来提供。在一些示例中,如下所述,匹配服务器104可以处理从视频数据源118接收的视频以在参考数据库116中生成和收集参考视频数据点。在一些示例中,来自视频数据源118的视频节目可以由参考视频节目摘录系统(未示出)处理,所述参考视频节目摘录系统可以产生参考视频数据点并将其发送到参考数据库116以供存储。可以如上所述使用参考数据点来确定随后用于分析未知数据点的信息。The matching system 100 may begin the process of identifying video segments by first collecting data samples from known video data sources 118. For example, the matching server 104 collects data from various video data sources 118 to build and maintain a reference database 116. The video data sources 118 may include media providers of television programs, movies, or any other suitable video sources. The video data from the video data sources 118 may be provided as a streaming source such as a radio broadcast, a cable TV channel, from the internet, or from any other video data source. In some examples, as described below, the matching server 104 may process the video received from the video data sources 118 to generate and collect reference video data points in the reference database 116. In some examples, the video programs from the video data sources 118 may be processed by a reference video program excerpt system (not shown), which may generate reference video data points and send them to the reference database 116 for storage. The reference data points may be used as described above to determine information that is subsequently used to analyze unknown data points.
匹配服务器104可以将在某一时间段(例如,若干天、若干周、若干个月或任何其它合适的时间段)内接收的每个视频节目的参考视频数据点存储在参考数据库116中。匹配服务器104可以建立并连续或周期性地更新电视节目样本的参考数据库116(例如,包括也可以被称为线索或线索值的参考数据点)。在一些示例中,收集的数据是从周期性视频帧(例如,每五个视频帧、每十个视频帧、每十五个视频帧或其它适当数量的帧)采样的视频信息的压缩表示。在一些示例中,为每个节目源收集每帧的数据字节数(例如,每帧25字节、50字节、75字节、100字节,或者任何其它数量的字节)。任何数量的节目源可用于获得视频,诸如25个频道、50个频道、75个频道、100个频道、200个频道或任何其它数量的节目源。使用示例量的数据,在三天内每天24小时期间收集的总数据变得非常大。因此,减少实际参考数据点集合的数量有利于减少匹配服务器104的存储负荷。Matching server 104 may store reference video data points for each video program received within a time period (e.g., days, weeks, months, or any other suitable time period) in reference database 116. Matching server 104 may establish and continuously or periodically update reference database 116 of sample television programs (e.g., including reference data points, which may also be referred to as clues or clue values). In some examples, the collected data is a compressed representation of video information sampled from periodic video frames (e.g., every fifth video frame, every tenth video frame, every fifteenth video frame, or another suitable number of frames). In some examples, the number of bytes of data per frame is collected for each program source (e.g., 25 bytes, 50 bytes, 75 bytes, 100 bytes, or any other number of bytes per frame). Any number of program sources may be used to obtain video, such as 25 channels, 50 channels, 75 channels, 100 channels, 200 channels, or any other number of program sources. Using this example amount of data, the total data collected during a 24-hour period over three days becomes very large. Therefore, reducing the number of actual reference data point sets is beneficial to reducing the storage load of the matching server 104 .
媒体客户端106可以将通信122发送到匹配服务器104的匹配引擎112。通信122可以包括对匹配引擎112的请求以识别未知内容。例如,未知内容可以包括一个或多个未知数据点,并且参考数据库116可以包括多个参考数据点。匹配引擎112可以通过将未知数据点与参考数据库116中的参考数据进行匹配来识别未知内容。在一些示例中,未知内容可以包括由显示器呈现的未知视频数据(对于基于视频的ACR)、搜索查询(对于Map Reduce系统,Bigtable系统或其它数据存储系统)、未知的面部图像(用于面部识别)、未知的图案图像(用于图案识别)或可以比对参考数据的数据库进行匹配的任何其它未知数据。参考数据点可以从从视频数据源118接收的数据中导出。例如,数据点可以从视频数据源118提供的信息中提取,并且可以被索引并存储在参考数据库116中。The media client 106 may send a communication 122 to the matching engine 112 of the matching server 104. The communication 122 may include a request to the matching engine 112 to identify unknown content. For example, the unknown content may include one or more unknown data points, and the reference database 116 may include multiple reference data points. The matching engine 112 may identify the unknown content by matching the unknown data points with reference data in the reference database 116. In some examples, the unknown content may include unknown video data presented by a display (for video-based ACR), a search query (for a Map Reduce system, a Bigtable system, or other data storage system), an unknown facial image (for facial recognition), an unknown pattern image (for pattern recognition), or any other unknown data that can be matched against a database of reference data. The reference data points may be derived from data received from the video data source 118. For example, the data points may be extracted from information provided by the video data source 118 and may be indexed and stored in the reference database 116.
匹配引擎112可以向候选确定引擎114发送请求以从参考数据库116确定候选数据点。候选数据点可以是与未知数据点相隔某一确定距离的参考数据点。在一些示例中,参考数据点和未知数据点之间的距离可以通过将参考数据点的一个或多个像素(例如,单个像素、表示一组像素的值(例如,平均数、平均值、中值,或其它值)或其它合适数量的像素)与未知数据点的一个或多个像素进行比较来确定。在一些示例中,当每个样本位置处的像素在特定像素值范围内时,参考数据点可以与未知数据点相隔的某一确定的距离。Matching engine 112 can send a request to candidate determination engine 114 to determine candidate data points from reference database 116. A candidate data point can be a reference data point that is a certain distance away from the unknown data point. In some examples, the distance between the reference data point and the unknown data point can be determined by comparing one or more pixels of the reference data point (e.g., a single pixel, a value representing a group of pixels (e.g., an average, mean, median, or other value), or other suitable number of pixels) to one or more pixels of the unknown data point. In some examples, when the pixels at each sample location are within a specific range of pixel values, the reference data point can be a certain distance away from the unknown data point.
在一个说明性示例中,像素的像素值可以包括红色值、绿色值和蓝色值(在红-绿-蓝(RGB)颜色空间中)。在这种示例中,可以通过如下方式将第一像素(或者表示第一组像素的值)与第二像素(或者表示第二组像素的值)进行比较:分别比较相应的红色值、绿色值和蓝色值,并确保该值在一定的值范围内(例如在0-5的值内)。例如,当(1)第一像素的红色值在第二像素的红色值的0-255值范围(正或负)中的5个值内时,(2)第一像素的绿色值在第二像素的绿色值的0-255值范围(正或负)中的5个值内,以及(3)第一像素的蓝色值在第二像素的蓝色值的0-255值范围(正或负)中的5个值内时,第一像素可以与第二像素匹配。在这种示例中,候选数据点是与未知数据点近似匹配的参考数据点,由此导致对于未知数据点识别多个候选数据点(与不同媒体段有关)。候选确定引擎114可以将候选数据点返回到匹配引擎112。In one illustrative example, the pixel value of a pixel may include a red value, a green value, and a blue value (in a red-green-blue (RGB) color space). In such an example, a first pixel (or a value representing a first group of pixels) may be compared to a second pixel (or a value representing a second group of pixels) by comparing the corresponding red value, green value, and blue value, respectively, and ensuring that the values are within a certain value range (e.g., within a value range of 0-5). For example, a first pixel may be matched to a second pixel when (1) the red value of the first pixel is within 5 values of the 0-255 value range (positive or negative) of the red value of the second pixel, (2) the green value of the first pixel is within 5 values of the 0-255 value range (positive or negative) of the green value of the second pixel, and (3) the blue value of the first pixel is within 5 values of the 0-255 value range (positive or negative) of the blue value of the second pixel. In such an example, a candidate data point is a reference data point that approximately matches an unknown data point, thereby resulting in the identification of multiple candidate data points (associated with different media segments) for the unknown data point. The candidate determination engine 114 may return the candidate data points to the matching engine 112 .
对于候选数据点,匹配引擎112可以将令牌添加到仓中,该仓与候选数据点相关联并被分配给已识别视频段,从已知视频段中导出候选数据点。可将相应的令牌添加到与识别的候选数据点对应的所有仓。当匹配服务器104从客户端设备102接收到更多未知数据点(对应于正在观看的未知内容)时,可以执行类似候选数据点确定过程,并且可以将令牌添加到与识别的候选数据点对应的仓。这些仓中只有一个仓对应于正在观看的未知视频内容段,其它仓对应于由于类似的数据点值(例如,具有相似的像素颜色值)而匹配但是不对应于正在观看的实际视频内容段的候选数据点。正在观看的未知视频内容段的仓将比没有被观看的视频内容段的其它仓具有分配给它的更多令牌。例如,随着接收到更多的未知数据点,与该仓对应的更大量的参考数据点被识别为候选数据点,导致更多的令牌被添加到该仓。一旦仓包括特定数量的令牌,则匹配引擎112可以确定与仓相关联的视频段当前正在客户端设备102上显示。视频段可以包括整个视频节目或视频节目的一部分。例如,视频段可以是视频节目、视频节目的场景、视频节目的一个或多个帧或视频节目的任何其它部分。For candidate data points, the matching engine 112 may add tokens to bins associated with the candidate data points and assigned to the identified video segments from which the candidate data points were derived. Corresponding tokens may be added to all bins corresponding to the identified candidate data points. As the matching server 104 receives more unknown data points (corresponding to unknown content being viewed) from the client device 102, a similar candidate data point determination process may be performed, and tokens may be added to bins corresponding to the identified candidate data points. Only one of these bins corresponds to the unknown video content segment being viewed; the other bins correspond to candidate data points that match due to similar data point values (e.g., having similar pixel color values) but do not correspond to the actual video content segment being viewed. The bin for the unknown video content segment being viewed will have more tokens assigned to it than other bins for video content segments not being viewed. For example, as more unknown data points are received, a greater number of reference data points corresponding to that bin are identified as candidate data points, resulting in more tokens being added to that bin. Once a bin contains a certain number of tokens, the matching engine 112 may determine that the video segment associated with the bin is currently being displayed on the client device 102. A video segment may comprise an entire video program or a portion of a video program. For example, a video segment may be a video program, a scene of a video program, one or more frames of a video program, or any other portion of a video program.
图2示出用于识别未知数据的匹配系统200的组件。例如,匹配引擎212可以使用已知内容(例如,已知的媒体段、存储在数据库中用于进行对比搜索的信息、已知的面部或图案等)的数据库来执行用于识别未知内容(例如,未知的媒体段、搜索查询、面部图像或者图案等)的匹配处理。例如,匹配引擎212接收将与参考数据库中的参考数据点204中的某一参考数据点匹配的未知数据内容202(其可以被称为“线索数据”)。未知数据内容202也可以由候选确定引擎214接收,或者从匹配引擎212发送到候选确定引擎214。候选确定引擎214可以进行搜索处理以通过搜索参考数据库中的参考数据点204来识别候选数据点206。在一个示例中,搜索过程可以包括产生邻近值集合(与未知数据内容202的未知值相距一定距离)的最近邻居搜索过程。候选数据点206被输入到匹配引擎212以进行匹配过程以生成匹配结果208。取决于应用,匹配结果208可以包括由显示器呈现的视频数据、搜索结果、使用面部识别确定的脸部、使用图案识别确定的图案或任何其它结果。FIG2 illustrates components of a matching system 200 for identifying unknown data. For example, a matching engine 212 can use a database of known content (e.g., known media segments, information stored in a database for comparison searches, known faces or patterns, etc.) to perform a matching process for identifying unknown content (e.g., unknown media segments, search queries, facial images or patterns, etc.). For example, the matching engine 212 receives unknown data content 202 (which may be referred to as "clue data") that is to be matched with a reference data point 204 in a reference database. The unknown data content 202 may also be received by or sent from the matching engine 212 to the candidate determination engine 214. The candidate determination engine 214 may perform a search process to identify candidate data points 206 by searching the reference data points 204 in the reference database. In one example, the search process may include a nearest neighbor search process that generates a set of neighboring values (at a certain distance from the unknown value of the unknown data content 202). The candidate data points 206 are input to the matching engine 212 for a matching process to generate matching results 208. Depending on the application, the matching results 208 may include video data presented by a display, search results, faces determined using facial recognition, patterns determined using pattern recognition, or any other results.
在确定未知数据点(例如,未知数据内容202)的候选数据点206时,候选确定引擎214确定未知数据点与参考数据库中的参考数据点204之间的距离。与未知数据点相隔一定距离的参考数据点被识别为候选数据点206。在一些示例中,参考数据点与未知数据点之间的距离可以通过将参考数据点的一个或多个像素与未知数据点的一个或多个像素进行比较来确定,如上面关于图1所描述的。在一些示例中,当每个样本位置处的像素在特定值范围内时,参考数据点可以与未知数据点相隔一定的距离。如上所述,候选数据点是与未知数据点近似匹配的参考数据点,并且由于近似匹配,对于该未知数据点识别出多个候选数据点(与不同媒体段有关)。候选确定引擎114可以将候选数据点返回到匹配引擎112。When determining candidate data points 206 for an unknown data point (e.g., unknown data content 202), the candidate determination engine 214 determines the distance between the unknown data point and reference data points 204 in the reference database. Reference data points that are a certain distance away from the unknown data point are identified as candidate data points 206. In some examples, the distance between the reference data point and the unknown data point can be determined by comparing one or more pixels of the reference data point to one or more pixels of the unknown data point, as described above with respect to FIG. 1. In some examples, the reference data point can be a certain distance away from the unknown data point when the pixels at each sample location are within a specific value range. As described above, a candidate data point is a reference data point that approximately matches the unknown data point, and due to the approximate match, multiple candidate data points (related to different media segments) are identified for the unknown data point. The candidate determination engine 114 can return the candidate data points to the matching engine 112.
图3示出了包括解码器的存储缓冲器302的视频摘录捕捉系统400的示例。解码器可以是匹配服务器104或媒体客户端106的一部分。解码器可以不与或需要物理电视显示面板或设备一起操作。解码器可以解码并且在需要时将数字视频节目解密为电视节目的未压缩的位图表示。为了建立参考视频数据的参考数据库(例如,参考数据库316),匹配服务器104可以获取从视频帧缓冲器读取的视频像素的一个或多个阵列。视频像素阵列被称为视频块。视频块可以是任何形状或图案,但是为了该具体示例的目的,被描述为10×10像素阵列,包括水平十个像素和垂直十个像素。同样为了该示例的目的,假设存在从视频帧缓冲器内提取的均匀分布在缓冲器的边界内的25个像素块位置。Figure 3 shows an example of a video excerpt capture system 400 including a storage buffer 302 of a decoder. The decoder can be part of the matching server 104 or the media client 106. The decoder can operate without or requiring a physical television display panel or device. The decoder can decode and, if necessary, decrypt a digital video program into an uncompressed bitmap representation of the television program. In order to build a reference database of reference video data (e.g., reference database 316), the matching server 104 can obtain one or more arrays of video pixels read from a video frame buffer. The array of video pixels is referred to as a video block. The video block can be any shape or pattern, but for the purposes of this specific example, it is described as a 10×10 pixel array, comprising ten pixels horizontally and ten pixels vertically. Also for the purposes of this example, it is assumed that there are 25 pixel block positions extracted from the video frame buffer that are evenly distributed within the boundaries of the buffer.
像素块(例如,像素块304)的示例分配在图3中示出。如上所述,像素块可以包括像素阵列,诸如10×10阵列。例如,像素块304包括10×10像素阵列。像素可以包括颜色值,诸如红色、绿色和蓝色值。例如,示出了具有红-绿-蓝(RGB)颜色值的像素306。像素的颜色值可以由每种颜色的八位二进制值表示。可以用于表示像素的颜色的其它合适的颜色值包括亮度和色度(Y,Cb,Cr)值或任何其它合适的颜色值。An example allocation of pixel blocks (e.g., pixel block 304) is shown in FIG3. As described above, a pixel block can include a pixel array, such as a 10×10 array. For example, pixel block 304 includes a 10×10 pixel array. Pixels can include color values, such as red, green, and blue values. For example, pixel 306 having a red-green-blue (RGB) color value is shown. The color value of a pixel can be represented by an eight-bit binary value for each color. Other suitable color values that can be used to represent the color of a pixel include brightness and chrominance (Y, Cb, Cr) values or any other suitable color values.
取每个像素块的平均数(或在某些情况下的平均值),并且创建所得的数据记录并用时间码(或时间戳)标记它。例如,为每个10×10像素的块阵列找到平均值,在这种情况下,对于每帧总共600位的像素信息,每25个显示缓冲器位置产生24位数据。在一个示例中,像素块304的平均值被计算,并且由像素块平均值308示出。在一个说明性示例中,时间码可以包括“新纪元时间”,其表示自1970年1月1日午夜起总的经过时间(以几分之一秒为单位)。例如,像素块平均308值与时间码412组合。在计算系统(包括例如基于Unix的系统)中,新纪元时间是公认的惯例。关于视频节目的信息(称为元数据)被附加到数据记录。元数据可以包括关于节目的任何信息,诸如节目标识符、节目时间、节目长度或任何其它信息。包括像素块的平均值、时间码和元数据的数据记录形成“数据点”(也被称为“线索”)。数据点310是参考视频数据点的一个示例。An average (or, in some cases, mean) is taken for each pixel block, and the resulting data record is created and marked with a time code (or timestamp). For example, a mean is found for each 10×10 pixel block array, in which case 24 bits of data are generated for every 25 display buffer locations, for a total of 600 bits of pixel information per frame. In one example, the mean for pixel block 304 is calculated and shown by pixel block mean 308. In one illustrative example, the time code may include "epoch time," which represents the total elapsed time (in fractions of a second) since midnight, January 1, 1970. For example, pixel block mean 308 value is combined with time code 412. Epoch time is a recognized convention in computing systems (including, for example, Unix-based systems). Information about the video program (referred to as metadata) is appended to the data record. Metadata can include any information about the program, such as a program identifier, program time, program length, or any other information. The data record including the pixel block mean, time code, and metadata forms a "data point" (also known as a "thread"). Data point 310 is an example of a reference video data point.
识别未知视频段的过程以类似于创建参考数据库的步骤开始。例如,图4示出包括解码器的存储器缓冲器402的视频摘录捕捉系统400。视频摘录捕捉系统400可以是处理由显示器(例如,在互联网连接的电视监控器(诸如智能电视)、移动设备或其它电视观看设备上)呈现的数据的客户端设备102的一部分。视频摘录捕捉系统400可以利用类似的过程来生成未知视频数据点410,如创建参考视频数据点310的系统300所使用的。在一个示例中,媒体客户端106可以将未知视频数据点410发送到匹配引擎112以由匹配服务器104识别与未知视频数据点410相关联的视频段。The process of identifying unknown video segments begins with steps similar to those used to create a reference database. For example, FIG4 illustrates a video excerpt capture system 400 including a memory buffer 402 of a decoder. The video excerpt capture system 400 can be part of a client device 102 that processes data presented by a display (e.g., on an Internet-connected television monitor (such as a smart TV), a mobile device, or other television viewing device). The video excerpt capture system 400 can utilize a similar process to generate unknown video data points 410 as used by the system 300 for creating reference video data points 310. In one example, the media client 106 can send the unknown video data point 410 to the matching engine 112 for the matching server 104 to identify video segments associated with the unknown video data point 410.
如图4中所示,视频块404可以包括10×10像素阵列。视频块404可以从显示器呈现的视频帧中提取。可以从视频帧中提取多个这种像素块。在一个说明性示例中,如果从视频帧中提取25个这种像素块,则结果将是表示75维空间中的位置的点。可以为阵列的每个颜色值(例如,RGB颜色值、Y、Cr、Cb颜色值等)计算平均数(或平均值)。数据记录(例如,未知视频数据点410)由平均像素值形成,并且当前时间被附加到该数据。可以使用上述技术将一个或多个未知视频数据点发送到匹配服务器104以与来自参考数据库116的数据匹配。As shown in Figure 4, video block 404 may comprise a 10×10 pixel array. Video block 404 may be extracted from a video frame presented on a display. A plurality of such pixel blocks may be extracted from a video frame. In an illustrative example, if 25 such pixel blocks are extracted from a video frame, the result will be a point representing a position in a 75-dimensional space. An average (or mean) may be calculated for each color value of the array (e.g., RGB color values, Y, Cr, Cb color values, etc.). A data record (e.g., unknown video data point 410) is formed by the average pixel value, and the current time is appended to the data. The above-described techniques may be used to send one or more unknown video data points to a matching server 104 for matching with data from a reference database 116.
在一些示例中,可以在将线索数据发送到匹配服务器(例如,匹配服务器104)之前分析线索数据以减少发送到匹配服务器的数据量以及远离媒体系统的位置(例如在匹配服务器上或在与匹配服务器相关联的数据库中)存储的数据量。在一些示例中,新线索数据的至少一部分可以根据确定新线索数据是否与已经被发送到匹配服务器的先前线索数据足够相似而被丢弃。例如,可以从新线索数据中丢弃一个或多个像素数据样本。在其它示例中,在像素数据样本被匹配服务器接收之后,本文所述的用于丢弃像素数据样本的方法可以发生在匹配服务器上。In some examples, the clue data can be analyzed before being sent to a matching server (e.g., matching server 104) to reduce the amount of data sent to the matching server and the amount of data stored remotely from the media system (e.g., on the matching server or in a database associated with the matching server). In some examples, at least a portion of the new clue data can be discarded based on determining whether the new clue data is sufficiently similar to previous clue data that has already been sent to the matching server. For example, one or more pixel data samples can be discarded from the new clue data. In other examples, the methods described herein for discarding pixel data samples can occur on the matching server after the pixel data samples are received by the matching server.
图5示出可以发送到匹配服务器(例如,匹配服务器104)的帧序列的示例。帧序列可以包括第一帧510、第二帧520、第三帧530和第四帧540。本领域的普通技术人员将认识到,在帧序列中可以存在更多或更少的帧。5 shows an example of a frame sequence that may be sent to a matching server (e.g., matching server 104). The frame sequence may include a first frame 510, a second frame 520, a third frame 530, and a fourth frame 540. One of ordinary skill in the art will recognize that there may be more or fewer frames in the frame sequence.
在一些示例中,将帧序列的帧转换为线索数据的过程可以类似于图3中所讨论的。例如,可以在帧中识别一个或多个位置(例如,位置1、位置2、位置3、位置4、位置5、位置6、位置7和位置8)。在一些示例中,位置可以是像素块,其可以包括像素阵列(例如,以诸如10×10的格式排列的一个或多个像素)。在一些示例中,像素可以包括红色值、绿色值和蓝色值(在红-绿-蓝(RGB)颜色空间中)。本领域的普通技术人员将认识到可以使用其它颜色空间。在一些示例中,像素阵列中的一个或多个像素可以在发送到匹配服务器之前被概括。例如,一个或多个像素可以各自具有被平均的一个或多个像素的红色值,以为该一个或多个像素创建平均红色值。一个或多个像素还可以各自具有被平均的一个或多个像素的绿色值,以为该一个或多个像素创建平均绿色值。一个或多个像素还可以各自具有被平均的一个或多个像素的蓝色值,以为该一个或多个像素创建平均蓝色值。在一些示例中,像素的平均红色值、平均绿色值和平均蓝色值可以以类似方式与像素阵列中像素的其它平均红色值、平均绿色值和平均蓝色值一起求平均以针对位置创建像素数据样本。例如,一个或多个像素的红色平均值可以是0,一个或多个像素的绿色平均值可以是255,并且一个或多个像素的蓝色平均值可以是45。在这种示例中,一个或多个像素的像素数据样本可以是0、255和45,允许使用三位数来概括一个或多个像素。In some examples, the process of converting frames of a frame sequence into clue data can be similar to that discussed in FIG. 3 . For example, one or more positions (e.g., position 1, position 2, position 3, position 4, position 5, position 6, position 7, and position 8) can be identified in a frame. In some examples, the position can be a pixel block, which can include a pixel array (e.g., one or more pixels arranged in a format such as 10×10). In some examples, the pixel can include a red value, a green value, and a blue value (in a red-green-blue (RGB) color space). One of ordinary skill in the art will recognize that other color spaces can be used. In some examples, one or more pixels in the pixel array can be summarized before being sent to the matching server. For example, one or more pixels can each have the red value of one or more pixels averaged to create an average red value for the one or more pixels. One or more pixels can also each have the green value of one or more pixels averaged to create an average green value for the one or more pixels. One or more pixels can also each have the blue value of one or more pixels averaged to create an average blue value for the one or more pixels. In some examples, the average red value, average green value, and average blue value of a pixel can be averaged in a similar manner with other average red values, average green values, and average blue values of pixels in the pixel array to create a pixel data sample for the location. For example, the average red value of one or more pixels can be 0, the average green value of one or more pixels can be 255, and the average blue value of one or more pixels can be 45. In such an example, the pixel data samples for the one or more pixels can be 0, 255, and 45, allowing the use of a three-digit number to summarize the one or more pixels.
在其它示例中,可以将像素的红色值、绿色值和蓝色值一起求平均以为像素创建平均像素值。可以将像素阵列中的像素的平均像素值与像素阵列中的其它像素的其它平均像素值一起求平均,以创建位置的像素数据样本。在这种示例中,可以将一个或多个红色值、一个或多个绿色值和一个或多个蓝色值一起求平均以创建一个数字来概括一个或多个像素。在上面的示例中,概括一个或多个像素的一个数字可以是100,它是0、255和45的平均值。In other examples, the red value, green value, and blue value of a pixel can be averaged together to create an average pixel value for the pixel. The average pixel value of a pixel in a pixel array can be averaged together with other average pixel values of other pixels in the pixel array to create a pixel data sample for a position. In such an example, one or more red values, one or more green values, and one or more blue values can be averaged together to create a number to summarize one or more pixels. In the above example, a number summarizing one or more pixels can be 100, which is the average value of 0, 255, and 45.
在一些示例中,可以为帧中的每个位置计算像素数据样本。帧的像素数据样本然后可以被组合以发送到匹配服务器。在一些示例中,组合可以包括将数字附加在一起以创建一个数字。例如,可以将100、25和55组合成100025055。在其它示例中,可以为每个位置用变量创建线索数据对象。在这种示例中,线索数据对象可以发送到匹配服务器。在其它示例中,像素数据(例如,像素的红色值、绿色值和蓝色值)可以用指示位置(如上所述)是否包括值的位图来串联。例如,包括值的位置可以包括“1”,并且不包括值的位置(例如,值被移除)可以包括“0”。本领域的普通技术人员将认识到,可以使用其它方法来概括帧中的位置。In some examples, pixel data samples can be calculated for each position in the frame. The pixel data samples of the frame can then be combined to send to the matching server. In some examples, the combination can include appending numbers together to create one number. For example, 100, 25, and 55 can be combined into 100025055. In other examples, a clue data object can be created with a variable for each position. In such an example, the clue data object can be sent to the matching server. In other examples, the pixel data (e.g., the red value, green value, and blue value of a pixel) can be connected in series with a bitmap indicating whether the position (as described above) includes a value. For example, a position that includes a value can include "1", and a position that does not include a value (e.g., a value is removed) can include "0". Those skilled in the art will recognize that other methods can be used to summarize the positions in the frame.
图6示出其中若干像素数据样本行被移除的帧序列的示例。通过移除若干像素数据样本行,可以减小帧序列的大小,并且可以减少存储帧序列所需的存储器量。本领域的普通技术人员将认识到,可以从线索数据中移除单个像素数据样本,而不是移除整行。FIG6 shows an example of a frame sequence in which several rows of pixel data samples are removed. By removing several rows of pixel data samples, the size of the frame sequence can be reduced and the amount of memory required to store the frame sequence can be reduced. One of ordinary skill in the art will recognize that individual pixel data samples can be removed from the clue data rather than removing entire rows.
在一些示例中,当线索数据的一个或多个像素数据样本类似于先前线索数据时,可从线索数据中移除一行像素数据样本。在一些示例中,当两个像素数据样本之间的差在像素值范围内时,像素数据样本可以类似于另一个像素数据样本。像素值范围可以被预配置。例如,像素值范围可以是在0-255的值范围(正或负)中的5个值。在这种示例中,当第一像素数据样本在第二像素数据样本的5个值内时,第一像素数据样本类似于第二像素数据样本。In some examples, a row of pixel data samples may be removed from the clue data when one or more pixel data samples of the clue data are similar to the previous clue data. In some examples, a pixel data sample may be similar to another pixel data sample when the difference between the two pixel data samples is within a pixel value range. The pixel value range may be preconfigured. For example, the pixel value range may be 5 values in a value range of 0-255 (positive or negative). In such an example, a first pixel data sample is similar to a second pixel data sample when the first pixel data sample is within 5 values of the second pixel data sample.
在一个说明性示例中,帧610可以包括全部八个像素数据样本。然而,帧620可以包括像素数据样本4-8,而不是1-3。因为帧620的像素数据样本1-3的至少一个像素数据样本类似于帧610的像素数据样本1-3的对应像素数据样本,所以可以移除帧620的像素数据样本1-3。此外,帧630可以包括像素数据样本1-3和6-8,但不包括像素数据样本4-5。因为帧630的像素数据样本1-3不同于帧620的像素数据样本1-3,所以可以保留帧620的像素数据样本1-3。然而,因为帧630的像素数据样本4-5中的至少一个像素数据样本类似于帧620的像素数据样本4-5中的对应像素数据样本,所以可以移除帧630的像素数据样本4-5。另外,帧640可以包括像素数据样本6-8,而不是像素数据样本1-5。因为帧640的像素数据样本1-3中的至少一个像素数据样本类似于帧630的像素数据样本1-3中的对应像素数据样本,所以可以移除帧640的像素数据样本1-3。因为帧640的像素数据样本4-5中的至少一个像素数据样本类似于帧620的像素数据样本4-5中的对应像素数据样本,所以可以移除帧640的像素数据样本4-5(因为已经移除帧630的像素数据样本4-5,所以与帧630的比较可以被跳过)。在其它示例中,媒体系统可以存储帧630的像素数据样本4-5,使得媒体系统不必存储来自多个帧的像素数据样本。在这种示例中,帧640可以针对所有像素数据样本与帧630进行比较。In one illustrative example, frame 610 may include all eight pixel data samples. However, frame 620 may include pixel data samples 4-8, but not 1-3. Because at least one of pixel data samples 1-3 of frame 620 is similar to the corresponding pixel data sample of pixel data samples 1-3 of frame 610, pixel data samples 1-3 of frame 620 may be removed. Furthermore, frame 630 may include pixel data samples 1-3 and 6-8, but not pixel data samples 4-5. Because pixel data samples 1-3 of frame 630 are different from pixel data samples 1-3 of frame 620, pixel data samples 1-3 of frame 620 may be retained. However, because at least one of pixel data samples 4-5 of frame 630 is similar to the corresponding pixel data sample of pixel data samples 4-5 of frame 620, pixel data samples 4-5 of frame 630 may be removed. Additionally, frame 640 may include pixel data samples 6-8, but not pixel data samples 1-5. Because at least one of pixel data samples 1-3 of frame 640 is similar to a corresponding pixel data sample of pixel data samples 1-3 of frame 630, pixel data samples 1-3 of frame 640 can be removed. Because at least one of pixel data samples 4-5 of frame 640 is similar to a corresponding pixel data sample of pixel data samples 4-5 of frame 620, pixel data samples 4-5 of frame 640 can be removed (because pixel data samples 4-5 of frame 630 have already been removed, comparison with frame 630 can be skipped). In other examples, the media system can store pixel data samples 4-5 of frame 630 so that the media system does not have to store pixel data samples from multiple frames. In such an example, frame 640 can be compared to frame 630 for all pixel data samples.
在一些示例中,一个或多个标志可以与线索数据一起或者作为线索数据的附加被发送到匹配服务器。一个或多个标志可以指示行是否已经从帧中移除。例如,标志“0”可以指示行没有被移除,并且“1”可以指示行已经被移除。在其它示例中,标志可以与每个像素数据样本相关联,指示特定像素数据样本是否被移除。本领域的普通技术人员将认识到,可以以不同的方式实现一个或多个标志,只要一个或多个标志向匹配服务器指示哪些行或哪些像素数据样本已经被移除。In some examples, one or more flags may be sent to the matching server along with the clue data or in addition to the clue data. The one or more flags may indicate whether a row has been removed from the frame. For example, a flag of "0" may indicate that a row has not been removed, and a flag of "1" may indicate that a row has been removed. In other examples, a flag may be associated with each pixel data sample, indicating whether a particular pixel data sample has been removed. One of ordinary skill in the art will recognize that the one or more flags may be implemented in different ways, as long as the one or more flags indicate to the matching server which rows or which pixel data samples have been removed.
图6示出帧的每一行的标志。标志612与帧610相关联。标志612包括第一标志614、第二标志616和第三标志618。第一标志614可以与帧610的第一行像素数据样本相关联,其可以包括像素数据样本1-3。第一标志614包括“0”,指示帧610的像素数据样本1-3还没有被移除。第二标志616可以与帧610的第二行像素数据样本相关联,其可以包括像素数据样本4-5。第二标志616包括“0”,指示帧610的像素数据样本4-5还没有被移除。第三标志616可以与帧610的第三行像素数据样本相关联,其可以包括像素数据样本6-8。第三标记618包括“1”,指示帧610的像素数据样本6-8还没有被移除。FIG6 illustrates flags for each row of a frame. Flags 612 are associated with frame 610. Flags 612 include a first flag 614, a second flag 616, and a third flag 618. First flag 614 may be associated with a first row of pixel data samples of frame 610, which may include pixel data samples 1-3. First flag 614 includes a “0,” indicating that pixel data samples 1-3 of frame 610 have not yet been removed. Second flag 616 may be associated with a second row of pixel data samples of frame 610, which may include pixel data samples 4-5. Second flag 616 includes a “0,” indicating that pixel data samples 4-5 of frame 610 have not yet been removed. Third flag 616 may be associated with a third row of pixel data samples of frame 610, which may include pixel data samples 6-8. Third flag 618 includes a “1,” indicating that pixel data samples 6-8 of frame 610 have not yet been removed.
标志622与帧620相关联。标志622包括第一标志624、第二标志626和第三标志。第一标志624可以与帧620的第一行像素数据样本相关联,其可以包括像素数据样本1-3。第一标志624包括“1”,指示帧610的像素数据样本1-3已经被移除。第二标志626可以与帧620的第二行像素数据样本相关联,其可以包括像素数据样本4-5。第二标志616包括“0”,指示帧620的像素数据样本4-5还没有被移除。6. Flags 622 are associated with frame 620. Flags 622 include a first flag 624, a second flag 626, and a third flag. First flag 624 may be associated with a first row of pixel data samples of frame 620, which may include pixel data samples 1-3. First flag 624 includes a "1," indicating that pixel data samples 1-3 of frame 610 have been removed. Second flag 626 may be associated with a second row of pixel data samples of frame 620, which may include pixel data samples 4-5. Second flag 616 includes a "0," indicating that pixel data samples 4-5 of frame 620 have not yet been removed.
在一些示例中,匹配服务器可以接收标志。匹配服务器可以基于与线索数据相关联的一个或多个标志来确定在对线索数据执行操作时要使用什么像素数据样本。例如,当对帧620的线索数据执行操作时,匹配服务器可以确定对于像素数据样本1-3使用帧610的线索数据并且对于像素数据样本4-8使用帧620的线索数据。在一些示例中,操作可以包括将线索数据与参考数据集相匹配,如上所述。In some examples, the matching server can receive flags. The matching server can determine which pixel data samples to use when performing an operation on the clue data based on one or more flags associated with the clue data. For example, when performing an operation on the clue data of frame 620, the matching server can determine to use the clue data of frame 610 for pixel data samples 1-3 and to use the clue data of frame 620 for pixel data samples 4-8. In some examples, the operation can include matching the clue data to a reference dataset, as described above.
在先前帧(例如,帧630)具有与当前帧(例如,帧640)相同的被移除的像素数据样本情况下,匹配服务器可以使用先前帧之前的帧(例如,帧620)。例如,当在帧640上执行操作时,匹配服务器可以使用帧630的像素数据样本1-3、帧620的像素数据样本4-5和帧640的像素数据样本6-8。In the event that a previous frame (e.g., frame 630) has the same removed pixel data samples as a current frame (e.g., frame 640), the matching server may use a frame preceding the previous frame (e.g., frame 620). For example, when performing an operation on frame 640, the matching server may use pixel data samples 1-3 of frame 630, pixel data samples 4-5 of frame 620, and pixel data samples 6-8 of frame 640.
在一些示例中,可能没有像素数据样本不存在的指示(例如,标志)被发送到匹配服务器。通过不发送丢失的像素数据样本的指示,媒体系统可以向匹配的服务器发送更少的数据。在这种示例中,匹配服务器可以检测像素数据样本的不存在。确定像素数据样本不存在的一种方法是识别线索数据的一部分是否丢失。例如,当线索数据是位置中每一个位置的具有变量的对象时,当变量不包括值(或者包括空值、负值或像素数据样本还没有被包括的一些其它指示)时,匹配服务器可以识别丢失的像素数据样本。当线索数据是非对象格式时,可以使用字段分隔符,诸如逗号、空格或其它字符。预期丢失的数据可以通过在两个字段分隔符之间不包括一个或多个值来传达。在检测到丢失的像素数据样本时,匹配服务器可以替换来自一个或多个先前帧的最后一个非相似像素数据样本。In some examples, there may not be an indication (e.g., a flag) that the pixel data sample does not exist that is sent to the matching server. By not sending the indication of the lost pixel data sample, the media system can send less data to the matching server. In this example, the matching server can detect the non-existence of the pixel data sample. A method of determining that the pixel data sample does not exist is to identify whether a part of the clue data is lost. For example, when the clue data is an object with a variable at each position in the position, when the variable does not include a value (or includes null, negative, or pixel data samples are not yet included in some other indications), the matching server can identify the lost pixel data sample. When the clue data is a non-object format, a field delimiter can be used, such as a comma, space, or other character. The expected lost data can be conveyed by not including one or more values between two field delimiters. When the lost pixel data sample is detected, the matching server can replace the last non-similar pixel data sample from one or more previous frames.
通过从帧中移除像素数据样本,还可以降低匹配服务器的整体存储负荷。这种情况如何发生的示例将是包括蓝天的视频段,该蓝天对于许多帧来说不会改变。与许多帧的蓝天相关联的像素数据样本可以从线索数据中移除,并且不被发送到匹配服务器,也不被匹配服务器存储。冗余数据的另一个示例可以在新闻、体育或娱乐访谈节目中找到,其中只有一部分帧正在移动(例如,人在说话)。不移动的帧的部分可以从线索数据中移除,并且不被发送到匹配服务器也不被匹配服务器存储。By removing pixel data samples from the frames, the overall storage load on the matching server can also be reduced. An example of how this would occur would be a video segment that includes a blue sky that does not change for many frames. The pixel data samples associated with the blue sky for many frames can be removed from the clue data and not sent to the matching server or stored by the matching server. Another example of redundant data can be found in news, sports, or entertainment talk shows where only a portion of the frames are moving (e.g., people talking). The portion of the frame that is not moving can be removed from the clue data and not sent to the matching server or stored by the matching server.
图7示出帧序列700的示例,其中有帧未被发送到匹配服务器(例如,匹配服务器104)。在一些示例中,当帧与先前帧足够相似时,媒体系统可以确定不将该帧发送到匹配服务器。在其它示例中,媒体系统可以确定在一天中的特定时间时不将帧发送到匹配服务器。在这种示例中,较低的帧速率可足以用于监控观看统计。FIG7 illustrates an example of a frame sequence 700 in which frames are not sent to a matching server (e.g., matching server 104). In some examples, the media system may determine not to send a frame to the matching server when the frame is sufficiently similar to a previous frame. In other examples, the media system may determine not to send a frame to the matching server at a particular time of day. In such examples, a lower frame rate may be sufficient for monitoring viewing statistics.
在一些示例中,可通过将当前帧的一个或多个当前像素数据样本与先前帧的一个或多个先前像素数据样本进行比较来确定足够类似,如上面所讨论的。在一些示例中,当前帧的一个或多个当前像素数据样本可与相似像素数据样本的任何先前像素数据样本进行比较。媒体系统可以比较当前帧的当前像素数据样本与先前帧的先前像素数据样本匹配的数量。在一些实施方式中,如果数量超过阈值,则媒体系统可以确定不将当前帧发送到匹配服务器。在一些示例中,阈值可以是像素数据样本的百分比(例如,80%、90%或指示媒体系统足够确信当前帧和先前帧足够相似的一些其它百分比)。本领域的普通技术人员将认识到,阈值可以是不同的格式(例如,相似像素数据样本的最小数量,每行上相似的像素数据样本的数量,或指示在一帧到另一帧之间相似性的一些其它度量)。In some examples, sufficiently similar can be determined by comparing one or more current pixel data samples of the current frame with one or more previous pixel data samples of the previous frame, as discussed above. In some examples, one or more current pixel data samples of the current frame can be compared with any previous pixel data samples of similar pixel data samples. The media system can compare the number of matches between the current pixel data samples of the current frame and the previous pixel data samples of the previous frame. In some embodiments, if the number exceeds a threshold, the media system can determine not to send the current frame to the matching server. In some examples, the threshold can be a percentage of pixel data samples (e.g., 80%, 90%, or some other percentage indicating that the media system is sufficiently confident that the current frame and the previous frame are sufficiently similar). One of ordinary skill in the art will recognize that the threshold can be in different formats (e.g., a minimum number of similar pixel data samples, the number of similar pixel data samples on each row, or some other metric indicating similarity between one frame and another).
为了示出帧未被发送的示例,帧序列700包括若干帧(例如,第一帧710、第二帧720、第三帧730、第四帧740、第五帧750、第六帧760和第七帧770)。包括实线的帧可以指示该帧从媒体系统发送到匹配服务器。包括虚线的帧可以指示该帧不从媒体系统发送到匹配服务器。第一帧710包括实线,指示第一帧710发送到匹配服务器。第一帧710可以发送到匹配服务器,因为第一帧710不具有与之匹配的先前帧。另一方面,媒体系统可以确定第二帧720不应发送到匹配服务器,因为第二帧720与第一帧710足够相似。To illustrate an example where a frame is not sent, frame sequence 700 includes several frames (e.g., first frame 710, second frame 720, third frame 730, fourth frame 740, fifth frame 750, sixth frame 760, and seventh frame 770). A frame including a solid line may indicate that the frame is sent from the media system to the matching server. A frame including a dashed line may indicate that the frame is not sent from the media system to the matching server. First frame 710 includes a solid line, indicating that first frame 710 is sent to the matching server. First frame 710 can be sent to the matching server because first frame 710 does not have a previous frame that matches it. On the other hand, the media system may determine that second frame 720 should not be sent to the matching server because second frame 720 is sufficiently similar to first frame 710.
第三帧730可发送到匹配服务器,指示第三帧与第二帧720足够不同以需要将第三帧730发送到匹配服务器。The third frame 730 may be sent to the matching server, indicating that the third frame is sufficiently different from the second frame 720 to require sending the third frame 730 to the matching server.
在一些示例中,当帧未发送到匹配服务器时,媒体系统可能不存储该帧。在这种示例中,与当前帧和先前帧的比较可以跳过没有发送到匹配服务器的任何帧。例如,由于第五帧750和第六帧760二者均未被发送到匹配服务器,所以可以将第七帧770与第四帧740进行比较。在这种示例中,媒体系统可以仅存储发送到匹配服务器的先前帧。In some examples, when a frame is not sent to the matching server, the media system may not store the frame. In such examples, the comparison of the current frame and the previous frame may skip any frames that were not sent to the matching server. For example, since both the fifth frame 750 and the sixth frame 760 were not sent to the matching server, the seventh frame 770 may be compared with the fourth frame 740. In such an example, the media system may only store the previous frame that was sent to the matching server.
在其它实施例中,媒体系统可能仅存储被转换成线索数据的先前帧,而不管线索数据是否被发送到匹配服务器。在这种示例中,可以对未被发送到匹配服务器的帧进行与当前帧和先前帧的比较。例如,即使第六帧760未被发送到匹配服务器,也可以将第七帧770与第六帧760进行比较。In other embodiments, the media system may only store previous frames that have been converted into clue data, regardless of whether the clue data has been sent to the matching server. In such an example, frames that have not been sent to the matching server can be compared with the current frame and previous frames. For example, even if the sixth frame 760 has not been sent to the matching server, the seventh frame 770 can be compared with the sixth frame 760.
类似的帧的示例可以在新闻、体育或娱乐访谈节目中找到,但不限于此,其中仅帧的声音分量在改变(例如,固定的图片)。在这种示例中,媒体系统可以确定特定数量的连续帧还没有被发送到匹配系统。在确定特定数量的连续帧还没有被发送时,媒体系统可以确定将其它信息发送到匹配服务器以识别在媒体系统上正在显示的帧(例如,可以发送帧的音频部分而不是视频部分)。在这种示例中,匹配服务器可以使用一个或多个音频部分而不是一个或多个视频部分(例如,一个或多个帧中的像素)来识别在媒体系统上正在显示的视频段。Examples of similar frames can be found, but are not limited to, in news, sports, or entertainment talk shows, where only the audio component of the frame changes (e.g., a fixed picture). In such an example, the media system can determine that a certain number of consecutive frames have not been sent to the matching system. Upon determining that the certain number of consecutive frames have not been sent, the media system can determine to send additional information to the matching server to identify the frame being displayed on the media system (e.g., the audio portion of the frame can be sent instead of the video portion). In such an example, the matching server can use one or more audio portions instead of one or more video portions (e.g., pixels in one or more frames) to identify the video segment being displayed on the media system.
在帧未被发送到匹配服务器的示例中,媒体系统可以发送指示帧未被发送的标志。在其它实施例中,标志可以被包括在发送到匹配服务器的帧中,该标志指示帧号,使得匹配服务器可以确定帧何时未被发送。在其它实施例中,可以不向匹配服务器发送标志。在这种实施例中,匹配服务器可以在没有对丢失帧的任何认识的情况下继续将帧匹配到视频段。本文的匹配方法允许匹配服务器在一个或多个帧未被发送到匹配服务器时仍识别视频段。In the example where a frame is not sent to the matching server, the media system may send a flag indicating that the frame was not sent. In other embodiments, a flag may be included in the frame sent to the matching server, the flag indicating the frame number, so that the matching server can determine when a frame was not sent. In other embodiments, the flag may not be sent to the matching server. In such an embodiment, the matching server may continue to match frames to video segments without any knowledge of the missing frames. The matching method herein allows the matching server to still identify video segments when one or more frames have not been sent to the matching server.
图8是示出用于从帧的线索数据丢弃像素数据样本的过程800的示例的流程图。在一些示例中,过程800可以由媒体系统执行。过程800被示为逻辑流程图,其操作表示可以在硬件、计算机指令或其组合中实现的一系列操作。在计算机指令的背景中,该操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且任何数量的所述操作可以以任何顺序和/或并行地组合以实现这些过程。Figure 8 is a flow diagram illustrating an example of a process 800 for discarding pixel data samples from clue data for a frame. In some examples, process 800 can be performed by a media system. Process 800 is illustrated as a logical flow diagram, the operations of which represent a series of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the operations. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations can be combined in any order and/or in parallel to implement the processes.
另外,过程800可以在用可执行指令配置的一个或多个计算机系统的控制下被执行,并且可以被实现为通过硬件或其组合在一个或多个处理器上一同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。如上所述,例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式,代码可以存储在机器可读存储介质上。机器可读存储介质可以是非暂态的。In addition, process 800 can be executed under the control of one or more computer systems configured with executable instructions, and can be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that is executed together on one or more processors through hardware or a combination thereof. As described above, the code can be stored on a machine-readable storage medium, for example, in the form of a computer program including multiple instructions that can be executed by one or more processors. The machine-readable storage medium can be non-transitory.
在步骤805处,过程800包括接收初始帧。在一些示例中,初始帧可以与第一视频段相关联。在这种示例中,媒体系统可能不知道第一视频段的标识。媒体系统可以从远程源(包括广播提供者或网络(例如互联网)上的服务器)接收初始帧。在一些示例中,初始帧可以包括像素数据。像素数据可以包括允许显示帧的像素。在一些示例中,像素可以包括一个或多个像素值(例如,在红-绿-蓝(RGB)颜色空间中的红色值、绿色值和蓝色值)。At step 805, process 800 includes receiving an initial frame. In some examples, the initial frame may be associated with a first video segment. In such examples, the media system may not know the identity of the first video segment. The media system may receive the initial frame from a remote source, including a broadcast provider or a server on a network (e.g., the Internet). In some examples, the initial frame may include pixel data. The pixel data may include pixels that allow the frame to be displayed. In some examples, the pixels may include one or more pixel values (e.g., a red value, a green value, and a blue value in a red-green-blue (RGB) color space).
在步骤810处,过程800包括确定初始帧的初始线索数据。初始线索数据可以包括与初始帧相关联的多个初始像素数据样本。在一些示例中,可以对于初始帧的一个或多个位置(例如,像素块)中的每一个位置确定初始像素数据样本。在一些示例中,可以通过对某一位置中包括的一个或多个像素进行概括(例如,取平均值)来对于该位置计算初始像素数据样本。一个或多个像素可以是像素的阵列(例如10×10)。在一些示例中,可以分别概括一个或多个像素的红色值、绿色值和蓝色值。在其它示例中,可以将一个或多个像素的红色值、绿色值和蓝色值概括在一起以创建该位置的一个数字。At step 810, process 800 includes determining initial clue data for the initial frame. The initial clue data may include a plurality of initial pixel data samples associated with the initial frame. In some examples, the initial pixel data samples may be determined for each of one or more locations (e.g., blocks of pixels) of the initial frame. In some examples, the initial pixel data samples may be calculated for a location by summarizing (e.g., averaging) one or more pixels included in the location. The one or more pixels may be an array of pixels (e.g., 10×10). In some examples, the red value, green value, and blue value of the one or more pixels may be summarized separately. In other examples, the red value, green value, and blue value of the one or more pixels may be summarized together to create a number for the location.
在步骤815处,过程800包括发送初始线索数据。初始线索数据可以通过向服务器寻址初始线索数据而被发送到服务器(例如,匹配服务器)。服务器可以尝试将初始线索数据与第一参考数据集匹配。匹配可以通过将初始线索数据与其它线索数据(例如,第一参考数据集)进行比较而发生。At step 815, process 800 includes sending initial clue data. The initial clue data can be sent to a server (e.g., a matching server) by addressing the initial clue data to the server. The server can attempt to match the initial clue data with a first reference data set. Matching can occur by comparing the initial clue data with other clue data (e.g., the first reference data set).
在步骤820处,过程800包括接收新帧。在一些示例中,新帧可以包括像素数据,并且在初始帧之后被接收。新帧可以与第二视频段相关联。在一些示例中,第二视频段可以与第一视频段相同。例如,媒体系统可以从相同的视频段接收两个帧。在其它示例中,第二视频段可以不同于第一视频段。例如,在接收初始帧和新帧之间可能发生第一视频段和第二视频段之间的过渡。At step 820, process 800 includes receiving a new frame. In some examples, the new frame may include pixel data and be received after the initial frame. The new frame may be associated with a second video segment. In some examples, the second video segment may be the same as the first video segment. For example, the media system may receive two frames from the same video segment. In other examples, the second video segment may be different from the first video segment. For example, a transition between the first video segment and the second video segment may occur between receiving the initial frame and the new frame.
在步骤825处,过程800包括确定新帧的新线索数据。新线索数据可以包括与新帧相关联的多个新像素数据样本。新线索数据可以与上面针对初始线索数据讨论的相同方式来确定。At step 825, process 800 includes determining new clue data for the new frame. The new clue data may include a plurality of new pixel data samples associated with the new frame. The new clue data may be determined in the same manner as discussed above for the initial clue data.
在步骤830处,过程800包括识别像素值范围。在一些示例中,像素值范围可以是多个像素值。在一些示例中,当像素数据样本之间的像素值差在像素值范围内时,像素数据样本被确定为相似。例如,像素值范围可以是5个值。在这种示例中,当第二像素数据样本在第一像素数据样本的正5或负5的值内时,第一像素数据样本将在第二像素数据样本的像素值范围内。At step 830, process 800 includes identifying a pixel value range. In some examples, the pixel value range can be a plurality of pixel values. In some examples, the pixel data samples are determined to be similar when the pixel value difference between the pixel data samples is within the pixel value range. For example, the pixel value range can be 5 values. In such an example, when the second pixel data sample is within a value of plus or minus 5 of the first pixel data sample, the first pixel data sample will be within the pixel value range of the second pixel data sample.
在步骤835处,过程800包括确定初始像素数据样本与新像素数据样本之间的像素值范围差。在一些示例中,初始像素数据样本可以对应于新像素数据样本。例如,如果初始像素数据样本与图5的第一帧510的位置1相关联,则与第二帧520的位置1相关联的像素数据样本将与初始像素数据样本对应。At step 835, process 800 includes determining a difference in pixel value range between the initial pixel data sample and the new pixel data sample. In some examples, the initial pixel data sample can correspond to the new pixel data sample. For example, if the initial pixel data sample is associated with position 1 of first frame 510 of FIG. 5 , then the pixel data sample associated with position 1 of second frame 520 would correspond to the initial pixel data sample.
在步骤840处,过程800包括确定像素值差在像素值范围内。在一些示例中,通过将像素值差与像素值范围进行比较以识别像素值差是否小于像素值范围,可以确定像素值差在像素值范围内。At step 840 , process 800 includes determining that the pixel value difference is within the pixel value range. In some examples, the pixel value difference can be determined to be within the pixel value range by comparing the pixel value difference to the pixel value range to identify whether the pixel value difference is less than the pixel value range.
在步骤845处,过程800包括当像素值差在像素值范围内时,通过从新线索数据中移除新像素数据样本来更新新线索数据。在一些示例中,从新线索数据中移除新像素数据样本可以包括从新线索数据中移除一行像素数据样本。在这种示例中,新像素数据样本可以被包括在该行像素数据样本中。在其它示例中,可以从新线索数据仅移除新像素数据样本,而不是移除整行。At step 845, process 800 includes updating the new clue data by removing the new pixel data sample from the new clue data when the pixel value difference is within the pixel value range. In some examples, removing the new pixel data sample from the new clue data may include removing a row of pixel data samples from the new clue data. In such examples, the new pixel data sample may be included in the row of pixel data samples. In other examples, only the new pixel data sample may be removed from the new clue data, rather than removing the entire row.
在步骤850处,过程800包括发送更新的新线索数据。通过将更新的新线索数据寻址到服务器,可以将更新的新线索数据发送到服务器。服务器可以尝试将更新的新线索数据与第二参考数据集匹配。匹配可以通过将新的更新线索数据与其它线索数据(例如,第二参考数据集)进行比较来进行。在一些示例中,当将新的更新线索数据与其它线索数据进行比较时,匹配服务器可以使用来自在更新的新线索数据之前接收到的线索数据的像素数据样本来替换移除的像素数据样本。在这种示例中,匹配服务器可以使用先前帧中与移除的像素数据样本对应的像素数据样本。At step 850, process 800 includes sending updated new clue data. The updated new clue data can be sent to the server by addressing the updated new clue data to the server. The server can attempt to match the updated new clue data with the second reference data set. The matching can be performed by comparing the new updated clue data with other clue data (e.g., the second reference data set). In some examples, when comparing the new updated clue data with the other clue data, the matching server can replace the removed pixel data samples with pixel data samples from clue data received before the updated new clue data. In such an example, the matching server can use pixel data samples in the previous frame that correspond to the removed pixel data samples.
在一些示例中,过程800可以进一步包括发送标志,该标志指示从新的线索数据中移除新像素数据样本。在其它示例中,过程800可以进一步包括发送标志,该标志指示从新线索数据中移除一行像素数据样本。在这种示例中,新像素数据样本可以被包括在该行中。在任何一组示例中,都可以通过将标志寻址到服务器来将标志发送到服务器。In some examples, process 800 can further include sending a flag indicating that the new pixel data sample is to be removed from the new clue data. In other examples, process 800 can further include sending a flag indicating that a row of pixel data samples is to be removed from the new clue data. In such an example, the new pixel data sample can be included in the row. In either set of examples, the flag can be sent to the server by addressing the flag to the server.
图9是示出使用初始帧数据来确定未识别的媒体段以补充新的帧数据的过程900的示例的流程图。在一些示例中,过程800可以由媒体系统执行。过程900被示为逻辑流程图,其操作表示可以在硬件、计算机指令或其组合中实施的操作序列。在计算机指令的背景中,该操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时执行所述操作。通常,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。所描述的操作的顺序不旨在被解释为限制,并且任何数量的所述操作可以以任何顺序和/或并行地组合以实现该过程。FIG9 is a flow chart illustrating an example of a process 900 for using initial frame data to determine unrecognized media segments to supplement new frame data. In some examples, process 800 can be performed by a media system. Process 900 is illustrated as a logical flow chart, the operations of which represent a sequence of operations that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the operations. Typically, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform specific functions or implement specific data types. The order of the operations described is not intended to be construed as limiting, and any number of the operations described can be combined in any order and/or in parallel to implement the process.
另外,过程900可以在用可执行指令配置的一个或多个计算机系统的控制下执行,并且可以被实现为通过硬件或其组合在一个或多个处理器上一同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用程序)。如上所述,例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式,代码可以存储在机器可读存储介质上。机器可读存储介质可以是非暂态的。In addition, process 900 can be executed under the control of one or more computer systems configured with executable instructions, and can be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) that is executed together on one or more processors through hardware or a combination thereof. As described above, the code can be stored on a machine-readable storage medium, for example, in the form of a computer program including multiple instructions that can be executed by one or more processors. The machine-readable storage medium can be non-transitory.
在步骤910处,过程900包括将多个参考数据集存储在参考数据库中。在一些示例中,参考数据集可以与媒体段相关联。在一些示例中,参考数据集可以对应于线索数据(例如,可以与线索数据类似的方式来确定参考数据集,使得参考数据集可以与线索数据匹配)。At step 910, process 900 includes storing a plurality of reference data sets in a reference database. In some examples, the reference data sets can be associated with media segments. In some examples, the reference data sets can correspond to clue data (e.g., the reference data sets can be determined in a manner similar to the clue data such that the reference data sets can be matched with the clue data).
在步骤920处,过程900包括接收帧的线索数据。线索数据可以从服务器(例如,匹配服务器)接收。在一些示例中,线索数据可以包括与帧相关联的多个像素数据样本。该帧可以与第一未识别的媒体段相关联。At step 920, process 900 includes receiving clue data for a frame. The clue data can be received from a server (e.g., a matching server). In some examples, the clue data can include a plurality of pixel data samples associated with the frame. The frame can be associated with the first unrecognized media segment.
在步骤930处,过程900包括识别帧的线索数据中不存在像素数据样本。在一些示例中,如上所述,识别不存在像素数据样本包括针对丢失的像素数据样本分析线索数据。At step 930, process 900 includes identifying absent pixel data samples in clue data for the frame. In some examples, as described above, identifying absent pixel data samples includes analyzing the clue data for missing pixel data samples.
在其它示例中,过程900可以通过以下步骤识别像素数据样本不存在。如上所述,匹配服务器可以识别先前的线索数据并且确定先前的线索数据包括先前的像素数据样本。先前的线索数据可以在该线索数据之前被接收。在其它示例中,匹配服务器可以识别先前的线索数据,确定先前的像素数据样本不存在于先前的线索数据,并且确定使用先前的像素数据样本来匹配参考数据集的帧的线索数据,如上所述。In other examples, process 900 can identify that a pixel data sample does not exist by following the steps described above. As described above, the matching server can identify previous clue data and determine that the previous clue data includes a previous pixel data sample. The previous clue data can be received before the clue data. In other examples, the matching server can identify previous clue data, determine that the previous pixel data sample does not exist in the previous clue data, and determine to use the previous pixel data sample to match the clue data of the frame of the reference dataset, as described above.
在步骤940处,过程900包括将帧的线索数据与参考数据集匹配。参考数据集可以与媒体段相关联。在一些示例中,匹配可以包括使用先前线索数据的先前像素数据样本。先前的线索数据可以来自先前帧。在一些示例中,先前像素数据样本对应于不存在于帧中的像素数据样本。At step 940, process 900 includes matching clue data for the frame to a reference data set. The reference data set can be associated with the media segment. In some examples, the matching can include using previous pixel data samples of previous clue data. The previous clue data can be from a previous frame. In some examples, the previous pixel data samples correspond to pixel data samples that are not present in the frame.
在步骤950处,过程900包括确定未识别的媒体段是该媒体段。如上所述,当与该媒体段相关联的仓达到阈值时,未识别的媒体段可被识别为该媒体段。At step 950, process 900 includes determining that the unidentified media segment is the media segment. As described above, the unidentified media segment can be identified as the media segment when the bin associated with the media segment reaches a threshold.
在一些示例中,过程900可以进一步包括接收标志,该标志指示像素数据样本不存在于线索数据。像素数据样本的不存在可以使用该标志来识别。在其它示例中,过程900可以进一步包括接收标志,该标志指示一行像素数据样本不存在于线索数据。在这种示例中,像素数据样本可以被包括在该行中。In some examples, process 900 may further include receiving a flag indicating that the pixel data sample is not present in the clue data. The absence of the pixel data sample can be identified using the flag. In other examples, process 900 may further include receiving a flag indicating that a row of pixel data samples is not present in the clue data. In such an example, the pixel data sample may be included in the row.
在一些示例中,过程900可以进一步包括从中间帧识别中间线索数据。中间线索数据可以包括来自中间帧的多个像素数据样本。在一些示例中,中间帧可以与第一未识别媒体段相关联。在这种示例中,过程900可以进一步包括识别没有中间像素数据样本来自该中间帧的中间线索数据。In some examples, process 900 can further include identifying intermediate cue data from the intermediate frame. The intermediate cue data can include a plurality of pixel data samples from the intermediate frame. In some examples, the intermediate frame can be associated with the first unidentified media segment. In such examples, process 900 can further include identifying intermediate cue data having no intermediate pixel data samples from the intermediate frame.
在这种示例中,过程900可以进一步包括从先前帧中识别先前的线索数据。先前的线索数据可以包括来自先前帧的多个像素数据样本。在一些示例中,先前帧可以与第二未识别的媒体段相关联。在一些示例中,第二未识别视频段可以与第一未识别视频段相同。例如,媒体系统可以从同一未识别的视频段接收两个帧,并将这两个帧发送给匹配服务器。在其它示例中,第二未识别视频段可以不同于第一未识别视频段。例如,第一未识别视频段与第二未识别视频段之间的过渡可能发生在接收初始帧与新帧之间。In such an example, process 900 may further include identifying previous clue data from a previous frame. The previous clue data may include multiple pixel data samples from the previous frame. In some examples, the previous frame may be associated with a second unidentified media segment. In some examples, the second unidentified video segment may be the same as the first unidentified video segment. For example, the media system may receive two frames from the same unidentified video segment and send the two frames to the matching server. In other examples, the second unidentified video segment may be different from the first unidentified video segment. For example, the transition between the first unidentified video segment and the second unidentified video segment may occur between receiving the initial frame and the new frame.
如上所讨论,视频匹配系统可以被配置成当媒体内容流包括未识别的媒体段时识别该媒体内容流。如上面进一步讨论的,识别媒体内容流可以包括识别在未识别的媒体段之前或之后由媒体显示设备呈现的媒体内容。以上关于图1讨论了用于识别媒体内容的过程。具体地,视频内容系统可以使用从媒体内容设备的显示机构取得的样本(例如,图形和/或音频样本)并且从这些样本生成线索。视频匹配系统然后可以将线索与参考数据库匹配,其中数据库包含已知内容的线索。As discussed above, the video matching system can be configured to identify the media content stream when the media content stream includes unidentified media segments. As discussed further above, identifying the media content stream can include identifying the media content presented by the media display device before or after the unidentified media segments. The process for identifying media content is discussed above with respect to FIG1. Specifically, the video content system can use samples (e.g., graphics and/or audio samples) obtained from the display mechanism of the media content device and generate clues from these samples. The video matching system can then match the clues with a reference database, wherein the database contains clues of known content.
视频匹配系统可以进一步包括用于提高查找数据库中的潜在匹配或“候选者”的效率的各种方法。数据库可以包含大量的线索,并且因此视频匹配系统可以包括用于找出候选线索以匹配从媒体内容设备的显示机构生成的线索的算法。定位候选提示可能比用于将线索值与数据库中的值匹配的其它方法(诸如,将线索与数据库中的每个条目匹配)更有效。The video matching system may further include various methods for improving the efficiency of finding potential matches or "candidates" in the database. The database may contain a large number of clues, and therefore the video matching system may include an algorithm for finding candidate clues to match the clues generated by the display mechanism of the media content device. Locating candidate clues may be more efficient than other methods for matching clue values with values in the database (such as matching the clue with each entry in the database).
最近的邻居和路径追踪是可用于在参考数据库中定位候选队列的技术的示例。下面给出使用模糊线索跟踪视频传输的示例,但一般概念可以应用于从参考数据库中选择候选匹配的任何领域。Nearest neighbor and path tracing are examples of techniques that can be used to locate candidate queues in a reference database. Below is an example of using fuzzy cues to track video transmissions, but the general concept can be applied to any field where candidate matches are selected from a reference database.
呈现了一种用于高效视频追踪的方法。给定大量视频段,系统必须能够实时识别给定查询视频输入取自什么视频段以及在什么时间偏移。视频段和偏移一起被称为位置。该方法被称为视频追踪,因为它必须能够有效地检测和适应暂停、快进、倒带、突然切换到其它视频段并切换到未知视频段。在能够追踪实时视频之前,处理数据库。视觉线索(少数像素值)从帧中每隔恒定的几分之一秒被取出,并放入专门的数据结构(请注意,这也可以实时完成)。视频追踪通过不断接收来自输入视频的线索并更新关于其当前位置的一组信念或估计来执行。每个线索或者同意或者不同意该估计,并且它们被调节以反映新的证据。如果对此为真的置信度足够高,则假设视频位置是正确的位置。通过仅追踪一小部分可能的“可疑”位置,这可以高效地完成。A method for efficient video tracking is presented. Given a large number of video segments, the system must be able to identify in real time what video segment a given query video input was taken from and at what time offset. The video segment and offset together are called a position. The method is called video tracking because it must be able to efficiently detect and adapt to pauses, fast forwards, rewinds, sudden switches to other video segments and switches to unknown video segments. Before being able to track live video, a database is processed. Visual clues (a few pixel values) are taken from the frame every constant fraction of a second and put into a specialized data structure (note that this can also be done in real time). Video tracking is performed by constantly receiving clues from the input video and updating a set of beliefs or estimates about its current position. Each clue either agrees or disagrees with the estimate, and they are adjusted to reflect the new evidence. If the confidence that this is true is high enough, the video position is assumed to be the correct position. This can be done efficiently by tracking only a small number of possible "suspicious" positions.
描述了用于视频追踪的方法,但是该方法使用数学构造来解释和调查它。该介绍的目的是给读者提供在这两个领域之间转换的必要工具。视频信号由连续帧组成。每一帧可以被认为是静止图像。每一帧都是像素的光栅。每个像素由对应于构成该像素颜色的红色、绿色和蓝色(RGB)的三个强度值构成。在本文使用的术语中,线索是帧中的像素的子集的RGB值的列表以及对应的时间戳。线索中的像素数量明显小于帧中的像素数量,通常在5到15之间。作为标量值的有序列表,线索值实际上是向量。该向量也被称为点。Methods for video tracking are described, but the method uses mathematical constructions to explain and investigate it. The purpose of this introduction is to give the reader the necessary tools to transition between the two fields. A video signal consists of a series of frames. Each frame can be thought of as a still image. Each frame is a raster of pixels. Each pixel is made up of three intensity values corresponding to the red, green, and blue (RGB) colors that make up the color of that pixel. In the terminology used in this article, a clue is a list of RGB values for a subset of the pixels in a frame, along with the corresponding timestamps. The number of pixels in a clue is significantly smaller than the number of pixels in a frame, typically between 5 and 15. As an ordered list of scalar values, the clue values are actually vectors. This vector is also called a point.
尽管这些点在高维度中,通常在15到150之间,但它们可以被想象成二维空间中的点。事实上,插图将作为二维绘图给出。现在,考虑视频的进展及其对应的线索点。通常,小的时间变化会导致像素值的小变化。像素点可以被视为在帧之间少许“移动”。从帧到帧之间的这些微小的移动之后,该线索跟随空间中的路径,如珠子将在弯曲线上那样。Although these points are high in dimension, typically between 15 and 150, they can be imagined as points in a two-dimensional space. In fact, the illustrations will be presented as two-dimensional plots. Now, consider the progression of the video and its corresponding clue points. Typically, small changes in time result in small changes in pixel values. The pixels can be thought of as "moving" slightly between frames. Following these tiny shifts from frame to frame, the clue follows a path in space, just as a bead would on a curved line.
在这种类比的语言中,在视频追踪中,接收珠子在空间中的位置(线索点),并且寻找珠子跟随的线的一部分(路径)。出于两个事实这明显更困难。首先,珠子不准确地跟随线,而是与线保持具有一些变化的未知距离。其次,线都缠在一起。这些陈述在第2节中变得更准确。下面描述的算法在两个概念步骤中完成这项任务。当接收到线索时,算法查找所有已知路径上足够接近线索点的所有点;这些点被称为可疑者。这使用等球算法中概率点位置有效地完成。这些可疑者被添加到历史数据结构中,并且计算它们中每一个指示真实位置的概率。该步骤还包括移除概率不大的可疑位置。该历史更新过程一方面确保只保留一小段历史,另一方面不会删除可能的位置。通用算法在算法1中给出,并在图10中示出。In the language of this analogy, in video tracking, we receive the position of a bead in space (a clue point) and try to find the part of the line that the bead follows (the path). This is significantly more difficult for two reasons. First, the bead does not follow the line exactly, but rather maintains an unknown distance from it with some variation. Second, the lines are all tangled together. These statements become more precise in Section 2. The algorithm described below accomplishes this task in two conceptual steps. When a clue is received, the algorithm finds all points on all known paths that are close enough to the clue point; these points are called suspects. This is done efficiently using the probabilistic point positions in the equisphere algorithm. These suspects are added to a history data structure, and the probability of each of them indicating the true position is calculated. This step also includes removing suspicious positions with low probability. This history update process ensures that only a small piece of history is retained and that possible positions are not deleted. The general algorithm is given in Algorithm 1 and illustrated in Figure 10.
下节以描述第1节中的等球中概率点位置(PPLEB)算法开始。使用PPLEB算法以便有效地执行上述算法1中的第5行。迅速执行搜索可疑者的能力对于该方法的适用性至关重要。在第2节中,描述了执行第6和7行的一个可能的统计模型。所描述的模型是设置的自然选择。它也显示了如何可以非常有效地使用它。The next section begins by describing the Probability Point Location in Equal Sphere (PPLEB) algorithm from Section 1. The PPLEB algorithm is used to efficiently execute Line 5 of Algorithm 1 above. The ability to quickly perform the search for suspects is crucial to the applicability of this method. In Section 2, a possible statistical model for executing Lines 6 and 7 was described. The described model is a natural choice for this setting. It also shows how it can be used very efficiently.
第1节-等球中的概率点位置Section 1 - Probability Point Positions in Equal Spheres
下节描述了用于执行等球(PPLEB)中概率点位置的简单算法。在传统的PLEB(等球中的点位置)中,在lR d和半径为r的特定球中,算法以n点集合x开始。该算法被给予O(多(n))预处理时间以产生有效的数据结构。然后,给定查询点x,算法需要返回所有点x,使得||x-xi||≤r。点的集合使得||x-xi||≤r几何地位于围绕查询x的半径r的球内。该关系被称为x,接近x或者作为x,并且x是邻居。The following section describes a simple algorithm for performing probabilistic point location in equal spheres (PPLEB). In traditional PLEB (point location in equal spheres), the algorithm begins with a set of n points x in a particular sphere of lR d and radius r. The algorithm is given O(multi(n)) preprocessing time to generate an efficient data structure. Then, given a query point x, the algorithm needs to return all points x such that ||xx i || ≤ r. The set of points such that ||xx i || ≤ r is geometrically located within the sphere of radius r surrounding the query x. This relationship is referred to as x, is near x, or is x, and x is a neighbor.
PPLEB的问题和最近邻居搜索的问题是在学术界受到很多关注的两个类似的问题。事实上,这些问题是计算几何学领域最早研究的问题。许多不同的方法迎合环境维度较小或不变的情况。这些以不同的方式划分空间,并递归搜索各部分。这些方法包括KD树、覆盖树和其它。尽管在低维度方面非常有效,但是当环境维度高时,它们往往表现很差。这被称为“维度诅咒”。各种方法试图解决这个问题,同时克服维度诅咒。本文使用的算法使用更简单和更快的版本的算法,并且可以依靠局部敏感散列(Local Sensitive Hashing)。The PPLEB problem and the nearest neighbor search problem are two similar problems that have received a lot of attention in academia. In fact, these problems are some of the earliest problems studied in the field of computational geometry. Many different methods cater to situations where the environment dimension is small or constant. These divide the space in different ways and recursively search each part. These methods include KD trees, cover trees, and others. Although very effective in low dimensions, they tend to perform poorly when the environment dimension is high. This is known as the "curse of dimensionality". Various methods have tried to solve this problem while overcoming the curse of dimensionality. The algorithm used in this article uses a simpler and faster version of the algorithm and can rely on Local Sensitive Hashing.
第1.1节局部敏感散列Section 1.1 Locality Sensitive Hashing
在局部敏感散列的方案中,人们设计了散列函数族H,使得:In the locality-sensitive hashing scheme, a hash function family H is designed such that:
换句话说,如果x和y彼此接近,x和y被映射到相同的值h的概率显著更高。In other words, if x and y are close to each other, the probability that x and y are mapped to the same value h is significantly higher.
为了清楚起见,让我们首先处理所有进入的向量具有相同长度r'和的简化情况。后一条件的原因稍后会变得清楚。首先定义随机函数u∈U,它根据x、y之间的角度在x和y之间分开。令是从单位球Sd-1中均匀选择的随机向量,令很容易验证Pru-U(u(x))≠u(y))=0x,y/π。此外,对于圆上的任何点x、y、x'、y',使得For clarity, let us first deal with the simplified case where all incoming vectors have the same length r' and . The reason for the latter condition will become clear later. First, define a random function u∈U that splits between x and y according to the angle between them. Let be a random vector uniformly chosen from the unit sphere S d-1 , and let be easily verified that Pr uU (u(x)) ≠ u(y)) = 0 x,y /π . Furthermore, for any point x,y,x',y' on the circle such that
函数族H被设定为u的t个独立副本的叉积,即h(x)=[u1(x),...,ut(x)]。直觉上,人们希望:如果h(x)=h(y),则x和y很可能彼此接近。让我们量化一下。首先,计算假阳性错误的预期数量这些是h(x)=h(y)但是||x-y||>2r的情况。找到nfp不超过1的值t,即一预计不会是错的。The family of functions H is defined as the cross product of t independent copies of u, i.e., h(x) = [u1(x), ..., ut (x)]. Intuitively, one would expect that if h(x) = h(y), then x and y are likely close to each other. Let's quantify this. First, calculate the expected number of false positive errors. These are cases where h(x) = h(y) but ||xy|| > 2r. Find a value t for which nfp does not exceed 1, meaning that one is not expected to be wrong.
E[nft/≤n(1-2p)t≤1E[n ft /≤n(1-2p) t ≤1
→t≥log(1/n)/log(1-2p)→t≥log(1/n)/log(1-2p)
现在计算h(x)=h(y)在给定它们是邻居时的概率:Now calculate the probability that h(x) = h(y) given that they are neighbors:
这里注意,必须具有2p<1,这需要这听起来可能不像是非常高的成功概率。事实上,显著小于1/2。下一节将介绍如何将这个概率提高到1/2。Note that we must have 2p < 1, which requires a probability of success that may not sound very high. In fact, it is significantly less than 1/2. The next section shows how to increase this probability to 1/2.
第1.2节点搜索算法1.2 Node Search Algorithm
每个函数h将空间中的每个点映射到桶。将点x的桶函数相对于散列函数h定义为Bh(x)≡{xi|h(xi)=h(x)}。所维持的数据结构是桶函数[Bh1,...,Bhm]的实例。当搜索点x时,函数返回根据上一节,有两个期望的结果:Each function h maps each point in space to a bucket. The bucket function for a point x is defined with respect to the hash function h as B h (x) ≡ { xi | h( xi ) = h(x)}. The data structure maintained is an instance of the bucket function [ Bh1 , ..., Bhm ]. When searching for a point x, the function returns:
Pr(xi∈B(x)|||xi-x||≤r)≥1/2Pr(x i ∈B(x)|||x i -x||≤r)≥1/2
换句话说,尽管发现x的每个邻居至少有1/2的概率,但是不可能找到许多非邻居。In other words, although every neighbor of x is found with probability at least 1/2, it is impossible to find many non-neighbors.
第1.3节处理不同的半径输入向量Section 1.3 Handling Different Radius Input Vectors
之前的章节仅处理搜索相同长度的向量,即r'。现在描述的是如何使用该构建作为构件块来支持不同半径的搜索。如图13中可见,空间被分成若干个具有指数增长宽度的环。由Ri表示的环i包括所有的点xi,使得‖xi‖∈[2r(1+∈)i,2r(1+∈)i+1]。这样做达到了两个目的。首先,如果xi和xj属于同一个环,则||xj||/(1+∈)≤‖xi‖≤||xj||(1+∈)。其次,任何搜索都可以在最多1/∈这种环中执行。此外,如果数据集中的最大长度向量是r',则系统中环的总数是O(log(r'/r))。The previous sections dealt only with searching vectors of the same length, namely r'. We now describe how to use this construction as a building block to support searches of different radii. As can be seen in Figure 13, the space is divided into a number of rings with exponentially increasing widths. A ring i, denoted by Ri , consists of all points x i such that ‖x i ‖∈[2r(1+∈) i , 2r(1+∈) i+1 ]. This achieves two goals. First, if x i and x j belong to the same ring, then ||x j ||/(1+∈)≤‖x i ‖≤||x j ||(1+∈). Second, any search can be performed in at most 1/∈ such rings. Furthermore, if the maximum length vector in the dataset is r', then the total number of rings in the system is O(log(r'/r)).
第2节路径追踪问题Section 2 Path Tracing Problem
在路径追踪问题中,空间中的固定路径与时间点序列中的粒子的位置一起给出。术语“粒子”、“线索”和“点”将可以互换使用。该算法需要输出粒子在路径上的位置。这因为几个因素而变得更加困难:粒子只是近似跟随路径;路径可以不连续并多次自行相交;粒子和路径位置二者都是按时间点序列给出的(每个时间点都不相同)。In the path tracing problem, a fixed path in space is given along with the positions of particles in a sequence of time points. The terms "particle," "clue," and "point" will be used interchangeably. The algorithm needs to output the position of the particle along the path. This is made more difficult by several factors: the particle only approximately follows the path; the path can be discontinuous and intersect itself multiple times; and both the particle and path positions are given as a sequence of time points (different at each time point).
重要的是,要注意该问题可以模拟在任何数量的路径上跟踪粒子。这可以简单地通过将路径连接成一个长路径并将所得位置解释为单个路径上的位置来完成。It is important to note that this problem can be simulated by tracking particles along any number of paths. This can be done simply by concatenating the paths into one long path and interpreting the resulting positions as positions along a single path.
更准确地说,令路径P为参数曲线曲线参数将被称为时间。我们所知的路径上的点是在任意时间点ti给出的,即给出n对(ti,P(ti))。粒子跟随路径,但其位置在不同的时间点给出,如图14中所示。此外,还给出了m对(t’j,x(t’j)),其中x(t’j)是时间t’j中粒子的位置。More precisely, let the path P be a parametric curve. The parameters of the curve will be called time. A point on the path is given at any time t i , giving n pairs (t i , P(t i )). The particle follows the path, but its position is given at different times, as shown in Figure 14. Furthermore, m pairs (t' j , x(t' j )) are given, where x(t' j ) is the position of the particle at time t' j .
第2.1节似然估计Section 2.1 Likelihood Estimation
由于粒子不精确地跟随路径,并且由于路径可以多次自行相交,所以通常不可能肯定地识别粒子实际上在路径上的位置。因此,在所有可能的路径位置上计算概率分布。如果位置概率是显著可能的,则假定粒子位置是已知的。下节描述如何有效地完成此操作。Because particles do not follow a path exactly, and because a path can intersect itself multiple times, it is often impossible to identify with certainty where a particle actually is on the path. Therefore, a probability distribution is calculated over all possible path positions. If the position probability is significantly likely, the particle position is assumed to be known. The next section describes how to do this efficiently.
如果粒子跟随路径,则粒子时间戳与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'+Δ)。If the particle follows the path, the time difference between the particle's timestamp and the offset of the corresponding point on P should be relatively fixed. In other words, if x(t') is currently at offset t on the path, then it should be close to P(t). In addition, τ seconds ago, it should have been at offset t-τ. Therefore, x(t'-τ) should be close to P(t-τ) (note that if the particle intersects the path and x(t') is temporarily close to P(t), then x(t'-τ) and P(t-τ) are unlikely to be close as well). Define the relative offset as Δ = t-t'. Note that as long as the particle follows the path, the relative offset Δ remains unchanged. That is, x(t') is close to P(t'+Δ).
通过计算得到最大似然相对偏移:The maximum likelihood relative shift is obtained by calculation:
换句话说,最有可能的相对偏移是粒子历史对它而言最有可能的那个相对偏移。然而该方程不能在没有统计模型的情况下求解。该模型必须量化:x跟随路径有多紧;x在各个位置之间跳跃的概率有多大;路径和粒子曲线在测量点之间有多平滑。In other words, the most likely relative deviation is the one that the particle's history makes most likely for it. However, this equation cannot be solved without a statistical model. The model must quantify: how closely x follows the path; how likely x is to jump between locations; and how smoothly the path and particle curves between measurement points.
第2.2节时间折扣建仓Section 2.2 Time Discount Position Building
现在描述用于估计似然函数的统计模型。该模型假设粒子偏离路径的偏差以标准偏差ar正常分布。它还假定在任何给定的时间点,粒子将突然切换到另一条路径的概率是非零的。这体现在对过去点数的指数折扣。除了作为建模观点的合理选择之外,该模型还具有可高效更新的优点。对于一些恒定的时间单位1,设定似然函数与f成比例,其定义如下:We now describe the statistical model used to estimate the likelihood function. This model assumes that the deviations of a particle from its path are normally distributed with standard deviation ar. It also assumes that at any given point in time, there is a nonzero probability that the particle will suddenly switch to another path. This is reflected in an exponential discount over past points. In addition to being a reasonable choice of modeling perspective, this model has the advantage of being highly updateable. For some constant time unit 1, the likelihood function is set to be proportional to f and is defined as follows:
这里α<<1是比例系数并且ζ>0是粒子将以给定时间单位跳到路径上的随机位置的概率。Here α<<1 is the scaling factor and ζ>0 is the probability that the particle will jump to a random position on the path in a given time unit.
有效地更新函数f可以使用以下简单的观察来实现。Efficiently updating the function f can be achieved using the following simple observation.
此外,由于α<<1,如果||x(t′m)-P(ti)||≥r,则发生以下情况:Furthermore, since α<<1, if ||x(t′ m )-P(t i )||≥r, then the following occurs:
这是似然函数的重要性质,因为总和更新现在可以仅在x(t’j)的邻居上执行而不是在整个路径上执行。用S表示(ti,P(ti))的集合使得||x(t′m)-P(ti)||≤r。以下方程发生:This is an important property of the likelihood function, since the sum update can now be performed only on the neighbors of x(t' j ) instead of on the entire path. Let S denote the set of (t i , P(t i )) such that ||x(t′ m )-P(t i )||≤r. The following equation occurs:
这在下面的算法2.2中描述。项f被用作也接收负整数索引的稀疏向量。集合S是路径上x(ti)的所有邻居的集合,并且可以使用PPLEB算法快速计算。很容易验证,如果x(ti)的邻居数受一些常数nnear限制,则向量f中非零的数量由仅是更大的常数因子的nnear/ζ限制。该算法的最后阶段是如果超过一些阈值,则输出特定值δ。This is described in Algorithm 2.2 below. The term f is treated as a sparse vector that also accepts negative integer indices. The set S is the set of all neighbors of x(t i ) on the path and can be quickly computed using the PPLEB algorithm. It is easy to verify that if the number of neighbors of x(t i ) is bounded by some constant n near , then the number of nonzeros in the vector f is bounded by n near /ζ , which is just a larger constant factor. The final stage of the algorithm is to output a specific value δ if some threshold is exceeded.
图10给出三个连续的点位置和它们周围的路径点。请注意,无论是最低点还是中间点单独都不足以识别路径的正确部分。然而它们在一起可以识别。添加顶点增加了粒子确实是路径的最终(左)曲线的确定性。Figure 10 shows three consecutive point locations and the path points surrounding them. Notice that neither the lowest point nor the middle point alone is sufficient to identify the correct portion of the path. However, together they can be identified. Adding the vertex increases the certainty that the particle is indeed the final (left) curve of the path.
在图11中,给定n(灰色)点集合,该算法被给予查询点(黑色),并返回与它相隔距离r内的点集合(圆内的点)。在传统设定中,算法必须返回所有这些点。在概率设定中,每个这种点应该以一些恒定的概率返回。In Figure 11, given a set of n (grey) points, the algorithm is given a query point (black) and returns the set of points within a distance r from it (the points inside the circle). In the traditional setting, the algorithm must return all of these points. In the probabilistic setting, each such point should be returned with some constant probability.
图12示出了u(x1)、u(x2)和u(x)的值。直观地说,如果虚线在它们之间经过,则函数u给x1和x2赋予不同的值,如若不然,则赋予相同的值。沿随机方向经过的虚线确保发生这种情况的概率与x1和x2之间的角度成正比。Figure 12 shows the values of u( x1 ), u( x2 ), and u(x). Intuitively, function u assigns different values to x1 and x2 if the dashed line passes between them, and the same value otherwise. The dashed line passing in a random direction ensures that the probability of this happening is proportional to the angle between x1 and x2 .
图13示出通过将空间划分为多个环使得环Ri在半径2r(1+∈)i和2r(1+∈)i+1之间,可以确保环内的任何两个向量是相同长度的,直至(1+∈)因子,并且任何搜索在至多1/∈环中执行。Figure 13 shows that by dividing the space into multiple rings such that a ring R i is between radius 2r(1+∈) i and 2r(1+∈) i+1 , it is ensured that any two vectors within the ring are of the same length, up to a factor of (1+∈), and any search is performed in at most 1/∈ rings.
图14示出自相交的路径和查询点(黑色)。它表明,没有粒子位置的历史,就不可能知道它在路径上的位置。A self-intersecting path and query point (black) are shown in Figure 14. It shows that without the history of the particle's position, it is impossible to know its position on the path.
图15给出三个连续的点位置和它们周围的路径点。请注意,x(t1)和x(t2)单独都不足以识别路径的正确部分。然而它们在一起可以识别。添加x(t3)增加了粒子确实是路径的最终(左)曲线的确定性。Figure 15 shows three consecutive point locations and the path points around them. Note that neither x(t 1 ) nor x(t 2 ) alone is sufficient to identify the correct portion of the path. However, together they do. Adding x(t 3 ) increases the certainty that the particle is indeed the final (left) curve of the path.
可以根据具体要求做出实质性的变化。例如,也可以使用定制的硬件,和/或可以用硬件、软件(包括便携式软件,诸如小应用程序等)或两者来实现特定的要素。此外,可以利用到诸如网络输入/输出设备的其它访问或计算设备的连接。Substantial variations can be made depending on specific requirements. For example, customized hardware can also be used, and/or specific elements can be implemented using hardware, software (including portable software, such as applets, etc.), or both. In addition, connections to other access or computing devices, such as network input/output devices, can be utilized.
在前述说明书中,参考其具体示例描述了本公开的各方面,但是本领域技术人员将认识到,本公开不限于此。以上公开的各种特征和方面可以单独或联合使用。此外,在不脱离本说明书的更宽泛的精神和范围的情况下,可以在除本文所描述的那些以外的任何数量的环境和应用中使用示例。因此,说明书和附图被认为是说明性的而不是限制性的。In the foregoing description, various aspects of the present disclosure have been described with reference to their specific examples, but those skilled in the art will recognize that the present disclosure is not limited thereto. The various features and aspects disclosed above can be used individually or in combination. In addition, without departing from the broader spirit and scope of this specification, examples can be used in any number of environments and applications other than those described herein. Therefore, the description and drawings are to be considered illustrative rather than restrictive.
在前面的描述中,为了说明的目的,以特定的顺序描述了方法。应该理解的是,在替代示例中,可以以与所描述的顺序不同的顺序来执行这些方法。还应该理解的是,上述方法可以由硬件组件来执行,或者可以按照机器可执行指令的顺序来实施,该机器可执行指令可用于使机器(诸如通用或专用处理器或用这些指令编程的逻辑电路)来执行该方法。这些机器可执行指令可以存储在一个或多个机器可读介质上,诸如CD-ROM或其它类型的光盘、软盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、闪速存储器或适于存储电子指令的其它类型机器可读介质。可替代地,该方法可以通过硬件和软件的组合来执行。In the foregoing description, for the purpose of illustration, method is described in a specific order. It should be understood that, in alternative examples, these methods can be performed in an order different from the described order. It should also be understood that the above method can be performed by hardware components, or can be implemented in the order of machine executable instructions, which can be used to make a machine (such as a general or special processor or a logic circuit programmed with these instructions) perform the method. These machine executable instructions can be stored on one or more machine-readable media, such as CD-ROM or other types of optical disks, floppy disks, ROM, RAM, EPROM, EEPROM, magnetic cards or optical cards, flash memories or other types of machine-readable media suitable for storing electronic instructions. Alternatively, the method can be performed by a combination of hardware and software.
在将组件描述为被配置为执行某些操作的情况下,可以例如通过执行操作的设计电子电路或其它硬件,通过执行操作的编程可编程电子电路(例如,微处理器或其它合适的电子器件电路),或其任何组合来实现这种配置。Where a component is described as being configured to perform certain operations, such configuration may be achieved, for example, by designed electronic circuits or other hardware that perform the operations, by programmed programmable electronic circuits (e.g., a microprocessor or other suitable electronic device circuitry) that perform the operations, or any combination thereof.
虽然本文已经详细描述了本申请的说明性示例,但是应该理解,本发明构思可以以其它方式被不同地体现和采用,并且所附权利要求旨在被解释为包括这种变体,除了受现有技术的限制。While illustrative examples of the present application have been described in detail herein, it should be understood that the inventive concept may be otherwise variously embodied and employed, and that the appended claims are intended to be interpreted to include such variations, except as limited by the prior art.
图1Figure 1
102 客户端设备102 client devices
104 匹配服务器104 Matchmaking Servers
106 媒体客户端106 Media Client
108 输入设备108 Input Devices
110 输出设备110 Output Devices
112 匹配引擎112 Matching Engine
114 候选确定引擎114 Candidate Determination Engine
116 参考数据库116 reference databases
118 数据源118 Data Sources
120 结果引擎120 Results Engine
126 背景触发的应用程序126 Background-triggered applications
128 视频节目128 video programs
图2Figure 2
Timecode 时间码Timecode
Metadata 元数据Metadata
204 参考数据点204 reference data points
212 匹配引擎212 Matching Engine
214 候选确定引擎214 Candidate Determination Engine
图3Figure 3
Timecode 时间码Timecode
Metadata 元数据Metadata
10pixel 10个像素10pixel 10 pixels
图4Figure 4
10pixel 10个像素10pixel 10 pixels
图7Figure 7
700 帧序列700 frame sequence
图8Figure 8
805 接收初始帧805 Receive initial frame
810 确定初始帧的初始线索数据810 Determine the initial clue data of the initial frame
815 发送初始线索数据815 Send initial clue data
820 接收新帧820 Receive new frame
825 确定新帧的新线索数据825 Determine the new clue data for the new frame
830 识别像素值范围830 Identify pixel value range
835 确定初始像素数据样本与新像素数据样本之间的像素值差835 Determine the pixel value difference between the initial pixel data sample and the new pixel data sample
840 确定像素值差在像素值范围内840 Determine if the pixel value difference is within the pixel value range
845 当像素值差在像素值范围内时,通过从新线索数据中移除新像素数据样845 When the pixel value difference is within the pixel value range, the new pixel data sample is removed from the new clue data.
本来更新新线索数据Originally updated new clue data
850 发送更新的新线索数据850 Send updated new lead data
图9Figure 9
910 在参考数据库中存储多个参考数据集910 Storing multiple reference datasets in a reference database
920 接收帧的线索数据920 Receive frame clue data
930 识别帧的线索数据中不存在像素数据样本930 The pixel data sample does not exist in the clue data of the recognition frame
940 将帧的线索数据与参考数据集匹配940 Matching the clue data of the frame with the reference dataset
950 确定未识别的媒体段是该媒体段950 Determine if the unrecognized media segment is this media segment
图10Figure 10
Path points 路径点Path points
Suspect 可疑者Suspect
Particle location 粒子位置Particle location
Claims (17)
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201562193342P | 2015-07-16 | 2015-07-16 | |
| US62/193,342 | 2015-07-16 | ||
| PCT/US2016/042522 WO2017011758A1 (en) | 2015-07-16 | 2016-07-15 | Optimizing media fingerprint retention to improve system resource utilization |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1255273A1 HK1255273A1 (en) | 2019-08-09 |
| HK1255273B true HK1255273B (en) | 2021-05-21 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN108353208B (en) | Optimizing media fingerprint retention to improve system resource utilization | |
| EP3284017B1 (en) | Systems and methods for reducing data density in large datasets | |
| AU2016291690B2 (en) | Prediction of future views of video segments to optimize system resource utilization | |
| HK1255273B (en) | Optimizing media fingerprint retention to improve system resource utilization | |
| NZ738944B2 (en) | Optimizing media fingerprint retention to improve system resource utilization | |
| NZ735930B2 (en) | Systems and methods for reducing data density in large datasets | |
| HK1249246B (en) | Systems and methods for reducing data density in large datasets | |
| HK1255272B (en) | Systems and methods for partitioning search indexes for improved efficiency in identifying media segments |