“MÉTODO DE CODIFICAÇÃO DE QUADROS DE VÍDEO, TERMINAL DO ASSINANTE E CODIFICADOR DE VÍDEO”.
Campo da Invenção A presente invenção relaciona a um método e a um aparelho para codificar e decodificar o quadro de vídeo no sistema de telecomunicações, quando o quadro de vídeo é constituído de uma cadeia de quadros estacionários consecutivos, na qual os quadros a serem transmitidos são tipicamente divididos em blocos ou segmentos, por exemplo, grupos de pixels, específicos para cada quadro e os dados em cada bloco do quadro tipicamente compreendem a informação indicando a luminância, a cor e a localização do bloco de quadro.
Descrição da Técnica Anterior Ao transferir os quadros dc vídeo nos sistemas de telecomunicações, tal como os fones de vídeo, sistemas de vídeo conferência ou conexão Internet, é uma tarefa em demanda devido à ampla quantidade de dados necessários para transferir o quadro de vídeo, uma vez que, mais bits são necessários para transferir os dados e uma taxa de transmissão de dados mais elevada deve ser usada. Vários métodos têm sido desenvolvidos para solucionar este problema, Para transferir um quadro, o quadro é usualmente dividido em blocos de quadros cujo tamanho é selecionado para adequar ao sistema. A informação do bloco de quadro geralmente compreende a informação na luminância, na cor e na localização do bloco de quadro no próprio quadro. Os dados do bloco de quadro são compactados por cada bloco usando o método de codificação desejado. A compressão é baseada na remoção dos dados menos significativos. Os métodos de compactação são divididos primeiramente em três classes: redução dc redundância espectral, redução dc redundância espacial c redução dc redundância temporal. Várias combinações destes métodos são tipicamente usadas na compressão. O método dc cor YUV. por exemplo, c aplicado a redução de redundância espectral. O modelo de cor YUV utiliza o fato de que o olho humano é mais sensível a mudanças na luminância do que na cominância, isto é na cor. O modelo YUV tem um componente de luminância Y e dois componentes de erominância (U, V), Os componentes de crominância são também sub-amostrados. Por exemplo, o bloco de luminância de acordo com a codificação de vídeo padrão H.263 é de 16x16 pixels, e ambos os blocos de crominância, o qual cobre a mesma área como do bloco de luminância, são de 8x8 pixels. A combinação de um bloco de luminância e dois blocos de crominância é neste padrão denominado de macro bloco.
Para reduzir a redundância espacial, uma transformação de co-seno discreta (DCT), por exemplo, é usada, na qual o bloco a ser compactado é preferivelmente de 8x8 pixels. Na DCT, a apresentação do pixel do bloco de quadro é transformada em uma apresentação de ffeqüência-espaço. Em adição, apenas as ffeqüências de sinal que existem em um bloco de quadro têm coeficientes de alta-amplitude, considerando que os coeficientes dos sinais que não existem no bloco de quadro são próximos de zero. A DCT é também uma transformação de pouca-perda e a interferência é causada ao sinal apenas na quantização. A redundância temporal pode ser reduzida utilizando o fato de que os quadros consecutivos usualmente assemelham-se a cada outro, assim ao invés de compactar cada quadro individual, os dados de movimento dos blocos de quadro são gerados. O principio básico é como a seguir: tão bom quanto possível o bloco de referência o qual tem sido codificado anteriormente é encontrado para o bloco de quadro a ser codificado, o movimento entre o bloco de referência e o bloco de quadro a ser codificado é modelado e os coeficientes de vetor de movimento calculado são transmitidos para o receptor. A diferença entre o bloco a ser codificado e o bloco de referência é indicada como um componente ou quadro de erro de predição. O problema é encontrar um bloco de referência o qual produz uma boa eficiência de codificação quanto possível (uma qualidade de imagem suficientemente boa com uma menor quantidade de bits quanto possível) e um alto cálculo da capacidade, e assim também o tempo de cálculo, solicitado pela comparação.
Breve Descrição da Invenção É um objeto da invenção prover um método melhorado para codificar os quadros de vídeo, um codificador de vídeo melhorado e um terminal do assinante melhorado. A invenção é baseada no uso dos dados de reconstrução do quadro de um ou mais quadros de referência ou blocos de referência e de um ou mais blocos vizinhos codificados anteriormente na codificação dos dados de reconstrução do quadro. Os dados de reconstrução do quadro e os dados de movimento codificados com o método da invenção ou com outro método conhecido é selecionado para uso dependendo de como a eficiência de codificação desejada é obtida com uma qualidade suficiente de imagem.
Este é alcançado pelo método de codificação de quadros de vídeo em um sistema telecomunicação, que compreende: - formar um quadro de vídeo de quadros estacionários consecutivos; - armazenar os dados de reconstrução de quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - definir por meio dos dados de movimento de um ou mais blocos vizinhos codificados anteriormente os dados de movimento do bloco a ser codificado, cujo bloco vizinho é formado por meio do quadro de referência armazenado; - definir os dados de reconstrução do quadro do quadro a ser codificado; - selecionar para uso os dados de reconstrução do quadro e os dados de movimento representando o bloco a ser codificado, os quais provêem uma eficiência de codificação pré-defmida com uma qualidade de imagem pré-definida.
Este é alcançado pelo método de codificação de quadros de vídeo em um sistema de telecomunicação, que compreende: - formar um quadro de vídeo dos quadros estacionários consecutivos; - armazenar os dados de reconstrução do quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - definir os dados de movimento de um bloco de quadro a ser codificado usando apenas os blocos vizinhos que tem o mesmo quadro de referência usado para codificar os dados de reconstrução do quadro do bloco a ser codificado; - selecionar para uso os dados de reconstrução do quadro e os dados de movimento, os quais provêem uma eficiência de codificação pré-definida com uma qualidade de imagem pré-definida. A invenção também relata um terminal do assinante que compreende: - dispositivo para formar um quadro de vídeo dos quadros estacionários consecutivos; - dispositivo para armazenar os dados de reconstrução de quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - dispositivo para definir por meio dos dados de movimento de um ou mais blocos vizinhos codificados anteriormente os dados de movimento do bloco a ser codificado, cujo bloco vizinho é formado por meio do quadro de referência armazenado; - dispositivo para definir os dados de reconstrução do quadro do quadro a ser codificado; - dispositivo para selecionar o uso dos dados de reconstrução do quadro e os dados do movimento representando o bloco a ser codificado, os quais provêem uma eficiência de codificação pré-defínida com uma qualidade de imagem pré-definida. A invenção também relaciona a um terminal do assinante que compreende: - dispositivo para formar um quadro de vídeo dos quadros estacionários consecutivos; - dispositivo para armazenar os dados de reconstrução do quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - dispositivo para definir os dados de movimento do bloco de quadro a ser codificado usando apenas os blocos vizinhos que possuem o mesmo quadro de referência usado para codificar os dados de reconstrução do quadro do bloco a ser codificado; - dispositivo para selecionar para uso os dados de reconstrução do quadro e os dados de movimento, os quais provêem uma eficiência de codificação pré-definida com uma qualidade de imagem pré-definida. A invenção também relaciona a um codificador de vídeo que compreende: - dispositivo para formar um quadro de vídeo dos quadros estacionários consecutivos; - dispositivo para armazenar os dados de reconstrução do quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; ■ dispositivo para definir por meio dos dados de movimento de um ou mais dos blocos vizinhos codificados anteriormente os dados de movimento do bloco a ser codificado, cujo bloco vizinho é formado por meio do quadro de referência armazenado; - dispositivo para definir os dados de reconstrução do quadro do quadro a ser codificado; - dispositivo para selecionar para uso os dados de reconstrução do quadro e os dados de movimento representando o bloco a ser codificado, os quais proveem uma eficiência de codificação pré-definida com uma qualidade de imagem pré-defmida. A invenção também relaciona a um codificador de vídeo que compreende: - dispositivo para formar um quadro de vídeo dos quadros estacionários consecutivos; - dispositivo para armazenar os dados de reconstrução do quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - dispositivo para definir os dados de movimento do bloco de quadro a ser codificado usando apenas os blocos vizinhos os quais possuem o mesmo quadro de referência usado para codificar os dados de reconstrução do quadro do bloco a ser codificado; - dispositivo para selecionar para uso os dados de reconstrução do quadro e os dados de movimento, os quais fornecem uma eficiência de codificação pré-definida com uma qualidade de imagem pré-definida. A invenção também relaciona a um programa de computador o qual pode ser lido pelo computador e o qual executa o método de codificação dos quadros de vídeo no sistema de telecomunicações, o qual compreende: - formar um quadro de vídeo dos quadros estacionários consecutivos; - armazenar os dados de reconstrução do quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - definir por meio dos dados de movimento de um ou mais blocos vizinhos codificados anteriormente os dados de movimento do bloco a ser codificado, cujo bloco vizinho é formado por meio do quadro de referência armazenado; - definir os dados de reconstrução do quadro do quadro a ser codificado; - selecionar para uso os dados de reconstrução do quadro e os dados de movimento representando o bloco a ser codificado, os quais provêem uma eficiência de codificação pré-definida com uma qualidade de imagem pré-definida. A invenção também relaciona a um programa de computador o qual pode ser lido pelo computador e o qual executa o método de codificação dos quadros de vídeo no sistema de telecomunicações, o qual compreende: - formar um quadro de vídeo dos quadros estacionários consecutivos; ■ armazenar os dados de reconstrução do quadro de pelo menos um quadro como um quadro de referência e os dados de movimento dos blocos vizinhos codificados anteriormente; - definir os dados de movimento de um bloco de quadro a ser codificado usando apenas os blocos vizinhos os quais possuem o mesmo quadro de referência usado para codificar os dados de reconstrução do quadro do bloco a ser codificado; - selecionar para uso os dados de reconstrução do quadro e os dados de movimento, os quais provêem uma eficiência de codificação pré-definida com uma qualidade de imagem pré-definida. O método e o aparelho da invenção fornecem economias no tempo de cálculo e na capacidade enquanto a qualidade da imagem permanece adequada.
Breve Descrição das Figuras A seguir, a invenção será descrita por meio das incorporações preferidas, com referência aos desenhos apensos, nos quais: Figura 1 - ilustra um exemplo do sistema de telecomunicações;
Figura 2a a 2c - ilustra um processo de estimação dos vetores usando um quadro de referência;
Figura 3 - ilustra um processo de estimação de um vetor de movimento usando os blocos vizinhos;
Figura 4 - é um fluxograma o qual apresenta os passos do método de encontrar um bloco de referência e a predição do vetor de movimento;
Figura 5 - ilustra um exemplo de encontrar um bloco de referência e a predição do vetor de movimento;
Figura 6 - ilustra um exemplo de codificador;
Figura 7 - ilustra um exemplo de um decodificador;
Figura 8 - ilustra um exemplo de um terminal do assinante;
Figura 9 - ilustra um segundo exemplo de encontro de um bloco de referência e a predição do vetor de movimento.
Descrição Detalhada da Invenção A Figura 1 ilustra de uma maneira simplificada um sistema de transmissão de dados digital para o qual a solução da invenção pode ser aplicada. Este é uma parte do sistema de radio celular compreendendo uma estação base 104 a qual está em contato de rádio 108 e 110 com os terminais do assinante 100 e 102 os quais podem ter terminais instalados fixamente ou em um veículo ou terminais portáteis. Os transceptores na estação base são conectados a uma unidade de antena, com a qual o enlace de rádio para os terminais do assinante é implementado. A estação base está também em contato com o controlador da estação base 106, o qual transmite as conexões dos terminais em outra parte da rede. O controlador da estação base controla de maneira centralizada várias estações base conectadas a este. A unidade de controle no controlador da estação base gerencia o controle de chamada, o controle do tráfego de dados, o gerenciamento de mobilidade, a coleção de estatísticas, e a sinalização. O sistema de rádio celular pode também ter uma conexão à rede de telefonia pública, neste caso o transcodificador pertencendo ao sistema transforma os diferentes formatos de codificação digital de voz usado entre a rede de telefonia pública e a rede de rádio celular para adequar a cada outro, por exemplo, do formato de 64 kbit/s da rede fixa para o formato da rede de rádio celular (por exemplo, 13 kbit/s) e vice versa. E óbvio para uma pessoa versada na técnica que a invenção pode também ser aplicada aos sistemas de telecomunicação fixo, tal como a Internet. O objetivo da codificação de um quadro de vídeo é reduzir o número de bits solicitado para transferir o quadro. As Figuras 2a a 2c apresentam de uma maneira simplificada o método de codificação do movimento da técnica anterior, o qual é baseado na predição do vetor de movimento do bloco de quadro (o termo bloco é também usado no texto) usando o quadro de referência armazenado anteriormente na memória. Este tipo de codificação é denominada de inter-codificação, o que significa utilizar as similaridades entre os quadros na cadeia de quadros na codificação de compressão.
No exemplo das Figuras 2a a 2c, o quadro de referência 206 tem sido dividido em blocos ou segmentos e, codificados anteriormente. As Figuras 2b a 2c não apresentam os blocos de quadro. O quadro de referência pode estar antes ou após o quadro a ser codificado na cadeia de quadros. A Figura 2a apresenta o quadro atual sendo codificado 204, o qual é também dividido em blocos, dos quais apenas um bloco 200 é apresentado para uma melhor compreensão. O tamanho dos blocos é N x M. Os blocos são tipicamente quadrados, isto é N=M, mas pode também ser retangular, por exemplo, na sua geometria. O bloco atual 200 e o bloco de referência 214 apresentado na Figura 2c não necessitam ser geometricamente similar, porque na realidade, também, os objetos filmados mudam, tal como girar ou rotacionar. O tamanho e a forma do bloco é definido de forma adequada a cada situação levando em consideração os assuntos a seguir, por exemplo: um bloco de tamanho pequeno provê uma melhor imagem, mas reduz a confiabilidade do vetor de movimento definido, porque a definição é feita por meio de apenas alguns pixels. Mais os dados de vetor de movimento devem também ser gerados, se blocos menores forem usados, por isso então o quadro deve ser dividido em um maior número de blocos. Em adição, os algoritmos rápidos na definição dos vetores de movimento são mais eficientes quando o tamanho do bloco é maior. Por exemplo, em alguns dos padrões de codificação de vídeo atual N = M = 16.
Para estimar o movimento, associando o bloco de referência quanto for possível é encontrado no quadro de referência 206 para o bloco 200 a ser codificado, este sendo 214 na Figura 2c. A adequação dos blocos de referência depende do critério de seleção. O propósito do critério de seleção é tipicamente encontrar um bloco, por meio do qual é possível minimizar o número de bits requerido, para transferir o bloco sendo codificado de tal maneira que a qualidade da imagem permanece suficientemente boa. Assim, o critério de seleção pode variar dependendo do objeto da aplicação. A busca é executada usualmente no quadro de referência 206 em uma área a qual está em uma localização de quadro correspondendo ao bloco 200 sendo codificado no quadro atual 204 e em uma certa área em uma proximidade imediata, descrita pela área de busca 210 nas Figuras 2b e 2c. Ao limitar a área de busca como menor do que todo o quadro de referência, o tempo usado na busca e o cálculo solicitado são reduzidos. O tamanho da área de busca é definido adequado ao objeto da aplicação, por exemplo, ao determinar com base nos quadros do quadro em cadeia codificado anteriormente, se o movimento for devagar ou rápido; se o movimento for devagar, a área de busca pode ser limitada a menor do que se o movimento for rápido. A busca é tipicamente conduzida nas vizinhanças do vetor de movimento predito. A localização do bloco de quadro é neste exemplo das Figuras 2a a 2c indicada com as coordenadas (x, y) no canto esquerdo superior do bloco. A coordenada x indica a localização do pixel ou do bloco na direção horizontal e a coordenada y a localização do pixel ou bloco na direção vertical. As coordenadas do bloco sendo codificadas são marcadas como 202. Na Figura 2c, o melhor possível bloco do quadro de referência 214 tem sido encontrado na área de busca 210. As coordenadas (x, y) 208 são estas da localização, onde o bloco 200 sendo codificado seria se este não tiver sido movido e assim o mesmo das coordenadas 202. Elas são apresentadas para o propósito de ilustração. O bloco 212 descreve que o bloco 200 não tinha movido e é também apresentado para propósito de ilustração. O movimento do bloco do quadro sendo codificado pode agora ser indicado como uma troca de coordenadas (x+u, y+v) 216 para as coordenadas (x, y) 208. Em geral, as coordenadas (x, y) são definidas como origo, assim o vetor de movimento 218 do bloco sendo codificado pode ser indicado como as coordenadas (u, v). O vetor de movimento pode também ser indicado usando a definição dos coeficientes do vetor de movimento e dos modelos de movimento. A Figura 3 apresenta de uma maneira simplificada os métodos de codificação de movimento da técnica anterior, os quais são baseados na predição dos coeficientes do vetor de movimento do bloco de quadro sendo codificado usando os blocos vizinhos codificados anteriormente do quadro sendo codificado. Os blocos vizinhos do bloco de quadro 304 sendo codificado, os quais já foram codificados anteriormente e os quais são usados para predizer os coeficientes de vetor de movimento do bloco do quadro sendo codificado são aqui referenciados como candidatos de predição. Na Figura 3, os candidatos de predição são os blocos vizinhos 300,302, 306. Os candidatos de predição 300, 302, 306 são no exemplo da Figura 3 marcados para identificar com certas localizações de pixel 308, 310, 312. O candidato de predição 306 está no lado esquerdo do bloco sendo codificado e marcado com a localização do pixel 308, o candidato de predição 300 está acima do bloco sendo codificado e marcado com a localização de pixel 310 e o candidato de predição 302 está no canto direito superior do bloco sendo codificado e marcado com a localização de pixel 312. Como visto da Figura 3, as localizações de pixel 308, 310,312 residem nos seus blocos em uma proximidade próxima do bloco 304 sendo codificado. Deveria ser observado que o número e a localização dos blocos vizinhos com relação ao bloco sendo codificado pode diferenciar destes apresentados na Figura 3.
No caso apresentado na Figura 3, todos os três candidatos de predição são usados na predição dos coeficientes do vetor de movimento do bloco 304 sendo codificado. Os coeficientes do vetor de movimento requerido podem, por exemplo, ser predito como um mediano dos coeficientes de vetor de movimento obtido destes candidatos de predição. É também possível usar apenas um candidato de predição na predição dos coeficientes do vetor de movimento do bloco 304, neste caso os coeficientes são obtidos dos coeficientes do vetor de movimento do bloco de predição 306, os coeficientes do vetor de movimento do bloco de predição 300 ou dos coeficientes do vetor de movimento do bloco de predição 302.
Os blocos vizinhos codificados anteriormente que são mais distantes do que na proximidade imediata podem também ser usados, mas neste caso deveria ser levado em consideração que a diferença no movimento dos blocos usualmente aumenta enquanto a distância aumenta. A codificação inter e intra tipicamente são combinadas bloco a bloco na codificação dos quadros de vídeo para obter o melhor resultado possível. O quadro codificado-intra pode ser enviado em intervalos adequados para prevenir o acúmulo de possíveis erros causados pelo canal de transmissão de um quadro para outro, fmalmente ocasionando a falha da decodificação do quadro.
Os métodos apresentados nas Figuras 2a a 2c e 3 podem ser usados em ambos na codificação e na decodificação. O método usado pelo codificador com os dados do quadro necessários é transmitido para o decodificador como um fluxo de bit.
Deveria ser observado que como apresentado na Figura 3, os blocos podem também ser segmentados. A segmentação é preferível em situações onde partes diferentes do quadro movem de diferentes formas, por exemplo, o fundo permanece o mesmo enquanto um único objeto, tal como uma pessoa, um carro ou similar, move. O bloco do quadro pode ser segmentado ao dividir este em segmentos verticalmente, como no bloco 300, horizontalmente, do qual não existe exemplo, ou em ambas as direções, como no bloco 306. Pela segmentação, é também possível reduzir o número de bits sendo transferido usando uma parte adequada de outro quadro já codificado.
Ao definir os coeficientes do vetor de movimento do bloco de quadro sendo codificado, vários modelos conhecidos para a estimação de movimento são utilizados. Os modelos diferentes são adequados para definir diferentes movimentos, tal como apresentando movimento vertical e horizontal ou apresentando a rotação. Tais modelos incluem o modelo de movimento afim no qual o movimento de um pixel, o segmento do quadro ou bloco é indicado pela fórmula na qual Δχ e Ay formam o vetor de movimento: Δχ (x, y) = ao + ajx + a2y (1) Ay (x, y) = b0 + bjx + b2y onde ao, ai, a2, bo, b| e b2 são coeficientes do vetor de movimento e x e y são componentes vetores, dos quais x indica a localização do pixel ou um bloco na direção horizontal e y a localização do pixel ou bloco na direção vertical, ou o modelo de translação no qual o movimento do pixel, o segmento do quadro ou bloco é indicado pela fórmula na qual Δχ e Ay formam o vetor de movimento: Δχ (x, y) = ao (2) Ay (x, y) = b0 onde ao e bo são coeficientes do vetor de movimento e x e y são componentes vetores. Os modelos de movimento usados são armazenados na memória de ambos o codificador e do decodificador. Se vários modelos de movimento forem usados na codificação, o codificador seleciona o modelo de acordo com o movimento (ex. com o movimento ascendente, o modelo indicando que o modelo ascendente é usado na codificação) e a informação do modelo usado é transmitida para o decodificador junto com os coeficientes de movimento. A Figura 4 é um fluxograma apresentando os passos do método para a codificação do quadro de vídeo. Na descrição a seguir, o bloco do quadro refere, por exemplo, por bloco, segmento ou macro bloco de acordo com o modelo YUV formado pelos pixels. A execução do método inicia no bloco 400.
No bloco 402, o quadro de vídeo é formado dos quadros estacionários consecutivos. Para formar o quadro de vídeo, os quadros estacionários são enviados preferivelmente na velocidade na qual o sistema visual humano não mais distingue os quadros separados de cada outro.
No bloco 404, os dados de reconstrução codificados dos blocos do quadro (ex. a cor e a luminância dos pixels e o quadro do erro de predição obtidos do cálculo dos coeficientes do vetor de movimento) são armazenados na memória. Os dados de reconstrução do quadro são codificados de acordo com o padrão aplicado, por exemplo, H.263 ou MPEG. A definição dos coeficientes do vetor de movimento e o quadro de erro de predição são descritos acima. Um ou mais quadros de referência são formados dos dados de reconstrução do quadro armazenados na memória. Em adição, os dados de movimento dos blocos vizinhos codificados anteriormente, isto é os coeficientes do vetor de movimento e possivelmente o modelo de movimento usado, são armazenados na memória. E mais preferível usar os blocos vizinhos na proximidade próxima ao bloco sendo codificado, mas algumas vezes é também possível usar os blocos codificados anteriormente mais distante no quadro.
No bloco 406, os dados de movimento do bloco sendo codificados são definidos por meio dos blocos vizinhos codificados anteriormente, preferivelmente usando os coeficientes do vetor de movimento de um ou mais blocos vizinhos.
No bloco 408, os dados de reconstrução do bloco sendo codificados são definidos usando o quadro de referência, por exemplo. O método pode ser intensificado pelo cálculo dos dados de movimento do bloco do quadro sendo codificado usando apenas os blocos vizinhos, os quais possuem o mesmo quadro de referência que foi usado para codificar os dados de reconstrução do quadro do bloco sendo codificado. Similaridades muitas vezes existem entre os quadros na mesma cadeia do quadro, assim é provável que ou o bloco correspondendo ao bloco sendo codificado é encontrado ou o bloco que é similar o suficiente é encontrado no quadro codificado anteriormente, do qual um bloco de referência adequado já tem sido encontrado para o bloco vizinho codificado anteriormente. Por exemplo, os coeficientes do vetor de movimento de um ou mais blocos vizinhos são usados e a área de busca do bloco de referência do bloco sendo codificado está restrita no quadro de referência para o modelo definido pelos coeficientes do vetor de movimento do bloco vizinho.
Na situação na qual apenas um bloco vizinho inter-codificado possui o mesmo quadro de referência do bloco sendo codificado, o vetor de movimento deste bloco vizinho é selecionado como um vetor de movimento candidato, outro candidato pode, por exemplo, ser um mediano calculado de vários vetores de movimento do bloco vizinho.
Deveria ser observado que o bloco, que é usado na codificação do bloco, é codificado da mesma maneira (inter) com a qual o bloco sendo codificado será codificado, isto é, se o bloco vizinho for intra-codifícado, este não possui quadro de referência. Se não existe candidato de predição possuindo um quadro de referência, a intra codificação da técnica anterior pode ser usada ou todos os quadros de referência armazenados na memória podem ser verificados. O bloco de referência é o bloco do quadro que o codificador de vídeo, isto é, o codificador com o qual os dados de reconstrução do quadro do bloco do quadro são codificados, usa na codificação de compressão. O bloco do quadro, que é uma associação quanto possível com o bloco sendo codificado e o qual foi buscado de um ou mais quadros de referência que foram codificados anteriormente e armazenados na memória, é selecionado como bloco de referência, desse modo o quadro de erro de predição permanece tão pequeno quanto possível.
No bloco 410, o método de codificação é selecionado, com o qual os dados de reconstrução do quadro e os dados de movimento do bloco do quadro sendo codificado podem ser codificados mais vantajosamente, isto é, uma eficiência de codificação pré-definida é buscada com uma qualidade de imagem pré-definida. Deveria ser observado que como o método de codificação do bloco sendo codificado ou a codificação acima mencionada por meio dos dados de movimento dos blocos vizinhos é selecionado, ou qualquer método da técnica anterior, tal como codificação-inter, na qual o bloco sendo codificado é codificado diretamente por meio do bloco de referência encontrado do quadro de referência. Ao selecionar o método de codificação, o objetivo pode, por exemplo, ser para realizar o número de bits tão pequeno quanto possível, enquanto que a qualidade da imagem corresponde a da imagem de vídeo normal ou para realizar o número de bits que associa a do padrão usado, mesmo através de um menor número de bits ser suficiente para alcançar uma qualidade de imagem de acordo com o objeto de aplicação. A eficiência da codificação pode ser estimada por meio da função Langrangian, por exemplo, a qual define a segmentação mais efetiva e a codificação e a qual r e: L(Sk) = D(Sk)UR(Sk) (3) Onde: D(Sk) é um erro criado na des-propagação do quadro; R(Sk) é o número de bits requerido para transferir o quadro, e λ é a constante Langrangian. A função Langrangian descreve a conexão entre a qualidade do quadro sendo transferido e a largura de banda requerida no caminho de transmissão; em geral, a imagem de alta qualidade, a maior largura de banda. A seleção da codificação de compressão mais vantajosa é sempre um compromisso entre o número requisitado de bits e a qualidade da imagem. A seta 412 descreve a habilidade de repetição do método bloco a bloco até o quadro ser codificado. Deveria ser observado que o método é repetido preferivelmente até todos os quadros na cadeia dos quadros serem codificados. A execução do método termina no bloco 414. A Figura 5 ilustra um exemplo dos vetores de movimento de predição e encontra o bloco de referência, quando apenas os blocos vizinhos são usados, os quais possuem o mesmo quadro de referência que foi usado na codificação dos dados de reconstrução do quadro do bloco sendo codificado. Deveria ser observado que na codificação do bloco, os métodos da técnica anterior são usualmente também usados. No final, o método de codificação é selecionado para uso, o qual provê a eficiência de codificação desejada com uma qualidade suficiente de imagem. A página do quadro 500 sendo codificada é dividida em blocos, dos quais apenas alguns são apresentados para uma melhor compreensão. O bloco 506 é um sendo codificado. Os quadros 502, 504, 532 e 508 são os quadros de referência armazenados na memória. O quadro de referência dos blocos 510 e 514 dos blocos vizinhos codificados anteriormente, marcados como número 1, é o quadro 502. O bloco 506 sendo codificado e os blocos de referência 510 e 514 não tendo movido no quadro 500 em comparação com o quadro 502. O quadro de referência do bloco vizinho 512, marcado como 2 na figura, é o quadro 504 e o quadro de referência do bloco vizinho 516, marcado como número 4 na figura, é o quadro 508. Os blocos no quadro 500 têm movido em comparação com os quadros 504 e 508.0 quadro 532 não tem sido usado na codificação, quaisquer dos blocos vizinhos do bloco 506 sendo codificado, isto é, este não é um quadro de referência de qualquer bloco vizinho, assim o quadro 532 não é usado neste exemplo para encontrar o bloco de referência para o bloco 506 sendo codificado. A seguir, os blocos vizinhos 510 e 514 são usados como candidatos de predição dos vetores de movimento do bloco 506 sendo codificado. A verificação é realizada para ver se o tipo de codificação (inter) dos candidatos de predição é a mesma de um a ser usado na codificação do bloco atual. Se for assim, o bloco 526 é usado como o bloco de referência e os coeficientes do vetor de movimento são obtidos pelo cálculo da média ou mediano dos coeficientes do vetor de movimento, os quais têm sido obtidos pela comparação da localização dos blocos 510 e 518, dos quais os coeficientes do vetor de movimento têm sido obtidos para o bloco vizinho 510, e a localização dos blocos 514 e 520, dos quais os coeficientes do vetor de movimento têm sido obtidos para o bloco vizinho 514. Em adição, o quadro de erro de predição é definido pela comparação do bloco 506 sendo codificado com o bloco de referência 526. No exemplo da Figura 5, a localização do bloco nos quadros 500 e 502 não tem alterado, assim os coeficientes do vetor de movimento não são definidos. A seguir, o tipo de codificação do bloco vizinho 512 é verificado. Se este for o mesmo do usado no bloco atual 506, o bloco de referência é buscado para no quadro 504 e os coeficientes do vetor de movimento obtidos da comparação dos blocos 512 e 522 são usados como os coeficientes do vetor de movimento do bloco 506. O quadro de erro de predição é então definido por meio do bloco de referência 528. A seguir, o tipo de codificação do bloco vizinho 516 é verificado. Se este for o mesmo a ser usado no bloco atual 506, o bloco de referência é buscado para no quadro 508 e os coeficientes do vetor de movimento obtidos da comparação dos blocos 516 e 524 são usados como os coeficientes do vetor de movimento do bloco 506. O quadro de erro de predição é então definido por meio do bloco de referência 530.
Os coeficientes do vetor de movimento para o bloco 506 podem também ser definidos pelo cálculo de um mediano ou média dos coeficientes do vetor de movimento dos blocos 510,512 e 514.
Assim, se vários modelos de movimento forem usados, o modelo de movimento usado é indicado. O bloco 534 é intra-codificado, assim este não tem um quadro de referência e não é usado na codificação do bloco 506, se um método de codificação preferível é por outro lado encontrado. O número e a localização dos blocos vizinhos e o número dos quadros de referência armazenados podem diferir do que é apresentado na Figura 5. A Figura 9 ilustra um segundo exemplo dos vetores de movimento de predição e encontra o bloco de referência. Neste exemplo, o bloco sendo codificado é codificado por meio de apenas um bloco vizinho, se apenas um bloco vizinho tiver sido intra-codificado e este bloco vizinho tiver o mesmo quadro de referência do bloco sendo codificado. O quadro 900 sendo codificado é dividido em blocos, dos quais apenas alguns são apresentados por motivo de compreensão. O bloco 912 é um sendo codificado. Os quadros 902,904 e 906 são quadros de referência armazenados na memória. O quadro de referência do bloco vizinho codificado anteriormente 914 (marcado como 1) é o quadro 902 e o quadro de referência do bloco 910 (marcado como 2) é o quadro 904. O bloco 908 é intra-codificado, assim este não possui um quadro de referência. O exemplo na Figura 9 testa se para o bloco 912 sendo codificado adequado aos blocos de referência podem ser encontrados todos os quadros de referência armazenados na memória, isto é os quadros 902, 904, 906 neste exemplo. Ao testar se o quadro 902 possui um bloco de referência adequado, o vetor de movimento do bloco 914 é usado como candidato de predição do vetor de movimento, uma vez que o bloco 914 é apenas um dos três blocos vizinhos, cujo quadro de referência é o quadro 902. Ao testar se o quadro 904 possui um bloco de referência adequado, o vetor de movimento do bloco 910 é usado como candidato de predição do vetor de movimento, uma vez que o bloco 910 é apenas um dos três blocos vizinhos, cujo quadro de referência é o quadro 904.0 quadro 906 não é o quadro de referência para quaisquer dos blocos vizinhos, assim no caso descrito no exemplo, o vetor de movimento é predito usando o mediano dos blocos 910, 914 e 908, por exemplo, neste caso o vetor de movimento do bloco inter-codificado 908 é estabelecido para zero.
Deveria ser observado que na predição os vetores de movimento do bloco sendo codificado, é possível para uso não apenas dos dados de movimento dos blocos vizinhos e dos dados do quadro de referência, mas também a informação de segmentação do macro bloco, por exemplo, para o qual o bloco sendo codificado pertence. O número e a localização dos blocos vizinhos e o número dos blocos de referência armazenados podem diferir do apresentado na Figura 9. A Figura 6 apresenta um exemplo de um codificador com o qual o método acima mencionado de codificação de quadros de vídeo pode ser implementado. O princípio de projeto dos codificadores de vídeo é minimizar o quadro de erro de predição E„(x, y) 600 entre o bloco sendo codificado In(x, y) 620 e o candidato de predição (o bloco de predição selecionado) P„(x, y) 612. O quadro de erro de predição é definido como uma diferença entre o bloco sendo codificado 620 e o candidato de predição 612, o qual é obtido em um somador 632, assim: En(x,y) = In(x,y)-Pn(x,y) (4) O bloco de predição 612 é obtido pelo método de acordo com a incorporação preferida da invenção pelo uso do quadro de referência selecionado e dos vetores de movimento. Os coeficientes dos vetores de movimento Ax(x, y), Ay(x, y) são formados no bloco 630 de cálculo do vetor de movimento como o somatório dos vetores de movimento preditos e encontra diferentes coeficientes. Os coeficientes do vetor de movimento preditos são, de acordo com a incorporação preferida da invenção, obtida usando os vetores de movimento dos blocos vizinhos os quais possuem o mesmo quadro de referência do bloco sendo codificado. Outros métodos são também usados nos vetores de movimento de predição, um deles é o método da técnica anterior no qual o bloco sendo codificado é codificado diretamente por meio do quadro de referência. O grupo dos vetores de movimento de todos os pixels no quadro é denominado de campo do vetor de movimento. Porque existe um grande número de pixels no quadro, o quadro é na prática dividido em blocos na codificação de vídeo e a informação de movimento é transmitida bloco a bloco para o decodificador receptor apresentado na Figura 7.
Ao menos um vetor de movimento selecionado dos vetores de movimento preditos ou dos campos do vetor de movimento formado deles são codificados no bloco de codificação do vetor de movimento 628. Os modelos de movimento bem conhecidos na técnica, por exemplo, dos quais exemplos são apresentados acima, são usados na codificação. Os vetores de movimento codificados ou os campos do vetor de movimento formados deles são transmitidos para o multiplexador 624.
No bloco 618, o quadro é formado dos blocos do quadro segmento por segmento ou bloco por bloco. O bloco de referência ou candidato de predição é do formato: P„(x, y) = Rk„[x +~Δχ(χ, y), y + ~Ay(x, y)] (5) onde um ou mais quadros de referência Rkn(x, y) 622 são armazenados na memória 610 e onde x e y são componentes vetores, x apresentando a localização do pixel, o segmento do quadro ou bloco na direção horizontal e y na direção vertical, e ~Δχ e ~Ay formando o vetor de movimento do pixel, o segmento do quadro ou bloco.
No bloco 602, o quadro de erro de predição E„(x, y) 600 é codificado, o qual é tipicamente apresentado como uma transformação de série 2-dimensional finita, por exemplo, por meio da transformação de co-seno discreta (DCT). Os coeficientes obtidos pela transformação DCT são quantizados e codificados antes de transmiti-los para o multiplexador 624 e o decodificador receptor apresentado na Figura 7. O codificador também compreende um bloco decodificador 606 no qual o quadro de erro de predição En(x, y) é decodificado. Este quadro de erro de predição Έπ(χ, y) 608 é adicionado no somador 634 para o bloco de predição P„(x, y) 612 e o bloco decodificado ~In(x, y) é obtido como um resultado, do qual um novo bloco de referência é obtido, ou pela combinação dos blocos pertencendo à mesma página, o quadro de referência 614 é obtido e armazenado na memória 610, Assim, ambos o codificador de vídeo transmissor e o codificador de vídeo receptor possuem o mesmo quadro de referência ou bloco para uso.
No multiplexador 624, a informação contendo a informação do vetor de movimento é combinada com o quadro de erro de predição e esta informação de quadro 616 é transmitida para o decodificador (Figura 7).
As funções do codificador de vídeo descritas acima podem ser implementadas de várias formas, por exemplo, pelo programa executado no processador ou pelo hardware, tal como uma construção lógica dos componentes separados ou ASIC (circuito integrado de aplicação específica). A Figura 7 apresenla um exemplo do codificador, por meio do qual o método descrito acima para reduzir a redundância temporal na transferência do quadro de vídeo pode ser implementado. O quadro de erro de predição codificado 702 e os coeficientes do vetor de movimento codificado ou os coeficientes dó campo vetor de movimento 712 do sinal de vídeo recebido 700 são separados um do outro no demultiplexador 710.
Na memória 716 do decodificador, existe ao menos um bloco vizinho codificado anteriormente e/ou o quadro de referência Rkn(x, y) 722 dividido em blocos. Os mesmos blocos de quadro e/ou quadro de referência são armazenados na memória do codificador e do decodificador.
No bloco 714, o candidato de predição P„(x, y) 718 é formado da mesma maneira que no bloco codificador 618 (Figura 6). O quadro de erro de predição decodificado ~En(x, y) 706 é formado no bloco 704.
No somador 720, o quadro de erro de predição decodificado Έη(χ, y) 706 e o candidato de predição Pn(x, y) 718 são juntos adicionados. Este produz o bloco decodificado ln(x, y) 708 do formato: ~In(x, y) = Pn(x, y) + ~E„(x, y) (6) = Rkn [x +~Δχ(χ, y), y +~Ay(x, y)] Έη(χ, y) onde um ou mais blocos vizinhos codificados anteriormente e/ou o quadro de referência Rk„(x, y) 722 dividido em blocos é armazenado na memória 716 e onde x e y são componentes vetores, dos quais x indica a localização do pixel ou um bloco na direção horizontal e y a localização do pixel ou bloco na direção vertical, e ~Δχ e ~Ay formam o vetor de movimento do pixel, o segmento do quadro ou bloco.
As funções do codificador de vídeo descritas acima podem ser implementadas de várias formas, por exemplo, por programa executado no processador ou por hardware, tal como uma construção lógica dos componentes separados ou ASIC (circuito integrado de aplicação específica). A Figura 8 ilustra um terminal do sistema de rádio, por meio do qual o método da incorporação preferida da invenção pode ser implementado. O transmissor do terminal do assinante 824 e o transmissor do elemento de rede do sistema de rádio executam parcialmente as mesmas tarefas. O terminal 824 pode, por exemplo, ser um telefone móvel ou um microprocessador incluindo partes de rádio, sem limitar a invenção a esta. O terminal descrito compreende uma antena 800, a qual é usada para transmitir e receber os sinais através de um filtro duplex. O terminal pode também compreender várias antenas ou sistema de múltiplas antenas. O terminal também pode compreender um transmissor 802 o qual amplifica e transmite para a antena o sinal modulado, o modulador 804 o qual modula de acordo com o método de modulação selecionado a portadora com o sinal de dados contendo a informação desejada, o receptor 806 o qual amplifica o sinal entrante da antena e converte-para baixo este para uma freqüência intermediária desejada ou diretamente para a banda base, o demodulador 808 o qual demodula o sinal recebido assim que o sinal de dados pode ser separado da portadora. O terminal do assinante também possui o bloco de controle 816 o qual controla a operação de partes diferentes do terminal, tal como a câmera 820 e o codec de vídeo 822, e toma a ação necessária para processar a voz do usuário ou os dados gerados pelo usuário, tal como o processamento de sinal digital (PSD), convertendo de digital para analógico e filtrando. Em adição, nos sistemas de espectro de dispersão, tal como o WCDMA, o espectro de sinal é disperso por meio de um código de dispersão pseudo-randômico no transmissor para a banda base e dês-propagado no receptor, esforçando assim para aumentar a capacidade do canal. O bloco de controle também executa ambas a codificação e decodificação, tal como canal e codificação de canal. Em adição, o bloco de controle adapta o sinal sendo transmitido e sinaliza a informação para associar a interface aérea padrão do sistema de rádio usado. O terminal do assinante compreende uma ou mais memórias de diferentes tipos, as quais podem ser partes de outros blocos ou separadas (não apresentado). No exemplo da Figura 8, o bloco de controle também contém um programa que controla a operação do terminal. No exemplo da figura, o codec de vídeo 822 o qual codifica e decodifica os dados de reconstrução do quadro é separado, mas este também pode ser uma parte do bloco de controle 816.
Ao transmitir os quadros, a câmera 820 registra a imagem digital no bloco da memória 818. A câmera 820 pode também registrar a imagem diretamente no codec 822. O codec codifica o quadro selecionado por meio de um dos métodos acima ou pela combinação de vários métodos. A câmera 820, o codec 822 e a memória 818 podem residir no terminal do assinante 824 ou pertence a uma unidade de câmera separada 826, neste caso a unidade da câmera 826 é conectada ao terminal do assinante 824 com a interface 828. O usuário do terminal do assinante pode quando necessário visualizar o quadro no visor 814. Os dados de reconstrução do quadro decodificado são transmitidos da mesma maneira como voz ou dados de textos para o sistema de telecomunicação e transmitido para outro telefone, por exemplo.
Os blocos operacionais do terminal descrito acima, tal como o bloco de controle e o bloco do codec 822 requerido para a codificação do quadro e decodificação, podem ser implementados de várias formas, por exemplo, por programa executado no processador ou por hardware, tal como a construção lógica dos componentes separados ou ASIC (circuito integrado de aplicação específica). As fimções do terminal apresentadas na figura podem também ser combinadas em blocos operacionais de várias formas diferindo da figura, o bloco do codec 822 pode, por exemplo, ser dividido em um codificador e um decodificador. A interface do usuário do terminal compreende um alto-falante ou um fone de ouvido 810, um microfone 812, um visor 814 e possivelmente um teclado, os quais todos são conectados ao bloco de controle 816.
Mesmo a invenção tendo sido explicada acima com referência aos exemplos e, de acordo com os desenhos apensos é óbvio que a invenção não está restrita a estes, mas pode ser modificada de várias formas dentro do escopo do conceito inventivo descrito nas reivindicações apensas. A invenção pode ser aplicada junto com vários padrões de codificação de vídeo, tal como ο H.263 ou o MPEG.
REIVINDICAÇÕES