BR112018002739B1 - Correção de erro de luz codificada eficiente em termos de memória - Google Patents

Correção de erro de luz codificada eficiente em termos de memória Download PDF

Info

Publication number
BR112018002739B1
BR112018002739B1 BR112018002739-1A BR112018002739A BR112018002739B1 BR 112018002739 B1 BR112018002739 B1 BR 112018002739B1 BR 112018002739 A BR112018002739 A BR 112018002739A BR 112018002739 B1 BR112018002739 B1 BR 112018002739B1
Authority
BR
Brazil
Prior art keywords
codeword
depth
code
codewords
invalid
Prior art date
Application number
BR112018002739-1A
Other languages
English (en)
Other versions
BR112018002739A2 (pt
Inventor
Shandon Campbell
Stephen Michael Verrall
Kalin Mitkov Atanassov
Ovidiu Cristian Miclea
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018002739A2 publication Critical patent/BR112018002739A2/pt
Publication of BR112018002739B1 publication Critical patent/BR112018002739B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/128Adjusting depth or disparity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/521Depth or shape recovery from laser ranging, e.g. using interferometry; from the projection of structured light
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/111Transformation of image signals corresponding to virtual viewpoints, e.g. spatial image interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/161Encoding, multiplexing or demultiplexing different image signal components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N2013/0074Stereoscopic image analysis
    • H04N2013/0081Depth or disparity estimation from stereoscopic image signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Length Measuring Devices By Optical Means (AREA)

Abstract

correção de erro de luz codificada eficiente em termos de memória. sistemas e métodos para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada são revelados. em um aspecto, um método inclui receber palavras de código válidas e inválidas, em que as palavras de código espaciais válidas estão inclusas em um livro de código. o método inclui detectar uma palavra de código inválida. o método inclui recupera um conjunto de palavras de código válidas candidatas por uma menor distância de hamming entre a palavra de código inválida e as palavras de código válidas no livro de código. o método inclui estimar uma profundidade mediana de localizações vizinhas da palavra de código inválida. o método inclui associar uma profundidade a cada palavra de código candidata e selecionar o candidato com uma profundidade associada mais próxima à estimativa de profundidade. o método inclui atribuir a profundidade associada à palavra de código candidata selecionada ao local da palavra de código inválida.

Description

CAMPO
[0001] Várias particularidades referem-se à captação de profundidade ativa, e mais especificamente a técnicas de uso de memória para corrigir lacunas nos mapas de profundidade resultante de erros de dados quando se interpreta as informações de profundidade derivadas da luz estruturada.
ANTECEDENTES
[0002] Os dispositivos de imageamento que são sistemas de captação ativa de luz estruturada incluem um transmissor e um receptor configurados para transmitir e receber padrões correspondentes a códigos espaciais (ou "palavras de código") para gerar um mapa de profundidade que indica a distância de um ou mais objetos em uma cena a partir do dispositivo de imageamento. Quando mais distante um objeto em uma cena está do transmissor e do receptor, mais próxima uma palavra de código recebida refletida a partir do objeto está de sua posição original (em comparação à palavra de código transmitida) devido a um trajeto de propagação da palavra de código de saída e a palavra de código de chegada refletida são mais paralelas. Em contrapartida, quanto mais próximo o objeto está ao transmissor e receptor, mais distante a palavra de código recebida está de sua posição original na palavra de código transmitida. Consequentemente, a diferença entre a posição de uma palavra de código recebida e da palavra de código transmitida correspondente pode ser usada para determinar a profundidade de um objeto em uma cena. Os sistemas de captação ativa de luz estrutura podem usar essas profundidades determinadas para gerar um mapa de profundidade de uma cena, que pode ser uma representação tridimensional da cena. Muitas aplicações podem se beneficiar de determinar um mapa de profundidade de uma cena, que inclui aperfeiçoamento de qualidade de câmera e visão de computador.
[0003] Cada palavra de código pode ser representada por fileiras e colunas de valores de intensidade. Por exemplo, os códigos espaciais binários podem usar 0s e 1s, correspondentes a valores de intensidade de claro e escuro, para representar um padrão binário. Outros códigos espaciais podem usar mais do que dois valores de intensidade diferentes. O ruído em uma palavra de código recebida pode causar um erro na identificação da palavra de código devido ao fato de que palavras de código "ruidosas" não serão reconhecidas como o código espacial que foi transmitido. Por exemplo, para códigos binários, esse ruído pode fazer com que um “1” no código transmitido seja recebido como um "0", ou vice- versa. Isso pode resultar em uma lacuna, ou furo, em um mapa de profundidade que usa a palavra de código errônea. A profundidade não é estimada naquele ponto com um código não reconhecido, deixando um "furo" no mapa de profundidade sendo gerado.
[0004] Os métodos tradicionais de "preenchimento" de furos incluem estimar a profundidade no furo com base nas profundidades vizinhas ao, por exemplo, calcular a média de profundidades em torno do furo. Essa abordagem pode não fornecer resultados satisfatórios se o furo estiver no ou próximo a um objeto, ou em qualquer ponto em que existe variações ou descontinuidades em profundidade. Consequentemente, existe uma necessidade por métodos e sistemas para gerar profundidade quando existirem furos no mapa de profundidade, até mesmo em pontos de variação e descontinuidade.
SUMÁRIO
[0005] Um sumário de aspectos de amostra da revelação se segue. Para conveniência, um ou mais aspectos da revelação podem se referidos no presente documento simplesmente como "alguns aspectos".
[0006] Cada um dos métodos e aparelhos ou dispositivos sendo revelados no presente documento tem vários aspectos, nenhum dos quais é o único responsável por seus atributos desejáveis. Sem limitar o escopo desta revelação, por exemplo, conforme expresso pelas reivindicações a seguir, suas particularidades mais proeminentes serão agora discutidas brevemente. Após considerar essa discussão, e particularmente após ler a seção intitulada "Descrição Detalhada" uma pessoa compreenderá como as particularidades sendo descritas fornecem vantagens que incluem formas eficazes de determinar uma palavra de código provável a partir de uma palavra de código que não pode de outro modo ser identificada.
[0007] Uma inovação é um método para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada. Em várias modalidades, o método pode incluir receber uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida. Cada uma dentre a pluralidade de palavras de código válidas está inclusa em um livro de código de palavras de código válidas. O livro de código não inclui a pelo menos uma palavra de código inválida. Cada palavra de código representa pelo menos uma fileira e pelo menos uma coluna de pixels de uma imagem de luz estruturada. Cada palavra de código corresponde a uma localização em um mapa de profundidade. O método pode incluir adicionalmente detectar a palavra de código inválida. O método pode incluir adicionalmente recuperar, a partir de uma unidade de memória, um conjunto de palavras de código candidatas que estão inclusas no livro de código. Cada palavra de código candidata está a uma primeira distância de Hamming da palavra de código inválida. A primeira distância de Hamming é uma menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. O método pode incluir adicionalmente determinar uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade que inclui pelo menos uma localização adjacente à localização da palavra de código inválida. O método pode incluir adicionalmente associar uma profundidade a cada uma das palavras de código candidatas. O método pode incluir adicionalmente selecionar a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade. O método pode incluir adicionalmente atribuir a profundidade associada à palavra de código candidata selecionada ao local da palavra de código inválida.
[0008] Para algumas modalidades, cada pixel representa a energia de luz recebida. Para algumas modalidades, cada pixel tem um valor binário. Para algumas modalidades, detectar a palavra de código inválida compreende recuperar, a partir da unidade de memória, uma indicação de que a palavra de código inválida não está inclusa no livro de código. Para algumas modalidades, a primeira distância de Hamming entre a palavra de código inválida e cada uma das palavras de código candidatas é o número da pelo menos uma fileira e a pelo menos uma coluna de pixels com valores binários diferentes.
[0009] Para algumas modalidades, o método pode incluir adicionalmente popular a unidade de memória com uma indicação de se cada palavra de código válida ou inválida recebida está inclusa no livro de código. Para algumas modalidades, o método pode incluir adicionalmente popular a unidade de memória com o conjunto de palavras de código candidatas a uma primeira distância de Hamming da palavra de código inválida, em que a primeira distância de Hamming é a menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. Para algumas modalidades, o método pode incluir adicionalmente popular a unidade de memória com um segundo conjunto de palavras de código candidatas, em que o segundo conjunto de palavras de código candidatas corresponde a palavras de código que estão inclusas no livro de código, sendo que cada uma dentre o correspondente segundo conjunto de palavras de código candidatas estão a uma segunda distância de Hamming da palavra de código inválida, em que a segunda distância de Hamming é maior do que a primeira distância de Hamming.
[0010] Para algumas modalidades, determinar a estimativa de profundidade compreende computar uma profundidade mediana ou uma profundidade média ad pluralidade de localizações do mapa de profundidade. Para algumas modalidades, a pluralidade de localizações do mapa de profundidade inclui localizações menores ou iguais a uma distância limite em localizações a partir da localização da palavra de código inválida. Para algumas modalidades, a distância limite é 1, V2, 2, V5, 2, ou 2^2, correspondente a 4, 8, 12, 20, e 24 localizações na pluralidade de localizações do mapa de profundidade, respectivamente.
[0011] Outra inovação é um aparelho para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada. O aparelho pode incluir uma unidade de memória configurado para armazenar uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida. Cada uma dentre a pluralidade de palavras de código válidas está inclusa em um livro de código de palavras de código válidas. O livro de código não inclui a pelo menos uma palavra de código inválida. Cada palavra de código representa pelo menos uma linha e pelo menos uma coluna de pixels de uma imagem de luz estruturada. Cada palavra de código corresponde a uma localização em um mapa de profundidade. A unidade de memória pode ser configurada adicionalmente para armazenar um conjunto de palavras de código candidatas que são inclusas no livro de código, em que cada palavra de código candidata está a uma primeira distância de Hamming da palavra de código inválida, sendo que a primeira distância de Hamming é uma menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. O aparelho pode incluir um processador em comunicação com a unidade de memória. O processador pode ser configurado para receber a pluralidade de palavras de código válidas e a pelo menos uma palavra de código inválida. O processador pode ser configurado para detectar a palavra de código inválida. O processador pode ser configurado para recuperar o conjunto de palavras de código candidatas. O processador pode ser configurado para determinar uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade, em que a pluralidade de localizações do mapa de profundidade inclui pelo menos uma localização adjacente à localização da palavra de código inválida. O processador pode ser configurado para associar uma profundidade a cada uma das palavras de código candidatas. O processador pode ser configurado para selecionar a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade. O processador pode ser configurado para atribuir a profundidade associada à palavra de código candidata selecionada à localização da palavra de código inválida.
[0012] Para algumas modalidades, o processador pode ser configurado adicionalmente para popular a unidade de memória com uma indicação de se cada palavra de código válida ou inválida recebida está inclusa no livro de código. Para algumas modalidades, o processador pode ser configurado adicionalmente para popular a unidade de memória com o conjunto de palavras de código candidatas a uma primeira distância de Hamming da palavra de código inválida, em que a primeira distância de Hamming é a menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código.
[0013] Para algumas modalidades, o processador pode ser configurado adicionalmente para popular a unidade de memória com um segundo conjunto de palavras de código candidatas, em que o segundo conjunto de palavras de código candidatas corresponde a palavras de código que estão inclusas no livro de código, sendo que cada uma dentre o correspondente segundo conjunto de palavras de código candidatas estão a uma segunda distância de Hamming da palavra de código inválida, em que a segunda distância de Hamming é maior do que a primeira distância de Hamming.
[0014] Para algumas modalidades, o processador pode ser configurado adicionalmente para estimar a estimativa de profundidade computando-se uma profundidade mediana ou uma profundidade média da pluralidade de localizações do mapa de profundidade.
[0015] Outra inovação é um aparelho para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada. O aparelho pode incluir meios para armazenar uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida. Cada uma dentre a pluralidade de palavras de código válidas está inclusa em um livro de código de palavras de código válidas. O livro de código não inclui a pelo menos uma palavra de código inválida. Cada palavra de código representa pelo menos uma fileira e pelo menos uma coluna de pixels de uma imagem de luz estruturada. Cada palavra de código corresponde a uma localização em um mapa de profundidade. O aparelho pode incluir meios para armazenar um conjunto de palavras de código candidatas que são inclusas no livro de código, em que cada palavra de código candidata está a uma primeira distância de Hamming da palavra de código inválida, sendo que a primeira distância de Hamming é uma menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. O aparelho pode incluir meios para receber a pluralidade de palavras de código válidas e a pelo menos uma palavra de código inválida. O aparelho pode incluir meios para detectar a palavra de código inválida. O aparelho pode incluir meios para recuperar o conjunto de palavras de código candidatas. O aparelho pode incluir meios para determinar uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade, em que a pluralidade de localizações do mapa de profundidade inclui pelo menos uma localização adjacente à localização da palavra de código inválida,
[0016] meios para associar uma profundidade a cada uma das palavras de código candidatas. O aparelho pode incluir meios para selecionar a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade. O aparelho pode incluir meios para atribuir a profundidade associada à palavra de código candidata selecionada à localização da palavra de código inválida.
[0017] Para algumas modalidades, os meios de armazenamento de palavra de código válida e inválida compreendem uma unidade de memória. Para algumas modalidades, os meios de armazenamento de palavra de código candidata compreendem a unidade de memória. Para algumas modalidades, os meios de recebimento compreendem um circuito de processamento. Para algumas modalidades, os meios de detecção compreendem o circuito de processamento. Para algumas modalidades, os meios de recuperação compreendem o circuito de processamento. Para algumas modalidades, os meios de determinação compreendem o circuito de processamento. Para algumas modalidades, os meios de associação compreendem o circuito de processamento. Para algumas modalidades, os meios de seleção compreendem o circuito de processamento. Para algumas modalidades, os meios de atribuição compreendem o circuito de processamento.
[0018] Para algumas modalidades, os meios de detecção detectam a palavra de código inválida recuperando- se, a partir dos meios de armazenamento, uma indicação de que a palavra de código inválida não está inclusa no livro de código.
[0019] Para algumas modalidades, o aparelho pode incluir meios para popular os meios de armazenamento com uma indicação de se cada palavra de código válida ou inválida recebida está inclusa no livro de código. Para algumas modalidades, o aparelho pode incluir meios para popular os meios de armazenamento com o conjunto de palavras de código candidatas a uma primeira distância de Hamming da palavra de código inválida, em que a primeira distância de Hamming é a menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. Para algumas modalidades, o aparelho pode incluir meios para popular os meios de armazenamento com um segundo conjunto de palavras de código candidatas, em que o segundo conjunto de palavras de código candidatas corresponde a palavras de código que estão inclusas no livro de código, sendo que cada uma dentre o correspondente segundo conjunto de palavras de código candidatas estão a uma segunda distância de Hamming da palavra de código inválida, em que a segunda distância de Hamming é maior do que a primeira distância de Hamming.
[0020] Para algumas modalidades, os meios de determinação são configurados adicionalmente para estimar a estimativa de profundidade computando-se uma profundidade mediana ou uma profundidade média da pluralidade de localizações do mapa de profundidade.
[0021] Outra inovação é uma mídia legível por computador não transitória que armazena instruções para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada. Quando executadas, as instruções realizam operações. As operações podem incluir receber uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida. Cada uma dentre a pluralidade de palavras de código válidas está inclusa em um livro de código de palavras de código válidas. O livro de código não inclui a pelo menos uma palavra de código inválida. Cada palavra de código representa pelo menos uma fileira e pelo menos uma coluna de pixels de uma imagem de luz estruturada. Cada palavra de código corresponde a uma localização em um mapa de profundidade. As operações podem incluir detectar a palavra de código inválida. As operações podem incluir recuperar, a partir de uma unidade de memória, um conjunto de palavras de código candidatas que estão inclusas no livro de código, em que cada palavra de código candidata está a uma primeira distância de Hamming da palavra de código inválida, em que a primeira distância de Hamming é uma menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. As operações podem incluir determinar uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade, em que a pluralidade de localizações do mapa de profundidade inclui pelo menos uma localização adjacente à localização da palavra de código inválida. As operações podem incluir associar uma profundidade a cada uma das palavras de código candidatas. As operações podem incluir selecionar a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade. As operações podem incluir atribuir a profundidade associada à palavra de código candidata selecionada ao local da palavra de código inválida.
BREVE DESCRIÇÃO DOS DESENHOS
[0022] Várias particularidades, aspectos e vantagens se tornarão evidentes a partir da descrição no presente documento e desenhos anexos ao mesmo, em que símbolos de referência similares identificarão em geral aspectos ou componentes correspondentes ilustrados nos desenhos. Como uma pessoa de habilidade comum na técnica compreenderá, os aspectos descritos ou ilustrados para uma modalidade podem ser incluídos em uma ou mais outras modalidades descritas ou ilustradas, se não for imprático para a implantação ou função dessa modalidade, salvo declarado de outro modo.
[0023] A Figura 1 é um esquema que ilustra um exemplo de um sistema de captação ativa em que um padrão conhecido é usado para iluminar uma cena e obter informações de profundidade com as quais gerar informações tridimensionais a partir de informações e/ou imagens bidimensionais.
[0024] A Figura 2 é um diagrama que ilustra outro exemplo de um sistema para captação ativa quando uma cena tridimensional (3D) for construída a partir de informações ou imagens bidimensionais (2D).
[0025] A Figura 3 é um esquema que ilustra como a profundidade pode ser captada para um objeto ou cena.
[0026] A Figura 4 é um diagrama de blocos que ilustra um exemplo de um dispositivo transmissor que pode ser configurado para gerar uma máscara de código compósita e/ou projetar essa máscara de código compósita.
[0027] A Figura 5 é um diagrama de blocos que ilustra um exemplo de um dispositivo receptor que pode ser configurado para obter informações de profundidade a partir de uma máscara de código compósita.
[0028] A Figura 6 é um diagrama de blocos de uma modalidade de um aparelho configurado para realizar um ou mais dos métodos de correção de erro revelados no presente documento.
[0029] A Figura 7 ilustra variados graus de correção de erro com o uso de um filtro de mediana.
[0030] A Figura 8A ilustra um exemplo de um padrão com pontos que exibem simetria hermitiana.
[0031] A Figura 8B ilustra um exemplo de um padrão simétrico hermitiano sem imagens fantasmas.
[0032] A Figura 8C ilustra um exemplo de um padrão de máscara de código com simetria hermitiana.
[0033] A Figura 8D ilustra um exemplo de um padrão simétrico não hermitiano com imagens fantasmas.
[0034] A Figura 8E ilustra um exemplo de um padrão de máscara de código sem simetria hermitiana.
[0035] A Figura 9 ilustra uma vista detalhada da máscara de código exemplificativa ilustrada na Figura 8C, com colunas de diferentes funções base e códigos espaciais em janela 4x4.
[0036] A Figura 10 mostra lacunas em um mapa de profundidade derivado da luz estruturada.
[0037] A Figura 11 é um exemplo de um diagrama de fluxo de dados de um método de preenchimento de furo de mapa de profundidade.
[0038] A Figura 12 ilustra um exemplo de um processo de correção de erro em um mapa de profundidade.
[0039] A Figura 13 retrata imagens que ilustram alguns aspectos do preenchimento de lacuna em um mapa de profundidade com o uso de um filtro de mediana.
[0040] A Figura 14 retrata imagens que ilustram alguns aspectos de preenchimento de lacuna de um mapa de profundidade com o uso dos métodos e sistemas revelados no presente documento.
[0041] A Figura 15 ilustra uma estrutura exemplificativa para organizar códigos candidatos em um livro de código pela distância de Hamming para a correção de erro.
[0042] A Figura 16 ilustra uma estrutura compacta exemplificativa para organizar códigos candidatos em um livro de código pela distância de Hamming para a correção de erro.
[0043] A Figura 17 é um fluxograma que ilustra um exemplo de um processo para corrigir erros em palavras de código geradas a partir da luz estruturada.
DESCRIÇÃO DETALHADA DE DETERMINADAS MODALIDADES
[0044] A seguinte descrição detalhada é direciona para determinar modalidades específicas. Entretanto, os métodos e sistemas revelados podem ser incorporados em uma multitude de formas diferentes. Deve ser evidente que os aspectos no presente documento podem ser incorporados em uma ampla variedade de formas e que qualquer estrutura, função específica, ou ambas sendo reveladas no presente documento é meramente representativa. Os aspectos revelados no presente documento podem ser implantados independentemente de quaisquer outros aspectos e que dois ou mais desses aspectos podem ser combinados de vários modos. Por exemplo, um aparelho pode ser implantado ou um método pode ser praticado com o uso de inúmeros aspectos estabelecidos no presente documento. Adicionalmente, esse aparelho pode ser implantado ou esse método pode ser praticado com o uso de outra estrutura, funcionalidade, ou estrutura e funcionalidade adicionalmente a ou além de um ou mais dos aspectos apresentados no presente documento.
[0045] Adicionalmente, os sistemas e métodos descritos no presente documento podem ser implantados em uma variedade diferentes dispositivos de computação. Esses incluem telefones móveis, computadores do tipo tablet, câmeras dedicadas, computadores vestíveis, computadores pessoais, quiosques ou cabines de fotos, assistentes digitais pessoais, computadores pessoais ultra-móveis e dispositivos de internet móveis. Os mesmos usam configurações ou ambientes de sistema de computação de propósito específico ou propósito geral. Os exemplos de sistemas, ambientes e/ou configurações de computação que podem ser adequados para uso com a invenção incluem, sem limitação, computadores pessoais, computadores servidores, dispositivos do tipo laptop ou portáteis, sistemas de multiprocessadores, sistemas com base em microprocessador, eletrônica de consumidor programável, PCs de rede, minicomputadores, computadores mainframe, ambientes de computação distribuída que incluem qualquer um dos sistemas ou dispositivos acima, e similares.
[0046] Conforme discutido acima, os sistemas de luz estruturada projetam um padrão conhecido (por exemplo, palavras de código) em pelo menos um objeto em uma cena (algumas vezes referido como sendo projetado sobre uma cena para facilidade de descrição), e processa a imagem recebida para obter um mapa de profundidade. Inevitavelmente, devido ao speckle ou outras fontes de ruído, determinadas regiões do padrão recebido não são decodificados. Essas regiões não codificadas criam furos no mapa de profundidade que não contém, informações de profundidade, degradando, assim, a utilidade do mapa.
[0047] Em algumas modalidades, os sistemas e métodos revelados podem determinar a palavra de código mais provável (algumas vezes referida como "código" para facilidade de referência) que foi transmitido tentando-se determinar o código mais provável que foi transmitido, com base na palavra de código que foi recebida. Um conjunto de códigos válidos que podem ser transmitidos podem ser referidos como livro de código. Se um código recebido corresponder a um dos códigos no livro de código, então é mais provável que o código tenha sido recebido corretamente. Entretanto, se o código recebido não corresponder exatamente a um dos códigos no livro de código, então é mais provável que o código recebido não corresponda ao código transmitido e haja um erro devido ao speckle ou alguma outra fonte de ruído.
[0048] Por exemplo, o código transmitido pode ser representado como uma matriz binária correspondente a um código em um livro de código de códigos espaciais. Nessa implantação, cada matriz binária pode ser representada como uma matriz de valores binários (0s e 1s) correspondentes a "liberado" e "mascarado". Na ausência de ruído, o código recebido pode ser idêntico ao código transmitido. Se o ruído tiver afetado o código transmitido ou o código recebido correspondente que foi refletido a partir de um objeto, então o código recebido pode diferir do código transmitido por um ou mais erros no valor binário, em que cada erro de bit corresponde a um 0 recebido como um 1 ou vice-versa. A distância de Hamming entre o código recebido e o código transmitido válido corresponde ao número de erros de bit. Portanto, a distância de Hamming entre o código recebido e o código transmitido válido é 0, 1, 2, e n para zero, um, dois, e n erros de bit, respectivamente. O peso de Hamming de uma palavra de código é definido como o número de 1s na palavra de código. A fim de computar o número de posições que diferem entre duas palavras de código binárias, as mesmas duas palavras de código podem ser adicionadas com o uso da adição de módulo-2, que é a adição binária sem um carry, resultando em um 1 para cada posição com uma diferença, e um 0 para cada posição sem uma diferença. A distância de Hamming entre duas palavras de código é, portanto, o peso de Hamming (número de 1s) da adição de módulo-2 das duas palavras de código.
[0049] A tecnologia revelada detecta erros comprando-se os códigos recebidos ao conjunto de códigos válidos. Os métodos e sistemas descritos no presente documento detectam um erro quando não houver correspondências entre o código recebido e o conjunto de códigos válidos, correspondente a nenhum código com uma distância de Hamming de zero.
[0050] Se não houver uma correspondência, os métodos e sistemas descritos no presente documento podem ser usados para determinar o código (ou códigos) válido que diferente do código recebido por um único bit, correspondente a uma distância de Hamming de um. Se houver um código válido em uma distância de Hamming de um, aquele código é o código transmitido mais provável. Se houver mais de um código válido em uma distância de Hamming de um, então uma medição de semelhança entre uma vizinhança local e as palavras de código candidatas pode ser usada para selecionar o valor de profundidade mais provável. Se não houver códigos válidos em uma distância de Hamming de zero ou um, esse processo é repetido para uma distância de Hamming de dois, e assim por diante, até um número de erros de bit limite.
[0051] Os sistemas e métodos descritos no presente documento utilizam as estruturas de dados eficientes para detecção de dados e correção de dados. Para cada código espacial recebido possível, a estrutura de dados inclui uma indicação de se o código espacial recebido corresponde a um código válido. Se o código espacial recebido não corresponder a um código válido, a estrutura de dados inclui representações de códigos válidos para erros de único bit, correspondentes a códigos válidos em uma distância de Hamming de 1. Se não houver códigos válidos a uma distância de Hamming de 0 ou 1 a partir do código espacial recebido, as estruturas de dados incluem representações de códigos válidos para erros de único bit, e assim por diante, até um número de erros de bit limite. Uma vez que a estrutura de dados está populada, os métodos descritos no presente documento detectam erros consultandose a estrutura de dados pela indicação de se o código espacial recebido corresponde a um código válido. Essa operação pode exigir apenas uma única pesquisa em uma tabela na estrutura de dados. Os métodos descritos no presente documento determinam os candidatos mais prováveis para as palavras de código transmitidas consultando-se a estrutura de dados para o conjunto de códigos válidos na menor distância de Hamming para o código espacial recebido. Com o uso da estrutura de dados desta forma, a detecção de erros e determinação dos candidatos mais prováveis para os códigos espaciais transmitidos meramente exige a estrutura de dados ou pesquisas na tabela. Uma modalidade pode implantar a estrutura de dados de modo compacta para economizar espaço e aumentar eficiência.
[0052] Em algumas modalidades dos métodos e sistemas, a estrutura subjacente do padrão é usada para produzir correção de erro. Esses resultados de correção de erro podem ser vantajosos em comparação a outros métodos que operam sem conhecimento do código (por exemplo, filtração de mediana).
Ambiente Operacional Exemplificativo
[0053] A Figura 1 ilustra um exemplo de um sistema de captação ativa em que um padrão conhecido é usado para iluminar uma cena e obter informações de profundidade com as quais gerar informações tridimensionais (“3D”) a partir de informações e/ou imagens bidimensionais (“2D”). Um ou mais aspectos e/ou particularidades descritos no presente documento podem ser implantados dento desse sistema de captação ativa exemplificativo. O sistema ilustrado na Figura 1 inclui um transmissor 102 e um receptor 108. O transmissor 102 projeta um campo de luz através de uma máscara de código 104 para projetar palavras de código em um objeto ou cena 106. No presente documento, para clareza de descrição, "cena" pode ser usado para se referir a qualquer um ou ambos dentre uma cena e um objeto dependendo do contexto usado. Por exemplo, uma cena pode incluir um único objeto de interesse, ou uma pluralidade de objetos de interesse. Um receptor 108 captura a máscara de código projetada 110 e palavras de código na mesma. Esse exemplo ilustra como uma seção 112 da máscara de código 104 é projetada (como a seção 114) sobre a superfície (por exemplo, seção projetada 116) da cena 106. A seção projetada 116 pode, então, ser capturada pelo receptor 108 como um segmento capturado 118. A seção 112 pode ser usada como uma palavra de código 120 que ser identificada unicamente. Portanto, cobrindo-se a cena 106 com palavras de código exclusivas desta forma, seções/porções da cena 106 podem ser identificadas por palavras de código refletidas e essas informações podem ser usadas para captar a distância (profundidade) a partir do dispositivo de computação para objetos na cena.
[0054] A partir da imagem capturada pelo receptor 108, múltiplos segmentos podem ser identificados sobre a cena 106. Cada segmento capturado 118 pode ser exclusivamente identificável no receptor 108 e sua localização em relação a outros segmentos determinada a partir do padrão conhecido da máscara codificada 104. A identificação de um código a partir de cada segmento/porção/janela pode envolver a segmentação de padrão (por exemplo, para abordar a distorção) e a decodificação do segmento/porção/janela percebido em um código (ou códigos) correspondente. Adicionalmente, a triangulação pode ser aplicada sobre cada segmento capturado/porção/janela para determinar uma orientação e/ou profundidade. Múltiplos desses segmentos/porções/janelas podem ser combinados para costurar um padrão de imagem capturada. Desta forma, um mapa de profundidade 107 pode ser gerado para a cena 106.
[0055] A Figura 2 ilustra outro sistema exemplificativo para a captação ativa quando uma cena tridimensional (3D) for construída a partir das informações ou imagens bidimensionais (2D). Um modulador de formato/codificador 201 pode servir para gerar uma máscara de código que é, então, projetada por um dispositivo transmissor 202 através de um canal de transmissão 204. A máscara de código pode ser projetada sobre um alvo (por exemplo, uma cena) e a luz refletida é capturada por um sensor receptor 205 como uma imagem (por exemplo, imagem de máscara de código). No sensor receptor 205 (por exemplo, o receptor 108 na Figura 1), o alvo (por exemplo, cena) é capturado e seu formato/profundidade é codificado 205. A codificação de formato/profundidade pode ser alcançada, por exemplo, com o uso da máscara de código projetada para determinar as informações de profundidade. Por exemplo, a imagem capturada da cena (que inclui a máscara de código projetada) pode ser decodificada 206 para obter um mapa de profundidade 208. O mapa de profundidade 208 pode, então, ser usado para apresentar, gerar e/ou fornecer uma versão tridimensional 210a-e do alvo.
[0056] A captação ativa depende de ter capacidade para reconhecer (no sensor receptor 205 e/ou decodificador 206) todos os códigos espaciais (por exemplo, as palavras de código) a partir da máscara de código sendo projetada pelo dispositivo transmissor 202 sobre uma cena. Se uma cena estiver muito próxima ao transmissor e receptor, a superfície da cena pode ser angulada ou curvada, um plano de referência de fileira base pode ser inclinado, e os códigos podem ser modificados sob uma transformação afim desconhecida (por exemplo, rotação, enviesamento, compressão, alongamento, etc.).
[0057] Um ou mais aspectos ou particularidades descritas no presente documento podem ser implantados dentro dos ambientes exemplificativos das Figuras 1 e 2.
Captação de Profundidade Ativa Exemplificativa
[0058] A Figura 3 ilustra um exemplo de como a profundidade pode ser captada para um ou mais objetos em uma cena. A Figura 3 mostra um dispositivo 300 que inclui um transmissor 302 e um receptor 304. O dispositivo está iluminando dois objetos 306 e 308 com luz estruturada emitida a partir do transmissor 302 como a projeção de palavra de código 310. A projeção de palavra de código 310 reflete a partir dos objetos 306 e/ou 308 e é recebida como uma palavra de código refletida 311 pelo receptor 304 no plano de sensor 307.
[0059] No aspecto ilustrado, o transmissor 302 está no mesmo plano de referência (por exemplo, plano de lente 305) que o receptor 304. O transmissor 302 projeta a projeção de palavra de código 310 sobre os objetos 306 e 308 através de uma abertura 313.
[0060] A projeção de palavra de código 310 ilumina o objeto 306 como segmento projetado 312', e ilumina o objeto 308 como o segmento projetado 312". Quando os segmentos projetados 312' e 312" forem recebidos pelo receptor 304 através da abertura de receptor 315, a palavra de código refletida 311 pode mostrar reflexões geradas a partir do objeto 308 a uma primeira distância d1 e reflexões geradas a partir do objeto 306 a uma segunda distância d2.
[0061] Conforme mostrado pela Figura 3, visto que o objeto 306 está localizado mais próximo ao transmissor 302 (por exemplo, uma primeira distância a partir do dispositivo transmissor) o segmento projetado 312' aparece a uma distância d2 de sua localização inicial. Em contrapartida, visto que o objeto 308 está localizado mais distante (por exemplo, uma segunda distância a partir do transmissor 302), o segmento projetado 312" aparece a uma distância d1 a partir de sua localização inicial (em que d1 < d2). Isto é, quanto mais distante um objeto está do transmissor/receptor, mais próximo o segmento projetado/porção/janela recebido está de sua posição original no receptor 304 (por exemplo, a projeção de saída e projeção de chegada são mais paralelas). Em contrapartida, quanto mais próximo um objeto está do transmissor/receptor, mais distante o segmento projetado/porção/janela recebido está de sua posição original no receptor 304. Portanto, a diferença entre a posição de palavra de código recebida e transmitida pode ser usada como um indicador da profundidade de um objeto. Em um exemplo, essa profundidade (por exemplo, profundidade relativa) pode fornecer um valor de profundidade para objetos retratados pode cada pixel ou pixels agrupados (por exemplo, regiões de dois ou mais pixels) em uma imagem.
[0062] Vários tipos de esquemas de modulação e codificação podem ser usados para gerar uma projeção de palavra de código ou máscara de código. Esses esquemas de modulação e codificação incluem codificação temporal, codificação espacial e codificação direta.
[0063] Na codificação temporal, os padrões são projetado consecutivamente sobre a superfície de medição (por exemplo, ao longo do tempo). Essa técnica tem alta precisão e resolução, porém é menos adequada para cenas dinâmicas.
[0064] Na codificação espacial, as informações são codificadas em uma vizinhança local com base em formatos e padrões. Os códigos pseudoaleatórios podem se basear em arranjos De-Bruijn ou M e definem o livro de código (por exemplo, intensidade m-ária ou modulação de cor). A segmentação de padrão pode não ser alcançada com facilidade, por exemplo, quando os formatos e padrões estiverem distorcidos.
[0065] Na codificação direta, ambas as coordenadas de pixel horizontal e vertical são codificadas. A modulação pode ser por uma fase monotônica ou um formato de onda de intensidade. Entretanto, esse esquema pode utilizar um livro de código que é maior do que o livro de código utilizado para outros métodos. Na maioria dos métodos, as palavras de código recebidas podem ser correlacionadas conta um conjunto definido de possíveis palavras de código (por exemplo, em um livro de código). Portanto, o uso de um conjunto pequeno de palavras de código (por exemplo, livro de código pequeno) pode fornecer um melhor desempenho do que um livro de código maior. Além disso, visto que um livro de código maior resulta em distâncias menores entre as palavras de código, erros adicionais podem ser experimentados por implantações com o uso de livros de código maiores.
Códigos Exemplificativos para Captação de Profundidade Ativa
[0066] Os padrões de luz estruturada podem ser projetados sobre uma cena brilhando-se a luz através de uma máscara de código. A luz projetada através da máscara de código pode conter um ou mais primitivos de máscara de código tesselhados. Cada primitivo de máscara de código pode conter um arranjo de códigos espaciais. Um livro de código ou estrutura de dados pode incluir o conjunto de códigos. Os códigos espaciais, a máscara de código, e os primitivos de máscara de código podem ser gerados com o uso de funções-base. As periodicidades das funções-base podem ser escolhidas para satisfazer os requisitos para o padrão de agregado da simetria hermitiana (para eliminar imagens fantasmas e simplificar a fabricação), ciclo de trabalho mínimo (para garantir uma potência mínima por palavra de código), propriedade de janela perfeita (para resolução de contorno ideal e empacotamento de código para alta resolução), e deslocamento randomizado (para detecção aprimorada em limiares de objeto). Um receptor pode utilizar o livro de código e/ou os atributos do projeto destinado a se conformar às restrições quando se demodula, decodifica e corrige erros nos padrões recebidos.
[0067] O tamanho e resolução correspondentes dos códigos espaciais corresponde a uma extensão espacial física de um código espacial em uma máscara de código. O tamanho pode corresponder ao número de fileiras e colunas em uma matriz que representa cada palavra de código. Quanto menor é uma palavra de código, menor é um objeto que pode ser detectado. Por exemplo, para detectar e determinar uma diferença de profundidade entre um botão em uma camisa e o pano da camisa, a palavra de código não deve ser maior do que o tamanho do botão. Em uma modalidade, cada código espacial pode ocupar quatro fileiras e quatro colunas. Em uma modalidade, os códigos podem ocupar mais ou menos fileiras e colunas (fileiras x colunas), para ocupar, por exemplo, 3x3, 4x4, 4x5, 5x5, 6x4, ou 10x10 fileiras e colunas.
[0068] A representação espacial de códigos espaciais corresponde a como cada elemento de palavra de código é padronizado sobre a máscara de código e, então, projetada sobre uma cena. Por exemplo, cada elemento de palavra de código pode ser representada com o uso de um ou mais pontos, um ou mais segmentos de linha, um ou mais grades, algum outro formato, ou alguma combinação dos mesmos.
[0069] O "ciclo de trabalho" dos códigos espaciais corresponde a uma razão entre um número de porções ou bits asseverados (por exemplo, “1s”) e um número de porções ou bits não asseverados (por exemplo, "0s") na palavra de código. Quando um padrão de luz codificado que inclui a palavra de código for projetado sobre uma cena, cada bit ou porção que tem um valor de “1” pode ter energia (por exemplo, " energia de luz"), porém cada bit que tem um valor de “0” pode ser destituído de energia. Para uma palavra de código ser detectável com facilidade, a palavra de código deve ter energia suficiente. As palavras de código de baixa energia podem ser mais difíceis de detectar e podem ser mais susceptíveis ao ruído. Por exemplo, uma palavra de código 4x4 tem um ciclo de trabalho de 50% ou mais de 8 ou mais dos bits na palavra de código forem "1". Pode existir restrições de ciclo de trabalho mínimo (ou máximo) para palavras de código individuais, ou restrições de ciclo de trabalho, por exemplo, um ciclo de trabalho médio para o conjunto de códigos no livro de código.
[0070] A característica de "resolução de contorno" ou "janela perfeita” dos códigos indica que quando uma palavra de código for alterada por uma quantidade, por exemplo, uma rotação de um bit, os dados resultantes representam outra palavra de código. Uma quantidade que a palavra de código é alterada pode ser referida como uma quantidade de alteração. Os códigos com alta resolução de contorno podem habilitar o sistema de captação de profundidade de luz estruturada para reconhecer limiares de objeto relativamente pequeno e fornecem continuidade de reconhecimento para diferentes objetos. Uma quantidade de alteração de 1 na dimensão de fileira e 2 na dimensão de coluna pode corresponder a uma alteração por uma posição de bit para a direita ao longo da dimensão de fileira, e duas posições de bit ao longo da dimensão de coluna. O conjunto de alta resolução de contorno de palavras de código torna possível mover uma janela em uma imagem recebida por uma fileira ou uma coluna de cada vez e determinar a profundidade em cada posição de janela. Isso habilita a determinação de profundidade com o uso de uma janela 5x5 em um ponto inicial centralizado na terceira e terceira coluna de uma imagem recebida, e mover a janela 5x5 para cada fileira, a localização de coluna a partir da terceira fileira para a terceira a última fileira, e a terceira coluna para a terceira a última coluna. À medida que as palavras de código se sobrepõem, a janela pode ser dimensionada com base na resolução nas profundidades de objeto a ser determinadas (por exemplo, um botão em uma camisa).
[0071] A simetria dos códigos pode indicar que a máscara de código ou primitivo de livro de código tem simetria hermitiana, o que pode fornecer vários benefícios em comparação ao uso de padrões ou primitivos de livro de código simétricos não hermitianos. Os padrões com simetrias hermitianas são "virados" ou simétricos, ao longo de ambos os eixos geométricos X e Y (fileira e coluna).
[0072] A característica de serrilhado das máscaras de código ou primitivos de máscara de código corresponde a uma distância entre duas palavras de código que são iguais. Quando um padrão óptico inclui um primitivo de livro de código tesselhado, e quando cada livro de código no primitivo for único, a distância de serrilhado pode se basear no tamanho do primitivo de livro de código. A distância de serrilhado pode, portanto, representar um critério de exclusividade que indica que cada palavra de código do primitivo de livro de código deve ser diferente de cada outra palavra de código do primitivo de livro de código, e que o primitivo de livro de código é único como um todo. A distância de serrilhado pode ser conhecida por um ou mais dispositivos receptores, e usada para evitar o serrilhado durante a demodulação de palavra de código. A cardinalidade de uma máscara de código corresponde vários códigos exclusivos em um primitivo de livro de código.
Dispositivo Transmissor Exemplificativo
[0073] A Figura 4 é um diagrama de blocos que ilustra um exemplo de um dispositivo transmissor que pode ser configurado para gerar uma máscara de código compósita e/ou projetar essa máscara de código compósita. O dispositivo transmissor 402 pode incluir um circuito de processamento 404 acoplado a uma memória/dispositivo de armazenamento 406, um dispositivo de projeção de imagem 408 e/ou uma mídia tangível 409. Em alguns aspectos, o dispositivo transmissor 402 pode corresponder ao transmissor 302 discutido acima em relação à Figura 3.
[0074] Em um primeiro exemplo, o dispositivo transmissor 402 pode ser acoplado para incluir uma mídia tangível 409. A mídia tangível pode definir, incluir e/ou armazenar uma máscara de código compósita 414. A máscara de código compósita pode incluir uma camada de código combinada com uma camada de portadora. A camada de código pode incluir palavras de código codificadas espacialmente exclusivamente identificáveis definidas por uma pluralidade de símbolos. A camada de portadora pode ser independentemente determinável e distinta da camada de código e incluir uma pluralidade de objetos de referência que são robustos para distorção mediante projeção. Pelo menos uma dentre a camada de código e a camada de portadora pode ser pré-conformada por uma função de espalhamento de ponto sintético antes da projeção.
[0075] Em um segundo exemplo, a unidade de processamento (ou processador) 404 pode incluir um selecionador/gerador de camada de código 416, um selecionador/gerador de camada de portadora 418, um selecionador/gerador de máscara de código compósita 420 e/ou um circuito de pré-conformação 422. O selecionador/gerador de camada de código 416 pode selecionar uma camada de código pré-armazenada 410 e/ou pode gerar essa camada de código. O selecionador/gerador de camada de portadora 418 pode selecionar uma camada de portadora pré-armazenada 412 e/ou pode gerar essa camada de portadora. O selecionador/gerador de máscara de código compósita pode selecionar uma máscara de código compósita pré-armazenada 414 e/ou pode combinar a camada de código 410 e camada de portadora 412 para gerar a máscara de código compósita 414. Opcionalmente, o circuito de processamento 404 pode incluir um circuito de pré- conformação que pré-conforma a máscara de código compósita 414, a camada de código 410 e/ou a camada de portadora 412, para compensar pela distorção esperada no canal através do qual a máscara de código compósita deve ser projetada.
[0076] Em algumas implantações, uma pluralidade de diferentes camadas de código e/ou camadas de portadora pode estar disponível, em que cada uma dessa camadas de código ou portadora pode ser configurada para condições diferentes (por exemplo, para objetos em distâncias diferentes ou configurações diferentes entre o dispositivo transmissor e dispositivo receptor). Por exemplo, para objetos dentro de um primeiro alcance ou distância, uma combinação diferente de camadas de código e portadora pode ser usada do que para objetos em uma segunda distância ou alcance, em que a segunda distância é maior do que a primeira distância. Em outro exemplo, a combinação diferente de camadas de código e portadora pode ser usada dependendo da orientação relativa do dispositivo transmissor e dispositivo receptor.
[0077] O dispositivo de projeção de imagem 408 pode servir para projetar a máscara de código compósita gerada/selecionada sobre um objeto de interesse. Por exemplo, um laser ou outra fonte de luz pode ser usado para projetar a máscara de código compósita sobre o objeto de interesse (por exemplo, através de um canal de projeção). Em um exemplo, a máscara de código compósita 414 pode ser projetada em um espectro infravermelho, para que não possa ser visível ao olho nu. Ao invés disso, um sensor receptor na faixa de espectro infravermelho pode ser usado para capturar essa máscara de código projetada compósita.
Operação de Dispositivo Receptor Exemplificativo
[0078] A Figura 5 é um diagrama de blocos que ilustra um exemplo de um dispositivo receptor 502 que é configurado para receber uma máscara de código compósita refletida a partir de um objeto e para determinar as informações de profundidade a partir de uma máscara de código compósita. O dispositivo receptor 502 pode incluir um circuito de processamento 504 acoplado a uma memória/dispositivo de armazenamento e um sensor receptor 508 (por exemplo, um dispositivo de captura de imagem 508). Em alguns aspectos, o dispositivo receptor 502 ilustrado na Figura 5 pode corresponder ao receptor 304 discutido acima em relação à Figura 3. Em algumas modalidades, o sensor receptor 508 é um dispositivo de captura de imagem, por exemplo, uma câmera.
[0079] O sensor receptor 508 pode ser configurado para obter pelo menos uma porção de uma máscara de código compósita projetada sobre a superfície de um objeto. Por exemplo, o sensor receptor pode capturar uma imagem de pelo menos uma porção de uma máscara de código compósita projetada sobre a superfície de um objeto-alvo. A máscara de código compósita pode ser definida por: (a) uma camada de código de palavras de código codificadas espacialmente exclusivamente identificáveis definidos por uma pluralidade de símbolos, e (b) uma camada de portadora independentemente determinável e distinta da camada de código e incluindo uma pluralidade de objetos de referência que são robustos para distorção mediante a projeção. Pelo menos uma dentre a camada de código e a camada de portadora pode ter sido pré-conformada por uma função de espalhamento de ponto sintético antes da projeção. Em um exemplo, o sensor receptor 508 pode capturar a máscara de código compósita no espectro infravermelho.
[0080] Ainda se referindo à Figura 5, em algumas modalidades, a camada de código pode compreender símbolos binário n1 por n2, em que n1 e n2 são números inteiros maiores do que dois. Na máscara de código compósita, cada símbolo pode ser um segmento de linha em uma dentre dois tons de escala de cinza distintos dos objetos de referência. Os símbolos da camada de código pode ser escalonado em pelo menos uma dimensão. A camada de portadora objetos de referência pode compreender uma pluralidade de tiras de referência igualmente espaçadas com um intervalo de guarda entre as mesmas. As tiras de referência e o intervalo de guarda pode ser de larguras diferentes. A largura de cada tira de referência em relação a uma largura de intervalo de guarda pode ser determinada por um espalhamento óptico esperado de um dispositivo transmissor e/ou um dispositivo receptor.
[0081] O circuito de processamento 504 pode incluir um módulo/circuito detector de tira de referência 512, um módulo/circuito de ajuste de distorção 514, um módulo/circuito identificador de palavra de código 516, um módulo/circuito de detecção de profundidade 518 e/ou um módulo/circuito de geração de mapa de profundidade 520.
[0082] O módulo/circuito detector de tira de referência 512 pode ser configurado para detectar tiras de referência dentro da porção da máscara de código compósita. O módulo/circuito de ajuste de distorção 514 pode ser configurado para ajustar uma distorção da porção da máscara de código compósita com base em uma orientação esperada das tiras de referência em relação a uma orientação real das tiras de referência. O módulo/circuito identificador de palavra de código 516 pode ser configurado para obter uma palavra de código a partir de uma janela definida dentro da porção da máscara de código compósita. O módulo/circuito de detecção de profundidade 518 pode ser configurado para obter informações de profundidade para uma porção de superfície do objeto alvo correspondente à janela com base em: (a) uma única projeção da máscara de código compósita e (b) um deslocamento da janela em relação a uma máscara de código de referência conhecida.
[0083] O módulo/circuito de geração de mapa de profundidade 520 pode ser configurado para montar um mapa de profundidade para o objeto com base em uma pluralidade de palavras de código detectada como janelas sobrepostas diferentes dentro da porção da máscara de código compósita não distorcida.
[0084] Em um exemplo, a pré-conformação de pelo menos uma dentre a camada de código e a camada de portadora aumenta a eficácia de potência durante a projeção da máscara de código compósita, de modo que mais potência seja percebida por um sensor receptor em comparação a uma máscara de código compósita não conformada.
[0085] Em um caso, a função de espalhamento de ponto sintético usada pode ser selecionada a partir de uma pluralidade de funções de espalhamento pontual com base em pelo menos um dentre: (a) condições de canal esperadas através das quais a máscara de código compósita deve ser projetada, (b) características de superfícies sobre as quais a máscara de código compósita é projetada e/ou (c) uma sensibilidade do sensor receptor que deve receber a máscara de código projetada compósita. Em outro exemplo, a função de espalhamento de ponto sintético pode ser selecionada a partir de uma pluralidade de funções de espalhamento pontual com base em pelo menos um dentre: (a) uma primeira resposta de canal para um 'projetor que deve projetar a máscara de código compósita; e/ou (b) uma segunda resposta de canal para um trajeto a partir de um projetor que deve projetar a máscara de código compósita ao sensor receptor que deve receber a máscara de código compósita.
Dispositivo de Correção de Erro Exemplificativo
[0086] A Figura 6 é um diagrama de blocos que ilustra uma modalidade de um aparelho configurado para realizar um ou mais dos métodos de correção de erro revelados no presente documento. O aparelho 600 inclui um emissor de luz 602, um elemento de recebimento de luz 604, um processador 606 e uma memória 608. O emissor de luz 602, o elemento de recebimento de luz 604, o processador 606 e a memória 608 são conectados de modo operacional por meio de um barramento 610. Em alguns aspectos, o elemento de recebimento de luz 604 pode corresponder ao dispositivo receptor 502 discutido acima em relação à Figura 5. Em alguns aspectos, o emissor de luz 602 pode corresponder ao dispositivo transmissor 402 discutido acima em relação à Figura 4.
[0087] A memória 608 pode armazenar instruções que configuram o processador 606 para realizar uma ou mais funções dos métodos discutidos no presente documento. Por exemplo, as instruções armazenadas na memória podem configurar o processador 606 para controlar o emissor de luz 602 para emitir luz que codifica a luz estruturada como palavras de código, a fim de iluminar um objeto alvo. As instruções armazenadas na memória 608 pode fazer, adicionalmente, com que o processador 606 controle o elemento de recebimento de luz 604 para receber luz refletida a partir do objeto alvo e produzir dados codificados na luz refletida. As instruções armazenadas na memória podem configurar adicionalmente o processador para corrigir erros nos dados data produzidos pelo elemento de recebimento de luz de acordo com o método 1500 discutido abaixo.
[0088] A Figura 7 mostra os resultados da aplicação de alguns métodos para atenuar os efeitos de lacunas em um mapa de profundidade de imagem. A imagem 701a mostra um mapa de profundidade sem qualquer correção de erro. Os furos no mapa de profundidade podem ser vistos como regiões escuras, por exemplo, na mão 701b. A imagem 702a mostra o mesmo mapa de profundidade após um processo de preenchimento de furo suave ter sido realizado. Embora a mão 702b inclua menos furos no mapa de profundidade do que a mão 701b, alguma perda de detalhe também está presente. A imagem 703a mostra o mesmo mapa de profundidade que a imagem 701a após o preenchimento de furo de nível médio ter sido realizado. A mão 703b da imagem 703a mostra uma redução adicional no número de lacunas de mapa de profundidade, mas também a perda de detalhes em relação às mãos 701b e 702b. A imagem 704a mostra o mesmo mapa de profundidade que a imagem 701a após o exaustivo preenchimento de furo. A mão 704b da imagem 704a mostra redução adicional de lacunas de mapa de profundidade em comparação ás mãos 701b, 702b e 703b. Entretanto, a perda adicional de detalhes em relação às mãos 701b, 702b e 703b também é evidente.
[0089] A Figura 8A ilustra um padrão que exibe simetria hermitiana. Cada ponto A, B, C com um positivo (x, y) é incluído em um primitivo de livro de código e é refletido em torna de uma origem (por exemplo, um ponto (0)) a um ponto (-x,-y) que também está no primitivo de livro de código. A simetria hermitiana exibida por cada um dos pontos A, B, C, pode exibir formação de imagens "fantasmas" que podem ser recebidas quando padrões não hermitianos forem usados. Por exemplo, a Figura 8B ilustra um padrão sem imagens fantasmas, formado a partir de uma máscara de código simétrica hermitiana. Em contrapartida, a Figura 8D ilustra um padrão com imagens fantasmas, formado a partir de uma máscara de código que não é simétrica hermitiana. Eliminar as imagens fantasmas pode reduzir o processamento de sinal de lado de receptor, pode aumentar a precisão de demodulação e reconhecimento de palavra de código, aumentar a tolerância a objetos em movimento, aumentar a tolerância a ruído e aumentar a tolerância a mudanças de iluminação.
[0090] As Figuras 8C e 8E mostram como um padrão simétrico hermitiano pode afetar o tamanho de um feixe de ordem zero em uma projeção de luz estruturada. Conforme mostrado, o padrão simétrico hermitiano da Figura 8C gerou um feixe de ordem zero menor quando comparado a um feixe de ordem zero mostrado na Figura 8E com um padrão simétrico não hermitiano. O feixe de ordem zero é gerado quando a luz, por exemplo, luz de laser, passa através de uma máscara de código e uma porção da luz passa através do centro da máscara de código não difracionado. Isso causa o feixe de ordem zero. Devido ao fato de que o feixe de ordem zero não é difracionado, o feixe de ordem zero pode ter maior intensidade do que os feixes difracionados, resultando em um ponto cego e saturação de um sensor de imagem de recebimento em torno da posição do feixe de ordem zero. O tamanho reduzido e intensidade inferior do feixe de ordem zero na Figura 8C pode reduzir o tamanho do ponto cego, e aprimorar a segurança em sistemas com o uso de uma luz de laser em comparação ao padrão simétrico não hermitiano usado na Figura 8E.
[0091] A Figura 9 ilustra uma vista detalhada da máscara de código exemplificativa ilustrada na Figura 8C. Os dados codificados dentro das colunas da máscara de código 900 podem ser gerados com base em um conjunto de funções-base. As funções-base são usadas para formar códigos espaciais. O projeto das funções-base (sequências- base) pode ser análogo a autovetores para uma matriz, em que as funções-base podem ser escolhidas para serem ortogonais entre si e podem ser combinadas linearmente.
[0092] A máscara de código da Figura 9 ilustra uma máscara de código gerada a partir de três funções-base. Um quadrado branco no padrão representa um valor de um (1) enquanto o quadrado escuro representa um valor de zero (0). Na máscara de código ilustrada da Figura 9, cada coluna codifica valores a partir de uma das três funções-base: 910 , 920 , ou 930 Quando se gera uma coluna particular, cada função-base pode ser rotacionada. A rotação 910 não resulta em uma mudança, à medida que todos os bits são equivalentes. A função-base 920 pode ser rotacionada, um bit de cada vez, para 922 , 924 ou 926 . De modo semelhante, a função-base 930 pode ser rotacionada para 932 . Cada coluna na máscara de código 900 corresponde a uma série de repetição de uma dessas funções 910, 920, 922, 924, 926, 930 ou 932.
[0093] Os padrões que resultam das funções- base (algumas vezes rotacionadas) são organizados em códigos compreendidos de quatro porções de coluna, em que cada porção de coluna consiste em um padrão de função-base de quatro células. Por exemplo, um código 950 pode ser representado como, correspondente às funções [910|910|932|920].
[0094] O código 950 pode ser armazenado em um livro de código na forma de imagem, como uma matriz binária 4x4, como uma representação binária da matriz binária (por exemplo, pela coluna 1111111101011100, ou pela fileira 1101111111001110), como uma combinação de funções-base com uma fase (910, 910, 930 +1, 920), ou como uma combinação de funções (910, 910, 932, 920).
[0095] De modo semelhante, o código 952 é formado a partir das funções-base [910|932|910|930], o código 954 é formado a partir das funções-base [930|910|932|930] e o código 956 é formado a partir de [910|910|910|910].
[0096] Um código pode ser identificado para cada “janela” de elemento quatro por quatro na máscara de código da Figura 9. Os códigos identificáveis "se sobrepõem" conforme mostrado pelos códigos 952 e 954, em que cada porção 4x4 da máscara de código 900 representa um código válido. Devido à restrição de resolução de contorno (janela perfeita) para a qual a máscara de código 900 é projetada, cada "janela" 4x4 forma um código válido a partir da combinação de funções 910, 920, 922, 924,926,930 ou 932.
[0097] A restrição de janela perfeita usada no projeto do padrão de máscara de código da Figura 9 também exige palavras de código deslocadas para ser única. Uma vez que a janela na máscara de código corresponde a uma janela quatro por quatro mostrada nas localizações correspondentes aos códigos 950, 952, 954 e 956. À medida que a janela se desloca por uma ou mais fileiras, e/ou uma ou mais colunas, a palavra de código quatro por quatro dentro da janela precisa ser única e não repetida sobre uma área anti-alias. Se as palavras de código não forem únicas, então pode não ser possível identificar exclusivamente cada palavra de código localização (localização de janela correspondente a cada palavra de código única) dentro da área anti-alias. Para esse exemplo com sete funções 910, 920, 922, 924, 926, 930 e 932, e quatro colunas, existem 74=2.401 combinações possíveis de quatro colunas, tornando possível satisfazer a restrição de janela perfeita através de áreas de suavização de até 2.401 colunas.
[0098] Duas outras funções-base candidatas para códigos 4x4 que não foram usadas nesse exemplo são e Nenhuma coluna no padrão usam essas funções ou versões alteradas dessas funções. Portanto, qualquer código recebido que inclui ou é inválido. Consequentemente, um receptor pode detectar um erro quando um código recebido não estiver em um livro de código de códigos válidos, quanto todos os códigos transmitidos forem formados a partir de uma função-base (ou versão rotacionada da função- base) que está no livro de código.
[0099] A máscara de código 900 da Figura 9 pode ser transmitida sobre um ou mais objetos em uma cena e, então, ser refletida de volta para um receptor. O receptor, por exemplo, o dispositivo receptor 502 ou elemento de recebimento de luz 604, recebe a reflexão do padrão transmitido a partir dos objetos na cena. Após o recebimento, as versões recebidas dos códigos 950, 952, 954 e 956 podem ser determinadas. Observando-se como as palavras de código codificadas mudam quando refletidas por um objeto, um mapa de profundidade, por exemplo, o mapa de profundidade 1002a mostrado na Figura 10 pode ser gerado. O mapa de profundidade gerado pode ser fornecido a um ou mais métodos de processamento de imagem, que podem modificar os dados de imagem com base no mapa de profundidade. O mapa de profundidade gerado pode incluir uma ou mais lacunas ou furos. As lacunas ou furos podem resultar de erros na decodificação das versões recebidas dos códigos. Os erros podem ser causados por uma variedade de fatores, incluindo porções do objeto com baixa refletividade, condições de luz ambiente espúrias, ou uma variedade de outros fatores. Os exemplos de furos em um mapa de profundidade podem ser vistos na imagem expandida da mão 1002b (Figura 10). Sem ter uma forma para corrigir esses erros, o processamento de imagem das regiões da imagem em proximidade aos furos pode produzir profundidades errôneas nessas áreas de um mapa de profundidade.
[0100] Quando as palavras de código da máscara de código 900 forem recebidas, cada palavra de código recebida pode ser demodulada, ou interpretada, para determinar o código particular que foi recebido.
[0101] Em algumas modalidades, os códigos espaciais recebidos, ou representações simbólicas (binária, ou n-ária) representações dos códigos espaciais recebidos, podem ser correspondidos a funções-base (por exemplo, com o uso de filtros correspondidos), versões alteradas de funções-base, ou cada arranjo de código válido para determinar se o código recebido corresponde a um código válido. A máscara de código 900 pode ser gerada para incluir códigos válidos que representam apenas um subconjunto de todas as combinações possíveis da funções- base. No exemplo dos códigos 4x4 da Figura 9, as sete funções 910, 920, 922, 924, 926, 930, e 932 correspondem a 74=2.401 possíveis códigos dentre 216=65.536 possibilidades.
[0102] Um livro de código usado para gerar a máscara de código 900 pode selecionar um subconjunto dos 2.401 códigos (por exemplo, 400), caso no qual menos do que 1% dos códigos possíveis são válidos. Se os códigos válidos forem diferentes o suficiente, um erro de único bit pode não resultar em outro código válido. Portanto, pode ser possível determinar que o código recebido tem um erro se o mesmo não corresponder a um código válido, e é relativamente improvável ou talvez impossível para um erro de único bit fazer com que um primeiro código válido seja confundido por um segundo código válido.
[0103] Os métodos e sistemas de correção de erro descritos no presente documento detectam um erro quando um código inválido for recebido, e corrigir o erro determinando-se a palavra de código válida mais provável transmitida que corresponde ao código inválido recebido. Uma determinação da palavra de código válida mais provável transmitida pode presumir, em alguns aspectos, que a palavra de código inválida inclui apenas um erro. Essa suposição delimita os requisitos computacionais de determinar as palavras de código válidas mais prováveis. Além do mais, dada a probabilidade relativamente baixa de múltiplos erros em uma única palavra de código, essa suposição proporciona métodos e sistemas com uma capacidade adequada de corrigir erros.
[0104] A Figura 11 é um diagrama de fluxo de dados que ilustra um exemplo de uma modalidade de um método para corrigir dados errôneos em um mapa de profundidade. Em outras palavras, preencher "furos" em um mapa de profundidade. O método inclui detectar um erro em uma palavra de código espacial recebida, no processo de detecção de erro 1150. Após detectar um erro, o método inclui gerar palavras de código candidatas, na etapa de geração de palavra de código candidata 1160. Cada uma das palavras de código candidatas é verificada em relação ao conjunto de palavras de código válidas no processo de verificação de validez 1170, que determina quais das palavras de código candidatas são candidatas válidas. A seguir, profundidades são geradas para cada uma das palavras de código válidas no processo de geração de profundidade 1180. A Figura 11 ilustra um fluxo de dados para os códigos espaciais 4x4 exemplificativos gerados com o uso das funções-base descritas em relação à Figure 9, isto é , as funções-base 910 920 , e 930 , bem como as funções alteradas 922 , 924 , 926 .
[0105] A Figura 11 ilustra primeiro um processo de detecção de erro 1150. Dentro do processo de detecção de erro 1150, uma imagem recebida é decodificada para formar o código inválido espacial 1102. O código inválido espacial 1102 pode resultar de uma reflexão de pelo menos um dos códigos espaciais descritos acima em relação à Figura 9. Cada coluna espacial recebida no código inválido espacial 1102 é comparada ao conjunto de funções- base da Figura 9 com o uso de um filtro de correspondência. A primeira, segunda e terceira colunas de código inválido espacial 1102 correspondem às funções 910, 930 e 926, respectivamente. Entretanto, a coluna 1104 não corresponde a qualquer uma das funções 910, 920, 922, 924, 926, 930 ou 932, significando um erro em pelo menos um dos elementos da coluna 1104.
[0106] Uma vez que o processo de detecção de erro 1150 detecta um erro na coluna 1104 de código inválido espacial 1102, as palavras de código válidas candidatas são geradas no processo de geração de palavra de código candidata 1160, ilustrado verticalmente na Figura 11.
[0107] O processo de geração de palavra de código candidata 1160 inclui uma suposição de projeta que apenas um erro existe na coluna 1104. Outras modalidades contempladas podem fazer suposições diferentes, por exemplo, outras modalidades podem presumir que não mais do que dois, três ou quatro erros existem na coluna 1104. Entretanto, a detecção e correção para um número de erros maior podem exigir uma complexidade e custo computacional superior. Em alguns aspectos, as palavras de código candidatas podem ser geradas para estarem dentro de uma distância de Hamming particular do código inválido. Por exemplo, em implantações que presumem no máximo um erro em uma palavra de código inválida, as palavras de código candidatas podem ser geradas, as quais têm uma distância de Hamming de um (1) a partir da palavra de código inválida. Em implantações que contemplam no máximo dois erros na coluna 1104, as palavras de código candidatas podem ser geradas, as quais estão dentro de uma distância de Hamming de dois (2) a partir do código inválido espacial 1102 e assim por diante.
[0108] Conforme mostrado na Figura 11, as palavras de código candidatas 1106a-d são geradas no processo de geração de palavra de código candidata 1160. Cada uma das palavras de código candidatas 1106a-d tem uma distância de Hamming de um (1) a partir do código inválido espacial 1102. Isso corresponde à suposição de projeto de erro de único bit discutida acima. Alternativamente, as palavras de código candidatas 1106a-d podem ser geradas por uma variedade de outros métodos, dependendo da implantação. Em uma implantação, cada palavra de código candidata é gerada perturbando-se um bit exclusivo da coluna 1104 que inclui o erro. Portanto, se a coluna 1104 tivesse que incluir oito bits, oito palavras de código candidatas podem ser geradas, em que cada palavra de código candidata inclui um bit perturbado diferente.
[0109] Após as palavras de código candidatas 1106a-d serem geradas, cada uma das palavras de código candidatas pode, então, ser verificada por um processo de verificação de validez 1170. Em algumas modalidades, a verificação de validez é feita determinando-se se as palavras de código candidatas estão inclusas em um livro de código 1108 de códigos válidos usados para gerar a máscara de código 900. Se exatamente uma das palavras de código candidatas 1106a-d for um código válido (listado no livro de código 1108), então, o único candidato de correspondência provavelmente é o código válido que foi transmitido originalmente. No exemplo da Figura 11, constatou-se que as palavras de código candidatas 1106a-c eram válidas no livro de código 1108, enquanto a palavra de código candidata 1106d não foi encontrada no livro de código 1108. Observe que se nenhuma das palavras de código candidatas fossem determinadas como válidas (isto é, no livro de código 1108), algumas implantações podem determinar que a coluna 1104 inclui mais do que um único erro. Em resposta a essa determinação, algumas implantações podem realizar uma segunda etapa de geração de palavra de código candidata. Por exemplo, as palavras de código candidatas dentro de uma distância de Hamming de dois (2) a partir da palavra de código inválida pode ser gerada e comparada ao livro de código 1108. Algumas implantações podem realizar etapas adicionais para palavras de código candidatas com maiores distâncias de Hamming a partir das palavras de código inválidas. Algumas implantações podem determinar palavras de código candidatas na distância de Hamming mais próxima em uma única etapa.
[0110] Em algumas modalidades, o processo de verificação de validez 1170 pode ser realizado com base em um esquema de alocação de palavra de código. Por exemplo, em alguns aspectos, as palavras de código em uma direção horizontal podem ser exclusivas em uma dimensão x e repetem em uma dimensão y. Algumas palavras de código candidatas podem não se conformar a esses esquemas de alocação de palavra de código gerais, e podem ser rejeitadas durante o processo de verificação de validez 1170.
[0111] Após o processo de verificação de validez 1170 ser realizado, o método realiza o processo de geração de profundidade 1180 que determina uma profundidade associada a cada palavra de código válida candidata 1110a- c. As profundidades candidatas associadas às palavras de código 1110a-c podem ser comparadas a profundidades dentro de uma vizinhança local para determinar qual dentre as palavras de código candidatas 1110a-c deve substituir o código inválido espacial 1102. Por exemplo, qualquer que seja a profundidade candidata das palavras de código candidatas 1110a-c que está mais próxima aos valores de profundidade de vizinhança local do código inválido espacial 1102 pode ser usada para substituir o código inválido espacial 1102 em um mapa de profundidade. Em alguns casos, a vizinhança local pode ser limitada a 1, 2, 3, 4, 5, 6, 7, 8, 9, ou 10 palavras de código do código inválido espacial 1102. Em alguns aspectos, a vizinhança local pode ser limitada a palavras de código dentro de uma porcentagem de uma altura ou largura de mapa de profundidade. Por exemplo, se um mapa de profundidade for 100 palavras de código de largura, a vizinhança local pode ser definida como uma (1) por centro dessa dimensão, ou dentro de uma palavra de código do código inválido espacial 1102. Mais detalhes sobre as profundidades geradas são descritos abaixo em relação à Figura 12.
[0112] Observe que o código inválido espacial 1102 pode incluir erros em mais de uma coluna. Por exemplo, uma primeira e terceira coluna de uma palavra de código 4x4 podem, cada uma, incluir um erro. Nesse caso, as palavras de código candidatas podem ser geradas para os oito candidatos potenciais (quatro para cada coluna no caso de uma palavra de código 4x4), cada candidato é valido em relação ao livro de código, as profundidades são geradas para cada candidato válido e a profundidade mais semelhante é selecionada para substituição. Um método pode estabelecer um limite superior no número de erros de bit a considerar.
[0113] Em algumas modalidades, os erros de bit podem corresponder a distâncias de Hamming. Por exemplo, uma distância de Hamming de 2 corresponde a dois erros de bit. Se não houver códigos válidos em uma distância de Hamming de 2, então o método pode considerar os códigos válidos em uma distância de Hamming de 3, até atingir uma distância de Hamming limite, que corresponde a um número de erros de bit limite.
[0114] Após o processo de verificação de validez 1170 ser realizado, o método pode gerar profundidades no processo de geração de profundidade 1180 com base no deslocamento de códigos candidatos na imagem de luz estruturada recebida, conforme descrito em relação à Figura 3. Por exemplo, o primeiro código candidato 63693, rotulado 1110a, pode ter uma profundidade correspondente de 53. O segundo código candidato 63707, rotulado 1110b, pode ter uma profundidade correspondente de 94. O terceiro código candidato 63691, rotulado 1110c, pode ter uma profundidade correspondente de 83. No exemplo da Figura 11, o código 63706 não está no livro de código, então não é um candidato válido. Dadas as três profundidades candidatas D=53, D=94, e D=83, respectivamente, a próxima etapa, ilustrada na Figura 12, é para determinar qual dos três códigos 11l0a-c, com profundidades correspondentes 53, 94 e 83, selecionar para preencher o furo ou lacuna no mapa de profundidade na localização do erro de código.
[0115] A Figura 12 mostra uma porção de um processo de correção de erro em um mapa de profundidade, dado um conjunto de palavras de código de substituição candidatas, por exemplo, 11l0a-c ilustrado na Figura 11, que corresponde às profundidades candidatas D=53, D=94 e D=83, respectivamente. A Figura 12 mostra uma região 3x3 1215 com um valor de profundidade desconhecida D na caixa central da região 125, com valores de profundidade conhecidos nas localizações vizinhas com valores de profundidade 80, 81, 82, 82, 84, 84, 94, e 82, respectivamente. A profundidade é desconhecida na localização central da região 1215 devido ao fato de que o código recebido nessa localização central não era um código válido no livro de código sendo usado. Isso pode ser determinado, por exemplo, pelo processo de detecção de erro 1150 descrito com referência à Figura 11. Na etapa 1210, determinar profundidade mediana M de profundidades vizinhas, o valor de profundidade mediana das oito localizações vizinhas no mapa de profundidade é M=82. Essa medida de profundidade mediana M é usada pela medida de determinação de semelhança para cada profundidade candidata na etapa 1220. Na etapa 1220, cada profundidade candidata D=53, D=94 e D=83 é considerada como a profundidade de substituição nas regiões 1222, 1224 e 1226, respectivamente. Uma medição de semelhança S é determinada tomando-se o valor absoluto da diferença da profundidade candidata com a profundidade mediana determinada na etapa . Um valor inferior para S corresponde a uma profundidade que é mais semelhante à mediana. No exemplo da Figura 12, na etapa 1220, os valores para S para D=53, D=94 e D=83 são 29, 12 e 1, respectivamente. Na etapa 1230 a profundidade mais semelhante, D=83, com o menor valor S de 1 é selecionada, resultando na região de mapa de profundidade 1235, com D=83.
[0116] Nesse exemplo ilustrado na Figura 12, as três profundidades candidatas D=53, D=94 e D=83 foram geradas pelo processo de geração de profundidade 1180 da Figura 11 para palavras de código determinadas como válidas pelo processo de verificação de validez 1170. Na modalidade ilustrada na Figura 12, a profundidade candidata que está mais próxima a um valor de profundidade mediana das oito localizações de mapa de profundidade mais próximas, correspondentes a uma vizinhança 3x3 , é selecionada. Em algumas modalidades, a profundidade candidata que está mais próxima a um valor de profundidade média das oito localizações de profundidade mais próximas é selecionada. Em uma modalidade, cada profundidade candidata pode ser comparada a uma profundidade mediana, ou uma profundidade média menor do que oito localizações de mapa de profundidade mais próximas (por exemplo, a quatro localizações mais próximas). Em uma modalidade, cada profundidade candidata pode ser comparada a uma profundidade mediana, ou uma profundidade média, de mais que oito localizações vizinhas (por exemplo, os 12, 20, 25, 29, 37, 45, ou 49 vizinhos mais próximos). Em uma modalidade, se todas as medidas de semelhança não satisfizerem um limite, todas as profundidades candidatas podem ser rejeitadas.
[0117] As abordagens descritas no presente documento corrigem erros determinando-se o código mais provável que foi transmitido. Em contrapartida, as abordagens existentes que não corrigem erros podem meramente aplicar um filtro de mediana que desfoca ou suaviza os mapas de profundidade. Os resultados dessa suavização são ilustrados na Figura 13. A imagem 1302a inclui a mão esquerda 1302b e mão direita 1302c. Ambas as mãos esquerda e direita 1302b-c mostram um número de lacunas reduzido, mas uma perda correspondente de detalhes.
[0118] Em contrapartida à perda de detalhe mostrada pela solução com base em filtro de mediana da Figura 13, a Figura 14 mostra o preenchimento de lacuna de um mapa de profundidade com o uso dos métodos e sistemas revelados no presente documento. Como pode ser visto nas mãos esquerda e direita 1404b-c da imagem 1404a, enquanto as lacunas resultantes dos erros na codificação subjacente foram reduzidos, os detalhes são conservados em relação às mãos esquerda e direita 1402b-c do filtro de mediana mostrado na Figura 13.
[0119] Um método que usa distâncias de Hamming como uma medida entre um código recebido e os códigos válidos, pode primeiro considerar códigos válidos em uma distância de Hamming de 1, correspondente a um erro de único bit. Se não houver códigos válidos em uma distância de Hamming de 1, então o método pode considerar códigos válidos em uma distância de Hamming de 2, correspondente a dois erros de bit. Se não houver códigos válidos em uma distância de Hamming de 2, então o método pode considerar os códigos válidos em uma distância de Hamming de 3, até atingir uma distância de Hamming limite, que corresponde a um número de erros de bit limite.
[0120] Em algumas modalidades, se houver um único código válido em uma distância de Hamming de 1, que corresponde a um único código no livro de código que difere do código recebido por um bit, então pode-se presumir que aquele código é o código transmitido. Se houver mais do que um código válido em uma distância de Hamming de 1, então esses códigos válidos podem ser considerados códigos espaciais candidatos.
[0121] Em algumas modalidades, para determinar qual código candidato espacial provavelmente foi transmitido, cada um dos códigos espaciais candidatos pode ser comparado aos códigos espaciais vizinhos, e um candidato selecionado como o código mais provável transmitido com base na comparação. Por exemplo, se as funções-base dos códigos espaciais vizinhos forem mais consistentes com um dos candidatos do que todos os outros, então aquele candidato pode ser selecionado. Em uma modalidade, a profundidade correspondente a cada um dos códigos espaciais candidatos pode ser comparada a profundidades estimadas vizinhas, e um candidato selecionado com base na comparação. Por exemplo, um valor de filtro de mediana das profundidades vizinhas pode ser comparado à profundidade correspondente a cada código candidato, e o código candidato com a profundidade mais próxima ao valor de filtro de mediana pode ser selecionado.
[0122] A distância de Hamming H entre um par de números binários corresponde ao número de bits que difere entre os dois números. Por exemplo, uma distância de Hamming de 2 corresponde a dois bits que são diferentes entre o código recebido e os códigos no livro de código. Quando um código for recebido, o mesmo pode ser verificado em relação ao livro de código por correspondências, em que H=0. Se houver uma correspondência (um código em que H=0), então há uma correspondência e provavelmente, nenhum erro de bit. Se não houver uma correspondência, o método considera todos os códigos no livro de código em que H=1, correspondentes aos erros de único bit. Se houver um código no livro de código em que H=1, é mais provável que esse código corresponda ao código transmitido, e a profundidade pode ser estimada com o uso desse código. Se houver mais que um código no livro de código em que H=1, então os códigos para os quais H=1 são comparados para determinar qual dentre os códigos em H=1 é o código mais provável transmitido.
[0123] A Figura 15 mostra uma estrutura exemplificativa para organizar códigos candidatos em um livro de código pela distância de Hamming para a correção de erro. A lista 1510 lista as palavras de código espaciais recebidas possíveis, incluindo todas as possíveis combinações binárias dos códigos espaciais. tanto as palavras de código recebidas válidas, por exemplo, 63691, quanto as palavras de código recebidas inválidas, por exemplo, 63692 estão na lista 1510. As palavras de código válidas são codificadas em uma máscara de código de luz estruturada e/ou inclusa em um livro de código; palavras de código inválidas não são, mas podem ser recebidas na presença de ruído. Cada palavra de código espacial recebida possível na lista 1510 indica, ou se refere a, um ou mais elementos. Por exemplo, a palavra de código 63691 indica os elementos 1520 e 1521. As palavras de código 63692 indicam os elementos 1531, 1532 e 1533. Cada elemento inclui pelo menos uma palavra de código válida em uma distância de Hamming designada a partir da palavra de código espacial recebida que indica o mesmo. Por exemplo, cada um dos elementos 1520, 1533 e 1542 inclui uma palavra de código válida, o elemento 1546 inclui duas palavras de código válidas e os elementos 1521, 1531 e 1544 incluem, cada um, como três palavras de código válidas. O elemento 1532 inclui quatro palavras de código válidas. A palavra de código no elemento 1520 está em uma distância de Hamming de zero, idêntica à palavra de código recebida 63691 na medida que essa é uma palavra de código válida. Cada um dos elementos 1521 e 1531 incluem palavras de código em uma distância de Hamming de um a partir da palavra de código recebida que indica cada um desses elementos, respectivamente. Cada um dos elementos 1532 e 1542 inclui as palavras de código em uma distância de Hamming de dois (correspondente a dois erros de bit) a partir da palavra de código recebida que indica cada um desses elementos, respectivamente. O elemento 1546 inclui duas palavras de código em uma distância de Hamming de 6 a partir da palavra de código espacial recebida 65535, que indica ou se refere ao elemento 1546. Os dois elementos 1520 e 1521 aos quais a palavra de código 63691 pode ser combinada para formar um bloco. De modo semelhante, os três elementos 1531, 1532 e 1533 podem ser combinados para formar um bloco associado à palavra de código 63692 e os elementos 1542, 1544 e 1546 podem se combinar para formar um bloco associado à palavra de código recebida 65535.
[0124] Algumas modalidades podem usar uma abordagem de correção de erro de luz codificada eficaz em termos de memória, por exemplo, a estrutura 1500 na Figura 15 e/ou a estrutura 1600 na Figura 16, com base na observação de que uma implantação pode ter relativamente poucos códigos válidos, dentre o conjunto de todos os códigos possíveis. Por exemplo, uma implantação com códigos espaciais 4x4 pode ter 405 códigos válidos dentre possíveis 216 ou 65.536 códigos. Para acelerar o tempo que leva para determinar a palavra de código mais provável transmitida, os métodos e sistemas podem usar uma estrutura ou tabela de consulta (LUT), por exemplo, estrutura 1500 para identificar o conjunto de palavras de código válidas. Por exemplo, a estrutura 1500 inclui uma lista 1510 para cada um dos 65.536 códigos recebidos possíveis. Cada um dos códigos espaciais pode ser representado em binário, de modo que, por exemplo, um código espacial 4x4 possa corresponder a um arranjo 4x4 de dígitos binários, o que pode ser representado como um número binário de 0 a 65535.
[0125] Nesse exemplo, a lista 1510 (série de entradas) inclui 65.546 entradas, das quais três (63691, 63692 e 65535) são listadas. O código espacial correspondente a 63691 é um código válido. Portanto, o elemento 1520 lista o código válido com uma distância de Hamming de 0. O elemento 63692 não é válido, mas existem três códigos válidos 63693, 63694 e 63688 em 1521 que são uma distância de Hamming de 1 de 63691. O elemento 1532 lista quatro códigos, 63656, 62668, 51404 e 39116 que estão em uma distância de Hamming de 2 distante de 63692. A estrutura 1533 lista um código, 39117, que está em uma distância de Hamming de 3 distante de 63692. De modo semelhante, o elemento 1542 lista um código 65532 que está em uma distância de Hamming de dois de 65535. O elemento 1544 lista três códigos 53244, 40956 e 40954 que estão em uma distância de Hamming de quatro distante de 65535. O elemento 1546 lista dois códigos, 50171 e 52474 que estão em uma distância de Hamming de 6 distante de 65535. Consequentemente, para cada série de entradas, a tabela de consulta inclui uma entrada H=0, por exemplo, 1520 para aqueles códigos recebidos dentro do livro de código, uma entrada H=1, por exemplo, 1521 e 1531 para aqueles códigos recebidos para os quais existe um ou mais códigos no livro de código com uma distância de Hamming de 1, uma entrada H=2, por exemplo, 1532, 1542 para aqueles códigos recebidos para os quais existe um ou mais códigos no livro de código com uma distância de Hamming de 2.
[0126] Em algumas implantações, a estrutura 1500 contém códigos correspondentes em distâncias de Hamming até o número de bits no código espacial. Para algumas implantações, pode haver um limite superior para distâncias de Hamming, à medida que a probabilidade de mais erros de bit do que o limite superior pode ser vista como muito improvável para uma correspondência ser útil (por exemplo, a probabilidade de mais que 6 erros de bit é menor do que 0,000000001), então pode não haver motivo para incluir H=7 na tabela de consulta. Para algumas implantações, a tabela de consulta pode apenas ser populada com a menor distância de Hamming para a qual existem correspondências. Por exemplo, se um código recebido estiver H=1 distante de três códigos no livro de código, H=2 distante de quatro códigos no livro de código e H=3 distante de um código no livro de código, então a tabela de consulta para esse código recebido pode apenas incluir os três códigos em H=1. De modo semelhante, se um código recebido tiver uma correspondência exata, então a tabela de consulta de Hamming pode apenas incluir a entrada H=0. Por exemplo, o código recebido 63692 corresponde a nenhum código H=0, três códigos H=1, quatro códigos H=2 e um código H=3. Se o código espacial quatro por quatro correspondente a 63692 for recebido, então os códigos mais prováveis no livro de código são 63693, 63694 e 63688 (cada um dos códigos de erro de único bit).
[0127] Se não houver códigos com H=0 ou 1, então o método considera os códigos com H=2. Se houver um código no livro de código em que H=2, é mais provável que esse código corresponda ao código transmitido, e a profundidade pode ser estimada com o uso desse código. Se houver mais que um código no livro de código em que H=2, então os códigos para os quais H=2 são comparados para determinar qual dentre os códigos em H=2 é o código mais provável transmitido. Esse processo pode repetir para H= 3, 4, 5 e possivelmente mais valores de H.
[0128] A Figura 16 mostra um exemplo de uma estrutura para organizar códigos candidatos em um livro de código pela distância de Hamming para correção de erro. Uma lista 1610 de palavras de código recebidas, correspondente à lista 1510 de palavras de código na Figura 15, lista o conjunto de palavras de código recebidas possíveis na presença de ruído. A lista 1610 inclui códigos recebidos válidos e inválidos. Cada palavra de código na lista 1610 indica (se refere a, é indexado a) um bloco (por exemplo, qualquer um dos blocos 1631-1639) na estrutura 1600. Cada bloco inclui um ou mais elementos correspondentes aos elementos 1520, 1521, 1531, 1532, 1533, 1542, 1544 e 1546 ilustrados na Figura 15. Cada elemento inclui pelo menos uma palavra de código válida em uma distância de Hamming designada a partir da palavra de código espacial recebida que indica o mesmo. Essas definições correspondem às definições dos blocos e elementos conforme descritos acima para a Figura 15. A estrutura 1600 pode ser implantada em uma unidade de memória como uma tabela de consulta, arranjo indexado, lista ligada, banco de dados relacionado, ou outra estrutura que habilita a recuperação das palavras de código válidas, elementos e/ou os blocos associados a uma palavra de código recebida.
[0129] Em uma implantação, essa estrutura pode conter as mesmas informações que estão contidas na estrutura 1500 da Figura 15. Entretanto, a estrutura 1600 pode ser mais compactada para implantação em uma unidade de memória. A lista 1610 lista os códigos recebidos possíveis, dos quais alguns são válidos, e alguns não são. Por exemplo, a lista 1610 lista os códigos 63691-63694, 64123, 64124 e 65533-65535. Conforme observado em relação à lista 1510, uma implantação pode listar todos os códigos espaciais recebidos possíveis, mas um pequeno subconjunto é incluso na Figura 16 para clareza. Os códigos 63691, 63694, 64123, e 65534 listados na lista 1610 são códigos válidos para a transmissão, mas os códigos 63692, 63693, 64124, 65533 e 65535 não são códigos válidos que foram recebidos no erro. Conforme ilustrado na Figura 15, os códigos válidos no livro de código para H=0, H=1, H=2, etc. são determinados para cada código. Por exemplo, os elementos 1531, 1532 e 1533 da Figura 15 para o código recebido 63692 podem ser combinados em um único bloco 1632. De modo semelhante, os blocos 1631, 1633, 1634, 1635, 1636, 1637, 1638, e 1639 cada elemento combinado pela distância de Hamming para os códigos espaciais 63691, 63693, 63694, 64123, 64124, 65533, 65534 e 65535, respectivamente.
[0130] Essa estrutura compacta da Figura 16 torna possível detectar erros e, então, determinar códigos candidatos para correção pelo método descrito na Figura 17, sem adicionais bits extras, por exemplo, bits de paridade, ou com o uso de redundância para habilitar a correção de erro. O sistema de correção de erro revelado é inerentemente diferente dos métodos tradicionais que empregam redundância. Adicionar material redundante à palavra de código tem a desvantagem de aumentar o tamanho da palavra de código, que, por sua vez, reduz o tamanho de objeto detectável mínimo. O aumento no tamanho de código também reduz o número de códigos no padrão que reduz a resolução do mapa de profundidade. A fim de contornar essas desvantagens na codificação de redundância a tecnologia revelada pode, ao invés disso, dotar os códigos de estrutura concebida a partir da seleção de palavras de código como uma combinação linear de funções-base espaciais. Portanto, a capacidade de correção de erro está inerentemente acoplada à estrutura de palavra de código. Essas funções-base permitem a correção e detecção de erro sem recorrer à redundância.
[0131] A Figura 17 é um fluxograma de um método para corrigir erros em palavras de código geradas a partir da luz estruturada. Em alguns aspectos, o método 1700 pode ser realizado pelo dispositivo 600, discutido acima em relação à Figura 6. Por exemplo, as instruções de processador armazenadas em uma memória 608 podem configurar o processador 606 para realizar uma ou mais das funções discutidas abaixo em relação ao método 1700.
[0132] No bloco 1710, o método 1700 recebe uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida. Cada uma dentre a pluralidade de palavras de código válidas está inclusa em um livro de código de palavras de código válidas, sendo que o livro de código não inclui a pelo menos uma palavra de código inválida. Cada palavra de código representa pelo menos uma fileira e pelo menos uma coluna de pixels de uma imagem de luz estruturada, e cada palavra de código corresponde a uma localização em um mapa de profundidade. Cada pixel pode representar a energia de luz recebida. Cada pixel pode ter um valor binário. Em algumas implantações, a funcionalidade do bloco 1710 pode ser realiza pelo sensor receptor 508 ilustrado na Figura 5.
[0133] No bloco 1720, o método 1700 detecta a palavra de código inválida. O método 1700 pode detectar a palavra de código inválida recuperando-se a partir da unidade de memória uma indicação de que a palavra de código inválida não está inclusa no livro de código. O método 1700 pode popular a unidade de memória com uma indicação de se cada palavra de código válida ou inválida recebida está inclusa no livro de código. Em algumas implantações, a funcionalidade do bloco 1720 pode ser realizada pelo processador 606 e pela memória 608 ilustrados na Figura 6. Em algumas implantações, a funcionalidade do bloco 1720 pode ser realizada pelo circuito de processamento 504 e pela memória/dispositivo de armazenamento 506 ilustrados na Figura 5.
[0134] No bloco 1730, o método 1700 recupera, a partir de uma unidade de memória, um conjunto de palavras de código candidatas que estão inclusas no livro de código. Cada palavra de código candidata consiste em uma primeira distância de Hamming a partir da palavra de código inválida, sendo que a primeira distância de Hamming é uma menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. A primeira distância de Hamming entre a palavra de código inválida e cada uma das palavras de código candidatas pode ser o número da pelo menos uma fileira e a pelo menos uma coluna de pixels com valores binários diferentes. O método pode popular a unidade de memória com o conjunto de palavras de código candidatas na primeira distância de Hamming a partir da palavra de código inválida, em que a primeira distância de Hamming é a menor distância de Hamming entre a palavra de código inválida e as palavras de código no livro de código. O método 1700 pode popular a unidade de memória com um segundo conjunto de palavras de código candidatas, em que o segundo conjunto de palavras de código candidatas corresponde a palavras de código que estão inclusas no livro de código, sendo que cada uma dentre o correspondente segundo conjunto de palavras de código candidatas estão a uma segunda distância de Hamming da palavra de código inválida, em que a segunda distância de Hamming é maior do que a primeira distância de Hamming. Em algumas implantações, a funcionalidade do bloco 1730 pode ser realizada pelo processador 606 e pela memória 608 ilustrados na Figura 6. Em algumas implantações, a funcionalidade do bloco 1720 pode ser realizada pelo circuito de processamento 504 e pela memória/dispositivo de armazenamento 506 ilustrados na Figura 5.
[0135] No bloco 1740, o método 1700 determina uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade, em que a pluralidade de localizações do mapa de profundidade inclui pelo menos uma localização adjacente à localização da palavra de código inválida. O método 1700 pode determinar a estimativa de profundidade computando-se uma profundidade mediana ou uma profundidade média da pluralidade de localizações do mapa de profundidade. A pluralidade de localizações do mapa de profundidade pode incluir localizações menores ou iguais a uma distância limite nas localizações a partir da localização da palavra de código inválida. A distância limite pode ser 1, V2, 2, V5, 2, ou 2\2 , correspondente a 4, 8, 12, 20, e 24 localizações na pluralidade de localizações do mapa de profundidade, respectivamente. Em algumas implantações, a funcionalidade do bloco 1720 pode ser realizada pelo processador 606 e pela memória 608 ilustrados na Figura 6. Em algumas implantações, a funcionalidade do bloco 1740 pode ser realizada pelo circuito de processamento 504 e pela memória/dispositivo de armazenamento 506 ilustrados na Figura 5.
[0136] No bloco 1750, o método 1700 associa uma profundidade a cada uma das palavras de código candidatas. Em algumas implantações, a funcionalidade do bloco 1720 pode ser realizada pelo processador 606 e pela memória 608 ilustrados na Figura 6. Em algumas implantações, a funcionalidade do bloco 1750 pode ser realizada pelo circuito de processamento 504 e pela memória/dispositivo de armazenamento 506 ilustrados na Figura 5.
[0137] No bloco 1760, o método 1700 seleciona a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade. Em algumas implantações, a funcionalidade do bloco 1720 pode ser realizada pelo processador 606 e pela memória 608 ilustrados na Figura 6. Em algumas implantações, a funcionalidade do bloco 1760 pode ser realizada pelo circuito de processamento 504 e pela memória/dispositivo de armazenamento 506 ilustrados na Figura 5.
[0138] No bloco 1770, o método 1700 atribui a profundidade associada à palavra de código candidata selecionada à localização da palavra de código inválida. Em algumas implantações, a funcionalidade do bloco 1770 pode ser realizada pelo processador 606 e pela memória 608 ilustrados na Figura 6. Em algumas implantações, a funcionalidade do bloco 1770 pode ser realizada pelo circuito de processamento 504 e pela memória/dispositivo de armazenamento 506 ilustrados na Figura 5.
[0139] Deve ser compreendido que qualquer referência a um elemento no presente documento com o uso de uma designação, por exemplo, "primeiro,” "segundo" e assim por diante não limitada de modo geral a quantidade ou ordem daqueles elementos. Ao invés disso, essas designações podem ser usadas no presente documento como um método conveniente para distinguir entre dois ou mais elementos ou instâncias de um elemento. Assim, uma referência ao primeiro e ao segundo elementos não significa que apenas dois elementos podem ser empregados lá ou que o primeiro elemento deve preceder o segundo elemento de algum modo. Além disso, salvo declarado em contrário um conjunto de elementos pode compreender um ou mais elementos. Adicionalmente, a terminologia da forma "pelo menos um dentre: A, B, ou C" usados na descrição ou nas reivindicações significam "A ou B ou C” ou qualquer combinação desses elementos.
[0140] Conforme usado no presente documento, o termo "determinar" abrange uma ampla variedade de ações. Por exemplo, "determinar" pode incluir calcular, computar, processar, derivar, investigar, pesquisar (por exemplo, pesquisar em uma tabela, por exemplo, uma tabela de consulta, um banco de dados ou outra estrutura de dados), determinar e similares. Além disso, "determinar" pode incluir receber (por exemplo, receber informações), acessar (por exemplo, acessar dados em uma memória) e similares. Além disso, "determinar" pode incluir resolver, selecionar, escolher, estabelecer e similares.
[0141] Conforme usado no presente documento, um sintagma que se refere a "pelo menos um dentre uma lista de itens" se refere a qualquer combinação desses itens, incluindo números singulares. Como um exemplo, "pelo menos um dentre: a, b ou c" está destinado a abranger: a, b, c, a-b, a-c, b-c e a-b-c.
[0142] As várias operações de métodos descritos acima podem ser executadas por quaisquer meios adequados com a capacidade de executar as operações, por exemplo, vários componentes de hardware e/ou software, circuitos e/ou módulos. De modo geral, quaisquer operações ilustradas nas Figuras podem ser executadas por meios funcionais correspondentes com a capacidade de executar as operações.
[0143] Os vários blocos lógicos ilustrativos, módulos e circuitos descritos em conexão com a presente revelação podem ser implantados ou realizados com um processador de propósito geral, um processador de sinal digital (DSP), um circuito integrado específico para aplicação (ASIC), um sinal de matriz de porta programável em campo (FPGA) ou outro dispositivo lógico programável (PLD), porta distinta ou lógica de transistor, componentes de hardware distintos ou qualquer combinação dos mesmos projetada para realizar as funções descritas no presente documento. Um processador de propósito geral pode ser um microprocessador, mas, alternativamente, o processador pode ser qualquer processador, controlador, microcontrolador ou máquina de estado comercialmente disponível. Um processador também pode ser implantado como uma combinação de dispositivos de computação (por exemplo, uma combinação de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores em combinação com um núcleo de DSP ou qualquer outra tal configuração).
[0144] Em um ou mais aspectos, as funções descritas podem ser implantadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Caso implantadas em software, as funções podem ser armazenadas ou transmitidas como uma ou mais instruções ou código em uma mídia legível por computador. As mídias legíveis por computador incluem tanto mídias de armazenamento de computador quanto mídias de comunicação, incluindo qualquer mídia que facilite a transferência de um programa de computador a partir de um local para outro. Uma mídia de armazenamento pode ser qualquer mídia disponível que pode ser acessada por um computador. A título de exemplo, e não de limitação, tais mídias legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético ou qualquer outra mídia que possa ser usada para executar ou armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessada por um computador. Além disso, qualquer conexão é denominada adequadamente como mídia legível por computador. Por exemplo, caso o software seja transmitido a partir de um site da web, servidor ou outra fonte remota com o uso de um cabo coaxial, cabo de fibra óptica, par trançado, linha de assinante digital (DSL) ou tecnologias sem fio, por exemplo, infravermelho, rádio e micro-ondas, então, o cabo coaxial, o cabo de fibra óptica, o par trançado, a DSL ou as tecnologias sem fio, por exemplo, infravermelho, rádio e micro-ondas, estão incluídos na definição de meio. Disco magnético e disco óptico, conforme usado no presente documento, incluem disco compacto (CD), disco laser, disco óptico, disco versátil digital (DVD), disquete e disco Bluray, em que os discos magnéticos reproduzem frequentemente os dados de modo magnético, enquanto os discos ópticos reproduzem os dados de modo óptico com lasers. Dessa forma, em alguns aspectos, a mídia legível por computador pode compreender mídia legível por computador não transitória (por exemplo, mídias tangíveis).
[0145] Os métodos revelados no presente documento compreendem uma ou mais etapas ou ações para obter o método descrito. As etapas e/ou ações do método podem ser intercambiadas entre si sem se afastar do escopo das reivindicações. Em outras palavras, a menos que uma ordem específica das etapas e ações seja especificada, a ordem e/ou o uso das etapas e/ou ações específicas pode ser modificado sem se afastar do escopo das reivindicações.
[0146] Adicionalmente, deve ser observado que módulos e/ou outros meios apropriados para executar os métodos e técnicas descritos no presente documento podem ser transferidos por download e/ou, de outro modo, obtidos por um terminal de usuário e/ou estação-base conforme aplicável. Por exemplo, tal dispositivo pode ser acoplado a um servidor para facilitar a transferência de meios para executar os métodos descritos no presente documento. Alternativamente, vários métodos descritos no presente documento podem ser fornecidos através de meios de armazenamento (por exemplo, RAM, ROM, uma mídia de armazenamento física, por exemplo, um disco compacto (CD) ou um disquete, etc.), de modo que um terminal de usuário e/ou estação-base possa obter os vários métodos mediante acoplamento ou fornecimento dos meios de armazenamento para o dispositivo. Além disso, qualquer outra técnica adequada para fornecer os métodos e as técnicas descritos no presente documento para um dispositivo pode ser utilizada.
[0147] Deve-se compreender que as reivindicações não se limitam à configuração precisa e aos componentes ilustrados acima. Várias modificações, alterações e variações podem ser feitas na disposição, operação e nos detalhes dos métodos e aparelho descritos acima sem se afastar do escopo das reivindicações.

Claims (16)

1. Método para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada, caracterizado pelo fato de que compreende: receber uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida, cada uma dentre a pluralidade de palavras de código válidas inclusas em um livro de código de palavras de código válidas, o livro de código não incluindo a pelo menos uma palavra de código inválida, cada palavra de código representando pelo menos uma fileira e pelo menos uma coluna de pixels de uma imagem de luz estruturada, e cada palavra de código correspondente a uma localização em um mapa de profundidade; detectar a palavra de código inválida; recuperar palavras de código candidatas que estão inclusas no livro de código a partir de uma unidade de memória, a unidade de memória populada com palavras de código candidatas em uma primeira distância de Hamming a partir da palavra de código inválida e palavras de código candidatas em uma segunda distância de Hamming a partir da palavra de código inválida, a primeira distância de Hamming sendo uma menor distância de Hamming entre a pelo menos uma palavra de código inválida e as palavras de código no livro de código, e a segunda distância de Hamming sendo maior do que a primeira distância de Hamming; determinar uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade que inclui pelo menos uma localização adjacente à localização de palavra de código inválida no mapa de profundidade; associar uma profundidade a cada uma das palavras de código candidatas; selecionar a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade determinada; e atribuir a profundidade associada à palavra de código candidata selecionada à localização da palavra de código inválida.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que cada pixel na pelo menos uma coluna de pixels representa energia de luz recebida, e em que cada pixel na pelo menos uma coluna de pixels tem um valor binário.
3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que detectar a pelo menos uma palavra de código inválida compreende recuperar a partir da unidade de memória uma indicação de que a palavra de código inválida não está inclusa no livro de código.
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente popular a unidade de memória com uma indicação de se cada pluralidade de palavras de código recebida e a pelo menos uma palavra de código inválida estão inclusas no livro de código.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a primeira distância de Hamming entre a pelo menos uma palavra de código inválida e cada uma das palavras de código candidatas é o número da pelo menos uma fileira e da pelo menos uma coluna de pixels com valores binários diferentes.
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que determinar a estimativa de profundidade compreende computar uma profundidade mediana ou uma profundidade média da pluralidade de localizações do mapa de profundidade.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a pluralidade de localizações do mapa de profundidade inclui localizações menores ou iguais a uma distância limite em localizações a partir da localização da palavra de código inválida.
8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que a distância limite é 1, V2, 2, V5, 2 ou 2V2 , correspondente a 4, 8, 12, 20 e 24 localizações na pluralidade de localizações do mapa de profundidade, respectivamente.
9. Aparelho para corrigir erros em um mapa de profundidade gerado por um sistema de luz estruturada, caracterizado pelo fato de que compreende: meios para armazenar uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida, cada uma dentre a pluralidade de palavras de código válidas inclusas em um livro de código de palavras de código válidas, o livro de código não incluindo a pelo menos uma palavra de código inválida, cada palavra de código representando pelo menos uma fileira e pelo menos uma coluna de pixels de uma imagem de luz estruturada, e cada palavra de código correspondente a uma localização em um mapa de profundidade; meios para receber uma pluralidade de palavras de código válidas e pelo menos uma palavra de código inválida, meios para detectar a palavra de código inválida; meios para recuperar, a partir dos meios para armazenar, palavras de código candidatas que estão inclusas no livro de código, os meios para armazenar populados com um conjunto de palavras de código candidatas em uma primeira distância de Hamming a partir da palavra de código inválida e um segundo conjunto de palavras de código candidatas em uma segunda distância de Hamming a partir da palavra de código inválida, a primeira distância de Hamming sendo uma menor distância de Hamming entre a pelo menos uma palavra de código inválida e as palavras de código no livro de código, e a segunda distância de Hamming maior do que a primeira distância de Hamming; meios para determinar uma estimativa de profundidade para uma pluralidade de localizações do mapa de profundidade que inclui pelo menos uma localização adjacente à localização de palavra de código inválida no mapa de profundidade; meios para associar uma profundidade a cada uma das palavras de código candidatas; meios para selecionar a palavra de código candidata que tem uma profundidade associada mais próxima à estimativa de profundidade determinada; e meios para atribuir a profundidade associada à palavra de código candidata selecionada à localização da palavra de código inválida.
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os meios compreendem uma unidade de memória, em que os meios para receber compreendem um receptor que tem um processador.
11. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que cada pixel representa energia de luz recebida, em que cada pixel é representado por um valor binário.
12. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os meios para detectar detectam a palavra de código inválida ao recuperar, a partir dos meios de armazenamento, uma indicação de que a palavra de código inválida não está inclusa no livro de código.
13. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente meios para popular os meios para armazenar com uma indicação de se cada palavra de código recebida está inclusa no livro de código.
14. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os meios para determinar são configurados para estimar a estimativa de profundidade ao computar uma profundidade mediana ou uma profundidade média da pluralidade de localizações do mapa de profundidade.
15. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que a pluralidade de localizações do mapa de profundidade inclui localizações menores ou iguais a uma distância limite em localizações a partir da localização das palavras de código inválidas, em que a distância limite é 1, V2, 2, V5, 2, ou 2V2 , correspondente a 4, 8, 12, 20 e 24 localizações na pluralidade de localizações do mapa de profundidade, respectivamente.
16. Memória caracterizada pelo fato de que compreende instruções armazenadas na mesma, as instruções sendo executadas por um computador para realizar o método conforme definido em qualquer uma das reivindicações 1 a 8.
BR112018002739-1A 2015-08-14 2016-07-20 Correção de erro de luz codificada eficiente em termos de memória BR112018002739B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/827,088 2015-08-14
US14/827,088 US9635339B2 (en) 2015-08-14 2015-08-14 Memory-efficient coded light error correction
PCT/US2016/043141 WO2017030727A1 (en) 2015-08-14 2016-07-20 Memory-efficient coded light error correction

Publications (2)

Publication Number Publication Date
BR112018002739A2 BR112018002739A2 (pt) 2018-10-02
BR112018002739B1 true BR112018002739B1 (pt) 2023-10-24

Family

ID=56801769

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112018002739-1A BR112018002739B1 (pt) 2015-08-14 2016-07-20 Correção de erro de luz codificada eficiente em termos de memória

Country Status (7)

Country Link
US (1) US9635339B2 (pt)
EP (1) EP3335192B1 (pt)
JP (1) JP6776333B2 (pt)
KR (1) KR102507101B1 (pt)
CN (1) CN107851310B (pt)
BR (1) BR112018002739B1 (pt)
WO (1) WO2017030727A1 (pt)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8531650B2 (en) 2008-07-08 2013-09-10 Chiaro Technologies LLC Multiple channel locating
US9562760B2 (en) 2014-03-10 2017-02-07 Cognex Corporation Spatially self-similar patterned illumination for depth imaging
US9948920B2 (en) 2015-02-27 2018-04-17 Qualcomm Incorporated Systems and methods for error correction in structured light
US10068338B2 (en) 2015-03-12 2018-09-04 Qualcomm Incorporated Active sensing spatial resolution improvement through multiple receivers and code reuse
US9846943B2 (en) 2015-08-31 2017-12-19 Qualcomm Incorporated Code domain power control for structured light
EP3444782B1 (en) * 2017-08-19 2022-03-30 Cognex Corporation Coding distance topologies for structured light patterns for 3d reconstruction
CN109635619B (zh) * 2017-08-19 2021-08-31 康耐视公司 用于三维重建的结构化光图案的编码距离拓扑
WO2019107180A1 (ja) * 2017-12-01 2019-06-06 ソニー株式会社 符号化装置、符号化方法、復号装置、および復号方法
US11262192B2 (en) 2017-12-12 2022-03-01 Samsung Electronics Co., Ltd. High contrast structured light patterns for QIS sensors
US10740913B2 (en) 2017-12-12 2020-08-11 Samsung Electronics Co., Ltd. Ultrafast, robust and efficient depth estimation for structured-light based 3D camera system
US11297300B2 (en) 2018-01-29 2022-04-05 Samsung Electronics Co., Ltd. Robust structured-light patterns for 3D camera system
KR102645539B1 (ko) 2019-01-18 2024-03-11 삼성전자주식회사 구조적 깊이 카메라 시스템에서 인코딩 장치 및 방법

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104608A (en) * 1977-03-30 1978-08-01 The United States Of America As Represented By The Secretary Of The Navy Heave meter
US4653104A (en) 1984-09-24 1987-03-24 Westinghouse Electric Corp. Optical three-dimensional digital data acquisition system
US5226084A (en) 1990-12-05 1993-07-06 Digital Voice Systems, Inc. Methods for speech quantization and error correction
JP3481631B2 (ja) 1995-06-07 2003-12-22 ザ トラスティース オブ コロンビア ユニヴァーシティー イン ザ シティー オブ ニューヨーク 能動型照明及びデフォーカスに起因する画像中の相対的なぼけを用いる物体の3次元形状を決定する装置及び方法
CA2306515A1 (en) 2000-04-25 2001-10-25 Inspeck Inc. Internet stereo vision, 3d digitizing, and motion capture camera
FI109633B (fi) 2001-01-24 2002-09-13 Gamecluster Ltd Oy Menetelmä videokuvan pakkauksen nopeuttamiseksi ja/tai sen laadun parantamiseksi
WO2004001332A1 (en) 2002-06-19 2003-12-31 Canesta, Inc. System and method for determining 3-d coordinates of a surface using a coded array
US7146036B2 (en) 2003-02-03 2006-12-05 Hewlett-Packard Development Company, L.P. Multiframe correspondence estimation
CA2435935A1 (en) 2003-07-24 2005-01-24 Guylain Lemelin Optical 3d digitizer with enlarged non-ambiguity zone
US7231578B2 (en) * 2004-04-02 2007-06-12 Hitachi Global Storage Technologies Netherlands B.V. Techniques for detecting and correcting errors using multiple interleave erasure pointers
US7916932B2 (en) 2005-02-16 2011-03-29 In-G Co., Ltd. Method and system of structural light-based 3D depth imaging using signal separation coding and error correction thereof
JP4856605B2 (ja) * 2006-08-31 2012-01-18 パナソニック株式会社 符号化方法、符号化装置、及び送信装置
DE102006048234A1 (de) 2006-10-11 2008-04-17 Steinbichler Optotechnik Gmbh Verfahren und Vorrichtung zur Bestimmung der 3D-Koordinaten eines Objekts
US20090322859A1 (en) 2008-03-20 2009-12-31 Shelton Damion M Method and System for 3D Imaging Using a Spacetime Coded Laser Projection System
TWI420401B (zh) 2008-06-11 2013-12-21 Vatics Inc 一種回授式物件偵測演算法
US8537200B2 (en) 2009-10-23 2013-09-17 Qualcomm Incorporated Depth map generation techniques for conversion of 2D video data to 3D video data
WO2011060579A1 (en) 2009-11-18 2011-05-26 Industrial Technology Research Institute Method for generating depth maps from monocular images and systems using the same
GB2479784B (en) * 2010-04-23 2012-11-07 Nds Ltd Image scaling
WO2011139734A2 (en) 2010-04-27 2011-11-10 Sanjay Nichani Method for moving object detection using an image sensor and structured light
US8774267B2 (en) * 2010-07-07 2014-07-08 Spinella Ip Holdings, Inc. System and method for transmission, processing, and rendering of stereoscopic and multi-view images
US8933927B2 (en) 2010-09-02 2015-01-13 Samsung Electronics Co., Ltd. Display system with image conversion mechanism and method of operation thereof
US20120056982A1 (en) 2010-09-08 2012-03-08 Microsoft Corporation Depth camera based on structured light and stereo vision
US9013634B2 (en) 2010-09-14 2015-04-21 Adobe Systems Incorporated Methods and apparatus for video completion
US8908011B2 (en) 2010-09-17 2014-12-09 Panasonic Corporation Three-dimensional video creating device and three-dimensional video creating method
US20120086803A1 (en) 2010-10-11 2012-04-12 Malzbender Thomas G Method and system for distance estimation using projected symbol sequences
US8429495B2 (en) 2010-10-19 2013-04-23 Mosaid Technologies Incorporated Error detection and correction codes for channels and memories with incomplete error characteristics
US8531535B2 (en) 2010-10-28 2013-09-10 Google Inc. Methods and systems for processing a video for stabilization and retargeting
JP2012141252A (ja) 2011-01-06 2012-07-26 Nikon Corp 三次元形状測定装置
US8724854B2 (en) 2011-04-08 2014-05-13 Adobe Systems Incorporated Methods and apparatus for robust video stabilization
US9482529B2 (en) 2011-04-15 2016-11-01 Faro Technologies, Inc. Three-dimensional coordinate scanner and method of operation
MX2014001614A (es) * 2011-08-09 2014-05-28 Samsung Electronics Co Ltd Metodo y aparato para codificar un mapa de profundidad de datos de video de varios puntos de vista, y metodo y aparato para decodificar el mapa de profundidad codificado.
US9491441B2 (en) 2011-08-30 2016-11-08 Microsoft Technology Licensing, Llc Method to extend laser depth map range
WO2013068548A2 (en) 2011-11-11 2013-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Efficient multi-view coding using depth-map estimate for a dependent view
US8270465B1 (en) 2011-11-15 2012-09-18 Xw Llc Timing and time information extraction from a phase modulated signal in a radio controlled clock receiver
KR101272573B1 (ko) * 2011-11-17 2013-06-10 재단법인대구경북과학기술원 구조광 패턴 기반의 깊이 정보 추정 장치 및 방법
JP5918984B2 (ja) 2011-12-06 2016-05-18 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、およびプログラム
KR20130119380A (ko) * 2012-04-23 2013-10-31 삼성전자주식회사 슬라이스 헤더를 이용하는 3차원 비디오 부호화 방법 및 그 장치, 다시점 비디오 복호화 방법 및 그 장치
US9188433B2 (en) 2012-05-24 2015-11-17 Qualcomm Incorporated Code in affine-invariant spatial mask
US9111135B2 (en) 2012-06-25 2015-08-18 Aquifi, Inc. Systems and methods for tracking human hands using parts based template matching using corresponding pixels in bounded regions of a sequence of frames that are a specified distance interval from a reference camera
CN102831582B (zh) 2012-07-27 2015-08-12 湖南大学 一种微软体感装置深度图像增强方法
BR112015006178B1 (pt) * 2012-09-21 2022-11-16 Nokia Technologies Oy Métodos, aparelhos e meio não transitório legível por computador para codificação e decodificação de vídeo
US10368053B2 (en) 2012-11-14 2019-07-30 Qualcomm Incorporated Structured light active depth sensing systems combining multiple images to compensate for differences in reflectivity and/or absorption
US9071756B2 (en) 2012-12-11 2015-06-30 Facebook, Inc. Systems and methods for digital video stabilization via constraint-based rotation smoothing
KR101995340B1 (ko) 2013-01-02 2019-07-02 엘지이노텍 주식회사 적외선 광원 제어방법
JP5794240B2 (ja) 2013-02-05 2015-10-14 ソニー株式会社 誤り検出訂正装置、誤り検出訂正方法、情報処理装置、および、プログラム
US10140765B2 (en) 2013-02-25 2018-11-27 Google Llc Staged camera traversal for three dimensional environment
US9142019B2 (en) 2013-02-28 2015-09-22 Google Technology Holdings LLC System for 2D/3D spatial feature processing
US9270386B2 (en) 2013-06-24 2016-02-23 Intel Corporation Error detecting and correcting structured light patterns
WO2015065386A1 (en) 2013-10-30 2015-05-07 Intel Corporation Image capture feedback
CN103702098B (zh) * 2013-12-09 2015-12-30 上海交通大学 一种时空域联合约束的三视点立体视频深度提取方法
US9542749B2 (en) * 2014-01-06 2017-01-10 Microsoft Technology Licensing, Llc Fast general multipath correction in time-of-flight imaging
CN103796004B (zh) 2014-02-13 2015-09-30 西安交通大学 一种主动结构光的双目深度感知方法
US9407896B2 (en) * 2014-03-24 2016-08-02 Hong Kong Applied Science and Technology Research Institute Company, Limited Multi-view synthesis in real-time with fallback to 2D from 3D to reduce flicker in low or unstable stereo-matching image regions
US10349037B2 (en) 2014-04-03 2019-07-09 Ams Sensors Singapore Pte. Ltd. Structured-stereo imaging assembly including separate imagers for different wavelengths
US20160050372A1 (en) 2014-08-15 2016-02-18 Qualcomm Incorporated Systems and methods for depth enhanced and content aware video stabilization
CN104199922B (zh) * 2014-09-01 2019-05-03 中国科学院自动化研究所 一种基于局部相似哈希算法的大规模图像库检索方法
CN104639933A (zh) * 2015-01-07 2015-05-20 前海艾道隆科技(深圳)有限公司 一种立体视图的深度图实时获取方法及系统
US9948920B2 (en) 2015-02-27 2018-04-17 Qualcomm Incorporated Systems and methods for error correction in structured light
US10068338B2 (en) 2015-03-12 2018-09-04 Qualcomm Incorporated Active sensing spatial resolution improvement through multiple receivers and code reuse
US9530215B2 (en) 2015-03-20 2016-12-27 Qualcomm Incorporated Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology

Also Published As

Publication number Publication date
JP6776333B2 (ja) 2020-10-28
BR112018002739A2 (pt) 2018-10-02
EP3335192A1 (en) 2018-06-20
WO2017030727A1 (en) 2017-02-23
US9635339B2 (en) 2017-04-25
CN107851310B (zh) 2021-08-10
KR102507101B1 (ko) 2023-03-06
KR20180041671A (ko) 2018-04-24
EP3335192B1 (en) 2019-07-03
JP2018533104A (ja) 2018-11-08
US20170048507A1 (en) 2017-02-16
CN107851310A (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
BR112018002739B1 (pt) Correção de erro de luz codificada eficiente em termos de memória
EP3262607B1 (en) Systems and methods for error correction in structured light
US9188433B2 (en) Code in affine-invariant spatial mask
US9530215B2 (en) Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology
KR102168257B1 (ko) 구조형 광에 대한 코드 도메인 파워 제어
US10574947B2 (en) Object reconstruction in disparity maps using displaced shadow outlines
US10068338B2 (en) Active sensing spatial resolution improvement through multiple receivers and code reuse
BR112016029616B1 (pt) Padrão de luz codificada tendo simetria par

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 20/07/2016, OBSERVADAS AS CONDICOES LEGAIS