BR112017022341B1 - Método de identificação de um ou mais pontos de dados desconhecidos e sistema - Google Patents

Método de identificação de um ou mais pontos de dados desconhecidos e sistema Download PDF

Info

Publication number
BR112017022341B1
BR112017022341B1 BR112017022341-4A BR112017022341A BR112017022341B1 BR 112017022341 B1 BR112017022341 B1 BR 112017022341B1 BR 112017022341 A BR112017022341 A BR 112017022341A BR 112017022341 B1 BR112017022341 B1 BR 112017022341B1
Authority
BR
Brazil
Prior art keywords
vector
data point
unknown
point
vectors
Prior art date
Application number
BR112017022341-4A
Other languages
English (en)
Other versions
BR112017022341A2 (pt
Inventor
Zeev Neumeier
Original Assignee
Inscape Data, Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inscape Data, Inc filed Critical Inscape Data, Inc
Priority claimed from PCT/US2016/027691 external-priority patent/WO2016168556A1/en
Publication of BR112017022341A2 publication Critical patent/BR112017022341A2/pt
Publication of BR112017022341B1 publication Critical patent/BR112017022341B1/pt

Links

Images

Abstract

SISTEMA, MÉTODO DE IDENTIFICAÇÃO DE CONTEÚDO DE VÍDEO, E MÉTODO DE IDENTIFICAÇÃO DE UM OU MAIS PONTOS DE DADOS DESCONHECIDOS. As técnicas e os sistemas da presente invenção são providos para identificar o conteúdo desconhecido. Por exemplo, um número de vetores fora de uma pluralidade de vetores projetados a partir de um ponto de origem pode ser determinado que está entre um ponto de dados de referência e um ponto de dados desconhecido. O número de vetores pode ser usado para estimar um ângulo entre um primeiro vetor (a partir do ponto de origem a um ponto de dados de referência) e um segundo vetor (a partir do ponto de origem a um ponto de dados desconhecido). Uma distância entre o ponto de dados de referência e o ponto de dados desconhecido pode então ser determinada. Usando a distância determinada, os pontos de dados candidatos podem ser determinados a partir de um conjunto de pontos de dados de referência. Os pontos de dados candidatos podem ser analisados para identificar o ponto de dados desconhecido.

Description

REFERÊNCIA CRUZADA A PEDIDOS RELACIONADOS
[001] Este pedido reivindica o benefício de Pedido Provisório U.S. No. 62/149.193, depositado em 17 de abril de 2015, que é aqui incorporado por referência em sua totalidade.
[002] Este pedido é relacionado ao Pedido de Patente Norte-americana No. de Série 12/788.748, depositado em 27 de maio de 2010, Pedido de Patente Norte-americana No. de Série 12/788.721, depositado em 27 de maio de 2010, Pedido de Patente Norte-americana No. de Série 14/089.003, depositado em 25 de novembro de 2013, Pedido de Patente Norte-americana No. de Série 14/217.075, depositado em 17 de março de 2014, Pedido de Patente Norte-americana No. de Série 14/217.039, depositado em 17 de março de 2014, Pedido de Patente Norte-americana No. de Série 14/217.094, depositado em 17 de março de 2014, Pedido de Patente Norte-americana No. de Série 14/217.375, depositado em 17 de março de 2014, Pedido de Patente Norte-americana No. de Série 14/217.425, depositado em 17 de março de 2014, Pedido de Patente Norte- americana No. de Série 14/217.435, depositado em 17 de março de 2014, Pedido de Patente Norte-americana No. de Série 14/551.933, depositado em 24 de novembro de 2014, e Pedido de Patente Norte-americana No. de Série 14/763.158, depositado em 23 de dezembro de 2014, todos dos quais são aqui incorporados por referência em sua totalidade.
CAMPO DA INVENÇÃO
[003] A presente descrição refere-se geralmente à identificação eficaz do conteúdo enquanto limitando a quantidade de dados necessários para identificar o conteúdo. Por exemplo, várias técnicas e sistemas são providos para a identificação do conteúdo enquanto reduz a densidade de dados em grandes conjuntos de dados.
ANTECEDENTES DA INVENÇÃO
[004] O gerenciamento de conjuntos de dados densos provê desafios significativos. Por exemplo, há dificuldades no armazenamento, na indexação e no gerenciamento de grandes quantidades de dados que são necessárias para certos sistemas funcionarem. Uma área em que tais problemas surgem inclui sistemas que buscam e identificam uma combinação mais próxima entre os dados que usam dados de referência armazenados em grandes conjuntos de dados. O armazenamento dos pontos de dados reais compõe grande parte do volume de armazenamento em um banco de dados.
DESCRIÇÃO RESUMIDA DA INVENÇÃO
[005] Certos aspectos e características da presente descrição referem-se à identificação de conteúdo desconhecido. Por exemplo, uma pluralidade de vetores pode ser projetada a partir de um ponto de origem. Pode ser determinado um número de vetores fora da pluralidade de vetores que estão entre um ponto de dados de referência e um ponto de dados desconhecido. O número de vetores pode ser usado para estimar um ângulo entre um primeiro vetor (a partir do ponto de origem a um ponto de dados de referência) e um segundo vetor (a partir do ponto de origem a um ponto de dados desconhecido). Uma distância entre o ponto de dados de referência e o ponto de dados desconhecido pode então ser determinada. Usando a distância determinada, os pontos de dados candidatos podem ser determinados a partir de um conjunto de pontos de dados de referência. Os pontos de dados candidatos podem ser analisados para identificar o ponto de dados desconhecido.
[006] As técnicas descritas aqui permitem a identificação de conteúdo desconhecido, ao mesmo tempo que reduz a densidade de dados em grandes conjuntos de dados. Por exemplo, os sistemas e os métodos são descritos para melhorar a eficiência de armazenamento e busca de grandes conjuntos de dados. As técnicas podem ser aplicadas a qualquer sistema que coleta e manipula grandes volumes de dados. Tais sistemas podem incluir, por exemplo, sistemas automatizados de busca com base em conteúdo (por exemplo, reconhecimento automatizado de conteúdo para aplicativos relacionados ao vídeo ou outro aplicativo adequado), sistemas MapReduce, sistemas Bigtable, sistemas de reconhecimento de padrão, sistemas de reconhecimento facial, sistemas de classificação, sistemas de visão por computador, sistemas de compressão de dados, análise de agrupamento (“cluster analysis”), ou qualquer outro sistema adequado.
[007] Em alguns exemplos, as técnicas realizadas usando os sistemas e os métodos descritos aqui reduzem significativamente a quantidade de dados que devem ser armazenados a fim de buscar e encontrar relações entre os grupos de dados desconhecidos e conhecidos. Por exemplo, a quantidade de dados que devem ser armazenados pode ser reduzida pela eliminação da necessidade de armazenar os pontos de dados conhecidos reais.
[008] De acordo com pelo menos um exemplo, um sistema é provido para identificar o conteúdo de vídeo que é exibido por um display. O sistema inclui um ou mais processadores. O sistema ainda inclui um meio de armazenamento não transitório legível por máquina contendo instruções que quando executadas no um ou mais processadores, fazem com que o um ou mais processadores realizem operações incluindo: obtenção de uma pluralidade de pontos de dados de vídeo de referência; determinação de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de vídeo de referência da pluralidade de pontos de dados de vídeo de referência; obtenção de um ponto de dados de vídeo desconhecido associado ao conteúdo de vídeo que é apresentado por um display; determinação de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados de vídeo desconhecido; projeção de uma pluralidade de vetores a partir do ponto de origem; determinação de um número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido; estimativa de um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinação de uma distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; identificação de um ou mais pontos de dados de vídeo candidatos a partir da pluralidade de pontos de dados de vídeo de referência, em que um ponto de dados de vídeo candidato é um candidato para a combinação do ponto de dados de vídeo desconhecido, e em que o um ou mais pontos de dados de vídeo candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de vídeo de referência e o ponto de dados de vídeo desconhecido; e identificação do conteúdo de vídeo que é apresentado pelo display, em que o conteúdo de vídeo que é apresentado pelo display é identificado por comparação do ponto de dados de vídeo desconhecido com o um ou mais pontos de dados de vídeo candidatos.
[009] Em outro exemplo, um método implementado por computador é provido que inclui: obtenção de uma pluralidade de pontos de dados de vídeo de referência; determinação de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de vídeo de referência da pluralidade de pontos de dados de vídeo de referência; obtenção de um ponto de dados de vídeo desconhecido associado ao conteúdo de vídeo que é apresentado por um display; determinação de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados de vídeo desconhecido; projeção de uma pluralidade de vetores a partir do ponto de origem; determinação de um número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido; estimativa de um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinação de uma distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; identificação de um ou mais pontos de dados de vídeo candidatos a partir da pluralidade de pontos de dados de vídeo de referência, em que um ponto de dados de vídeo candidato é um candidato para a combinação do ponto de dados de vídeo desconhecido, e em que o um ou mais pontos de dados de vídeo candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de vídeo de referência e o ponto de dados de vídeo desconhecido; e identificação do conteúdo de vídeo que é apresentado pelo display, em que o conteúdo de vídeo que é apresentado pelo display é identificado por comparação do ponto de dados de vídeo desconhecido com o um ou mais pontos de dados de vídeo candidatos.
[0010] Em outro exemplo, um produto de programa de computador tangivelmente incorporado em um meio de armazenamento não transitório legível por máquina de um dispositivo de computação pode ser provido. O produto de programa de computador pode incluir instruções configuradas para fazerem com que um ou mais processadores de dados: obtenham uma pluralidade de pontos de dados de vídeo de referência; determinem um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de vídeo de referência da pluralidade de pontos de dados de vídeo de referência; obtenham um ponto de dados de vídeo desconhecido associado ao conteúdo de vídeo que é apresentado por um display; determinem um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados de vídeo desconhecido; projetem uma pluralidade de vetores a partir do ponto de origem; determinem um número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido; estimem um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinem uma distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; identifiquem um ou mais pontos de dados de vídeo candidatos a partir da pluralidade de pontos de dados de vídeo de referência, em que um ponto de dados de vídeo candidato é um candidato para a combinação do ponto de dados de vídeo desconhecido, e em que o um ou mais pontos de dados de vídeo candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de vídeo de referência e o ponto de dados de vídeo desconhecido; e identifiquem o conteúdo de vídeo que é apresentado pelo display, em que o conteúdo de vídeo que é apresentado pelo display é identificado por comparação do ponto de dados de vídeo desconhecido com o um ou mais pontos de dados de vídeo candidatos.
[0011] Em algumas realizações, a pluralidade de pontos de dados de vídeo de referência inclui dados de vídeo extraídos a partir de uma ou mais estruturas de vídeo.
[0012] Em algumas realizações, a pluralidade de vetores projetados é gerada pseudoaleatoriamente.
[0013] Em algumas realizações, a determinação do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido inclui: determinação se cada vetor da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor do ponto de dados de vídeo de referência; determinação se cada vetor da pluralidade de vetores está à direita algébrica ou à esquerda algébrica do segundo vetor do ponto de dados de vídeo desconhecido; e determinação do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido, em que o número da pluralidade de vetores inclui vetores à esquerda algébrica do primeiro vetor e à direita algébrica do segundo vetor ou vetores à direita algébrica do primeiro vetor e à esquerda algébrica do segundo vetor.
[0014] Em algumas realizações, o ponto de dados de vídeo de referência é descartado depois do comprimento do primeiro vetor do ponto de dados de vídeo de referência ser determinado e depois de cada vetor da pluralidade de vetores ser determinado para estar à direita algébrica ou à esquerda algébrica do primeiro vetor.
[0015] Em algumas realizações, o método, o sistema e o produto de programa de computador descritos acima para a identificação do conteúdo de vídeo ainda incluem: armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do primeiro vetor do ponto de dados de vídeo de referência; e armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do primeiro vetor do ponto de dados de vídeo de referência.
[0016] Em algumas realizações, o método, o sistema e o produto de programa de computador descritos acima para a identificação do conteúdo de vídeo ainda incluem: armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do segundo vetor do ponto de dados de vídeo desconhecido; e armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do segundo vetor do ponto de dados de vídeo desconhecido.
[0017] Em algumas realizações, a estimativa do ângulo entre o primeiro vetor do ponto de dados de vídeo de referência e o segundo vetor do ponto de dados de vídeo desconhecido inclui a multiplicação de uma constante por uma razão, em que a razão inclui o número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido dividido por um número total da pluralidade de vetores.
[0018] Em algumas realizações, a determinação da distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido inclui efetuar um cálculo de identidade Pitagórica que usa o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor.
[0019] Em algumas realizações, a identificação do conteúdo de vídeo que é apresentado pelo display inclui a determinação de uma combinação entre o ponto de dados de vídeo desconhecido e um ponto de dados de vídeo candidato, em que a combinação é uma combinação aproximada com base no ponto de dados de vídeo candidato que é um ponto de dados de vídeo mais próximo do um ou mais pontos de dados de vídeo candidatos ao ponto de dados de vídeo desconhecido.
[0020] De acordo com pelo menos um outro exemplo, um sistema de identificação de um ou mais pontos de dados desconhecidos pode ser provido que inclui um ou mais processadores. O sistema ainda inclui um meio de armazenamento não transitório legível por máquina contendo instruções que, quando executadas no um ou mais processadores, fazem com que o um ou mais processadores efetuem as operações incluindo: obtenção de uma pluralidade de pontos de dados de referência; determinação de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de referência da pluralidade de pontos de dados de referência; obtenção de um ponto de dados desconhecido; determinação de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados desconhecido; projeção de uma pluralidade de vetores a partir do ponto de origem; determinação de um número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido; estimativa de um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinação de uma distância entre o ponto de dados de referência e o ponto de dados desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; e identificação de um ou mais pontos de dados candidatos a partir da pluralidade de pontos de dados de referência, em que um ponto de dados candidato é um candidato para a combinação do ponto de dados desconhecido, e em que o um ou mais pontos de dados candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de referência e o ponto de dados desconhecido.
[0021] Em outro exemplo, um método implementado por computador é provido que inclui: obtenção de uma pluralidade de pontos de dados de referência; determinação de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de referência da pluralidade de pontos de dados de referência; obtenção de um ponto de dados desconhecido; determinação de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados desconhecido; projeção de uma pluralidade de vetores a partir do ponto de origem; determinação de um número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido; estimativa de um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinação de uma distância entre o ponto de dados de referência e o ponto de dados desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; e identificação de um ou mais pontos de dados candidatos a partir da pluralidade de pontos de dados de referência, em que um ponto de dados candidato é um candidato para a combinação do ponto de dados desconhecido, e em que o um ou mais pontos de dados candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de referência e o ponto de dados desconhecido.
[0022] Em outro exemplo, um produto de programa de computador tangivelmente incorporado em um meio de armazenamento não transitório legível por máquina de um sistema de televisão pode ser provido. O produto de programa de computador pode incluir instruções configuradas para fazerem com que um ou mais processadores de dados: obtenham uma pluralidade de pontos de dados de referência; determinem um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de referência da pluralidade de pontos de dados de referência; obtenham um ponto de dados desconhecido; determinem um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados desconhecido; projetem uma pluralidade de vetores a partir do ponto de origem; determinem um número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido; estimem um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinem uma distância entre o ponto de dados de referência e o ponto de dados desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; e identifiquem um ou mais pontos de dados candidatos a partir da pluralidade de pontos de dados de referência, em que um ponto de dados candidato é um candidato para a combinação do ponto de dados desconhecido, e em que o um ou mais pontos de dados candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de referência e o ponto de dados desconhecido.
[0023] Em algumas realizações, o método, o sistema e o produto de programa de computador descritos acima para a identificação de um ou mais pontos de dados desconhecidos incluem a determinação de uma combinação entre o ponto de dados desconhecido e um ponto de dados candidato, em que a combinação é uma combinação aproximada com base no ponto de dados candidato que é um ponto de dados mais próximo do um ou mais pontos de dados candidatos ao ponto de dados desconhecido.
[0024] Em algumas realizações, a pluralidade de vetores projetados é gerada pseudoaleatoriamente.
[0025] Em algumas realizações, a determinação do número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido inclui: determinação se cada vetor da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor do ponto de dados de referência; determinação se cada vetor da pluralidade de vetores está à direita algébrica ou à esquerda algébrica do segundo vetor do ponto de dados desconhecido; e determinação do número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido, em que o número da pluralidade de vetores inclui vetores à esquerda algébrica do primeiro vetor e à direita algébrica do segundo vetor ou vetores à direita algébrica do primeiro vetor e à esquerda algébrica do segundo vetor.
[0026] Em algumas realizações, o ponto de dados de referência é descartado depois do comprimento do primeiro vetor do ponto de dados de referência ser determinado e depois de cada vetor da pluralidade de vetores ser determinado estar à direita algébrica ou à esquerda algébrica do primeiro vetor.
[0027] Em algumas realizações, o método, o sistema e o produto de programa de computador descritos acima para a identificação de um ou mais pontos de dados desconhecidos ainda incluem: armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do primeiro vetor do ponto de dados de referência; e armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do primeiro vetor do ponto de dados de referência.
[0028] Em algumas realizações, o método, o sistema e o produto de programa de computador descritos acima para a identificação de um ou mais pontos de dados desconhecidos ainda incluem: armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do segundo vetor do ponto de dados desconhecido; e armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do segundo vetor do ponto de dados desconhecido.
[0029] Em algumas realizações, a estimativa do ângulo entre o primeiro vetor do ponto de dados de referência e o segundo vetor do ponto de dados desconhecido inclui a multiplicação de uma constante por uma razão, em que a razão inclui o número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido dividido por um número total da pluralidade de vetores.
[0030] Em algumas realizações, a determinação da distância entre o ponto de dados de referência e o ponto de dados desconhecido inclui a realização de um cálculo de identidade Pitagórica usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor.
[0031] Este sumário não se destina a identificar as características fundamentais ou essenciais da matéria objeto reivindicada, nem pretende ser usado isoladamente para determinar o escopo da matéria objeto reivindicada. A matéria objeto deve ser entendida por referência a porções apropriadas de todo relatório descritivo desta patente, qualquer ou todos os desenhos, e cada reivindicação.
[0032] O que foi acima mencionado, bem como outras características e realizações, se tornarão mais evidentes ao se referir ao relatório descritivo a seguir, às reivindicações e às figuras em anexo.
BREVE DESCRIÇÃO DAS FIGURAS
[0033] As realizações ilustrativas da presente invenção são descritas em detalhes abaixo com referência às figuras de desenho a seguir:
[0034] a FIG. 1 é um diagrama em bloco de um exemplo de um sistema de combinação.
[0035] A FIG. 2 é um diagrama em bloco que mostra um exemplo do sistema de combinação que identifica os pontos de dados desconhecidos.
[0036] A FIG. 3 é um diagrama que ilustra dois pontos de dados e uma distância de vetor entre os dois pontos de dados.
[0037] A FIG. 4 é um diagrama que ilustra dois vetores para dois pontos de dados e um ângulo entre os vetores.
[0038] A FIG. 5 é um diagrama que ilustra como um comprimento de dois vetores é determinado.
[0039] A FIG. 6 é um diagrama que ilustra como uma distância entre os dois pontos é determinada.
[0040] A FIG. 7 é um diagrama que ilustra os vetores projetados em relação a um ponto de dados.
[0041] A FIG. 8 é um diagrama que ilustra os vetores projetados em relação a outro ponto de dados.
[0042] A FIG. 9 é um diagrama que ilustra como um ângulo entre os dois vetores é determinado usando vetores projetados.
[0043] A FIG. 10 é outro diagrama que ilustra como um ângulo entre os dois vetores é determinado usando vetores projetados.
[0044] A FIG. 11 é um diagrama que ilustra o agrupamento de dados de dados gerados por um processo de combinação.
[0045] A FIG. 12 é outro diagrama que ilustra o agrupamento de dados de dados gerados por um processo de combinação.
[0046] A FIG. 13 é um diagrama que ilustra os vetores projetados que são distribuídos de forma desigual.
[0047] A FIG. 14 é um gráfico que ilustra dados reais combinados em comparação aos dados combinados pelas técnicas de redução de dados discutidos aqui.
[0048] A FIG. 15 é um diagrama que ilustra os vetores projetados que são mais uniformemente agrupados.
[0049] A FIG. 16 é um gráfico que ilustra os dados reais combinados em comparação aos dados combinados pelas técnicas de redução de dados discutidas aqui.
[0050] A FIG. 17 é um fluxograma que ilustra uma realização de um processo de identificação de conteúdo de vídeo que é exibido e que provê o conteúdo relacionado.
[0051] A FIG. 18 é um diagrama em bloco de um exemplo de um sistema de combinação para a identificação de conteúdo de vídeo que é visto por um display.
[0052] A FIG. 19 é um diagrama em bloco de um exemplo de um sistema de captura de vídeo.
[0053] A FIG. 20 é um diagrama em bloco de um exemplo de um sistema para coletar o conteúdo de vídeo apresentado por um display.
[0054] A FIG. 21 é um fluxograma que ilustra outra realização de um processo de identificação de conteúdo de vídeo que é exibido e que provê o conteúdo relacionado.
[0055] A FIG. 22 é um gráfico que ilustra as localizações de ponto e os pontos de caminho em torno delas.
[0056] A FIG. 23 é um gráfico que ilustra um conjunto de pontos que se situa dentro de distância a partir de um ponto de consulta.
[0057] A FIG. 24 é um gráfico que ilustra possíveis valores de ponto.
[0058] A FIG. 25 é um gráfico que ilustra um espaço dividido em anéis de largura exponencialmente crescente.
[0059] A FIG. 26 é um gráfico que ilustra os caminhos autointersectantes e um ponto de consulta.
[0060] A FIG. 27 é um gráfico que ilustra três localizações consecutivas de ponto e os pontos de caminho em torno delas.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[0061] Na descrição a seguir, para os fins de explicação, os detalhes específicos são estabelecidos a fim de prover uma compreensão completa de realizações da invenção. Entretanto, será evidente que várias realizações podem ser praticadas sem esses detalhes específicos. As figuras e a descrição não têm intenção de serem restritivas.
[0062] A descrição subsequente provê realizações exemplares apenas, e não pretende limitar o escopo, a aplicabilidade ou a configuração da descrição. Em vez disso, a descrição subsequente das realizações exemplares proverá aos técnicos no assunto uma descrição facilitadora para implementar uma realização exemplar. Deve ser entendido que várias mudanças podem ser feitas na função e na disposição de elementos sem se afastar do espírito e do escopo da invenção como estabelecido nas reivindicações em anexo.
[0063] Os detalhes específicos são fornecidos na descrição a seguir para prover uma compreensão completa das realizações. Entretanto, será entendido por um técnico no assunto que as realizações podem ser praticadas sem estes detalhes específicos. Por exemplo, circuitos, sistemas, redes, processos e outros componentes podem ser mostrados como componentes na forma de diagrama em bloco a fim de não obscurecer as realizações em detalhes desnecessários. Em outros casos, circuitos, processos, algoritmos, estruturas, e técnicas bem-conhecidos podem ser mostrados sem detalhes desnecessários a fim de evitar obscurecer as realizações.
[0064] Também, é observado que as realizações individuais podem ser descritas como um processo que é descrito como um fluxograma, um diagrama de fluxo, um diagrama de fluxo de dados, um diagrama de estrutura ou um diagrama em bloco. Embora um fluxograma possa descrever as operações como um processo sequencial, muitas das operações podem ser realizadas em paralelo ou ao mesmo tempo. Além disso, a ordem das operações pode ser reorganizada. Um processo é terminado quando suas operações são completadas, mas pode ter etapas adicionais não incluídas em uma figura. Um processo pode corresponder a um método, uma função, um procedimento, uma sub-rotina, um subprograma, etc. Quando um processo corresponde a uma função, sua terminação pode corresponder a um retorno da função para a função de chamada ou a função principal.
[0065] O termo “meio de armazenamento legível por máquina” ou “meio de armazenamento legível por computador” inclui, mas não é limitado a, dispositivos de armazenamento portátil ou não portátil, dispositivos de armazenamento óptico, e vários outros meios capazes de armazenamento, contendo, ou carregando instrução(ões) e/ou dados. Um meio de armazenamento legível por máquina ou meio de armazenamento legível por computador pode incluir um meio não transitório em que os dados podem ser armazenados e que não incluem ondas transportadoras e/ou sinais eletrônicos transitórios que se propagam em conexões sem fio ou com fio. Exemplos de um meio não transitório podem incluir, mas não são limitados a, um disco ou uma fita magnética, meio de armazenamento óptico tal como disco compacto (CD) ou disco versátil digital (DVD), memória flash, memória ou dispositivos de memória. Um produto de programa de computador pode incluir código e/ou instruções executáveis por máquina que podem representar um procedimento, uma função, um subprograma, um programa, uma rotina, uma sub-rotina, um módulo, um pacote de software, uma categoria, ou qualquer combinação de instruções, estruturas de dados ou demonstrações de programa. Um segmento de código pode ser acoplado a outro segmento de código ou um circuito de hardware ao passar e/ou receber informações, dados, argumentos, parâmetros ou conteúdos de memória. Informações, argumentos, parâmetros, dados ou outras informações podem ser passados, encaminhados ou transmitidos usando qualquer meio adequado incluindo compartilhamento de memória, passagem de mensagem, passagem de código (“token”), transmissão de rede, ou outra técnica de transmissão.
[0066] Além disso, as realizações podem ser implementadas por linguagens de descrição de hardware, software, firmware, middleware, microcódigo, hardware ou qualquer combinação destes. Quando implementados em software, firmware, middleware ou microcódigo, o código de programa ou os segmentos de código para realizar as tarefas necessárias (por exemplo, um produto de programa de computador) podem ser armazenados em um meio legível por máquina. Um processador(es) pode(m) realizar as tarefas necessárias.
[0067] Os sistemas descritos em algumas das figuras podem ser providos em várias configurações. Em algumas realizações, os sistemas podem ser configurados como um sistema distribuído onde um ou mais componentes do sistema são distribuídos por uma ou mais redes em um sistema de computação em nuvem.
[0068] Como descrito em mais detalhes abaixo, certos aspectos e características da presente descrição referem-se à identificação de pontos de dados desconhecidos por comparação dos pontos de dados desconhecidos a um ou mais pontos de dados de referência. Os sistemas e os métodos descritos aqui melhoram a eficiência de armazenamento e buscam grandes conjuntos de dados que são usados para identificar os pontos de dados desconhecidos. Por exemplo, os sistemas e os métodos permitem a identificação dos pontos de dados desconhecidos enquanto reduzem a densidade do grande conjunto de dados necessários para efetuar a identificação. As técnicas podem ser aplicadas a qualquer sistema que coleta e manipula grandes volumes de dados. Os exemplos ilustrativos destes sistemas incluem sistemas automatizados de busca com base em conteúdo (por exemplo, reconhecimento automatizado de conteúdo para aplicativos relacionados ao vídeo ou a outro aplicativo adequado), sistemas MapReduce, sistemas Bigtable, sistemas de reconhecimento de padrão, sistemas de reconhecimento facial, sistemas de classificação, sistemas de visão por computador, sistemas de compressão de dados, análise de agrupamento ou qualquer outro sistema adequado. Um técnico no assunto apreciará que as técnicas descritas aqui podem ser aplicadas a qualquer outro sistema que armazena dados que são comparados a dados desconhecidos. No contexto de reconhecimento automatizado de conteúdo (ACR), por exemplo, os sistemas e os métodos reduzem a quantidade de dados que devem ser armazenados a fim de que um sistema de combinação busque e encontre relações entre os grupos de dados desconhecidos e conhecidos.
[0069] Por meio de exemplo apenas e sem limitação, alguns exemplos descritos aqui usam um sistema de reconhecimento de conteúdo de áudio e/ou de vídeo automatizado para fins ilustrativos. Entretanto, um técnico no assunto apreciará que os outros sistemas podem usar as mesmas técnicas.
[0070] Um desafio significativo com sistemas de ACR e outros sistemas que usam grandes volumes de dados é o gerenciamento da quantidade de dados que é necessária para o sistema funcionar. Usando um sistema de ACR baseado em vídeo como um exemplo, um desafio inclui tentar identificar um segmento de vídeo que é exibido por um display de televisão em uma casa entre muitas milhões de casas. Outro desafio inclui a necessidade de construir e manter um banco de dados de conteúdo de vídeo conhecido para servir como uma referência para a combinação. A construção e a manutenção de tal banco de dados envolvem a coleta e a compilação de uma grande quantidade (por exemplo, centenas, milhares, ou mais) de programas de televisão distribuídos nacionalmente e uma quantidade ainda maior de transmissões de televisão locais entre muitas outras fontes potenciais de conteúdo. A compilação pode ser realizada usando qualquer técnica disponível que reduz os dados brutos de vídeo ou áudio em dados comprimidos e pesquisáveis (por exemplo, códigos “tokens”). Com um cronograma operacional de 24 horas, sete dias por semana e uma janela deslizante talvez de duas semanas de programação de televisão para armazenar, o volume de dados necessário para executar ACR cria-se rapidamente. Desafios similares estão presentes com outros sistemas que coletam e manipulam grandes volumes de dados, tais como os sistemas de exemplo descritos acima.
[0071] Os sistemas e os métodos descritos aqui permitem a identificação de pontos de dados desconhecidos com conjuntos de dados ainda mais reduzidos do que aqueles necessários que usam técnicas convencionais. Por exemplo, a quantidade de dados necessária para ser gerada, armazenada e comparada para buscar e encontrar relações entre os grupos de dados desconhecidos e conhecidos é enormemente reduzida (por exemplo, por aproximadamente uma ordem de grandeza ou outra quantidade dependendo do tipo de sistema), provendo uma técnica mais eficiente para armazenar e indexar os dados.
[0072] A FIG. 1 ilustra um sistema de combinação 100 que pode identificar o conteúdo desconhecido. Por exemplo, o sistema de combinação 100 pode combinar os pontos de dados desconhecidos com os pontos de dados de referência para identificar os pontos de dados desconhecidos. O sistema de combinação 100 inclui um dispositivo cliente 102 e um servidor de combinação 104. O dispositivo cliente inclui um mecanismo de solicitação de combinação 106, um dispositivo de entrada 108 e um dispositivo de saída 110. O dispositivo de entrada 108 pode incluir qualquer dispositivo adequado que permite uma solicitação ou outras informações a serem inseridas no mecanismo de solicitação de combinação 106. Por exemplo, o dispositivo de entrada 108 pode incluir um teclado, um mouse, um dispositivo de entrada de reconhecimento de voz, uma interface sem fio para receber entrada sem fio a partir de um dispositivo sem fio (por exemplo, a partir de um controle remoto, um dispositivo móvel ou outro dispositivo sem fio adequado), ou qualquer outro dispositivo de entrada adequado. O dispositivo de saída 110 pode incluir qualquer dispositivo adequado que pode apresentar ou de outra forma emitir informações, tais como um display, uma interface sem fio para transmitir uma saída sem fio a um dispositivo sem fio (por exemplo, a um dispositivo móvel ou outro dispositivo sem fio adequado), uma impressora, ou outro dispositivo de saída adequado.
[0073] O mecanismo de solicitação de combinação 106 pode enviar uma comunicação 124 a um mecanismo de combinação 112 do servidor de combinação 104. A comunicação 124 pode incluir uma solicitação para o mecanismo de combinação 112 para identificar o conteúdo desconhecido. O mecanismo de combinação 112 pode identificar o conteúdo desconhecido por combinação do conteúdo aos dados de referência em um banco de dados de referência 116. Por exemplo, o conteúdo desconhecido pode incluir um ou mais pontos de dados desconhecidos e o banco de dados de referência 116 pode incluir uma pluralidade de pontos de dados de referência. Em alguns exemplos, o conteúdo desconhecido pode incluir dados de vídeo desconhecidos que são apresentados por um display (para ACR baseado em vídeo), uma consulta de pesquisa (para um sistema MapReduce, um sistema Bigtable, ou outro sistema de armazenamento de dados), uma imagem desconhecida de uma face (para reconhecimento facial), uma imagem desconhecida de um padrão (para reconhecimento de padrão), ou quaisquer outros dados desconhecidos que podem ser comparados com um banco de dados de dados de referência. Os pontos de dados de referência podem ser derivados a partir de dados recebidos a partir da fonte de dados 118. Por exemplo, os pontos de dados podem ser extraídos a partir das informações providas a partir da fonte de dados 118 e podem ser indexados e armazenados no banco de dados 116.
[0074] O mecanismo de combinação 112 pode enviar uma solicitação para o mecanismo de determinação candidato 114 para determinar os pontos de dados candidatos a partir do banco de dados de referência 116. Os pontos de dados candidatos são pontos de dados de referência que estão a uma certa distância determinada a partir do ponto de dados desconhecido. O mecanismo de determinação candidato 114 pode retornar os pontos de dados candidatos para o mecanismo de combinação 112. Usando os pontos de dados candidatos, o mecanismo de combinação 112 pode determinar um ponto de dados de referência mais próximo ao ponto de dados desconhecido. Por exemplo, como descrito em mais detalhes abaixo, um algoritmo de busca de caminho pode ser usado para identificar o ponto de dados de referência mais próximo a partir dos pontos de dados candidatos.
[0075] A FIG. 2 ilustra os componentes de um sistema de combinação 200 que identifica os pontos de dados desconhecidos. Por exemplo, o mecanismo de combinação 212 pode realizar um processo de combinação para comparação de conteúdo desconhecido (por exemplo, segmentos de mídia desconhecidos, uma consulta de pesquisa, uma imagem de uma face ou um padrão, ou similar) com um banco de dados de conteúdo conhecido (por exemplo, segmentos de mídia conhecidos, informações armazenadas em um banco de dados para buscar em, tais quais faces ou padrões conhecidos ou similares). Por exemplo, o mecanismo de combinação 212 recebe o conteúdo de dados desconhecido 202 (que pode ser referido como uma “indicação”) para ser identificado usando pontos de dados de referência 204 em um banco de dados de referência. O conteúdo de dados desconhecido 202 também é recebido pelo mecanismo de determinação candidato 214. O mecanismo de determinação candidato 214 pode conduzir um processo de busca para identificar os pontos de dados candidatos 206 pela busca dos pontos de dados de referência 204 no banco de dados de referência. Em um exemplo, o processo de busca pode incluir um processo de busca do vizinho mais próximo para produzir um conjunto de valores vizinhos (que estão a uma certa distância a partir dos valores desconhecidos do conteúdo de dados desconhecido 202. O conteúdo de dados desconhecido 202 e os pontos de dados candidatos 206 são inseridos no mecanismo de combinação 212 para conduzir o processo de combinação para gerar um resultado de combinação 208. Dependendo do aplicativo, o resultado de combinação 208 pode incluir dados de vídeo que são apresentados por um display, um resultado de busca, uma determinada face que usa o reconhecimento facial, um determinado padrão que usa o reconhecimento de padrão, ou qualquer outro resultado.
[0076] Em determinação de pontos de dados candidatos 206 para um ponto de dados desconhecido (por exemplo, conteúdo de dados desconhecido 202), o mecanismo de determinação candidato 214 determina uma distância entre o ponto de dados desconhecido e os pontos de dados de referência 204 no banco de dados de referência. Os pontos de dados de referência que estão a uma certa distância a partir do ponto de dados desconhecido são identificados como os pontos de dados candidatos 206. A FIG. 3 mostra dois pontos de dados, que incluem o ponto de dados A (mostrado como ponto de dados A 302) e ponto de dados B (mostrado como ponto de dados B 304). O ponto de dados A 302 pode ser um ponto de dados de referência e o ponto de dados B 304 pode ser um ponto de dados desconhecido. A distância d 306 entre o ponto de dados A 302 e o ponto de dados B 304 também é mostrada.
[0077] Alguns exemplos são descritos usando o espaço de vetor bidimensional como um exemplo, mas são igualmente aplicáveis a outras dimensões de espaço de vetor. Por exemplo, enquanto o exemplo mostrado na FIG. 3 e outras figuras são mostrados em espaço bidimensional, as mesmas técnicas descritas aqui podem ser aplicadas em qualquer número de dimensões. Por exemplo, outras dimensões de vetor incluem 1-dimensional, 3-dimensional, 26-dimensional, 75-dimensional ou qualquer outra dimensão de espaço de vetor.
[0078] Várias técnicas podem ser usadas para determinar a distância entre os pontos de dados. Por exemplo, uma técnica de determinação de uma distância entre os dois pontos A e B, em espaço N-dimensional, está usando a fórmula:
[0079] A.A + B.B - 2AB = dA2,
[0080] onde A é um vetor a partir de um ponto de origem (por exemplo, em ponto (0,0)) ao ponto A e B é um vetor a partir do ponto de origem ao ponto B. A.A é o produto de ponto de vetor A com ele mesmo e B.B é o produto de ponto de vetor B com ele mesmo. O resultado de A.A e B.B são valores escalares.
[0081] Outra técnica de determinação de uma distância entre os dois pontos de dados A e B pode incluir usar a fórmula:
[0082] A.A/2 + B.B/2 - A.B = d2 / 2
[0083] Outra técnica para determinação da distância entre os dois ou mais pontos de dados pode incluir o uso de um ângulo entre os vetores que passam pelos pontos de dados. A FIG. 4 é um diagrama com um vetor 402 a partir de um O de origem (por exemplo, em ponto (0,0)) ao ponto de dados A 302 (chamado vetor A 402) e um vetor 404 a partir do O de origem ao ponto de dados B 304 (chamado vetor B 404). O ponto A 302 pode estar localizado em coordenada (A.x, A.y) e o ponto B 304 pode estar localizado em coordenada (B.x, B.y). O ângulo 410 entre o vetor A 402 do ponto de dados A 302 e o vetor B 404 do ponto de dados B 304 pode ser usado para determinar a distância entre o ponto de dados A 302 e o ponto de dados B 304. O ângulo 410 pode ser determinado por primeiro encontrar o comprimento escalar 406 de vetor A 402 e o comprimento escalar 408 de vetor B 404, e depois usar os comprimentos 406 e 408 para computar o ângulo 410 entre os vetores 402 e 404.
[0084] Os comprimentos escalares 406 e 408 podem ser determinados usando qualquer técnica adequada para determinar um comprimento de um vetor. Um exemplo, mostrado na FIG. 5, inclui encontrar o comprimento escalar 406 do vetor A 402 (para ponto de dados A 302) ao encontrar o produto de ponto A.A 502. O produto de ponto A.A 502 é o produto de ponto do vetor A 402 com ele mesmo. De forma similar, o comprimento escalar 408 de vetor B 404 (para o ponto de dados B 304) pode ser determinado ao encontrar o produto de ponto B.B 504, que é o produto de ponto do vetor B 404 com ele mesmo.
[0085] Uma vez que o ângulo 410 e os comprimentos escalares 406 e 408 são determinados, a distância 306 pode ser determinada. Por exemplo, a FIG. 6 é um diagrama que mostra a etapa final na computação da distância do vetor 306 entre o ponto de dados A 302 e o ponto de dados B 304. Em um exemplo ilustrativo, a distância 306 pode ser determinada usando o ângulo 410 ao aplicar a identidade Pitagórica que usa a fórmula:
[0086] d2 = (sen(θ) * B.B)2 + (A.A - cos(θ) * B.B)2,
[0087] onde θ é o ângulo 410.
[0088] Os sistemas e os métodos são descritos aqui para determinação da distância entre os pontos de dados que usam as projeções de vetor, exigindo que menos dados sejam armazenados do que as técnicas descritas acima. Considerando que o produto de ponto A.A é o comprimento do vetor A 402 a partir do O de origem ao ponto A 302, e que o produto de ponto B.B é o comprimento do vetor B 404 a partir do O de origem ao ponto B 304, ambos destes valores de comprimento (comprimentos 406 e 408) podem ser calculados (por exemplo, para pontos de dados de referência) antecipadamente e cada comprimento 406 e 408 pode ser armazenado como um único número. A única razão para reter os valores reais de ponto é para os fins de cálculo do produto de ponto: A.B. Um valor de ponto de dados desconhecido real deve ser armazenado devido a não ser obtido antes do tempo de execução quando um processo de combinação é realizado. Por exemplo, um ponto de dados desconhecido é necessário durante o processo de combinação para comparar com os dados armazenados os pontos de dados de referência. Em um exemplo que usa o conteúdo de televisão, os sistemas de combinação 100 e 200 recebem um ponto de dados desconhecido (por exemplo, ponto de dados B 304) quando uma televisão envia os dados de vídeo que são apresentados. Entretanto, os pontos de dados de referência (por exemplo, ponto de dados de referência A 302) podem ser descartados depois deles serem usados para determinar informações que podem então ser usadas para determinar o ângulo entre os vetores de ponto de dados (por exemplo, vetores A 402 e B 404) que usam os vetores projetados, como descrito em mais detalhes abaixo. É vantajoso descartar, e não manter, os valores reais de pontos de dados de referência enquanto ainda é capaz de calcular a distância entre um ponto de dados de referência (ponto A) e um ponto de dados desconhecido (ponto B).
[0089] Os pontos A 302 e B 304 têm vetores 402 e 404 a partir de uma origem (por exemplo, de (0, 0)) aos respectivos pontos. O objetivo do mecanismo de determinação candidato (por exemplo, mecanismo de determinação candidato 114 ou 214) é encontrar a distância d 306 entre os pontos A 302 e B 304 a fim de identificar os pontos de dados candidatos. Em alguns exemplos, a distância d 306 pode ser calculada com apenas o comprimento de vetor A 402 (o vetor através do ponto A), o comprimento de vetor B 404 (o vetor através do ponto B), e o ângulo 410 entre o vetor A 402 e o vetor B 404.
[0090] Em alguns exemplos, o ângulo de vetor A 402 para o eixo X pode ser armazenado e então o ângulo 410 pode ser calculado, mas uma desvantagem para esta abordagem seria como o número de dimensões é aumentado, o sistema teria que manter e armazenar ângulos em cada dimensão. O resultado seria um sistema que armazena tantos números que definem cada ponto como era anteriormente necessário (por exemplo, quando todos os valores de ponto de dados de referência são armazenados).
[0091] Os sistemas e os métodos descritos aqui incluem gerar um número de projeções em um número definido de dimensões. Por exemplo, um número de vetores pode ser projetado em diferentes direções, tais como em torno do espaço em que o vetor A 402 e o vetor B 404 se situam. Enquanto os exemplos descritos aqui usam 80 vetores projetados no total como um exemplo ilustrativo, um técnico no assunto apreciará que qualquer número de projeções pode ser gerado. Os vetores projetados podem ser usados para determinar o ângulo entre os dois vetores (por exemplo, vetor A 402 e vetor B 404), que pode reduzir a quantidade de dados necessária em tempo de execução durante o processo de combinação realizado por um mecanismo de combinação. Usando a técnica de projeção, os pontos de dados de referência podem ser descartados após eles serem inicialmente usados, como descrito ainda abaixo.
[0092] Em um exemplo ilustrativo que descreve brevemente a técnica usando projeções, 80 vetores distribuídos regularmente podem ser projetados em dez graus cada, caso em que teta entre as projeções é igual a dez. Por exemplo, se o vetor A 402 e o vetor B 404 estão 103 graus separados, haveria cinco projeções esperadas entre os vetores A 402 e B 404. Pode parecer intuitivamente que haveria 10 projeções entre os vetores A 402 e B 404, mas há cinco. Por exemplo, as projeções se estendem em ambas direções e uma projeção que se projeta no terceiro quadrante estará ainda “entre” A e B tanto quanto o ângulo é considerado. Entretanto, para o fim dos exemplos discutidos aqui, cada projeção pode ser considerada como estando apenas em um quadrante, pois isto seria próximo o suficiente para fins conceituais. Neste exemplo, devido a cinco dos vetores fora dos 80 vetores projetados se situarem entre o vetor A 402 e o vetor B 404, pode ser determinado que o ângulo entre o vetor A 402 e o vetor B 404 é 10 graus, como descrito em mais detalhes abaixo. Uma vez que o ângulo 410 entre os dois vetores A 402 e B 404 e os comprimentos de vetor A 402 e vetor B 404 são determinados, a trigonometria pode então ser usada para calcular a distância d 306 entre os pontos A 302 e B 304. Os detalhes adicionais são providos com relação à FIG. 7-FIG. 10.
[0093] A FIG. 7 à FIG. 10 ilustra uma técnica de encontrar a distância do vetor entre os dois pontos sem a necessidade de armazenar os valores ou coordenadas reais dos pontos de dados de referência ao usar os vetores projetados para determinar um ângulo entre os pontos. Um número arbitrário de projeções aleatórias é gerado. Em um exemplo ilustrativo, um conjunto de 80 vetores aleatórios é gerado em torno de um eixo de 360 graus.
[0094] Para cada ponto de dados de referência no banco de dados de referência, um sistema de combinação determina se cada vetor projetado está à direita algébrica ou à esquerda algébrica de cada vetor de cada ponto de dados de referência (por exemplo, vetor A 402 de ponto A 302), tal como ao calcular o produto de ponto de um vetor (a partir de uma origem a um ponto de dados de referência) com um vetor, projetado como descrito abaixo com relação à FIG. 7 e à FIG. 8. Os resultados dos produtos de ponto dos vetores projetados e dos pontos de dados de referência podem ser armazenados como uma palavra binária e usados quando um ponto de dados desconhecido é recebido para determinar os vetores projetados que se situam entre um ponto de dados de referência e um ponto de dados desconhecido. Além disso para a determinação da posição dos vetores projetados em relação a cada ponto de dados de referência, um comprimento respectivo de cada vetor de ponto de dados de referência (a partir de uma origem a um ponto de dados de referência) é calculado. O comprimento de um vetor de ponto de referência é uma distância do vetor a partir de um ponto de origem, e pode ser determinado ao efetuar um produto de ponto do vetor com ele mesmo. O sistema de combinação pode armazenar os bits que representam os dados binários à esquerda e à direita algébrica e os comprimentos (ou distâncias) dos vetores de ponto de dados de referência. Durante o tempo de execução quando comparando um ponto de dados desconhecido a pontos de dados de referência para identificar os pontos de dados candidatos, um sistema de combinação só precisa carregar os bits que representam os dados binários à esquerda e à direita algébrica (descritos em detalhes abaixo) assim como o comprimento para cada vetor de ponto de dados de referência em memória. Consequentemente, não há necessidade de carregar os pontos de dados de referência reais, e os bits de ponto de dados de referência podem ser descartados uma vez que os dados binários esquerdo e direito e os comprimentos de vetor são determinados para os pontos de dados de referência.
[0095] Quando um ponto de dados desconhecido é recebido (por exemplo, quando um ponto de dados de vídeo é recebido a partir de uma televisão), o sistema de combinação pode determinar os pontos de dados candidatos a partir das informações armazenadas nos pontos de dados de referência (por exemplo, os dados de binário esquerdo e direito e os comprimentos de vetor para os pontos de dados de referência), por exemplo, ao buscar os pontos vizinhos mais próximos no banco de dados de referência. O sistema de combinação pode então determinar se os vetores projetados estão à direita ou à esquerda algébrica de um vetor para o ponto de dados desconhecido (por exemplo, ao tomar o produto de ponto) para obter os valores binários esquerdo e direito. O sistema de combinação também pode calcular o comprimento do vetor do ponto de dados desconhecido. Os vetores projetados que se situam entre um ponto de dados de referência e um ponto de dados desconhecido podem ser usados para determinar um ângulo entre o vetor do ponto de dados de referência e o vetor do ponto de dados desconhecido.
[0096] A FIG. 7 à FIG. 9 ilustra uma técnica para determinação de projeções que se situam entre o ponto de dados de referência A 302 e o ponto de dados desconhecido B 304. A fim de determinar se um vetor projetado se situa entre o ponto de dados de referência A 302 e o ponto de dados desconhecido B 304, é determinado que as projeções estão à esquerda algébrica de ponto A 302 e ponto B 304, e que as projeções estão à direita algébrica de ponto A 302 e ponto B 304. As projeções que estão à direita algébrica de ponto A 302 e que estão à esquerda algébrica de ponto B 304 se situam entre os pontos A 302 e B 304.
[0097] Por exemplo, como mostrado na FIG. 7, os vetores projetados são avaliados com relação ao ponto A 302 ao determinar se cada vetor projetado está à direita algébrica ou à esquerda algébrica do ponto A 302 (e dessa forma vetor A 402). Em um exemplo, se um vetor projetado está à direita algébrica ou à esquerda algébrica do ponto A 302 pode ser determinado ao tomar o produto de ponto do vetor projetado e o vetor A 402 (a partir do O de origem para o ponto A 302 de referência). Por exemplo, o produto de ponto de vetor projetado 702 e o vetor A 402 iguala um número positivo, indicando que o vetor projetado 702 está à direita algébrica do ponto A 302 e do vetor A 402. Um valor binário de 1 pode ser armazenado para o vetor projetado 702 com relação ao ponto A 302, que indica que o vetor 702 está à direita algébrica do ponto A 302 e do vetor A 402. Como outro exemplo, o produto de ponto de vetor projetado 704 e de vetor A 404 iguala um número negativo, que indica que o vetor projetado 704 está à esquerda algébrica do ponto A 302 e do vetor A 402. Um valor binário de 0 pode ser armazenado no vetor projetado 704 com relação ao ponto A, que indica estar à esquerda algébrica do ponto A 302 e do vetor A 402. O mesmo cálculo pode ser realizado para todos os vetores projetados com relação ao ponto A 302. Como mostrado na FIG. 7, todos os vetores projetados à esquerda algébrica do ponto A 302 (e vetor A 402) são armazenados em relação ao ponto A 302 com valor binário 0, e todos os vetores projetados à direita algébrica do ponto A 302 (e vetor A 402) são armazenados em relação ao ponto A 302 com valor binário 1. Um técnico no assunto apreciará que um valor 0 pode ser armazenado para os vetores projetados que estão à direita do ponto A 302 e um valor 1 pode ser armazenado para os vetores projetados que estão à esquerda do ponto A 302.
[0098] A FIG. 8 ilustra o mesmo cálculo que é aplicado ao ponto B 304, resultando nos respectivos 1 e 0 que são armazenados para os vetores projetados em relação ao ponto B 304. Por exemplo, os vetores projetados são avaliados com relação ao ponto B 304 pela determinação se cada vetor projetado está à direita algébrica ou à esquerda algébrica do ponto B 304 (e dessa forma vetor B 404). Em um exemplo, se um vetor projetado está à direita algébrica ou à esquerda algébrica de ponto B 304 pode ser determinado ao tomar o produto de ponto do vetor projetado e o vetor B 404 (a partir do O de origem ao ponto B 304 de referência). Por exemplo, todos os vetores projetados à esquerda algébrica do ponto B 304 (e vetor B 404) são armazenados em relação ao ponto B 304 com valor binário 0, e todos os vetores projetados à direita algébrica do ponto B 304 (e vetor B 404) são armazenados em relação ao ponto B 304 com valor binário 1. Um técnico no assunto apreciará que um valor 0 pode ser armazenado para vetores projetados que estão à direita do ponto B 304 e um valor 1 pode ser armazenado para vetores projetados que estão à esquerda do ponto B 304.
[0099] A FIG. 9 ilustra os vetores projetados que se situam entre o ponto A 302 e o ponto B 304. Os vetores projetados que se situam entre os pontos A 302 e B 304 incluem as projeções que estão à direita algébrica de ponto A 302 (mostrados pelos valores A1 902) e que estão à esquerda algébrica do ponto B 304 (mostrado pelos valores B0 904). Os vetores projetados que se situam entre o ponto A 302 e o ponto B 304 podem ser determinados ao levar o OR (XOR) exclusivo dos 80 valores de vetor binário armazenados com relação ao ponto A 302 com os 80 valores de vetor binário armazenados com relação ao ponto B 304. O resultado do XOR gera os vetores projetados que têm os valores A1 902 e os valores B0 904, mostrados na FIG. 9.
[00100] A FIG. 10 mostra todos os componentes necessários para encontrar o ângulo 910 entre o ponto A 302 e o ponto B 302. O ângulo 910 entre o vetor A 402 (de ponto de dados A 302) e o vetor B 404 (de ponto de dados B 304) pode então ser encontrado com base no número de projeções entre os pontos A 302 e B 304. A determinação do ângulo é aproximada, mas perto o suficiente para obter uma distância d exata entre os pontos A 302 e B 304. Em um exemplo, o ângulo aproximado entre um vetor de ponto de dados de referência e um vetor de ponto de dados desconhecido é determinado pela multiplicação de uma constante por uma razão. A razão inclui o número dos vetores projetados entre o ponto de dados de referência e o ponto de dados desconhecido dividido por um número total dos vetores projetados. A constante pode ser um número predefinido, tal como 180. Por exemplo, o ângulo 910 entre o ponto A 302 e o ponto B 304 inclui o resultado da operação de OR exclusivo dividido pelo número total de vetores (80 neste exemplo).
[00101] Quando chega a hora de calcular a distância entre o ponto de dados desconhecido 304 e os pontos de dados de referência (incluindo ponto de dados A 302), o OR exclusivo é calculado entre os dados binários (para as projeções) de cada ponto de dados de referência até o valor de dados binário do ponto de dados desconhecido. Como observado acima, o resultado do OR exclusivo entre os dados binários do ponto de dados desconhecido (por exemplo, ponto de dados B 304) e um ponto de dados de referência (por exemplo, ponto de dados A 302) é o número de projeções entre o ponto de dados desconhecido e o ponto de dados de referência. De novo, o ângulo derivado 910 iguala o número de projeções entre os pontos de dados 302 e 304 dividido pelo número de projeções totais (80 neste exemplo), multiplicadas por 180. A distância de derivado pode então ser calculada ao efetuar um cálculo de identidade Pitagórica que usa a fórmula:
[00102] d2 = (sen (θ) * B.B)2 + (A.A - cos(θ) * B.B)2
[00103] O produto de ponto B.B representa o comprimento do vetor B 404, e o produto de ponto A.A representa o comprimento do vetor A 402.
[00104] Uma vez que a distância a partir do ponto de dados desconhecido B 304 aos pontos de dados de referência armazenados em um banco de dados de referência é determinada, os pontos de dados candidatos podem ser determinados, como descrito anteriormente. O ponto de dados desconhecido B 304 pode então ser identificado por um dos pontos de dados candidatos. Por exemplo, um dos pontos de dados de referência pode ser determinado como uma combinação mais próxima com o ponto de dados desconhecido B 304. O ponto de dados desconhecido B 304 pode então ser identificado como sendo os mesmos dados que o ponto de dados candidato encontrado como a combinação mais próxima. Em alguns exemplos, uma abordagem vizinha mais próxima pode ser usada para identificar os pontos de dados candidatos, e um algoritmo de busca de caminho pode ser usado para identificar o ponto de dados desconhecido. Os detalhes das técnicas vizinhas mais próximas e de busca de caminho são descritos com relação à FIG. 23 à FIG. 27.
[00105] Usando a técnica de projeção de vetor descrita acima, menos dados são necessários para determinar uma distância entre um ponto de dados de referência e um ponto de dados desconhecido. Tal técnica pode ser usada para encontrar os pontos de dados candidatos entre uma pluralidade de pontos de dados de referência. Como descrito anteriormente, o comprimento do vetor A 402 (denotado pelo produto de ponto A.A) já é conhecido antes do ponto de dados desconhecido ser recebido, e dessa forma não é necessário em tempo de execução determinar as distâncias para gerar os pontos de dados candidatos. Apenas os dados necessários são os comprimentos (ou distâncias) dos vetores de ponto de dados de referência e os bits que representam os dados binários à esquerda e à direita algébrica de vetores projetados em relação aos pontos de dados de referência e desconhecidos (que são usados para determinar o ângulo entre os vetores de ponto de dados de referência e desconhecido). Por exemplo, uma vez que os produtos de ponto são calculados para todos os vetores projetados com relação ao ponto A 302 (antes do processo de combinação) e para todos os vetores projetados com relação ao ponto B 304, o sistema de combinação pode armazenar um bit para cada projeção para cada ponto de dados de referência e um bit para cada projeção para o ponto de dados desconhecido, além dos comprimentos do vetor dos pontos de dados de referência. Consequentemente, quando comparando um ponto de dados desconhecido aos pontos de dados de referência para identificar os pontos de dados candidatos em tempo de execução, o sistema de combinação pode descartar os pontos de dados de referência reais.
[00106] Uma vantagem da técnica de projeção de vetor descrita acima é que a quantidade exata de dados salvos depende de quantas projeções são necessárias para obter resultados aceitáveis. Por exemplo, cada projeção adiciona um bit ao uso de memória quando comparado a um ponto de dados, portanto, se o número de projeções aleatórias for um número razoável, tal como 80, um conjunto de dados original de 75 bytes (ponto) pode ser substituído com uma estrutura binária esquerda/direita de 10 bytes mais, por exemplo, 2 bytes para o comprimento do vetor para esse ponto, que totaliza 12 bytes. Tal exemplo provê uma economia de 63 bytes para cada ponto em memória. Consequentemente, a técnica de projeção de vetor provê uma redução altamente vantajosa em tamanho de dados quando computando grandes buscas e comparações de dados, e pode ser usada por muitos aplicativos em grande escala.
[00107] A FIG. 11 ilustra os dados 1101 gerados pelo processo de combinação realizado por um mecanismo de combinação. Os dados 1101 podem representar os dados recebidos, tais como os dados de referência e/ou os dados desconhecidos. No exemplo mostrado na FIG. 11, o agrupamento de pontos de dados não está centralizado nos vetores projetados. Por exemplo, a localização do agrupamento de pontos de dados é mostrada com a origem do agrupamento não centralizada com as projeções de vetor. Consequentemente, o conjunto projetado de vetor é desvantajosamente posicionado distante do centro estatístico do agrupamento de dados. Mover o O de origem das projeções de vetor para o meio do espaço do vetor pode tornar as projeções mais produtivas e pode gerar ótimos resultados.
[00108] A FIG. 12 ilustra os dados 1202 gerados pelo processo de combinação, que pode ser similar aos dados 1101 mostrados na FIG. 11. Ao usar as médias estatísticas bem conhecidas do técnico, um deslocamento pode ser calculado para centralizar os vetores projetados, como mostrado na FIG. 12. Neste exemplo, o agrupamento de vetores é recentralizado em uma amostra representativa de dados de sistema típicos. O centro do grupo é encontrado por uma média estatística que é usada para deslocar a origem para o centro dos vetores projetados. Por exemplo, uma média estatística (ou média) do agrupamento de dados pode ser determinada. A média estatística (ou média) pode ser usada para centralizar o conjunto projetado de vetor no meio aproximado do agrupamento de dados. A recentralização dos vetores projetados na área intermediária do agrupamento de dados melhora os resultados das técnicas descritas acima.
[00109] Os vetores podem ser projetados aleatoriamente ou pseudoaleatoriamente. A projeção pseudoaleatória inclui as predeterminadas projeções de uma maneira distribuída. Por exemplo, uma máquina pode gerar as mesmas projeções inúmeras vezes, mas as projeções podem parecer ser aleatórias. As projeções aleatórias são aleatórias, embora um técnico no assunto deva entender que elas são atualmente selecionadas a partir de uma distribuição normal aleatoriamente. Portanto, nem todas as definições de espaço são criadas de forma igual. Como é conhecido pelo técnico, um método Monte Carlo pode ser empregado para selecionar uma projeção aleatória ou pseudoaleatória que seja boa. Uma vez que uma projeção aleatória apropriada e adequada é selecionada, a projeção aleatória pode ser usada para muitas determinações de distância (por exemplo, para determinar ângulos entre muitos vetores de ponto de dados), e não há necessidade de alterá-la a menos que seja desejável aumentar ou diminuir o número de projeções. Como isto é um cálculo probabilístico, o resultado não pode ser a resposta correta, mas será muito próximo para corrigir. Um técnico entenderá que o resultado não precisa estar “correto,” mas apenas próximo o suficiente para prover um serviço útil a grandes aplicativos de dados. A fim de medir uma distribuição aleatória adequada, um teste de adequação direta é realizado, como discutido em mais detalhes abaixo.
[00110] A FIG. 13 ilustra a saída de um processo aleatório (ou pseudoaleatório) que gera um conjunto de vetores projetados para que os dados devam ser comparados. Neste exemplo, o processo aleatório tem gerado vetores que são excessivamente agrupados juntos, onde a distância angular entre os vetores (por exemplo, lacunas 1302, 1304, e 1306) é excessivamente desigual. As projeções aleatórias parecem ter mais agrupamento em torno de certos valores, de modo que as distâncias ou lacunas 1301, 1302 e 1303 mostram muita variação. O agrupamento excessivo dos vetores pode reduzir a precisão geral do sistema. Por exemplo, um resultado de desigualdade entre os vetores pode incluir erro excessivo da média quando uma combinação ou outro processo é realizado usando os vetores projetados. O conjunto de vetores projetados na FIG. 13 é dessa forma inadequado.
[00111] Um exemplo de um conjunto aleatório satisfatoriamente distribuído de projeções é mostrado na FIG. 15. Por exemplo, a FIG. 15 ilustra a saída de um processo aleatório (ou pseudoaleatório) que gera um conjunto de vetores projetados para que os dados sejam para ser comparados. Neste exemplo, o processo aleatório tem gerado vetores que são agrupados de forma suficiente e uniformemente, onde a distância angular entre os vetores (por exemplo, lacunas 1502, 1504, e 1506) é aceitável e o erro da média estará sob um predeterminado limiar (como descrito abaixo com relação à FIG. 16) quando uma combinação ou outro processo é realizado usando os vetores projetados. Como descrito abaixo, o limiar pode incluir qualquer valor de erro adequado, tal como 5%.
[00112] A adequação das projeções pode ser determinada uma vez por experimentação e mantida e usada para geração aleatória ou pseudoaleatória. Por exemplo, a adequação dos vetores projetados pode ser determinada por realização de um teste de suficiência que testa a técnica de determinação da distância descrita acima (usando as projeções para determinar um ângulo entre os vetores de um ponto de referência e um ponto desconhecido) em comparação ao sistema anterior e comparando os resultados. Um objetivo de 5% de erro pode ser usado como um limiar para determinar a adequação dos vetores projetados aleatoriamente. Um técnico no assunto apreciará que qualquer porcentagem limiar pode ser usada, dependendo do aplicativo particular e da qualidade necessária desejada.
[00113] A FIG. 14 é um gráfico 1400 que mostra um exemplo de resultados 1400 de tal teste que usa os vetores projetados mostrados na FIG. 13. O gráfico 1400 mostra uma comparação de dados de dados reais combinados comparados aos dados combinados pelas técnicas descritas aqui usando as projeções de vetor. Neste exemplo, as projeções aleatórias usadas para gerar os vetores multidimensionais não foram distribuídas de forma suficiente e uniforme como visto traçado em duas dimensões na FIG. 13. A diferença medida entre os dados reais e os dados reduzidos era igual a 11,9%. O resultado dos dados mostrados na FIG. 14 é erro excessivo considerando o limiar. Por exemplo, usando o limiar a 5%, os vetores aleatórios da FIG. 13 usados no teste são insuficientes devido ao erro da média de 11,9% estar acima do limiar predeterminado a 5%.
[00114] Em tal caso, outro grupo de projeções é gerado para tentar obter uma projeção satisfatória. Os vetores projetados da FIG. 15 incluem um conjunto de vetores distribuídos de forma suficiente e uniforme. Por exemplo, a FIG. 16 representa um exemplo de resultados 1600 do teste de suficiência que inclui uma diferença de erro aceitável entre a combinação real e os resultados de combinação que usam as técnicas de projeção de vetor descritas aqui. O gráfico 1600 mostra uma comparação de dados de dados reais combinados em comparação aos dados combinados pelas técnicas descritas aqui usando projeções de vetor. Neste exemplo, as projeções aleatórias usadas para gerar os vetores multidimensionais foram distribuídas de forma suficiente e uniforme como visto traçado em duas dimensões na FIG. 15. A diferença medida entre os dados reais e os dados reduzidos era igual a 4,60%, que está sob o limiar a 5%, que indica que os vetores aleatórios mostrados na FIG. 15 são suficientes para obter um resultado preciso.
[00115] A FIG. 17 ilustra uma realização de um processo 1700 para a identificação de um ou mais pontos de dados desconhecidos. Em alguns aspectos, o processo 1700 pode ser realizado por um dispositivo de computação, tais como o servidor de combinação 104.
[00116] O processo 1700 é ilustrado como um diagrama de fluxo lógico, a operação de que representa uma sequência de operações que pode ser implementada em hardware, instruções de computador ou uma combinação destes. No contexto de instruções de computador, as operações representam instruções executáveis por computador armazenadas em um ou mais meios de armazenamento legíveis por computador que, quando executados por um ou mais processadores, realizam as operações enumeradas. Geralmente, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados e similares que realizam funções particulares ou implementam tipos de dados particulares. A ordem em que as operações são descritas não é pretendida ser construída como uma limitação, e qualquer número das operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
[00117] Adicionalmente, o processo 1700 pode ser realizado sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e pode ser implementado como código (por exemplo, instruções executáveis, um ou mais programas de computador, ou um ou mais aplicativos) que executa coletivamente um ou mais processadores, por hardware, ou combinações destes. Como observado acima, o código pode ser armazenado em um meio de armazenamento legível por máquina, por exemplo, na forma de um programa de computador compreendendo uma pluralidade de instruções executáveis por um ou mais processadores. O meio de armazenamento legível por máquina pode ser não transitório.
[00118] Em 1702, o processo 1700 inclui a obtenção de uma pluralidade de pontos de dados de referência. Em algumas realizações, a pluralidade de pontos de dados de referência inclui dados armazenados em uma base de dados de referência, tal banco de dados de referência 116 mostrado na FIG. 1. Os pontos de dados de referência podem incluir quaisquer dados que podem ser comparados com os dados desconhecidos para identificar os dados desconhecidos.
[00119] Em 1704, o processo 1700 inclui a determinação de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de referência da pluralidade de pontos de dados de referência. O ponto de dados de referência pode incluir o ponto de dados 302, a origem pode incluir o O de origem, e o primeiro vetor pode incluir o vetor de ponto de dados de referência 402 mostrado na FIG. 3 à FIG. 5. O comprimento pode ser determinado por qualquer técnica adequada, tal como ao calcular um produto de ponto do primeiro vetor com ele mesmo.
[00120] Em 1706, o processo 1700 inclui a obtenção de um ponto de dados desconhecido associado ao conteúdo que é apresentado por um display. Em 1708, o processo 1700 inclui a determinação de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados desconhecido. O ponto de dados desconhecido pode incluir o ponto de dados 304, a origem pode incluir o O de origem, e o segundo vetor pode incluir o vetor de ponto de dados desconhecido 404 mostrado na FIG. 3 à FIG. 5. O comprimento pode ser determinado por qualquer técnica adequada, tal como ao calcular um produto de ponto do segundo vetor com ele mesmo.
[00121] Em 1710, o processo 1700 inclui a projeção de uma pluralidade de vetores a partir do ponto de origem. Em um exemplo, a pluralidade de vetores projetados pode incluir os vetores projetados mostrados na FIG. 7 à FIG. 10. Os vetores podem ser aleatoriamente gerados ou podem ser gerados pseudoaleatoriamente, como discutido com relação à FIG. 13 à FIG. 16.
[00122] Em 1712, o processo 1700 inclui a determinação de um número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido. Em algumas realizações, determinação do número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido inclui a determinação se cada vetor da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor do ponto de dados de referência. A determinação de se um vetor projetado da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor pode incluir a realização de um produto de ponto no vetor projetado e no primeiro vetor. A determinação do número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido ainda inclui a determinação se cada vetor da pluralidade de vetores está à direita algébrica ou à esquerda algébrica do segundo vetor do ponto de dados desconhecido. Um produto de ponto também pode ser usado. A determinação do número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido ainda inclui a determinação do número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido. O número da pluralidade de vetores inclui vetores à esquerda algébrica do primeiro vetor e à direita algébrica do segundo vetor ou vetores à direita algébrica do primeiro vetor e à esquerda algébrica do segundo vetor. Um exemplo é mostrado na FIG. 9 como vetores que têm valores A1 902 e valores B0 904 armazenados.
[00123] Em alguns exemplos, o processo 1700 ainda inclui o armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do primeiro vetor do ponto de dados de referência, e o armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do primeiro vetor do ponto de dados de referência. Em um exemplo, o primeiro valor binário pode ser um 0 e o segundo valor binário pode ser um 1. Em outro exemplo, o primeiro valor binário pode ser um 1 e o segundo valor binário pode ser um 0.
[00124] Em alguns exemplos, o processo 1700 ainda inclui o armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do segundo vetor do ponto de dados desconhecido, e o armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do segundo vetor do ponto de dados desconhecido. Em um exemplo, o primeiro valor binário pode ser um 0 e o segundo valor binário pode ser um 1. Em outro exemplo, o primeiro valor binário pode ser um 1 e o segundo valor binário pode ser um 0.
[00125] Em alguns exemplos, o ponto de dados de referência é descartado depois do comprimento do primeiro vetor do ponto de dados de referência ser determinado e depois de cada vetor da pluralidade de vetores ser determinado estar à direita algébrica ou à esquerda algébrica do primeiro vetor. Por exemplo, os bits que representam o ponto de dados de referência podem ser removidos a partir da memória. Descartar o ponto de dados de referência permite que muito menos informações sejam armazenados por um sistema de combinação.
[00126] Em 1714, o processo 1700 inclui a estimativa de um ângulo entre o primeiro vetor e o segundo vetor. O ângulo é estimado usando o número da pluralidade de vetores. Por exemplo, a estimativa do ângulo entre o primeiro vetor do ponto de dados de referência e o segundo vetor do ponto de dados desconhecido inclui a multiplicação de uma constante por uma razão. A razão inclui o número da pluralidade de vetores entre o ponto de dados de referência e o ponto de dados desconhecido dividido por um número total da pluralidade de vetores. A constante pode incluir um valor predeterminado (por exemplo, 180, 360, ou outro número adequado).
[00127] Em 1716, o processo 1700 inclui a determinação de uma distância entre o ponto de dados de referência e o ponto de dados desconhecido. A distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor. Por exemplo, a determinação da distância entre o ponto de dados de referência e o ponto de dados desconhecido inclui a realização de um cálculo de identidade Pitagórica que usa o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor.
[00128] Em 1718, o processo 1700 inclui a identificação de um ou mais pontos de dados candidatos a partir da pluralidade de pontos de dados de referência. Um ponto de dados candidato é um candidato para a combinação do ponto de dados desconhecido. O um ou mais pontos de dados candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de referência e o ponto de dados desconhecido. Por exemplo, um algoritmo vizinho mais próximo pode ser usado para determinar candidatos com base nas distâncias.
[00129] Em algumas realizações, o processo 1700 inclui a determinação de uma combinação entre o ponto de dados desconhecido e um ponto de dados candidato. A combinação é uma combinação aproximada com base no ponto de dados candidato que é um ponto de dados mais próximo do um ou mais pontos de dados candidatos ao ponto de dados desconhecido. Em algumas realizações, o processo 1700 pode determinar a combinação por comparação do ponto de dados desconhecido com o um ou mais pontos de dados candidatos para identificar o ponto de dados desconhecido. Em alguns exemplos, um algoritmo de busca de caminho pode ser usado para identificar o ponto de dados desconhecido.
[00130] As técnicas realizadas pelos sistemas e métodos descritos aqui podem ser aplicadas a qualquer sistema que coleta e manipula grandes volumes de dados. Como observado acima, exemplos ilustrativos destes sistemas incluem sistemas automatizados de busca com base em conteúdo (por exemplo, reconhecimento automatizado de conteúdo para aplicativos relacionados ao vídeo ou outro aplicativo adequado), sistemas MapReduce, sistemas Bigtable, sistemas de reconhecimento de padrão, sistemas de reconhecimento facial, sistemas de classificação, sistemas de visão por computador, sistemas de compressão de dados, análise de agrupamento, ou qualquer outro sistema adequado. Um técnico no assunto apreciará que as técnicas descritas aqui podem ser aplicadas a qualquer outro sistema que armazena os dados que são comparados aos dados desconhecidos.
[00131] No contexto de reconhecimento automatizado de conteúdo (ACR), por exemplo, as técnicas descritas acima podem reduzir a quantidade de dados que deve ser armazenada em ordem para um sistema de combinação buscar e encontrar relações entre os grupos de dados desconhecidos e conhecidos. Por exemplo, entre os muitos aplicativos dos métodos e dos sistemas descritos aqui, as técnicas de projeção de vetor permitem a identificação de segmento de mídia de áudio e/ou informações de vídeo que são apresentadas por um display (por exemplo, a televisão (TV), uma TV inteligente (“smart TV”), uma TV com uma alimentação por cabo ou satélite, um descodificador (“set-top box”) de vídeo habilitado para Internet, um dispositivo móvel, ou qualquer outro dispositivo de visualização). Além disso, um sistema de identificação de segmento pode identificar com precisão os segmentos de qualquer tipo se eles estão sendo transmitidos, incluir programação previamente gravada, ou incluir mensagens comerciais. Ao usar as técnicas de projeção de vetor, um sistema de ACR com base em vídeo pode reduzir a quantidade de dados de vídeo que devem ser armazenados para referência.
[00132] A combinação de segmentos de vídeo de programação de televisão será usada abaixo como um exemplo de uma aplicação das técnicas de projeção de vetor descritas aqui. Entretanto, um técnico no assunto apreciará que as técnicas e os sistemas descritos aqui podem ser aplicados em qualquer número de grandes buscas de banco de dados, análises, e problemas de comparação, também conhecidos em um sentido geral como “grande análise de dados”.
[00133] A FIG. 18 ilustra um exemplo de um sistema de combinação de vídeo 1800 que pode melhorar a eficiência dos dados usando as técnicas de projeção de vetor descritas aqui. Um cliente de televisão (TV) 1806 de um dispositivo cliente 1802, que pode incluir um sistema de televisão, pode decodificar os sinais de televisão associados com programas de vídeo 1828. O cliente de TV 1806 pode colocar os conteúdos decodificados de cada estrutura do vídeo em um buffer de estrutura de vídeo em preparação para a exibição ou para o processamento posterior de informações de pixel das estruturas de vídeo. Um dispositivo cliente 1802 pode ser qualquer sistema de decodificação de televisão que pode receber e decodificar um sinal de vídeo. O dispositivo cliente 1802 pode receber programas de vídeo 1828 e armazenar informações de vídeo em um buffer de vídeo buffer (não mostrado). O dispositivo cliente 1802 pode processar as informações de buffer de vídeo e produzir os pontos de dados desconhecidos (que podem ser referidos como “indicações”), descritos em mais detalhes abaixo com relação à FIG. 20. O cliente de TV 1806 pode transmitir os pontos de dados desconhecidos ao servidor de combinação de vídeo 1804 para comparação com os pontos de dados de referência no banco de dados de referência 1816, similar às técnicas descritas acima.
[00134] O sistema de combinação 1800 pode iniciar um processo de combinação de segmentos de vídeo pela primeira coleta de amostras de dados a partir de fontes de dados de vídeo 1818 conhecidas. Por exemplo, o servidor de combinação de vídeo 1804 coleta os dados para construir e manter uma base de dados de vídeo de referência 1816 a partir de uma variedade de fontes de dados de vídeo 1818. As fontes de dados de vídeo 1818 podem incluir programas de televisão, filmes ou qualquer outra fonte de vídeo adequada. As fontes de dados de vídeo 1818 podem ser providas como transmissões aéreas, como canais de TV a cabo, como fontes de transmissão a partir da Internet, e a partir de qualquer outra fonte de dados de vídeo. Em algumas realizações, o servidor de combinação de vídeo 1804 pode processar o vídeo recebido a partir da fonte de dados de vídeo 1818 para gerar e coletar os pontos de dados de vídeo de referência no banco de dados de referência 1816, como descrito com relação à FIG. 18 abaixo. Em algumas realizações, os programas de vídeo a partir de fontes de dados de vídeo 1818 podem ser processados por um sistema de compilação de programa de vídeo de referência (não mostrado), que pode produzir os pontos de dados de vídeo de referência e enviá-los ao banco de dados de referência 1816 para o armazenamento. Os pontos de dados de referência podem ser usados como descrito acima para determinar as informações que são então usadas para analisar os pontos de dados desconhecidos. Por exemplo, os pontos de dados de referência podem ser analisados com relação a uma pluralidade de vetores projetados para obter os dados binários esquerdo e direito. Os comprimentos de vetores relacionados aos pontos de dados de referência também podem ser determinados. Uma vez que os comprimentos dos vetores de ponto de dados de referência e dados binários esquerdo e direito são determinados para os pontos de dados de referência, os bits do ponto de dados de referência reais podem ser descartados.
[00135] O servidor de combinação de vídeo 1804 pode armazenar os pontos de dados de vídeo de referência para cada programa de vídeo recebido durante um período de tempo (por exemplo, um número de dias, um número de semanas, um número de meses, ou qualquer outro período adequado de tempo) no banco de dados de referência 1816 até as informações necessárias serem determinadas. O servidor de combinação de vídeo 1804 pode construir e continuamente ou periodicamente atualizar o banco de dados de referência 1816 de amostras de programação de televisão (por exemplo, incluindo os pontos de dados de referência, que também podem ser referidos como indicações ou valores de indicação). Em alguns exemplos, os dados coletados são uma representação compacta das informações de vídeo amostradas a partir de estruturas de vídeo periódicas (por exemplo, cada quinta estrutura de vídeo, cada décima estrutura de vídeo, cada décima quinta estrutura de vídeo, ou outro número adequado de estruturas). Em alguns exemplos, um número de bytes de dados por estrutura (por exemplo, 25 bytes, 50 bytes, 75 bytes, 100 bytes, ou qualquer outra quantidade de bytes por estrutura) é coletado para cada fonte de programa. Qualquer número de fontes de programa pode ser usado para obter vídeo, tais como 25 canais, 50 canais, 75 canais, 100 canais, 200 canais, ou qualquer outro número de fontes de programa. Usando a quantidade do exemplo de dados, o total de dados coletados durante um período de 24 horas durante três dias torna-se muito grande. Portanto, o descarte dos bits de ponto de dados de vídeo de referência reais é vantajoso na redução da carga do armazenamento do servidor de combinação de vídeo 1804.
[00136] Em um exemplo ilustrativo, a FIG. 19 ilustra um sistema de captura de ingestão do vídeo 1900 incluindo um buffer de memória 1902 de um decodificador. O decodificador pode ser parte do servidor de combinação de vídeo 1804 ou o cliente de TV 1806. O decodificador pode não funcionar com ou exigir um painel ou dispositivo de exibição de televisão físico. O decodificador pode decodificar e, quando necessário, descriptografar um programa de vídeo digital em uma representação de bitmap descompactada de um programa de televisão. Para fins de construção de um banco de dados de referência de dados de vídeo de referência (por exemplo, banco de dados de referência 1816), o servidor de combinação de vídeo 1804 pode adquirir uma ou mais matrizes de pixels de vídeo, que são lidas a partir do buffer de estrutura de vídeo. Uma matriz de pixels de vídeo é referida como um caminho de vídeo. Um caminho de vídeo pode ser de qualquer formato ou padrão arbitrário, mas, para os fins deste exemplo específico, é descrito como uma matriz de pixel de 10x10, incluindo dez pixels horizontalmente por dez pixels verticalmente. Também para o fim deste exemplo, presume-se que há 25 posições de caminho de pixel extraídas a partir de dentro do buffer de estrutura de vídeo que são uniformemente distribuídas dentro dos limites do buffer.
[00137] Um exemplo de alocação de caminhos de pixel (por exemplo, caminho de pixel 1904) é mostrado na FIG. 19. Como observado acima, um caminho de pixel pode incluir uma matriz de pixels, tal como uma matriz 10x10. Por exemplo, o caminho de pixel 1904 inclui uma matriz de pixels 10x10. Um pixel pode incluir valores de cor, tais como um valor vermelho, um verde e um azul. Por exemplo, um pixel 1906 é mostrado tendo valores de cor Vermelho-Verde-Azul (RGB). Os valores de cor para um pixel podem ser representados por um valor binário de oito bits para cada cor. Outros valores de cor adequados que podem ser usados para representar as cores de um pixel incluem os valores de luma e croma (Y, Cb, Cr) ou quaisquer outros valores de cor adequados.
[00138] Um valor médio (ou um valor da média em alguns casos) de cada caminho de pixel é tido, e uma gravação de dados resultante é criada e marcada com um código de tempo (ou marca de horário). Por exemplo, um valor médio é encontrado para cada matriz de caminho de pixel de 10x10, caso em que vinte e quatro bits de dados por vinte e cinco localizações de buffer de exibição são produzidos para um total de 600 bits de informações de pixel por estrutura. Em um exemplo, uma média do caminho de pixel 1904 é calculada, e é mostrada por meio do caminho de pixel 1908. Em um exemplo ilustrativo, o código de tempo pode incluir um “tempo da época”, que representa o total do tempo gasto (em frações de um segundo) desde a meia noite, 1 de janeiro de 1970. Por exemplo, os valores da média do caminho de pixel 1908 são montados com um código de tempo 1912. O tempo da época é uma convenção aceita em sistemas de computação, incluindo, por exemplo, sistemas baseados em Unix. As informações sobre o programa de vídeo, conhecido como metadados, são anexadas à gravação de dados. Os metadados podem incluir quaisquer informações sobre um programa, tal como um identificador de programa, um tempo do programa, um comprimento do programa, ou quaisquer outras informações. A gravação de dados incluindo o valor médio de um caminho de pixel, o código de tempo e metadados, forma um “ponto de dados” (também referido como uma “indicação”). O ponto de dados 1910 é um exemplo de um ponto de dados de vídeo de referência.
[00139] Um processo de identificação de segmentos de vídeo desconhecidos inicia com etapas similares para criar o banco de dados de referência. Por exemplo, a FIG. 20 mostra um sistema de captura de vídeo 2000 que inclui um buffer de memória 2002 de um decodificador. O sistema de captura de vídeo 2000 pode ser parte do dispositivo cliente 1802 (por exemplo, um sistema de televisão) que processa os dados de televisão apresentados por um display (por exemplo, em um monitor de televisão conectado à Internet, tais como uma TV inteligente, um dispositivo móvel, ou outro dispositivo de visualização de televisão). O sistema de captura de vídeo 2000 pode utilizar um processo similar para gerar o ponto de dados de vídeo desconhecido 2010 como aquele usado pelo sistema 1900 para criar o ponto de dados de vídeo de referência 1910. Em um exemplo, o cliente de TV 1806 pode transmitir o ponto de dados de vídeo desconhecido 2010 para o servidor de combinação de vídeo 1804 a ser identificado pelo servidor de combinação 1804.
[00140] Como mostrado na FIG. 20, um caminho de vídeo 2004 pode incluir uma matriz de pixels de 10x10. O caminho de vídeo 2004 pode ser extraído a partir de uma estrutura de vídeo que é apresentada por um display. Uma pluralidade de tais caminhos de pixel pode ser extraída a partir da estrutura de vídeo. Em um exemplo ilustrativo, se vinte e cinco de tais caminhos de pixel são extraídos a partir da estrutura de vídeo, o resultado será um ponto que representa uma posição em um espaço de dimensão 75. Um valor médio (ou de média) pode ser calculado para cada valor de cor da matriz (por exemplo, valor de cor RGB, valores de cor Y, Cr, Cb ou similares). Uma gravação de dados (por exemplo, ponto de dados de vídeo desconhecido 2010) é formada a partir dos valores médios de pixel e o tempo atual é anexado aos dados. Um ou mais pontos de dados de vídeo desconhecidos podem ser enviados para o servidor de combinação de vídeo 1804 a ser combinado com os dados a partir do banco de dados de referência 1816 usando as técnicas de projeção de vetor descritas acima.
[00141] O técnico conhecerá que um banco de dados de referência 1816 que armazena os valores de bit de ponto de dados de referência real cria um tal espaço de busca grande que exigiria os recursos de computação extensivos para buscar e combinar os dados. As técnicas de projeção de vetor descritas aqui oferecem um meio significativamente mais eficiente para buscar grandes bancos de dados sem a necessidade de realmente armazenar os grandes valores que representam os pontos de dados de referência (também conhecidos como indicações de dados de referência).
[00142] A FIG. 21 ilustra uma realização de um processo 2100 para identificar o conteúdo de vídeo (por exemplo, conteúdo de vídeo que é exibido por um display). Em alguns aspectos, o processo 2100 pode ser realizado por um dispositivo de computação, tal como o servidor de combinação de vídeo 1804.
[00143] O processo 2100 é ilustrado como um diagrama de fluxo lógico, a operação da qual representa uma sequência de operações que pode ser implementada em hardware, instruções de computador ou uma combinação destes. No contexto de instruções de computador, as operações representam as instruções executáveis por computador armazenadas em um ou mais meios de armazenamento legíveis por computador que, quando executadas por um ou mais processadores, realizam as operações enumeradas. Geralmente, as instruções executáveis por computador incluem rotinas, programas, objetos, componentes, estruturas de dados e similares que realizam as funções particulares ou implementam os tipos de dados particulares. A ordem em que as operações são descritas não pretende ser construída como uma limitação, e qualquer número das operações descritas pode ser combinado em qualquer ordem e/ou em paralelo para implementar os processos.
[00144] Adicionalmente, o processo 2100 pode ser realizado sob o controle de um ou mais sistemas de computador configurados com instruções executáveis e pode ser implementado como código (por exemplo, instruções executáveis, um ou mais programas de computador, ou um ou mais aplicativos) que executa coletivamente um ou mais processadores, por hardware, ou combinações destes. Como observado acima, o código pode ser armazenado em um meio de armazenamento legível por máquina, por exemplo, na forma de um programa de computador compreendendo a pluralidade de instruções executáveis por um ou mais processadores. O meio de armazenamento legível por máquina pode ser não transitório.
[00145] Em 2102, o processo 2100 inclui a obtenção de uma pluralidade de pontos de dados de vídeo de referência. Em algumas realizações, a pluralidade de pontos de dados de vídeo de referência inclui os dados de vídeo extraídos a partir de uma ou mais estruturas de vídeo. Os pontos de dados de vídeo de referência podem incluir o ponto de dados 1910 mostrado na FIG. 19, incluindo os valores médios de pixel de caminhos de pixel, um código de tempo e os metadados. Em algumas realizações, um ponto de dados de vídeo de referência pode não incluir metadados e/ou um código de tempo. Em algumas realizações, os dados de pixel podem ser para cada pixel de uma estrutura, em vez de um caminho de pixel.
[00146] Em 2104, o processo 2100 inclui a determinação de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de vídeo de referência da pluralidade de pontos de dados de vídeo de referência. A origem pode incluir o O de origem e o primeiro vetor pode incluir o vetor de ponto de dados de referência 402 mostrado na FIG. 3 à FIG. 5. O comprimento pode ser determinado por qualquer técnica adequada, tal como ao calcular um produto de ponto do primeiro vetor com ele mesmo.
[00147] Em 2106, o processo 2100 inclui a obtenção de um ponto de dados de vídeo desconhecido associado com o conteúdo de vídeo que é apresentado por um display. O ponto de dados de vídeo desconhecido pode incluir o ponto de dados 2010 mostrado na FIG. 20, incluindo os valores médios de pixel de caminhos de pixel e o tempo atual (chamados de um código de tempo) associado com a estrutura de vídeo. Em algumas realizações, um ponto de dados de vídeo desconhecido pode não incluir um código de tempo. Em algumas realizações, os dados de pixel podem ser para cada pixel de uma estrutura, em vez de um caminho de pixel.
[00148] Em 2108, o processo 2100 inclui a determinação de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados de vídeo desconhecido. A origem pode incluir o O de origem e o segundo vetor pode incluir o vetor de ponto de dados desconhecido 404 mostrado na FIG. 3 à FIG. 5. O comprimento pode ser determinado por qualquer técnica adequada, tal como ao calcular um produto de ponto do segundo vetor com ele mesmo.
[00149] Em 2110, o processo 2100 inclui a projeção de uma pluralidade de vetores a partir do ponto de origem. Em um exemplo, a pluralidade de vetores projetados pode incluir os vetores projetados mostrados na FIG. 7 à FIG. 10. Os vetores podem ser aleatoriamente gerados ou podem ser gerados pseudoaleatoriamente, como discutido com relação à FIG. 13 à FIG. 16.
[00150] Em 2112, o processo 2100 inclui a determinação de um número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido. Em algumas realizações, a determinação do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido inclui a determinação se cada vetor da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor do ponto de dados de vídeo de referência. A determinação de se um vetor projetado da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor pode incluir a realização de um produto de ponto no vetor projetado e no primeiro vetor. A determinação do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido ainda inclui a determinação se cada vetor da pluralidade de vetores está à direita algébrica ou à esquerda algébrica do segundo vetor do ponto de dados de vídeo desconhecido. Um produto de ponto também pode ser usado. A determinação do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido ainda inclui a determinação do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido. O número da pluralidade de vetores inclui os vetores à esquerda algébrica do primeiro vetor e à direita algébrica do segundo vetor ou vetores à direita algébrica do primeiro vetor e à esquerda algébrica do segundo vetor. Um exemplo é mostrado na FIG. 9 como vetores que têm armazenado valores A1 902 e valores B0 904.
[00151] Em alguns exemplos, o processo 2100 ainda inclui o armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do primeiro vetor do ponto de dados de vídeo de referência, e o armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do primeiro vetor do ponto de dados de vídeo de referência. Em um exemplo, o primeiro valor binário pode ser um 0 e o segundo valor binário pode ser um 1. Em outro exemplo, o primeiro valor binário pode ser um 1 e o segundo valor binário pode ser um 0.
[00152] Em alguns exemplos, o processo 2100 ainda inclui o armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do segundo vetor do ponto de dados de vídeo desconhecido, e o armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do segundo vetor do ponto de dados de vídeo desconhecido. Em um exemplo, o primeiro valor binário pode ser um 0 e o segundo valor binário pode ser um 1. Em outro exemplo, o primeiro valor binário pode ser um 1 e o segundo valor binário pode ser um 0.
[00153] Em alguns exemplos, o ponto de dados de vídeo de referência é descartado depois do comprimento do primeiro vetor do ponto de dados de vídeo de referência ser determinado e depois de cada vetor da pluralidade de vetores ser determinado estar à direita algébrica ou à esquerda algébrica do primeiro vetor. Por exemplo, os bits que representam o ponto de dados de vídeo de referência podem ser removidos da memória. O descarte do ponto de dados de vídeo de referência permite que muito menos informações sejam armazenadas por um sistema de combinação.
[00154] Em 2114, o processo 2100 inclui a estimativa de um ângulo entre o primeiro vetor e o segundo vetor. O ângulo é estimado usando o número da pluralidade de vetores. Por exemplo, a estimativa do ângulo entre o primeiro vetor do ponto de dados de vídeo de referência e o segundo vetor do ponto de dados de vídeo desconhecido inclui a multiplicação de uma constante por uma razão. A razão inclui o número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido dividido por um número total da pluralidade de vetores. A constante pode incluir um valor predeterminado (por exemplo, 180, 360, ou outro número adequado).
[00155] Em 2116, o processo 2100 inclui a determinação de uma distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido. A distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor. Por exemplo, a determinação da distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido inclui a realização de um cálculo de identidade Pitagórica usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor.
[00156] Em 2118, o processo 2100 inclui a identificação de um ou mais pontos de dados de vídeo candidatos a partir da pluralidade de pontos de dados de vídeo de referência. Um ponto de dados de vídeo candidato é um candidato para a combinação do ponto de dados de vídeo desconhecido. O um ou mais pontos de dados de vídeo candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de vídeo de referência e o ponto de dados de vídeo desconhecido. Por exemplo, um algoritmo vizinho mais próximo pode ser usado para determinar candidatos com base nas distâncias.
[00157] Em 2120, o processo 2100 inclui a identificação do conteúdo de vídeo que é apresentado pelo display. O conteúdo de vídeo que é apresentado pelo display é identificado por comparação do ponto de dados de vídeo desconhecido com o um ou mais pontos de dados de vídeo candidatos. Por exemplo, a identificação do conteúdo de vídeo que é apresentado pelo display inclui a determinação de uma combinação entre o ponto de dados de vídeo desconhecido e um ponto de dados de vídeo candidato. A combinação é uma combinação aproximada com base no ponto de dados de vídeo candidato que é um ponto de dados de vídeo mais próximo do um ou mais pontos de dados de vídeo candidatos ao ponto de dados de vídeo desconhecido. Em alguns exemplos, um algoritmo de busca de caminho pode ser usado para identificar o conteúdo de vídeo que é apresentado.
[00158] As técnicas vizinhas mais próximas e de busca de caminho mencionadas anteriormente são agora descritas em detalhes. Um exemplo de monitoramento de transmissão de vídeo que usa indicações ambíguas é fornecido, mas o conceito geral pode ser aplicado a qualquer campo, tal como aquele descrito acima.
[00159] Um método para busca de vídeo eficiente é apresentado. Dado um grande número de segmentos de vídeo, o sistema deve ser capaz de identificar em tempo real o segmento com o qual uma determinada entrada de vídeo de consulta é tida e em que tempo se desloca. O segmento e o deslocamento juntos são referidos como a localização. O método é chamado de busca de vídeo, uma vez que deve ser capaz de detectar e adaptar de forma eficiente a pausa, o encaminhamento rápido, o rebobinamento, a mudança brusca para outros segmentos e a mudança para segmentos desconhecidos. Antes que seja capaz de buscar o vídeo ao vivo, a base de dados é processada. As indicações visuais (um grupo de valores de pixel) são tidas a partir de estruturas de cada fração constante de um segundo e colocadas em estrutura de dados especializada (observa que isto também pode ser feito em tempo real). A busca de vídeo é realizada por receber continuamente indicações a partir do vídeo de entrada e atualizar um conjunto de ideias ou estimativas sobre sua localização atual. Cada indicação concorda ou discorda com as estimativas, e elas são ajustadas para refletir a nova evidência. Uma localização de vídeo é considerada ser a correta se a confiança nessa verdade for alta o suficiente. Ao monitorar apenas um pequeno conjunto de possíveis localizações “suspeitas”, isto pode ser feito de forma eficiente.
[00160] Um método é descrito para busca de vídeo, mas usa construções matemáticas para explicá-la e investigá- la. É o objetivo desta introdução fornecer ao leitor as ferramentas necessárias para traduzir entre os dois domínios. Um sinal de vídeo é composto de estruturas sequenciais. Cada um pode ser pensado como uma imagem estática. Cada estrutura é um “raster” de pixels. Cada pixel é composto de três valores de intensidade correspondentes ao vermelho, verde e azul (RGB) feito dessa cor de pixel. Na terminologia deste manuscrito, uma indicação é uma lista de valores de RGB de um subconjunto dos pixels em uma estrutura e uma marca de horário correspondente. O número de pixels em uma indicação é significativamente menor do que em uma estrutura, geralmente entre 5 e 15. Sendo uma lista ordenada de valores escalares, os valores de indicação são de fato um vetor. Este vetor também é referido como um ponto.
[00161] Embora estes pontos estejam em alta dimensão, geralmente entre 15 e 150, eles podem ser imaginados como pontos em duas dimensões. De fato, as ilustrações serão fornecidas como gráficos bidimensionais. Agora, considera-se a progressão de um vídeo e seus pontos de indicação correspondentes. Geralmente, uma pequena mudança no tempo produz uma pequena mudança nos valores de pixel. O ponto de pixel pode ser visto quando “se move” um pouco entre as estruturas. Seguindo estes minúsculos movimentos de estrutura em estrutura, a indicação segue um caminho no espaço como um grânulo em um fio dobrado.
[00162] Na linguagem desta analogia, em busca de vídeo, as localizações do grânulo no espaço (os pontos de indicação) são recebidas e a parte do fio (caminho) que o grânulo está seguindo é procurada. Isto é significativamente mais difícil por dois fatos. Primeiro, o grânulo não segue o fio exatamente, mas em vez disso mantém alguma distância desconhecida variável a partir disso. Segundo, os fios estão todos emaranhados. Essas declarações são feitas exatamente na seção 2. O algoritmo descrito abaixo faz isto em duas etapas conceituais. Quando uma indicação é recebida, busca todos os pontos em todos os caminhos conhecidos que são suficientemente próximos ao ponto de indicação; estes são chamados suspeitos. Isto é feito de forma eficiente usando a Localização do Ponto Probabilístico em algoritmo de Esferas Iguais. Estes suspeitos são adicionados a uma estrutura de dados do histórico e a probabilidade de cada um deles que indica a localização verdadeira é calculada. Esta etapa também inclui a remoção de localizações suspeitas que são de forma suficiente improváveis. Este processo de atualização do histórico garante que, por um lado, apenas um pequeno histórico é mantido, mas, por outro lado, nenhuma localização provável é excluída. O algoritmo genérico é fornecido no Algoritmo 1 e ilustrado na FIG. 22.
Figure img0001
[00163] O documento inicia com a descrição da Localização do Ponto Probabilístico em algoritmo de Esferas Iguais (PPLEB) na Seção 1. Ele é usado a fim de executar a linha 5 em Algoritmo 1 de forma eficiente. A capacidade de realizar esta busca por suspeitos rapidamente é crucial para a aplicabilidade deste método. Mais tarde, na seção 2, um modelo estatístico possível é descrito para execução das linhas 6 e 7. O modelo descrito é uma escolha natural para a configuração. Também é mostrado como pode ser usado de forma muito eficiente. SEÇÃO 1 - LOCALIZAÇÃO DO PONTO PROBABILÍSTICO EM ESFERAS IGUAIS
[00164] A seção a seguir descreve um simples algoritmo para a realização de localização do ponto probabilístico em esferas iguais (PPLEB). Na PLEB tradicional (localização do ponto em esferas iguais), um começo com um conjunto de n pontos x, em lR d e uma esfera especificada de raios r. O algoritmo recebe o tempo de pré-processamento de O(poli(n)) para produzir uma estrutura de dados eficiente. Então, dado um ponto de consulta x, o algoritmo é necessário para retornar todos os pontos x, tal que _ . O conjunto de pontos tal que :: -_ . encontra-se geometricamente dentro de uma esfera de raio r em torno da consulta x (vide FIG. 23). Esta relação é referida como x, que está próxima de x ou como x, e x que é vizinho.
[00165] O problema de PPLEB e o problema de busca vizinha mais próxima são dois problemas similares que receberam muita atenção na comunidade acadêmica. De fato, estes problemas estavam entre o primeiro estudado no campo de geometria computacional. Muitos métodos diferentes atendem ao caso onde a dimensão do ambiente é pequena ou constante. Estes dividem o espaço de diferentes maneiras e buscam recursivamente através das partes. Estes métodos incluem árvores KD, árvores cobertas e outras. Embora muito eficiente em baixa dimensão, quando a dimensão do ambiente é alta, eles tendem a funcionar muito mal. Isto é conhecido como a “maldição da dimensionalidade”. Várias abordagens tentam solucionar este problema enquanto superam a maldição da dimensionalidade. O algoritmo usado aqui usa uma versão mais simples e rápida do algoritmo e pode confiar em Hashing Sensível ao Local. SEÇÃO 1.1 HASHING SENSÍVEL À LOCALIDADE
[00166] No esquema de hashing sensível ao local, é concebida uma família de funções de hash H tais que:
Figure img0002
[00167] Em palavras, a probabilidade de x e y serem mapeados para o mesmo valor por h é significativamente maior se eles estiverem próximos um do outro.
[00168] Por uma questão de clareza, primeiro lida-se com um cenário simplificado onde todos os vetores de entrada são do mesmo comprimento r’ e r’
Figure img0003
A razão para a última condição tornar-se clara mais tarde. Primeiro uma função aleatória u ϵ U é definida, que separa entre x e y de acordo com o ângulo entre eles. Deixe
Figure img0004
ser um vetor aleatório escolhido uniformemente a partir da esfera de unidade Sd-1 e deixe u(x)=sinal
Figure img0005
(Vide FIG. 24). É fácil verificar queAlém disso, para quaisquer pontos x, y, x', y' em um círculo tal que
Figure img0006
Figure img0007
é obtido. Definindo p, as equações a seguir são usadas:
[00169] A família de funções H é configurada para ser um produto cruzado de t cópias independentes de u, isto é, h(x)=[u1(x), ..., ut(x)]. Intuitivamente, gostaria de ter isso se h(x)=h(y) então x e y são prováveis estarem próximos um do outro. Vão medir isso. Primeiro, calcula o número esperado de erros falso positivos nfp. Estes são os casos para que h(x)=h(y), mas ||x-y|| > 2r. Um valor t é encontrado para que nfp não seja maior que 1, isto é, não é esperado estar errado.
Figure img0008
[00170] Agora, a probabilidade que h(x)=h(y), dado que eles são vizinhos, é calculada:
Figure img0009
[00171] Observe aqui que é preciso ter 2p<1, que requer r’ > . 2 . Isto pode não parecer uma probabilidade de sucesso muito grande. Na verdade, 1/.- é significativamente menor do que ^. A próxima seção descreverá como aumentar essa probabilidade até ^. SEÇÃO 1.2 O ALGORITMO DE BUSCA DE PONTO
[00172] Cada função h mapeia cada ponto no espaço para um “bucket”. Defina a função do “bucket”
Figure img0010
de um ponto x em relação à função hash h como
Figure img0011
A estrutura de dados mantida é m=O( ) casos de funções de “bucket” [Bh1, ... , Bhm]. Quando se busca um ponto x, a função retorna para . De acordo com a seção anterior, há dois resultados desejados
Figure img0012
[00173] Em outras palavras, enquanto com probabilidade pelo menos ^ de cada vizinho de x é encontrado, não é provável encontrar muitos não vizinhos. SEÇÃO 1.3 LIDANDO COM DIFERENTES VETORES DE ENTRADA DE RAIOS
[00174] As seções anteriores apenas tratavam de buscar os vetores do mesmo comprimento, ou seja, r'. Agora descrito é como se pode usar a construção à medida que um bloco de construção suporta uma busca em diferentes raios. Como visto na FIG. 25, o espaço é dividido em anéis de largura exponencialmente crescente. O anel i, denotado por Ri, inclui todos os pontos xi tal que
Figure img0013
Ao fazer isso, alcança duas extremidades. Primeiro, se xi e xj pertencem ao mesmo anel, então
Figure img0014
Segundo, qualquer busca pode ser realizada em no máximo 1/e de tais anéis. Além disso, se o vetor de comprimento máximo no conjunto de dados é r', então o número total de anéis no sistema é O(log(r'/r)). SEÇÃO 2 O PROBLEMA DE BUSCA DE CAMINHO
[00175] No problema de busca de caminho, um caminho fixado no espaço é fornecido com as posições de uma partícula em uma sequência de pontos de tempo. Os termos partícula, indicação e ponto serão usados indiferentemente. O algoritmo é necessário para produzir a posição da partícula no caminho. Isto é mais difícil por alguns fatores: a partícula apenas segue o caminho aproximadamente; o caminho pode ser descontínuo e se cruzar muitas vezes; ambas posições da partícula e do caminho são fornecidas em uma sequência de pontos de tempo (diferentes para cada um).
[00176] É importante observar que este problema pode simular o monitoramento de uma partícula em qualquer número de caminhos. Isto é simplesmente feito por concatenação dos caminhos em um longo caminho e interpretação da posição resultante como a posição nos caminhos individuais.
[00177] Mais precisamente, deixe o caminho P ser a curva paramétrica P:
Figure img0015
. O parâmetro de curva será referido como o tempo. Os pontos no caminho que são conhecidos são fornecidos em pontos de tempo arbitrários ti, isto é, n pares (ti, P(ti)) são fornecidos. A partícula segue o caminho, mas suas posições são fornecidas em diferentes pontos de tempo, como mostrado na FIG. 26. Além disso, os m pares (t’j, x(t’j)) são fornecidos, onde x(t’j) é a posição da partícula no tempo t’j. SEÇÃO 2.1 ESTIMATIVA DE PROBABILIDADE
[00178] Uma vez que a partícula não segue o caminho exatamente e uma vez que o caminho pode se cruzar muitas vezes é geralmente impossível identificar de forma positiva a posição no caminho em que a partícula é realmente ativada. Portanto, uma distribuição de probabilidade é calculada em todas as possíveis localizações de caminho. Se uma probabilidade de localização é significativamente provável, a posição da partícula é considerada ser conhecida. A seção a seguir descreve como isto pode ser feito de forma eficiente.
[00179] Se a partícula estiver seguindo o caminho, então a diferença de tempo entre a marca de horário de partícula e o deslocamento dos pontos correspondentes em P deve ser relativamente fixada. Em outras palavras, se x(t') estiver atualmente em deslocamento t no caminho então deve estar próximo de P(t). Além disso, ■ segundos atrás, deveria ter ficado em deslocamento t-’. Dessa forma, x(t'-") deve estar próximo de P(t-’) (observe que se a partícula estiver interceptando o caminho, e x(t') estiver próximo de P(t) temporariamente, é improvável que x(t'-’) e P(t-’) também estejam próximos). Defina o deslocamento relativo como _=t- t'. Observe que enquanto a partícula estiver seguindo o caminho, o deslocamento relativo - permanece inalterado. Ou seja, x(t') está próximo de P(t’+-).
[00180] A probabilidade máxima de deslocamento relativo é obtida por cálculo:
Figure img0016
[00181] Em palavras, o deslocamento relativo mais provável é aquele para o qual o histórico da partícula é mais provável. Esta equação, entretanto, não pode ser resolvida sem um modelo estatístico. Este modelo deve quantificar: quão bem x segue o caminho; quão provável é que x salte entre as localizações; quão suave o caminho e as curvas de partícula estão entre os pontos medidos. SEÇÃO 2.2 BINÁRIO COM DESCONTO DE TEMPO
[00182] Agora descrito é um modelo estatístico para a estimativa da função de probabilidade. O modelo supõe que o desvio da partícula para longe do caminho distribui normalmente com ar de desvio padrão. Também se pressupõe que em qualquer determinado ponto no tempo, há alguma probabilidade não zero da partícula ser abruptamente mudada para outro caminho. Isto é manifestado por um desconto exponencial com o tempo para pontos passados. Além de ser uma escolha razoável para um ponto vista de modelagem, esse modelo também tem a vantagem de ser atualizável de forma eficiente. Para alguma unidade de tempo constante 1:, defina a função de probabilidade para ser proporcional a f que é definido como a seguir:
Figure img0017
[00183] Aqui
Figure img0018
é um coeficiente em escala e
Figure img0019
é a probabilidade de que a partícula salte para uma localização aleatória no caminho em uma determinada unidade de tempo.
[00184] A atualização da função f de forma eficiente pode ser obtida usando a seguinte observação simples.
Figure img0020
[00185] Além disso, uma vez que <<1, se
Figure img0021
seguinte ocorre:
Figure img0022
[00186] Isto é uma propriedade importante da função de probabilidade, uma vez que a atualização da soma agora pode ser realizada somente nos vizinhos de x(t’j) e não no caminho inteiro. Denota por S o conjunto de (ti, P(ti)) tal que
Figure img0023
A equação a seguir ocorre:
Figure img0024
[00187] Isto é descrito no Algoritmo 2.2 abaixo. O termo f é usado como um vetor escasso que recebe também indícios inteiros negativos. O conjunto S é o conjunto de todos os vizinhos de x(ti) no caminho e pode ser calculado rapidamente usando o algoritmo PPLEB. É fácil verificar que se o número de vizinhos de x(ti) é limitado por alguma constante nnear, então o número de não zeros no vetor f é limitado por
Figure img0025
que é apenas um fator constante maior. O estágio final do algoritmo é emitir um valor específico de -'■ se estiver acima de algum valor limiar.
Figure img0026
[00188] A FIG. 22 fornece três localizações consecutivas de ponto e os pontos de caminho em torno deles. Observe que nem o ponto inferior nem o médio sozinho teria sido suficiente para identificar a parte correta do caminho. Juntos, entretanto, eles estão. Adicionando o ponto superior aumenta a certeza de que a partícula é de fato da curva final (esquerda) do caminho.
[00189] Na FIG. 23, dado um conjunto de pontos n (cinza), o algoritmo é fornecido por um ponto de consulta (preto) e retorna para o conjunto de pontos que se situa dentro da distância r a partir dele (os pontos dentro do círculo). Na configuração tradicional, o algoritmo deve retornar para todos os tais pontos. Na configuração probabilística, cada tal ponto deve ser retornado apenas com alguma probabilidade constante.
[00190] A FIG. 24 ilustra os valores de u(x1), u(x2), e u(x). Intuitivamente, a função u fornece diferentes valores para x1 e x2 se a linha tracejada passar entre eles e o mesmo valor, caso contrário. Ao passar a linha tracejada em uma direção aleatória garante que a probabilidade de isso acontecer é diretamente proporcional ao ângulo entre x1 e x2.
[00191] A FIG. 25 mostra que ao dividir o espaço em anéis tais que o anel Ri esteja entre os raios 2r(1+)i e 2r(1+:)i+1, pode ter certeza que qualquer dois vetores dentro de um anel são do mesmo comprimento até fatores (1+ ∑) e que qualquer busca é realizada em no máximo 1/∑ anéis.
[00192] A FIG. 26 mostra os caminhos autointersectantes e um ponto de consulta (em preto). É ilustrado que sem o histórico das posições de partícula é impossível saber onde está no caminho.
[00193] A FIG. 27 fornece três localizações consecutivas de ponto e os pontos de caminho em torno deles. Observe que nem x(t1) nem x(t2) sozinho teria sido suficiente para identificar a parte correta do caminho. Junto, entretanto, eles estão. Adicionando x(t3) aumenta a certeza de que a partícula é realmente da curva final (esquerda) do caminho.
[00194] As variações substanciais podem ser feitas de acordo com os requisitos específicos. Por exemplo, hardware customizado também pode ser usado, e/ou elementos particulares podem ser implementados em hardware, software (incluindo software portátil, tais como applets, etc.) ou ambos. Ainda, a conexão a outro acesso ou dispositivos de computação tais como dispositivos de entrada/saída de rede pode ser usada.
[00195] No relatório descritivo acima exposto, os aspectos da invenção são descritos com referência às realizações específicas destes, mas aquele técnico no assunto reconhecerá que a invenção não é limitada a isto. Várias características e aspectos da invenção acima descrita podem ser usados individualmente ou em conjunto. Além disso, as realizações podem ser utilizadas em qualquer número de ambientes e aplicativos além daqueles descritos aqui sem se afastar do espírito e do escopo abrangentes do relatório descritivo. O relatório descritivo e os desenhos são, consequentemente, para ser considerados como ilustrativos em vez de restritivo.
[00196] Na descrição acima exposta, para os fins de ilustração, os métodos foram descritos em uma ordem particular. Deve ser apreciado que em realizações alternativas, os métodos podem ser realizados em uma ordem diferente daquela descrita. Também deve ser apreciado que os métodos descritos acima podem ser realizados por componentes de hardware ou podem ser incorporados em sequências de instruções executáveis por máquina, que podem ser usadas para fazer uma máquina, tal como um processador de propósito geral ou de propósito especial ou circuitos lógicos programados com as instruções para realizar os métodos. Estas instruções executáveis por máquina podem ser armazenadas em um ou mais meios legíveis por máquina, tais como CD-ROMs ou outro tipo de discos ópticos, disquetes flexíveis, ROMs, RAMs, EPROMs, EEPROMs, cartões magnéticos ou ópticos, memória flash, ou outros tipos de meios legíveis por máquina adequados para o armazenamento de instruções eletrônicas. Alternativamente, os métodos podem ser realizados por uma combinação de hardware e software.
[00197] Onde os componentes são descritos como sendo configurados para realizar certas operações, tal configuração pode ser realizada, por exemplo, por projetar circuitos eletrônicos ou outro hardware para realizar a operação, através de programação de circuitos eletrônicos programáveis (por exemplo, microprocessadores ou outros circuitos eletrônicos adequados) para realizar a operação, ou qualquer combinação destes.
[00198] Embora as realizações ilustrativas do aplicativo tenham sido descritas em detalhes aqui, é para ser entendido que os conceitos inventivos podem ser de outra forma incorporados e empregados de forma diversa, e que as reivindicações anexas são pretendidas ser construídas para incluir tais variações, exceto quando limitado pela técnica anterior.

Claims (10)

1. MÉTODO (1700) DE IDENTIFICAÇÃO DE UM OU MAIS PONTOS DE DADOS DESCONHECIDOS, caracterizado por compreender: obtenção (1702) de uma pluralidade de pontos de dados de referência; determinação (1704) de um comprimento de um primeiro vetor a partir de um ponto de origem a um ponto de dados de referência da pluralidade de pontos de dados de referência; obtenção (1706) de um ponto de dados desconhecido; determinação (1708) de um comprimento de um segundo vetor a partir do ponto de origem ao ponto de dados desconhecido; projeção (1710) de uma pluralidade de vetores a partir do ponto de origem em um plano no qual o primeiro vetor e o segundo vetor estão, a pluralidade de vetores sendo gerada aleatoriamente ou pseudoaleatoriamente; determinação se cada vetor da pluralidade de vetores está a uma direita algébrica ou a uma esquerda algébrica do primeiro vetor do ponto de dados de vídeo de referência; descartar o ponto de dados de vídeo de referência; determinação se cada vetor da pluralidade de vetores está à direita algébrica ou à esquerda algébrica do segundo vetor do ponto de dados de vídeo desconhecido; e determinação (1712) do número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido, em que o número da pluralidade de vetores inclui vetores à esquerda algébrica do primeiro vetor e à direita algébrica do segundo vetor ou vetores à direita algébrica do primeiro vetor e à esquerda algébrica do segundo vetor; estimativa (1714) de um ângulo entre o primeiro vetor e o segundo vetor, em que o ângulo é estimado usando o número da pluralidade de vetores; determinação (1716) de uma distância entre o ponto de dados de referência e o ponto de dados desconhecido, em que a distância é determinada usando o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor; e identificação (1718) de um ou mais pontos de dados candidatos a partir da pluralidade de pontos de dados de referência, em que um ponto de dados candidato é um candidato para combinação do ponto de dados desconhecido, e em que o um ou mais pontos de dados candidatos são determinados com base em determinadas distâncias entre um ou mais pontos de dados de referência e o ponto de dados desconhecido.
2. MÉTODO (1700), de acordo com a reivindicação 1, caracterizado por compreender ainda: armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do primeiro vetor do ponto de dados de vídeo de referência; e armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do primeiro vetor do ponto de dados de vídeo de referência.
3. MÉTODO (1700), de acordo com a reivindicação 1, caracterizado por compreender ainda: armazenamento de um primeiro valor binário para cada vetor que é determinado estar à direita algébrica do segundo vetor do ponto de dados de vídeo desconhecido; e armazenamento de um segundo valor binário para cada vetor que é determinado estar à esquerda algébrica do segundo vetor do ponto de dados de vídeo desconhecido.
4. MÉTODO (1700), de acordo com a reivindicação 1, caracterizado pela estimativa (1714) do ângulo entre o primeiro vetor do ponto de dados de vídeo de referência e o segundo vetor do ponto de dados de vídeo desconhecido incluir a multiplicação de uma constante por uma razão, em que a razão inclui o número da pluralidade de vetores entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido dividido por um número total da pluralidade de vetores.
5. MÉTODO (1700), de acordo com a reivindicação 1, caracterizado pela determinação (2116) da distância entre o ponto de dados de vídeo de referência e o ponto de dados de vídeo desconhecido incluir a realização de um cálculo de identidade Pitagórica que usa o ângulo estimado e os comprimentos determinados do primeiro vetor e do segundo vetor.
6. MÉTODO (1700), de acordo com a reivindicação 1, caracterizado pela identificação (2120) do conteúdo de vídeo que é apresentado pelo display incluir a determinação de uma combinação entre o ponto de dados de vídeo desconhecido e um ponto de dados de vídeo candidato, em que a combinação é uma combinação aproximada com base no ponto de dados de vídeo candidato que é um ponto de dados de vídeo mais próximo do um ou mais pontos de dados de vídeo candidatos ao ponto de dados de vídeo desconhecido.
7. MÉTODO (1700), de acordo com a reivindicação 1, determinando uma combinação entre o ponto de dados desconhecido e um ponto de dados candidato, caracterizado pela combinação ser uma combinação aproximada com base no ponto de dados candidato que é um ponto de dados mais próximo do um ou mais pontos de dados candidatos ao ponto de dados desconhecido.
8. MÉTODO (1700), de acordo com a reivindicação 1, caracterizado por: o método é um método de identificação de conteúdo de vídeo; a pluralidade de pontos de dados de referência é uma pluralidade de pontos de vídeo de dados de referência; o ponto de dados desconhecido é um ponto de dados de vídeo desconhecido associado ao conteúdo de vídeo sendo apresentado por um monitor; o um ou mais pontos de dados candidatos são um ou mais pontos de dados de vídeo candidatos; o método compreende ainda uma etapa de: identificar (2120) o conteúdo de vídeo sendo apresentado pelo monitor, em que o conteúdo de vídeo sendo apresentado pelo monitor é identificado comparando o ponto de dados de vídeo desconhecido com o um ou mais pontos de dados de vídeo candidatos.
9. SISTEMA, caracterizado por compreender: um ou mais processadores; e um ou mais meios de armazenamento não transitórios legíveis por máquina contendo instruções que, quando executadas no um ou mais processadores, fazem com que o um ou mais processadores realizem o método conforme definido em qualquer uma das reivindicações 1 a 8.
10. SISTEMA, de acordo com a reivindicação 9, pluralidade de pontos de dados de vídeo de dados de vídeo extraídos a partir de uma de vídeo.
BR112017022341-4A 2015-04-17 2016-04-15 Método de identificação de um ou mais pontos de dados desconhecidos e sistema BR112017022341B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562149193P 2015-04-17 2015-04-17
US62/149,193 2015-04-17
PCT/US2016/027691 WO2016168556A1 (en) 2015-04-17 2016-04-15 Systems and methods for reducing data density in large datasets

Publications (2)

Publication Number Publication Date
BR112017022341A2 BR112017022341A2 (pt) 2018-07-10
BR112017022341B1 true BR112017022341B1 (pt) 2023-05-23

Family

ID=

Similar Documents

Publication Publication Date Title
US10482349B2 (en) Systems and methods for reducing data density in large datasets
US10192138B2 (en) Systems and methods for reducing data density in large datasets
US11451877B2 (en) Optimizing media fingerprint retention to improve system resource utilization
CA2992529C (en) Prediction of future views of video segments to optimize system resource utilization
US10540772B2 (en) Feature trackability ranking, systems and methods
BR112015023369B1 (pt) Sistema e método implementado por computador
CN111651636A (zh) 视频相似片段搜索方法及装置
BR112017022341B1 (pt) Método de identificação de um ou mais pontos de dados desconhecidos e sistema
NZ735930B2 (en) Systems and methods for reducing data density in large datasets
NZ738944B2 (en) Optimizing media fingerprint retention to improve system resource utilization