Dividido do BR 11 2014 002932 6, depositado em 16/08/2012
Campo da Invenção
[0001] A presente invenção refere-se a um método e dispositivo para codificar uma sequência de imagens digitais e um método e dispositivo para decodificar um fluxo de bits correspondente. A invenção refere-se ainda a um método e dispositivo para derivar a informação de movimento, incluindo pelo menos um preditor de informação de movimento para predição de uma parte de imagem de uma imagem predita por compensação de movimento com relação a pelo menos uma parte de imagem de referência.
[0002] A invenção pode ser aplicada no campo de processamento de sinal digital, e em particular, no campo de compressão de vídeo usando a compensação de movi-mento para reduzir as redundâncias espaciais e temporais em fluxos de vídeo.
Fundamentos da Invenção
[0003] Muitos formatos de compressão de vídeo, tais como, H.263, H.264, MPEG- 1, MPEG-2, MPEG-4, SVC, usam a transformada discreta de cosseno baseada em bloco (DCT) e a compensação de movimento para remover as redundâncias especiais e discretas. Eles podem ser chamados de formatos de vídeo preditivos. Cada quadro ou imagem do sinal digital é dividido em fatias que são codificadas e podem ser decodificadas independentemente. Uma fatia é tipicamente uma parte retangular do quadro, ou mais geralmente, uma parte de um quadro ou um quadro inteiro. Ademais, cada fatia é dividida em macroblocos (MBs), e cada macrobloco é dividido ainda em blocos, tipicamente blocos de 8x8 pixels. Os quadros codificados são de dois tipos: quadros preditos temporais (ou preditos a partir de um quadro de referência chamado de quadro P ou preditos a partir de dois quadros de referência chamados de quadros B) e os quadros preditos atemporais (chamados de Intra-quadros ou quadros I).
[0004] A predição temporal consiste em encontrar, em um quadro de referência, ou um quadro anterior ou um quadro futuro da sequência de vídeo, uma parte de imagem ou área de referência que está mais próxima do bloco a codificar. Essa etapa é conhecida tipicamente como estimativa de movimento. Em seguida, o bloco é pre-dito usando a área de referência em uma etapa tipicamente chamada de compensa-ção de movimento - a diferença entre o bloco a codificar e a parte de referência que é codificada, junto com um item de informação de movimento relativo ao vetor de mo-vimento que indica a área de referência a ser usada para compensação de movimento. Na predição INTRA, uma direção de predição é codificada.
[0005] De modo a reduzir mais o custo de codificar a informação de movimento, um vetor de movimento pode ser codificado em função de uma diferença entre o vetor de movimento e um preditor de vetor de movimento, computado tipicamente a partir de um ou mais vetores de movimento dos blocos que envolvem o bloco a ser codificado.
[0006] Em H.264, os vetores de movimento são codificados com relação e um preditor mediano computado a partir dos vetores de movimento situados em uma vizinhança causal do bloco a codificar, por exemplo, a partir dos blocos situados acima e à esquerda do bloco a codificar. A diferença, também chamada de um vetor de mo-vimento residual, entre o preditor mediano e o vetor de movimento de bloco atual é codificada para reduzir o custo de codificação.
[0007] A codificação usando vetores de movimento residuais economiza algumas taxas de bits, mas precisa que o decodificador execute alguma computação do predi- tor de vetor de movimento de modo a decodificar o valor do dito vetor de movimento de um bloco a decodificar.
[0008] Recentemente, foram propostas melhorias adicionais na eficiência de codi-ficação, tal como usando vários preditores de vetor de movimento possíveis. Esse método, chamado frequentemente de competição do vetor de movimento (MVCOMP), consiste em determinar, dentre os vários preditores de vetor de movimento ou candi-datos que o preditor de vetor de movimento minimiza o custo de codificação, tipica-mente um custo de taxa de distorção, da informação de movimento residual. A infor-mação de movimento residual compreende o vetor de movimento residual, isto é, a diferença entre o vetor de movimento real do bloco a ser codificado e o preditor de vetor de movimento selecionado, e um item de informação que indica o dito preditor de vetor de movimento selecionado, tal como, por exemplo, um valor codificado do índice do preditor de vetor de movimento selecionado. O índice do preditor de vetor de movimento selecionado é codificado no fluxo de bits em um código unário máximo baseado em um tamanho de lista fixo.
[0009] Na Codificação de Vídeo de Alta Eficiência (HEVC), uma nova implemen-tação do mesmo conceito para possibilitar a seleção do melhor preditor, a partir de um dado conjunto de preditores compostos de vetores de movimento espacial e vetores de movimento temporal, foi proposta. Essa técnica é chamada de uma Predição de Vetor de Movimento Avançada (AMVP). Se alguns preditores, dentre esses preditores do dado conjunto, são duplicatas de outros preditores no conjunto, as duplicatas po-dem ser removidas e preditores adicionais podem ser adicionados ao conjunto para criar um novo segundo conjunto de preditores. Os preditores adicionados podem ser uma combinação dos preditores espaciais e temporais já no conjunto, outros predito- res derivados desses preditores espaciais e temporais, ou preditores com valores fi-xos. Finalmente, os preditores duplicados do segundo conjunto de preditores são re-movidos de modo a obter candidatos não redundantes no segundo conjunto de predi- tores.
[0010] O segundo conjunto gerado de preditores aumenta significativamente a complexidade computacional do processo de derivação. O aumento da complexidade computacional resulta da geração de preditores em cascata.
[0011] A implementação HEVC atual usa um conjunto de preditores de vetor de movimento contendo no máximo 2 preditores no modo Inter e no máximo 5 preditores no modo “Merge Skip” e no modo “Merge”.
[0012] No modelo HEVC atual, a predição inter pode ser unidirecional ou bidireci-onal. A unidirecional refere-se a um bloco preditor usado para prever o bloco atual. O bloco preditor é definido por um índice de lista, um índice de quadro de referência e um vetor de movimento. O índice de lista corresponde a uma lista de quadros de re-ferência. Pode-se considerar, por exemplo, que duas listas sejam usadas: L0 e L1. Uma lista contém pelo menos um quadro de referência e um quadro de referência pode ser incluído em ambas as listas. Um vetor de movimento tem dois componentes: horizontal e vertical. O vetor de movimento corresponde ao deslocamento espacial em termos de pixels entre o bloco atual e o bloco de preditor temporal no quadro de referência. Assim, o preditor de bloco para a predição unidirecional é o bloco a partir do quadro de referência (índice de referência) da lista, apontado pelo vetor de movi-mento.
[0013] Para a predição inter bidirecional, dois preditores de bloco são considerados. Um para cada lista (L0 e L1). Consequentemente, 2 índices de quadro de referência são considerados, bem como 2 vetores de movimento. O preditor interblocos para a predição bidirecional é a média, pixel por pixel, dos dois blocos apontados por esses dois vetores de movimento.
[0014] A informação de movimento dedicada ao preditor interblocos pode ser de-finida pelos seguintes parâmetros: - Tipo de direção: uni ou bi - Uma lista (unidirecional) ou duas listas (bidirecional): L0, L1, L0 e L1. - Um (unidirecional) ou dois índices de quadro de referência (bidirecional): RefL0, RefL1, (RefL0, RefL1). - Um (unidirecional) ou dois vetores de movimento (bidirecional): cada vetor de movimento tem dois componentes (mvx horizontal e mny vertical).
[0015] Pode-se notar que o preditor inter bidirecional pode somente ser usado para um tipo de fatia tipo B. A predição inter em fatias B pode ser uni ou bidirecional. Em fatias P, a predição inter é somente unidirecional.
[0016] O modelo atual de HEVC usa 3 modos Inter diferentes: um modo Inter, um modo Merge e um modo Merge Skip. A diferença principal entre esses modos é a sinalização de dados no fluxo de bits.
[0017] No modo Inter, todos os dados são explicitamente sinalizados. Isso significa que a textura residual é codificada e inserida no fluxo de bits (a textura residual é a diferença entre o bloco atual e o bloco de predição Inter). Para a informação de movi-mento, todos os dados são codificados. Assim, o tipo de direção é codificado (uni ou bidirecional). O índice de lista, se necessário, é também codificado e inserido no fluxo de bits. Os índices de quadro de referência relacionados são explicitamente codifica-dos e inseridos no fluxo de bits. O valor do vetor de movimento é predito pelo preditor de vetor de movimento selecionado. O residual de vetor de movimento para cada componente é então codificado e inserido no fluxo de bits seguido pelo índice de pre- ditor.
[0018] No modo Merge, a textura residual e o índice de preditor são codificados e inseridos no fluxo de bits. Um residual de vetor de movimento, tipo de direção, lista ou índice de quadro de referência não são codificados. Esses parâmetros de movimento são derivados do índice de preditor. Assim, o preditor é o preditor de todos os dados da informação de movimento.
[0019] No modo Merge Skip, nenhuma informação é transmitida para o decodifi- cador, exceto pelo “modo” e o índice de preditor. Nesse modo, o processamento é similar ao modo Merge, exceto que nenhuma textura residual é codificada ou transmitida. Os valores de pixel de um bloco Merge Skip são os valores de pixel do preditor de bloco.
[0020] No conjunto de preditores de informação de movimento representado na FIG. 1, dois vetores de movimento espacial do modo Inter são escolhidos dentre esses blocos, no Quadro N, que estão acima e à esquerda do bloco a ser codificado, inclu-indo os blocos de canto acima e à esquerda.
[0021] O preditor esquerdo é selecionado dentre os blocos “Esquerdo Abaixo” e “Esquerdo”. As seguintes condições são avaliadas na ordem especificada até que um valor de vetor de movimento é encontrado: a. O vetor de movimento da mesma lista de referência e da mesma imagem de referência. b. O vetor de movimento da outra lista de referência e a mesma imagem de referência. c. O vetor de movimento escalonado da mesma lista de referência e uma ima-gem de referência diferente. d. O vetor de movimento escalonado da outra lista de referência e uma imagem de referência diferente.
[0022] Se nenhum valor for encontrado, o preditor esquerdo é considerado como estando indisponível. Nesse caso, ele indica que os blocos relacionados forma intra- codificados ou esses blocos não existem. O preditor acima é selecionado dentre “Di-reito Acima”, “Acima” e “Esquerdo Acima” nessa ordem específica, com as mesmas condições descritas acima.
[0023] O preditor de movimento temporal vem do quadro de referência mais próximo em configuração de baixo atraso. No caso de quadros B, 2 vetores de movimento são considerados para o bloco colocalizado no quadro N-1. Um está na primeira lista “L0” e um está na segunda lista “L1”. Se ambos os vetores de movimento existem, o vetor de movimento que tem a distância temporal mais curta é selecionado. Se ambos os preditores de vetor de movimento têm a mesma distância temporal, o movimento a partir da primeira lista “L0” é selecionado. O vetor de movimento colocalizado seleci-onado é então escalonado, se necessário, de acordo com sua distância temporal e com a distância temporal do vetor de movimento codificado. Se nenhum preditor co- localizado existe, o preditor é considerado como indisponível.
[0024] Para codificação de quadros B hierárquicos, 2 vetores de movimento colo- calizados podem ser considerados. Ambos vêm do quadro de referência futuro. O ve-tor de movimento que cruza o quadro atual é selecionado. Se ambos os preditores cruzam o quadro atual, o vetor de movimento que tem a distância temporal mais curta é selecionado. Se ambos os preditores têm a mesma distância temporal, o movimento a partir da primeira lista “L0” é então selecionado. O vetor de movimento colocalizado selecionado é então escalonado, se necessário, de acordo com sua distância temporal e com a distância temporal do vetor de movimento codificado. Se nenhum preditor colocalizado existe, o preditor é considerado como indisponível.
[0025] Para o caso de baixo atraso e o caso hierárquico, quando o bloco colocali- zado é dividido em uma pluralidade de partições (potencialmente, o bloco colocalizado contém uma pluralidade de vetores de movimento), a partição selecionada é a partição central superior esquerda. Ademais, o preditor temporal é o vetor de movimento do bloco na posição inferior direita do bloco colocalizado (posição H na FIG. 1). Se esse bloco não existe ou se ele é intracodificado, o bloco na posição central do bloco colo- calizado é selecionado como o vetor de movimento que será derivado.
[0026] O valor do preditor de movimento é então adicionado ao conjunto de predi- tores.
[0027] Finalmente, o processo de supressão é aplicado. Esse consiste em remover os preditores duplicados do conjunto de preditores de vetor de movimento seleci-onados. No fim desse processo, o conjunto contém preditores de vetor de movimento não duplicados. Esse conjunto pode conter 1, 2, 3 ou 4 preditores. No modelo atual, a lista de preditores é fixa de modo a limitar seu tamanho a 2. Consequentemente, o preditor selecionado é codificado com um bit. Assim, se o número de preditores na lista é 3 ou 4, o último preditor ou respectivamente os 2 últimos preditores são remo-vidos.
[0028] Um preditor de modo Merge (“clássico” ou Skip) representa toda a informação de movimento: direção, lista, índice de quadro de referência e vetores de movimento. O índice de preditor é codificado com um código unário máximo como representado na Tabela 1.Tabela 1
[0029] O tamanho da lista é fixado em 5 para todos os blocos Merge ou blocos Merge Skip no modelo HEVC atual.
[0030] A FIG. 2 é um fluxograma de um exemplo de um processo de derivação de vetor de movimento para modos Merge de Interpredição (Merge Skip e Merge têm o mesmo processo de derivação de preditor de vetor de movimento). O método é apli-cado para obter um conjunto de potenciais preditores de informação de movimento para codificação de uma parte de imagem de uma imagem com relação a uma parte de imagem de referência. Na primeira etapa da derivação, 7 posições de bloco são consideradas (601 a 607). Essas posições são as posições espaciais e temporais re-presentadas na FIG. 1 (cada posição é rotulada a mesma em ambas as figuras). O módulo 608 verifica a disponibilidade desses vetores de movimento e seleciona no máximo 5 vetores de movimento. Esse módulo implementado a etapa 608 determina que um preditor está disponível se ele existe e se o bloco não é intracodificado. A seleção e a verificação dos 5 vetores de movimento selecionados são executadas de acordo com as seguintes condições: - Se o vetor de movimento “esquerdo” (601) está disponível (isto é, se ele existe e se esse bloco não é intracodificado), o vetor de movimento do bloco “esquerdo” é selecionado e usado como o preditor 1 (610). - Se o vetor de movimento “Acima” (602) está disponível, o vetor de movimento do bloco “Acima” é selecionado e usado como o preditor 2 (611). - Se o vetor de movimento “Direito Acima” (603) está disponível, o vetor de movimento do bloco “Direito Acima” é selecionado e usado como o preditor 3 (612). - Se o vetor de movimento “Esquerdo Abaixo” (604) está disponível, o vetor de movimento do bloco “Esquerdo Abaixo” é selecionado e usado como o preditor 4 (613). - Se um (ou mais) dos preditores precedentes não está disponível e se o vetor de movimento “Esquerdo Acima” (605) está disponível, o vetor de movimento do bloco “Esquerdo Acima” é adicionado ao conjunto de preditores de vetor de movimento após o preditor espacial adicionado. - Se o vetor de movimento “H” está disponível, o vetor de movimento do bloco “H” é selecionado e usado como o preditor 5 (614). Se o bloco “H” não está disponível, a disponibilidade do vetor de movimento “colocalizado” (isto é, o vetor de movimento do bloco na mesma posição no quadro de referência do bloco atual no quadro atual) é verificado e, se ele existir, é usado como o preditor temporal. A verificação de disponibilidade executada pelo módulo 608 exige 1 ciclo.
[0031] O preditor temporal deveria ser escalonado se necessário. De fato, para o vetor de movimento temporal, a direção e o índice de quadro de referência não de-pendem de H ou do bloco colocalizado, mas dos dados da fatia atual. Se o bloco atual está em uma fatia B, o preditor temporal é sempre bidirecional e sempre unidirecional para fatias P. Os índices de quadro de referência para cada lista de quadros de refe-rência (L0, L1) são derivados do preditor Esquerdo e do preditor Acima. Se, para uma lista, ambos os blocos Esquerdo e Acima não têm índice de quadro de referência, o índice de quadro de referência para o preditor temporal é configurado em zero.
[0032] Como o índice de quadro de referência para o preditor temporal não depende do índice de quadro de referência do bloco “H” ou “colocalizado”, mas do quadro de referência do preditor Esquerdo e Acima, seu valor de movimento deveria ser escalonado. Isso significa que se a distância temporal coberta pelo vetor de movi-mento temporal é diferente da diferença entre o quadro atual e o quadro de referência do preditor, o vetor de movimento temporal é escalonado para cobrir a distância temporal correta.
[0033] No fim dos módulos 608 e 609, o conjunto de preditores contém no máximo 5 preditores (610 a 614). Em seguida, um processo de supressão 615 é aplicado de modo a remover os candidatos duplicados do conjunto de preditores. Esse processo consiste em comparar cada preditor do conjunto de todos os outros preditores no mesmo conjunto e em remover esses preditores que são iguais a outro preditor no conjunto (enquanto mantendo o outro preditor cujo candidato duplicado é uma dupli-cata no conjunto), de modo que não haja duplicatas dentre os preditores no conjunto. O processo de supressão para fatias P leva em conta os valores dos vetores de mo-vimento e seus índices de quadro de referência. Consequentemente, os dois compo-nentes de um vetor de movimento e seu índice de referência são comparados a todos os outros e somente se esses três valores forem iguais, o preditor é removido do con-junto. Para um quadro B, esse critério é estendido para a direção e as listas. Assim, um preditor é considerado como um preditor duplicado se ele usar a mesma direção, as mesmas listas (L0, L1 ou L0 e L1), os índices de quadro de referência e o mesmo valor dos vetores de movimento (MV_L0 e MV_L1 para predição bidirecional). O pro-cesso de supressão dura 1 ciclo quando 5 preditores no máximo precisam ser com-parados. De fato, pode-se considerar que 12 comparações podem ser computadas em 1 ciclo. O número de comparações para o processo de supressão no caso mais complexo é igual à Soma de 0 a N-1. Consequentemente, para 5 preditores, 10 com-parações são necessárias (isto é, 4 + 3 + 2 + 1 = 10).
[0034] No fim desse processo de supressão 615, um conjunto de preditores reduzido é gerado 616.
[0035] Em seguida, um módulo de geração de vetor de movimento 617 gera novos candidatos com base no conjunto de preditores de vetor de movimento reduzido. Esse processamento pode durar tipicamente pelo menos um ciclo. Pode-se notar que no modelo HEVC atual, o esquema usado pode produzir um máximo de 20 preditores no caso mais complexo. Esse módulo 617 produz um segundo conjunto de preditores 618.
[0036] O segundo conjunto de preditores 618 é adicionado ao conjunto reduzido de preditores 616 e o processo de supressão é aplicado para remover os candidatos duplicados desse segundo conjunto de preditores comparado com tanto o conjunto reduzido quando o segundo conjunto. Esse processo de supressão é similar ao pro-cesso de supressão do módulo 615. Ainda no fim, se a lista contém mais de 5 predi- tores, a lista de preditores é truncada em 5 que é o tamanho da lista atual definido no modelo HEVC. Pode-se notar que esse processo pode durar pelo menos 1 ciclo. En-tretanto, a duração do ciclo depende do número de preditores gerados no segundo conjunto de preditores 618. Na implementação atual de HEVC, esse processo dura 3 ciclos por causa da quantidade de preditores gerados (caso mais complexo: 32 com-parações para o modelo atual).
[0037] Finalmente, o processo de supressão 619 produz uma lista final de predi- tores 620 a partir da qual o preditor para o bloco atual será extraído.
[0038] Uma desvantagem do processo é que a derivação do preditor de vetor de movimento atual para o modo Merge pode alcançar 11 ciclos no caso mais complexo, enquanto pelo menos 5 ciclos são necessários no caso menos complexo. A derivação do vetor de movimento tem assim um impacto significativo na complexidade da codificação e da decodificação.
Sumário da Invenção
[0039] A presente invenção foi formulada para abordar uma ou mais das conside-rações anteriores.
[0040] Pode ser fornecido, independentemente, em um primeiro aspecto da inven-ção, um método de derivar pelo menos um preditor de informação de movimento para codificação ou decodificação de uma parte de imagem de uma imagem por compen-sação de movimento com relação a pelo menos uma parte de imagem de referência, onde para a dita parte de imagem a ser codificada ou decodificada, o método compre-ende fornecer, para processamento, pelo menos dois primeiro e segundo subconjun-tos distintos de preditores de informação de movimento de um primeiro conjunto de preditores de informação de movimento (801 a 807), o primeiro subconjunto compre-endendo pelo menos um preditor de informação de movimento temporal, e o segundo subconjunto compreendendo pelo menos um preditor de informação de movimento espacial e excluindo qualquer preditor de informação de movimento temporal; processar (808, 809) o primeiro subconjunto de preditores de informação de movimento; e processar (808, 815, 817) o segundo subconjunto de preditores de informação de movimento; e obter (819), com base nos preditores de informação de movimento (818, 814) resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de preditores de informação de movimento, um conjunto final (820) de preditores de informação de movimento úteis para prever a dita parte de imagem a partir da parte de imagem de referência; onde o processamento do segundo subconjunto compreende remover duplicatas dentre os preditores de informação de movimento do dito segundo subconjunto somente, caso no qual o segundo subconjunto contém um ou mais preditores de informação de movimento que são os mesmos, para fornecer um subconjunto reduzido de preditores de informação de movimento (816).
[0041] Como os preditores temporais são excluídos da seleção para o segundo subconjunto, entende-se que o processo de remover ou suprimir as duplicatas dentre os preditores selecionados do segundo subconjunto pode ser aplicado a preditores espaciais somente, e dessa forma, não envolve o processamento de preditores de informação de movimento temporais.
[0042] Ao excluir os preditores temporais do processo de supressão dessa forma, o número total de comparações é reduzido, reduzindo assim a complexidade compu-tacional.
[0043] Ao contrário, em certas modalidades, os preditores espaciais são excluídos da seleção para o primeiro subconjunto. O processamento do primeiro conjunto (isto é, os preditores de informação de movimento) pode não envolver a remoção de dupli-catas em algumas modalidades, embora, como explicado em mais detalhes abaixo, as modalidades possam combinar vantajosamente os primeiro e segundo subconjun-tos de modo a excluir duplicatas no estágio de obter o conjunto final. Determinado de forma diferente, o processamento do primeiro conjunto pode então não envolver a remoção de duplicatas antes de obter o conjunto final.
[0044] Em uma modalidade, o escalonamento do preditor de informação de movi-mento temporal do primeiro subconjunto é executado simultaneamente com as etapas de remover duplicatas e gerar preditores de informação de movimento adicionais do segundo subconjunto.
[0045] Em uma modalidade, o método inclui: remover duplicatas dentre os predi- tores de informação de movimento resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de preditores de informação de movimento, caso no qual um ou mais preditores de informação de movimento resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de preditores de informação de movimento são os mesmos, para fornecer o conjunto final de preditores de informação de movimento úteis para codificar a dita parte de imagem tal que não haja duplicatas dentre o conjunto final de pre- ditores de informação de movimento.
[0046] Em uma modalidade, o processamento do segundo subconjunto de predi- tores de informação de movimento compreende ainda remover duplicatas dentre os preditores de informação de movimento do segundo subconjunto adicional de predi- tores de informação de movimento no caso em que o segundo subconjunto adicional contém um ou mais preditores de informação de movimento que são os mesmos, para fornecer um segundo subconjunto reduzido de preditores de informação de movi-mento.
[0047] Em uma modalidade, a etapa de remover duplicatas dentre os preditores de informação de movimento do segundo subconjunto adicional é executada simulta-neamente com o escalonamento do preditor de informação de movimento temporal do primeiro subconjunto.
[0048] Em uma modalidade, o método inclui adicionar, ao segundo subconjunto reduzido de preditores de informação de movimento, um preditor de informação de movimento, resultante do processamento do primeiro subconjunto de preditores de informação de movimento, que não é uma duplicata de quaisquer dos preditores de informação de movimento do segundo subconjunto reduzido de preditores de informação de movimento para obter o conjunto final de preditores de informação de movimento.
[0049] Em uma modalidade, o método inclui adicionar, ao subconjunto reduzido de preditores de informação de movimento, um preditor de informação de movimento resultante do processamento do primeiro subconjunto de preditores de informação de movimento que não é uma duplicata de qualquer um dos preditores de informação de movimento do subconjunto reduzido de preditores de informação de movimento; e onde o conjunto final de preditores de informação de movimento não compreende vetores de movimento duplicados dentre os preditores de informação de movimento do subconjunto reduzido de preditores de informação de movimento e o segundo subconjunto adicional de preditores de informação de movimento.
[0050] Em uma modalidade, o processamento do segundo subconjunto executado simultaneamente com o processamento do primeiro subconjunto é baseado em uma estimativa da duração do processamento do primeiro subconjunto.
[0051] Em uma modalidade, os preditores de informação de movimento resultantes do processamento do segundo subconjunto que são adicionados aos preditores de informação de movimento resultantes do processamento do primeiro subconjunto para obter o conjunto final de preditores de informação de movimento são baseados na duração do processamento do primeiro subconjunto.
[0052] Em uma modalidade, o método inclui uma etapa de determinar, com base na distância temporal entre a imagem da parte de imagem e a imagem da parte de imagem de referência, se ou não um processo de escalonamento temporal será apli-cado ao primeiro subconjunto de preditores de informação de movimento; e onde, no caso em que determina-se que um processo de escalonamento temporal será apli-cado, o processamento do primeiro subconjunto de preditores de informação de mo-vimento compreende uma etapa de escalonamento temporal de preditores de infor-mação de movimento do primeiro subconjunto de preditores de informação de movi-mento com base na diferença temporal entre a imagem da parte de imagem e a ima-gem da parte de imagem de referência; de outra forma, no caso em que determina-se que um processamento de escalonamento temporal não será aplicado, o processa-mento do primeiro subconjunto de preditores de informação de movimento compre-ende uma etapa de remover as duplicatas dentre os preditores de informação de mo-vimento do primeiro subconjunto de preditores de informação de movimento de modo que um subconjunto reduzido compreendendo preditores de informação de movi-mento não duplicados dentre os preditores de informação de movimento do primeiro subconjunto de preditores de informação de movimento e do segundo subconjunto de preditores de informação de movimento seja fornecido pelo processamento do pri-meiro subconjunto de preditores de informação de movimento e pelo processamento do segundo subconjunto de preditores de informação de movimento.
[0053] Em uma modalidade, no caso em que determina-se que um processo de escalonamento temporal será aplicado, o conjunto final de preditores é obtido remo-vendo-se as duplicatas dentre os preditores de informação de movimento resultantes do processamento simultâneo do primeiro subconjunto de preditores de informação de movimento e do segundo subconjunto de preditores de informação de movimento; de outra forma, no caso em que determina-se que um processo de escalonamento temporal não será aplicado, o conjunto final de preditores é obtido através da geração de preditores de informação de movimento adicionais, com base no subconjunto re-duzido para fornecer um segundo subconjunto adicional de preditores de informação de movimento e remover duplicatas dentre o segundo subconjunto adicional de predi- tores de informação de movimento.
[0054] Em uma modalidade, o método inclui determinar a complexidade do processo de escalonamento temporal do primeiro subconjunto de preditores de informação de movimento e onde, no caso em que é determinado que o processo de escalo-namento temporal terá uma duração mais longa do que um limite de duração prede-terminado, o conjunto final de preditores de informação de movimento é obtido remo-vendo-se as duplicatas dentre os preditores de informação de movimento resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de preditores de informação de movimento; de outra forma, no caso em que é determinado que o processo de escalonamento temporal terá uma duração mais curta do que o limite de duração predeterminado, o conjunto final de preditores é obtido adicionando-se, ao subconjunto reduzido de preditores de informação de movimento obtido a partir do segundo subconjunto de preditores de informação de movimento, um preditor de informação de movimento resultante do processamento do primeiro subconjunto de preditores de informação de movimento que não é uma duplicata de qualquer um dos preditores de informação de movimento do subconjunto reduzido de preditores de informação de movimento; onde o conjunto final de preditores de informação de movimento compreende preditores de informação de movimento não duplicados dentre os preditores de informação de movimento do subconjunto reduzido de preditores de informação de movimento e do segundo subconjunto adicional de preditores de informação de movimento.
[0055] Em uma modalidade, o processamento do segundo subconjunto do primeiro conjunto de preditores de informação de movimento compreende remover as duplicatas dentre os preditores de informação de movimento do dito segundo subconjunto para fornecer um subconjunto reduzido de preditores de informação de movimento; e gerar um conjunto adicional de preditores de informação de movimento com base em um dos preditores de informação de movimento do dito segundo subconjunto e incluindo o dito um dos preditores de informação de movimento do dito segundo subconjunto, onde não há duplicatas dentre o conjunto adicional de preditores de in-formação de movimento, o método adicionalmente compreende remover as duplicatas dentre o subconjunto reduzido de preditores de informação de movimento e o conjunto adicional de preditores de informação de movimento para fornecer um conjunto não duplicado de preditores de informação de movimento.
[0056] Em uma modalidade, o processamento do segundo subconjunto do primeiro conjunto de preditores de informação de movimento adicionalmente compreende: gerar preditores de informação de movimento adicionais com base no subconjunto reduzido de preditores de informação de movimento para fornecer um segundo subconjunto adicional de preditores de informação de movimento; e remover as duplicatas dentre os preditores de informação de movimento do segundo subconjunto adicional de preditores de informação de movimento e o conjunto não duplicado de pre- ditores de informação de movimento para fornecer um segundo conjunto não duplicado de preditores de informação de movimento.
[0057] Em uma modalidade, o método inclui adicionar, ao segundo conjunto não duplicado de preditores de informação de movimento, um preditor de informação de movimento resultante do processamento do primeiro subconjunto de preditores de in-formação de movimento que não é uma duplicata de qualquer um dos preditores de informação de movimento do segundo conjunto não duplicado de preditores de infor-mação de movimento para obter o conjunto final de preditores de informação de mo-vimento.
[0058] Em um segundo aspecto da invenção, pode ser independentemente forne-cido um dispositivo para derivar pelo menos um preditor de informação de movimento para codificação ou decodificação de uma parte de imagem de uma imagem por com-pensação de movimento com relação a pelo menos uma parte de imagem de referên-cia, o dispositivo compreendendo: dispositivo para obter, pelo menos dois primeiro e segundo subconjuntos distintos de preditores de informação de movimento de um primeiro conjunto de preditores de informação de movimento (801 a 807), o primeiro subconjunto compreendendo pelo menos um preditor de informação de movimento temporal, e o segundo subconjunto compreendendo pelo menos um preditor de informação de movimento espacial e excluindo qualquer preditor de informação de movimento temporal; primeiro dispositivo de processamento (808, 809) para processar o primeiro subconjunto de preditores de informação de movimento; e segundo dispositivo de processamento (808, 815, 817) para processar o segundo subconjunto de pre- ditores de informação de movimento; e dispositivo para obter (819), com base nos preditores de informação de movimento (818, 814) resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de preditores de informação de movimento, um conjunto final (820) de preditores de informação de movimento úteis para prever a dita parte de imagem a partir da parte de imagem de referência; onde o segundo processamento é operável para remover duplicatas dentre os preditores de informação de movimento do dito segundo subconjunto somente, caso no qual o segundo subconjunto contém um ou mais preditores de informação de movimento que são os mesmos, para fornecer um subconjunto reduzido de preditores de informação de movimento (816).
[0059] Em uma modalidade, o primeiro dispositivo de processamento é operável para executar escalonamento do preditores de informação de movimento temporal do primeiro subconjunto simultaneamente com as operações de remover duplicatas e gerar preditores de informação de movimento adicionais do segundo subconjunto executadas pelo segundo dispositivo de processamento.
[0060] Em uma modalidade, o dispositivo inclui dispositivo de supressão para re-mover duplicatas dentre os preditores de informação de movimento resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de preditores de informação de movi-mento, no caso em que um ou mais preditores de informação de movimento resultan-tes do processamento do primeiro subconjunto de preditores de informação de movi-mento e do processamento do segundo subconjunto de preditores de informação de movimento são os mesmos, para fornecer o conjunto final de preditores de informação de movimento úteis para codificar a dita parte de imagem tal que não haja duplicatas dentre o conjunto final de preditores de informação de movimento.
[0061] Em uma modalidade, o segundo dispositivo de processamento é operável para remover duplicatas dentre os preditores de informação de movimento do se-gundo subconjunto adicional de preditores de informação de movimento no caso em que o segundo subconjunto adicional contém um ou mais preditores de informação de movimento que são os mesmos, para fornecer um segundo subconjunto reduzido de preditores de informação de movimento.
[0062] Em uma modalidade, o segundo dispositivo de processamento é operável para remover duplicatas dentre os preditores de informação de movimento do se-gundo subconjunto adicional simultaneamente com o escalonamento do preditor de informação de movimento temporal do primeiro subconjunto executado pelo primeiro dispositivo de processamento.
[0063] Em uma modalidade, o dispositivo inclui dispositivo operável para adicionar, ao segundo subconjunto reduzido de preditores de informação de movimento, um preditor de informação de movimento, resultante do processamento do primeiro sub-conjunto de preditores de informação de movimento, que não é uma duplicata de qualquer um dos preditores de informação de movimento do segundo subconjunto reduzido de preditores de informação de movimento para obter o conjunto final de predito- res de informação de movimento.
[0064] Em uma modalidade, o dispositivo inclui dispositivo para adicionar, ao sub-conjunto reduzido de preditores de informação de movimento, um preditor de informação de movimento resultante do processamento do primeiro subconjunto de preditores de informação de movimento que não é uma duplicata de qualquer um dos preditores de informação de movimento do subconjunto reduzido de preditores de informação de movimento; e onde o conjunto final de preditores de informação de movimento compreende vetores de movimento não duplicados dentre os preditores de informação de movimento do subconjunto reduzido de preditores de informação de movimento e o segundo subconjunto adicional de preditores de informação de movimento.
[0065] Em uma modalidade, o dispositivo inclui dispositivo para estimar a duração do processamento do primeiro subconjunto, onde o processamento do segundo sub-conjunto executado pelo segundo dispositivo de processamento simultaneamente com o processamento do primeiro subconjunto executado pelo primeiro dispositivo de processamento é baseado na estimativa da duração do processamento do primeiro subconjunto.
[0066] Em uma modalidade, o dispositivo inclui dispositivo para estimar a duração do processamento do primeiro subconjunto onde os preditores de informação de mo-vimento resultantes do processamento do segundo subconjunto que são adicionados aos preditores de informação de movimento resultantes do processamento do primeiro subconjunto para obter o conjunto final de preditores de informação de movimento são baseados na duração do processamento do primeiro subconjunto.
[0067] Em uma modalidade, o dispositivo inclui dispositivo para determinar, com base na diferença temporal entre a imagem da parte de imagem e a imagem da parte de imagem de referência, se ou não um processo de escalonamento temporal será aplicado ao primeiro subconjunto de preditores de informação de movimento; e onde no caso em que é determinado que um processo de escalonamento temporal será aplicado, o primeiro dispositivo de processamento é operável para executar o escalo-namento temporal dos preditores de informação de movimento do primeiro subcon-junto de preditores de informação de movimento com base na diferença temporal entre a imagem da parte de imagem e a imagem da parte de imagem de referência; de outra forma, no caso em que é determinado que um processo de escalonamento temporal não será aplicado, o primeiro dispositivo de processamento é operável para remover duplicatas dentre os preditores de informação de movimento do primeiro subconjunto de preditores de informação de movimento tal que um subconjunto reduzido compreendendo preditores de informação de movimento não duplicados dentre os preditores de informação de movimento do primeiro subconjunto de preditores de informação de movimento e do segundo subconjunto de preditores de informação de movimento é fornecido através do processamento executado pelo primeiro dispositivo de processamento e pelo segundo dispositivo de processamento.
[0068] Em uma modalidade, o dispositivo inclui dispositivo de supressão para obter o conjunto final de preditores de informação de movimento onde, no caso em que é determinado que um processo de escalonamento temporal será aplicado, o disposi-tivo de supressão é operável para obter o conjunto final de preditores removendo-se as duplicatas dentre os preditores de informação de movimento resultantes do pro-cessamento simultâneo do primeiro subconjunto de preditores de informação de mo-vimento e do segundo subconjunto de preditores de informação de movimento; de outra forma, no caso em que é determinado que um processo de escalonamento tem-poral não será aplicado, o primeiro ou segundo dispositivo de processamento é ope- rável para obter preditores de informação de movimento adicionais, com base no sub-conjunto reduzido para fornecer um segundo subconjunto adicional de preditores de informação de movimento e o dispositivo de supressão é operável para remover du-plicatas dentre o segundo subconjunto adicional de preditores de informação de mo-vimento.
[0069] Em uma modalidade, o dispositivo inclui dispositivo para determinar a com-plexidade do processo de escalonamento temporal do primeiro subconjunto de predi- tores de informação de movimento e dispositivo de supressão para obter o conjunto final de preditores de informação de movimento que não são duplicados; onde, no caso em que é determinado que o processo de escalonamento temporal terá uma duração mais longa do que um limite de duração predeterminado, o dispositivo de supressão é operável para remover as duplicatas dentre os preditores de informação de movimento resultantes do processamento do primeiro subconjunto de preditores de informação de movimento e do processamento do segundo subconjunto de predi- tores de informação de movimento; de outra forma, no caso em que é determinado que o processo de escalonamento temporal terá uma duração mais curta do que um limite de duração predeterminado, o dispositivo de supressão é operável para adicio-nar ao subconjunto reduzido de preditores de informação de movimento obtido a partir do segundo subconjunto de preditores de informação de movimento, um preditor de informação de movimento resultante do processamento do primeiro subconjunto de preditores de informação de movimento que não é uma duplicata de qualquer um dos preditores de informação de movimento do subconjunto reduzido de preditores de in- formação de movimento; onde o conjunto final de preditores de informação de movi-mento compreende preditores de informação de movimento não duplicados dentre os preditores de informação de movimento do subconjunto reduzido de preditores de in-formação de movimento e do segundo subconjunto de preditores de informação de movimento.
[0070] Em uma modalidade, o segundo dispositivo de processamento compreende dispositivo para remover duplicatas dentre os preditores de informação de movimento do dito segundo subconjunto para fornecer um subconjunto reduzido de pre- ditores de informação de movimento; e dispositivo para gerar um conjunto adicional de preditores de informação de movimento com base em um dos preditores de infor-mação de movimento do dito segundo subconjunto e incluindo o dito um dos predito- res de informação de movimento do dito segundo subconjunto, onde não há duplicatas dentre o conjunto adicional de preditores de informação de movimento, o dispositivo adicionalmente compreende dispositivo de supressão para remover duplicatas dentre o subconjunto reduzido de preditores de informação de movimento e o conjunto adicional de preditores de informação de movimento para fornecer um conjunto não duplicado de preditores de informação de movimento.
[0071] Em uma modalidade, o segundo dispositivo de processamento adicional-mente compreende dispositivo para gerar preditores de informação de movimento adicionais com base no subconjunto reduzido de preditores de informação de movimento para fornecer um segundo subconjunto adicional de preditores de informação de movimento; e dispositivo para remover duplicatas dentre os preditores de informação de movimento do segundo subconjunto adicional de preditores de informação de movimento e do conjunto não duplicado de preditores de informação de movimento para fornecer um segundo conjunto não duplicado de preditores de informação de movimento.
[0072] Em uma modalidade, os dispositivos de supressão são operáveis para adi-cionar, ao segundo conjunto não duplicado de preditores de informação de movi-mento, um preditor de informação de movimento resultante do processamento do pri- meiro subconjunto de preditores de informação de movimento que não é uma dupli-cata de qualquer um dos preditores de informação de movimento do segundo conjunto não duplicado de preditores de informação de movimento para obter o conjunto final de preditores de informação de movimento.
[0073] Na sequência de imagens digitais em um fluxo de bits, pelo menos uma parte de uma imagem sendo codificada por compensação de movimento com relação a uma parte de imagem de referência, onde, para pelo menos uma parte de imagem a ser codificada, o método compreende: obter um conjunto de preditores de informação de movimento úteis para predição de movimento da parte de imagem com relação a pelo menos uma parte de imagem de referência de acordo com o método de qualquer uma das modalidades do primeiro aspecto da invenção; selecionar pelo menos um preditor de informação de movimento a partir do conjunto de preditores de informação de movimento para codificar a parte de imagem; e codificar a parte de imagem usando pelo menos um preditor de informação de movimento selecionado.
[0074] Na sequência de imagens digitais em um fluxo de bits, pelo menos uma parte de uma imagem sendo codificada por compensação de movimento com relação a uma parte de imagem de referência, onde, para pelo menos uma parte de imagem a ser codificada, o método compreende: obter um conjunto de preditores de informação de movimento úteis para predição de movimento da parte de imagem com relação a pelo menos uma parte de imagem de referência de acordo com o método de qualquer uma das modalidades do primeiro aspecto da invenção; selecionar pelo menos um preditor de informação de movimento a partir do conjunto de preditores de informação de movimento para codificar a parte de imagem; e codificar a parte de imagem usando pelo menos um preditor de informação de movimento selecionado.
[0075] Um terceiro aspecto da invenção fornece um método para codificar uma sequência de imagens digitais em um fluxo de bits, pelo menos uma parte de uma imagem sendo codificada por compensação de movimento com relação a uma parte de imagem de referência, onde, para pelo menos uma parte da imagem a ser codifi-cada, o método compreende: obter um conjunto de preditores de informação de mo-vimento úteis para predição de movimento da parte de imagem com relação a pelo menos uma parte de imagem de referência de acordo com o método de qualquer uma das modalidades do primeiro aspecto da invenção; selecionar pelo menos um preditor de informação de movimento a partir do conjunto de preditores de informação de movimento para codificar a parte de imagem; e codificar a parte de imagem usando pelo menos um preditor de informação de movimento selecionado.
[0076] O método pode incluir codificar um item de informação identificando o pre- ditor de informação de movimento selecionado.
[0077] Um quarto aspecto da invenção fornece um dispositivo de codificação para codificar uma sequência de imagens em um fluxo de bits, pelo menos uma parte de uma imagem sendo codificada por compensação de movimento com relação a uma parte de imagem de referência, o dispositivo de codificação compreendendo: um dis-positivo para derivar pelo menos um preditor de informação de movimento de acordo com qualquer uma das modalidades do segundo aspecto da invenção; dispositivo de seleção selecionando pelo menos um preditor de informação de movimento a partir do conjunto de preditores de informação de movimento para codificar a parte de ima-gem; e dispositivo de codificação para codificar a parte de imagem usando pelo menos um preditor de informação de movimento selecionado.
[0078] Um quinto aspecto da invenção fornece um método para decodificar um fluxo de bits compreendendo uma sequência codificada de imagens, pelo menos uma parte de uma imagem codificada por compensação de movimento com relação a uma parte de imagem de referência, o método compreendendo, para pelo menos uma parte de imagem a ser decodificada: obter um conjunto de preditores de informação de movimento úteis para predição de movimento da parte de imagem com relação a pelo menos uma parte de imagem de referência de acordo com o método de qualquer uma das modalidades do primeiro aspecto da invenção; selecionar pelo menos um preditor de informação de movimento a partir do conjunto de preditores de informação de movimento para decodificar a parte de imagem; e decodificar a parte de imagem usando pelo menos um preditor de informação de movimento selecionado.
[0079] Um sexto aspecto da invenção fornece um dispositivo de decodificação para decodificar um fluxo de bits compreendendo uma sequência codificada de imagens, pelo menos uma parte de uma imagem codificada por compensação de movimento com relação a uma parte de imagem de referência, o dispositivo de decodifica- ção compreendendo:
[0080] um dispositivo para derivar pelo menos um preditor de informação de mo-vimento de acordo com o dispositivo de qualquer uma das modalidades do segundo aspecto da invenção; dispositivo de seleção para selecionar pelo menos um preditor de informação de movimento a partir do conjunto de preditores de informação de mo-vimento para decodificar a parte de imagem; e dispositivo de decodificação para de-codificar a parte de imagem usando pelo menos um preditor de informação de movi-mento selecionado.
[0081] Aprecia-se que as modalidades dos diferentes aspectos da invenção podem ser usadas para fatias P e B e tanto para predições inter uni e bidirecionais.
[0082] Pelo menos partes dos métodos de acordo com a invenção podem ser im-plementadas por computador. Consequentemente, s presente invenção pode tomar a forma de uma modalidade inteiramente de hardware, uma modalidade inteiramente de software (incluindo suporte lógico inalterável, software residente, microcódigo, etc.) ou uma modalidade combinando aspectos de software e hardware que podem ser todos geralmente chamados aqui de um “circuito”, “módulo” ou “sistema”. Ademais, a presente invenção pode tomar a forma de um produto de programa de computador incorporado em qualquer meio tangível de expressão tendo código de programa utilizado por computador incorporado no meio.
[0083] Como a presente invenção pode ser implementada em software, a presente invenção pode ser incorporada como código legível por computador para fornecimento a um aparelho programável em qualquer meio carreador adequado. Um meio carrea- dor tangível pode compreender um meio de armazenamento tal como um disco flexível, um CD-ROM, uma unidade de disco rígido, um dispositivo de fita magnética ou um dispositivo de memória de estado sólido e similares. Um meio carreador transiente pode incluir um sinal tal como um sinal elétrico, um sinal eletrônico, um sinal óptico, um sinal acústico, um sinal magnético ou um sinal eletromagnético, por exemplo, um sinal de micro-ondas ou RF.
Breve Descrição dos Desenhos
[0084] As modalidades da invenção serão agora descritas, por meio de exemplo somente, e com relação aos seguintes desenhos nos quais:
[0085] A FIG. 1 é um diagrama esquemático de um conjunto de preditores de vetor de movimento usados em um processo de predição de vetor de movimento no contexto das modalidades da presente invenção.
[0086] A FIG. 2 é um fluxograma que ilustra as etapas de um processo da técnica anterior para derivar um conjunto de preditores de vetor de movimento.
[0087] A FIG. 3 é um diagrama de blocos que ilustra os componentes de um dis-positivo de processamento no qual as modalidades da invenção podem ser implementadas.
[0088] A FIG. 4 é um diagrama de blocos que ilustra os componentes de um dis-positivo de codificação de acordo com as modalidades da invenção.
[0089] A FIG. 5 é um diagrama de blocos que ilustra os componentes de um dis-positivo de decodificação de acordo com as modalidades da invenção.
[0090] A FIG. 6 é um fluxograma que ilustra as etapas de um método para obter um conjunto de preditores de informação de movimento, de acordo com uma primeira modalidade da invenção.
[0091] A FIG. 7 é um fluxograma que ilustra as etapas de um método para obter um conjunto de preditores de informação de movimento, de acordo com uma segunda modalidade da invenção.
[0092] A FIG. 8 é um fluxograma que ilustra as etapas de um método para obter um conjunto de preditores de informação de movimento, de acordo com uma terceira modalidade da invenção.
[0093] A FIG. 9 é um fluxograma que ilustra as etapas de um método para obter um conjunto de preditores de informação de movimento, de acordo com uma quarta modalidade da invenção.
[0094] As FIGs. 10(a) a 10(c) ilustram esquematicamente os esquemas para a geração de preditores de vetor de movimento, de acordo com uma ou mais modalidades da invenção.
[0095] A FIG. 11 é um diagrama esquemático para ilustrar um processo de esca-lonamento de um preditor temporal usado nas modalidades da invenção.
[0096] Descrição Detalhada da Invenção
[0097] A FIG. 3 ilustra esquematicamente um dispositivo de processamento 200 configurado para implementar pelo menos uma modalidade da presente invenção. O dispositivo de processamento 200 pode ser um dispositivo, tal como um microcompu-tador, uma estação de trabalho ou um dispositivo portátil leve. O dispositivo 200 com-preende um barramento de comunicação 213 ao qual são conectados preferencial-mente: - uma unidade de processamento central 211, tal como um microprocessador, denotada CPU; - uma memória somente de leitura 207, denotada ROM, para armazenar pro-gramas de computador para implementar a invenção; - uma memória de acesso aleatório 212, denotada RAM, para armazenar o có-digo executável do método das modalidades da invenção, bem como os registros adaptados para registrar variáveis e parâmetros de necessários para implementar o método de codificação de uma sequência de imagens digitais e/ou o método de deco- dificação de um fluxo de bits, de acordo com as modalidades da invenção; e - uma interface de comunicação 202 conectada a uma rede de comunicação 203 ao longo da qual os dados digitais a serem processados são transmitidos.
[0098] Opcionalmente, o aparelho 200 pode incluir também os seguintes compo-nentes: - um dispositivo de armazenamento de dados 204, tal como, um disco rígido, para armazenar os programas de computador para implementar os métodos de uma ou mais modalidades da invenção e os dados usados ou produzidos durante a implementação de uma ou mais modalidades da invenção; - uma unidade de disco 205 para um disco 206, sendo a unidade de disco adaptada para ler os dados a partir do disco 206 ou para escrever os dados no dito disco; - uma tela 209 para exibir os dados e/ou que serve como uma interface gráfica ao usuário, por meio de um teclado 210 ou qualquer outro dispositivo de apontamento.
[0099] O aparelho 200 pode ser conectado a vários periféricos, tal como, por exemplo, uma câmera digital 200 ou um microfone 208, sendo cada um conectado a um cartão de entrada/saída (não mostrado), de modo a fornecer os dados de multimídia ao aparelho 200.
[00100] O barramento de comunicação fornece comunicação e a interoperabilidade entre os vários elementos incluídos no aparelho 200 e conectados a ele. A represen-tação do barramento não está limitada, e em particular, a unidade de processamento central é operável para comunicar as instruções a qualquer elemento do aparelho 200 diretamente ou por meio de outro elemento do aparelho 200.
[00101] O disco 206 pode ser substituído por qualquer meio de informação, tal como, por exemplo, um disco compacto (CD-ROM), regravável ou não, um disco ZIP ou um cartão de memória, e em termos gerais, por um meio de armazenamento de informação que pode ser lido por um microcomputador ou por um microprocessador, integrado ou não ao aparelho, possivelmente removível e adaptado para armazenar um ou mais programas cuja execução possibilita que o método de codificar uma se-quência de imagens digitais e/ou o método de decodificar um fluxo de bits de acordo com a invenção seja implementado.
[00102] O código executável pode ser armazenado ou na memória somente de lei-tura 207, no disco rígido 204, ou em um meio digital removível, tal como, por exemplo, um disco 206 como descrito anteriormente. De acordo com uma variante, o código executável dos programas pode ser recebido por meio da rede de comunicação 203, via a interface 202, de modo a ser armazenado em um dos meios de armazenamento do aparelho 200 antes de ser executado, tal como o disco rígido 204.
[00103] A unidade de processamento central 211 é adaptada para controlar e dire-cionar a execução das instruções ou partes do código de software do programa ou programas de acordo com a invenção, instruções que são armazenadas em um dos meios de armazenamento mencionados anteriormente. Na inicialização, o programa ou programas que são armazenados em uma memória não volátil, por exemplo, no disco rígido 204 ou na memória somente de leitura 207, são transferidos para a me-mória de acesso aleatório 212, que então contém o código executável do programa ou programas, bem como os registros para armazenar as variáveis e parâmetros ne-cessários para implementar a invenção.
[00104] Nesta modalidade, o aparelho é um aparelho programável que usa software para implementar a invenção. Entretanto, alternativamente, a presente invenção pode ser implementada em hardware (por exemplo, na forma de um Circuito Integrado de Aplicativo Específico ou ASIC).
[00105] A FIG. 4 ilustra um diagrama de bloco de um codificador, de acordo com pelo menos uma modalidade da invenção. O codificador é representado por módulos conectados, sendo cada módulo adaptado para implementar, por exemplo, na forma de instruções programáveis a serem executadas pela CPU 211 do dispositivo 200, pelo menos uma etapa correspondente de um método para implementar pelo menos uma modalidade de codificar uma imagem de uma sequência de imagens, de acordo com uma ou mais modalidades da invenção.
[00106] Uma sequência original de imagens digitais i0 a in 301 é recebida como uma entrada pelo codificador 30. Cada imagem digital é representada por um conjunto de amostras conhecidas como pixels.
[00107] Um fluxo de bits 310 é emitido pelo codificador 30 após a implementação do processo de codificação.
[00108] O fluxo de bits 310 compreende uma pluralidade de unidades ou fatias de codificação, sendo que cada fatia compreende um cabeçalho de fatia para transmitir os valores de codificação de parâmetros de codificação usados para codificar a fatia e um corpo de fatia, compreendendo os dados de vídeo codificados.
[00109] As imagens digitais de entrada i0 a in 301 são divididas em blocos de pixels pelo módulo 302. Os blocos correspondem às partes de imagem e podem ser de ta-manhos variados (por exemplo, 4x4, 8x8, 16x16, 32x32 pixels). Um modo de codifica-ção é selecionado para cada bloco de entrada. São fornecidas duas famílias de modos de codificação: os modos de codificação baseados na codificação de predição espacial (predição INTRA) e os modos de codificação baseados na predição temporal (Inter codificação, Bidir, SKIP). Os possíveis modos de codificação são testados.
[00110] O módulo 303 implementa a predição INTRA, na qual o dado bloco a ser codificado é predito por um preditor computado a partir dos pixels do dito bloco vizinho a ser codificado. Uma indicação do preditor INTRA selecionado e a diferença entre o dado bloco e seu preditor é codificada para fornecer um residual, se a codificação INTRA for selecionada.
[00111] A predição temporal é implementada pelo módulo de estimativa de movi-mento 304 e pelo módulo de compensação de movimento 305. Primeiramente, uma imagem de referência dentre um conjunto de imagens de referência 316 é selecio-nada, e uma parte da imagem de referência, também chamada de área ou parte de imagem de referência, que é a área mais próxima do dado bloco a ser codificado, é selecionada pelo módulo de estimativa de movimento 304. O módulo de compensação de movimento 305 prevê então o bloco a ser codificado usando a área selecionada. A diferença entre a área de referência selecionada e o dado bloco, também chamado de um bloco residual, é computada pelo módulo de compensação de movimento 305. A área de referência selecionada é indicada por um vetor de movimento.
[00112] Assim, em ambos os casos (predição espacial e temporal), um residual é computado subtraindo-se a predição do bloco predito original.
[00113] Na predição INTRA implementada pelo módulo 303, uma direção de predi-ção é codificada. Na predição temporal, pelo menos um vetor de movimento é codifi-cado.
[00114] A informação com relação ao vetor de movimento e o bloco residual é co-dificada se a predição INTER for selecionada. Para reduzir mais a taxa de bits, o vetor de movimento é codificado pela diferença com relação a um preditor de vetor de mo-vimento. Os preditores de vetor de movimento de um conjunto de preditores de infor-mação de movimento são obtidos a partir do campo de vetores de movimento 318 por um módulo de predição e codificação de vetor de movimento 317.
[00115] O conjunto de preditores de vetor de movimento, a partir do qual um predi- tor do vetor de movimento é selecionado para codificar um vetor de movimento atual, é gerado como será explicado em mais detalhes em seguida com relação a qualquer uma das FIGs. 7 a 10. Para um dado bloco atual a ser codificado, em algumas moda-lidades da invenção, um número N de preditores de vetor de movimento é determi-nado, e consequentemente, o índice do preditor de vetor de movimento selecionado, que é um item de informação representativo do dito preditor de vetor de movimento selecionado, que pode ser codificado usando um número predeterminado de bits de acordo com o número N de preditores de vetor de movimento. Esse número predeter-minado de bits pode também ser recuperado pelo decodificador, mesmo em casos de perdas, então pode-se garantir que o decodificador seja capaz de analisar a taxa de bits, mesmo no caso de erros ou de perdas. Os N preditores de vetor de movimento são selecionados de acordo com as várias modalidades da invenção como sendo to-dos diferentes entre si, de tal forma a melhorar a eficiência de compressão.
[00116] O codificador 30 compreende ainda um módulo de seleção 306 para sele-cionar o modo de codificação. O módulo de seleção 306 aplica um critério de custo de codificação, tal como um critério de taxa de distorção, para determinar qual é o melhor modo dentre o modo de predição espacial e o modo de predição temporal. De modo a reduzir mais as redundâncias, uma transformada é aplicada pelo módulo de transformação 307 ao bloco residual, os dados transformados obtidos são então quantiza- dos pelo módulo de quantização 308 e a entropia codificada pelo módulo de codificação de entropia 309. Finalmente, o bloco residual codificado do bloco atual sendo codificado é inserido na taxa de fluxo 310, junto com a informação relativa ao preditor usado, tal como o índice do preditor de vetor de movimento selecionado. Para os blocos codificados no modo ‘SKIP’, somente uma referência ao preditor é codificada no fluxo de bits, sem qualquer bloco residual.
[00117] O codificador 30 também executa a decodificação da imagem codificada de modo a produzir uma imagem de referência para a estimativa de movimento das imagens subsequentes. Isso possibilita que o codificador e o decodificador recebam o fluxo de bits como tendo os mesmos quadros de referência. O módulo de quantiza- ção inversa 311 executa a quantização inversa dos dados quantizados, seguido por uma transformada inversa pelo módulo de transformada inversa 312. O módulo de predição intra inversa 313 usa a informação de predição para determinar qual preditor usar para um dado bloco e o módulo de compensação de movimento inverso 314 realmente adiciona o residual obtido pelo módulo 312 à área de referência obtida a partir do conjunto de imagens de referência 316. Opcionalmente, um filtro de desblo-queio 315 é aplicado para remover os efeitos de bloqueio e melhorar a qualidade vi-sual da imagem decodificada. O mesmo filtro de desbloqueio é aplicado no decodifi- cador, de tal forma que se não existir perda de transmissão, o codificador e o decodi- ficador aplicarão o mesmo processamento.
[00118] A FIG. 5 ilustra um diagrama de bloco de um decodificador 40, de acordo com pelo menos uma modalidade da invenção. O decodificador é representado pelos módulos conectados, sendo cada módulo adaptado para implementar, por exemplo na forma de instruções de programação a serem executadas pela CPU 211 do dispo-sitivo 200, uma etapa correspondente de um método implementando uma modalidade da invenção.
[00119] O decodificador 40 recebe um fluxo de bits 401 compreendendo as unidades de codificação, sendo cada uma composta de um cabeçalho contendo informação sobre os parâmetros de codificação e um corpo contendo os dados de vídeo codifica-dos. Como explicado com relação à FIG. 4, os dados de vídeo codificados são codifi-cados por entropia, e os índices dos preditores do vetor de movimento são codifica-dos, para um dado bloco, em um número predeterminado de bits. Os dados de vídeo codificados recebidos são decodificados por entropia pelo módulo 402. Os dados re-siduais são então desquantizados pelo módulo 403 e então uma transformada inversa é aplicada pelo módulo 404 para obter os valores de pixels.
[00120] Os dados de modo também são decodificados por entropia e baseados no modo, uma decodificação do tipo INTRA ou do tipo INTER é executada.
[00121] No caso do modo INTRA, um preditor INTRA é determinado pelo módulo de predição inversa INTRA 405 com base no dito modo de predição INTRA especificado no fluxo de bits.
[00122] Se o modo for INTER, a informação de predição de movimento é extraída do fluxo de bits, de tal forma a encontrar a área de referência usada pelo codificador.A informação de predição de movimento é composta pelo índice de quadro de refe-rência e o residual do vetor de movimento. O preditor de vetor de movimento é adici-onado ao residual de vetor de movimento de modo a obter o vetor de movimento pelo módulo de decodificação de vetor de movimento 410.
[00123] O módulo de decodificação de vetor de movimento 410 aplica a decodifica- ção de vetor de movimento para cada bloco atual codificado por predição de movi-mento. Uma vez que um índice do preditor de vetor de movimento para o bloco atual foi obtido, o valor real do vetor de movimento associado com o bloco atual pode ser decodificado e usado para aplicar a compensação de movimento inversa pelo módulo 406. A área de referência indicada pelo vetor de movimento decodificado é extraída de uma imagem de referência 408 para aplicar a compensação de movimento inversa 406. Os dados do campo de vetor de movimento 411 são atualizados com o vetor de movimento decodificado, de modo a serem usados para a predição inversa dos próximos vetores de movimento decodificados.
[00124] Finalmente, um bloco decodificado é obtido. Um filtro de desbloqueio 407 é aplicado; similarmente ao filtro de desbloqueio 315 aplicado no codificador. Um sinal de vídeo decodificado 409 é finalmente fornecido pelo decodificador 40.
[00125] A FIG. 6 é um fluxograma que ilustra as etapas de um método de acordo com uma primeira modalidade da invenção para derivar um conjunto de potenciais preditores de informação de movimento adequados para a codificação de uma parte de imagem de uma imagem com relação a uma parte de imagem de referência. Na primeira etapa do método, 7 posições e bloco são consideradas (701 a 707). Essas posições correspondem às posições espacial e temporal descritas na FIG. 1. O mó-dulo 708 verifica a disponibilidade dos vetores de movimento das 7 posições de bloco e seleciona os 4 vetores de movimento como os preditores de vetor de movimento. Nesse módulo, um vetor de movimento está disponível como um preditor, se ele existir e se o bloco de vetor de movimento não for INTRA codificado. A seleção e a verificação dos 4 preditores de vetor de movimento são descritas sob as seguintes condições:
[00126] Visto que o conjunto de preditores de vetor de movimento selecionados no início do processo contém somente os preditores espaciais 1, 2, 3, 4, a complexidade do processo de seleção 715 é reduzida comparado ao processo de seleção da técnica anterior na FIG. 2 compreendendo 4 preditores espaciais e 1 preditor temporal.
[00127] O processo de supressão consiste em comparar cada preditor selecionado com todos os outros preditores selecionados e em remover aqueles preditores seleci-onados que são iguais a outro preditor selecionado (enquanto retendo o outro preditor selecionado do qual o preditor removido é uma duplicata) para fornecer um conjunto de preditores nos qual nenhum dos preditores é duplicado. O processo de supressão para fatias P leva em consideração os valores dos vetores de movimento e seus índices de quadro de referência. Consequentemente, os dois componentes de um vetor de movimento e seu índice de quadro de referência são comparados a todos os componentes correspondentes dos outros vetores de movimento e somente se esses três valores forem iguais, o preditor será removido (não adicionado ao) do conjunto. Para um quadro B, esse critério pode ser estendido à direção e às listas. Assim, um preditor é considerado como um preditor duplicado se ele usar a mesma direção, as mesmas listas (L0, L1, ou L0 e L1), os mesmos índices de quadro de referência e o mesmo valor dos vetores de movimento (MV_L0 e MV_L1 para predição bidirecional) no conjunto de vetores de movimento selecionados. O processo de supressão dura 1 ciclo quando 5 preditores no máximo precisam ser comparados. De fato, pode-se se considerar que 12 comparações podem ser computadas em 1 ciclo. O número máximo de comparações para o processo de supressão, no caso mais complexo, é igual à Soma de 0 a N-1. Visto que o número máximo de preditores no início do processo de supressão é igual a 4 ao invés de 5, o número máximo de comparações a serem executadas é 6 (isto é, 3 + 2 + 1 = 6) comparado a 10 como para os 5 preditores selecionados da técnica anterior da FIG. 2. No fim desse processo de supressão 715, um conjunto reduzido de preditores 716 é gerado. O conjunto reduzido de preditores de vetor de movimento 716 contém no máximo 4 preditores comparados aos 5 da técnica anterior.
[00128] O módulo de geração do preditor de vetor de movimento 717 gera novos candidatos a preditores com base nos preditores do conjunto reduzido de preditores de vetor de movimento. Vários esquemas para criar tais preditores podem ser usados e um tal esquema será descrito posteriormente com relação às FIGs. 10(a) a (c). Pode-se considerar que o processo executado pelo módulo de geração de preditor de vetor de movimento dure pelo menos 1 ciclo e produza um segundo conjunto de pre- ditores 718. Como o conjunto reduzido de preditores 716 geralmente contém menos preditores do que o conjunto reduzido de preditores 616 da técnica anterior ilustrada na FIG. 2, em média menos preditores combinados e preditores escalonados são ge-rados no conjunto reduzido de preditores de vetor de movimento 717 comparado com o da técnica anterior e a complexidade do processo é reduzida.
[00129] Em seguida, o módulo de processamento de supressão 721 que opera de uma maneira similar ao módulo de processo de supressão 715, remove os candidatos duplicados do segundo conjunto de preditores 718 e do conjunto reduzido de predito- res 716 comparando os respectivos componentes de vetor de movimento e os parâmetros de informação de movimento associados. Na técnica anterior ilustrada na FIG. 2, a duração desse processo particular pode alcançar 3 ciclos dependendo do número de preditores gerados no segundo conjunto de preditores 718, particularmente no caso em que a geração de preditor de vetor de movimento do modelo HEVC atual é aplicada. O processo de supressão 721 produz um segundo conjunto reduzido de preditores de vetor de movimento 722.
[00130] Finalmente, o preditor temporal 714 é comparado com o segundo conjunto reduzido de preditores de vetor de movimento 722 no módulo 719. No processamento de supressão e reordenamento executado pelo módulo 719, o preditor temporal é comparado a, no máximo, 5 preditores de modo a determinar se o preditor temporal é um preditor duplicado. Se ele não é um preditor duplicado, o preditor temporal é inse-rido na lista de preditores logo antes do último preditor espacial não duplicado. A po-sição temporal foi determinada pelo módulo de processamento de supressão 715 e transmitida ao módulo de processamento 719, e corresponde ao número de preditores em 715. A lista de preditores é truncada se ela contém mais de 5 preditores de modo a produzir o conjunto final de preditores 720. Pode-se notar que o número máximo de comparações executadas pelo módulo 719 é 5 no caso mais complexo que é uma redução comparada a do módulo de supressão 619 da técnica anterior ilustrada na FIG. 2.
[00131] Em uma modalidade alternativa, o módulo de processamento de supressão 719 pode operar da mesma maneira que o módulo de processamento de supressão 619 da técnica anterior. Em um tal caso, o preditor temporal é somente adicionado ao conjunto de preditores se o conjunto reduzido de preditores 722 contém no máximo 4 preditores. De outra forma, ele é adicionado ao fim da lista de preditores.
[00132] A FIG. 7 ilustra uma segunda modalidade da invenção. A principal diferença com relação à modalidade da FIG. 6 é que o processo de geração de preditor de vetor de movimento executado pelo módulo 817 tem uma duração de 2 ciclos ao invés de 1 ciclo como no caso do módulo 717 da FIG. 6. No caso da FIG. 7, o processo de supressão para remover os preditores duplicados do segundo conjunto de preditores 818 não é executado em paralelo ao processo de escalonamento temporal 809. Con-sequentemente, na FIG. 7, no módulo de supressão 819, o preditor temporal 814 é comparado com ambos os preditores do conjunto reduzido de preditores de vetor de movimento 816 e os preditores do segundo conjunto de preditores 818. Nesse pro-cesso, se o preditor temporal 814 não é um preditor duplicado dos preditores de vetor de movimento do conjunto reduzido de preditores de vetor de movimento 816, o pre- ditor temporal 814 é adicionado ao conjunto reduzido de preditores de vetor de movi-mento após os preditores espaciais. Em seguida, os preditores do segundo conjunto de preditores 818 são comparados com os preditores do conjunto reduzido de predi- tores de vetor de movimento 816, com o preditor temporal 814 se adicionado, e aos outros preditores do segundo conjunto de preditores 818.
[00133] A vantagem do processamento das modalidades da FIG. 6 ou da FIG. 7 resulta da execução completa do processo de escalonamento 709 em paralelo com o primeiro processo de supressão 715 ou 815 e com o processo de geração de predito- res de vetor de movimento 717 ou 817. De acordo com a complexidade de cada pro-cesso, os processos de supressão adicionais 721 podem ser incluídos no método para predeterminar um conjunto não duplicado de modo a reduzir a complexidade do processo de supressão final 719. Assim, na primeira modalidade da invenção, pode-se considerar que o processo de supressão geral é dividido em dois processos de su-pressão implementados pelos módulos 721 e 719.
[00134] O processo de escalonamento paralelo tem um impacto benéfico na efici-ência de codificação. De fato, como o preditor temporal 714 ou 814 não é usado para gerar o segundo conjunto de preditores 718 ou 818, esse tem um impacto na geração dos preditores de vetor de movimento.
[00135] As etapas de um método de gerar um conjunto de preditores de vetor de movimento de acordo com uma terceira modalidade da invenção são ilustradas no fluxograma da FIG. 8. O método de acordo com a terceira modalidade da invenção reduz mais o impacto na eficiência da codificação.
[00136] O módulo de seleção 908 opera de uma maneira similar aos módulos de seleção correspondentes 708 e 808 da primeira e da segunda modalidade da inven-ção para selecionar 4 vetores de movimento 910 a 913, com base em sua disponibili-dade, a partir das posições de bloco espacial e temporal 901 a 907.
[00137] A principal diferença é o uso de um módulo de decisão de escalonamento 923. No módulo de decisão de escalonamento 923, a distância temporal do vetor de movimento temporal e a distância temporal do preditor temporal (número de preditor 5) são comparadas. Pra um tipo unidirecional de predição INTER, isso significa que a diferença de Contagem de Ordem de Imagem (POC) entre o quadro temporal (o qua-dro de blocos H e blocos colocalizados) e o quadro de referência apontado pelo vetor de movimento temporal (H ou colocalizado) é comparada com a distância temporal entre o quadro atual e o quadro de referência do preditor temporal. Se essas distân-cias temporais são iguais, o módulo de decisão de escalonamento 923 retorna o valor “Não”. De outra forma, isso significa que um processo de escalonamento é necessário, e o módulo de decisão de escalonamento 923 compara as distâncias temporais para cada lista e a decisão retornada depende das decisões para ambas as listas. Assim, se para ambas as listas nenhum escalonamento é necessário, o módulo de decisão de escalonamento 923 retorna o valor “Não” e se pelo menos um processo de escalonamento for necessário para uma lista, o módulo de decisão de escalonamento 923 retorna o valor “Sim”.
[00138] Se o módulo de decisão de escalonamento 923 retorna o valor “Não”, o preditor temporal 5 (924) é usado no processo de supressão 915. Consequentemente, a geração de preditores de vetor de movimento 917 usa o valor do preditor temporal 5 para gerar o segundo conjunto de preditores 918. Então, o processo de supressão 921 é aplicado ao conjunto reduzido de preditores 916 e o conjunto de segundos pre- ditores 918. Em seguida, um módulo de decisão 925 toma uma decisão sobre o fornecimento do conjunto final de preditores de vetor de movimento com base na decisão do módulo de decisão de escalonamento 923 - isto é, a decisão tomada pelo módulo de decisão de escalonamento 923 é usada para determinar se ou não o conjunto reduzido de preditores produzido pelo processo de supressão 921 é o conjunto de pre- ditores final - quando um “Não” é retornado pelo módulo de decisão 923, é determinado que o conjunto reduzido de preditores produzido pelo processo de supressão 921 é o conjunto de preditores final. Assim, quando o módulo de decisão de escalonamento 923 retorna um “Não” indicando que o escalonamento não é exigido, a derivação do conjunto de preditores opera de uma maneira similar à derivação do conjunto de preditores como ilustrado na FIG. 2.
[00139] De outra forma, se o módulo de decisão de escalonamento 923 retorna o valor “Sim”, indicando que o preditor temporal é escalonado no módulo 909 para pro-duzir um número de preditor temporal 5 (914), é determinado que o conjunto reduzido de preditores produzido pelo processo de supressão 921 não é o conjunto de predito- res final. Nesse caso, o módulo de processo de supressão 915 não usou o preditor temporal para o processo de supressão e o módulo de geração de preditor de vetor de movimento 917 não usou o preditor temporal para criar novos preditores. Consequentemente, de uma maneira similar ao processo ilustrado no fluxograma da FIG. 6, o processo de escalonamento 909 do preditor temporal 5 é executado em paralelo à geração de preditores de vetor de movimento 917. O módulo de decisão de escalonamento 925, após o segundo processo de supressão, retorna o valor “Sim”. Assim, o preditor temporal escalonado 914 é comparado com os preditores do segundo conjunto reduzido de preditores 922 no processo de supressão 919. Como no caso do módulo de processo de supressão 719 da FIG. 6, se o preditor temporal 914 é um preditor não duplicado dos preditores no segundo conjunto reduzido de preditores, o módulo de supressão e reordenamento 919 insere o preditor temporal no conjunto de preditores após o primeiro conjunto reduzido de preditores 916 fornecer o conjunto final de preditores 920.
[00140] Para resumir essa modalidade, o processo de escalonamento 909 é exe-cutado em paralelo ao processo de geração 917 do segundo conjunto 918 somente se o preditor temporal precisar ser escalonado.
[00141] Se considerar-se que a geração dos preditores de vetor de movimento 917 dura 1 ciclo, e se o preditor temporal não precisa de um processo de escalonamento, 4 ciclos são necessários para produzir o conjunto de preditores Merge, de outra forma 5 ciclos são necessários. Consequentemente, o processo é reduzido por 2 ciclos no caso mais complexo como na primeira modalidade. As principais vantagens dessa modalidade comparada com a anterior são o uso do preditor temporal para a geração do segundo conjunto dos preditores somente quando o preditor temporal não precisa de escalonamento. Consequentemente, a eficiência de codificação pode ser melho-rada comparada com a primeira modalidade.
[00142] Em uma modalidade adicional, é possível considerar a complexidade do processo de escalonamento. Por exemplo, pode ser possível saber se o processo de escalonamento exige somente um ciclo. Um ciclo é somente necessário se o sinal do preditor de vetor de movimento precisa ser alterado. Nesse caso, o preditor temporal está disponível ao mesmo tempo que o conjunto reduzido de preditores 916. Assim, o preditor temporal pode ser usado para o processo de supressão 921. Nesse caso, o módulo de decisão de escalonamento 925 retorna o valor “Sim” e os módulos 922 e 919 não são necessários para fornecer o conjunto final de preditores. Consequente-mente, a duração do processo de derivação é reduzida por um ciclo porque o processo de supressão 919 dura 1 ciclo.
[00143] A FIG. 9 é um fluxograma que ilustra um método para derivar um conjunto de preditores de vetor de movimento de acordo com uma quarta modalidade da in-venção. O fluxograma da FIG. 9 é baseado nesse da FIG. 6. Como uma consequên-cia, os módulos 1001 a 1020 e 1022 da FIG. 9 são respectivamente os mesmos dos módulos 701 a 720 e 720 da FIG. 6. As diferenças são o uso em paralelo dos predito- res não duplicados através da adição de compensações como será descrito na gera-ção de preditores de vetor de movimento com relação às FIGs. 10(a)-(c). Quando o primeiro preditor 1 1010 é definido, o módulo 1023 gera uma lista de preditores não duplicados. Como explicado com relação à FIG. 10(c), esse processo consiste em adicionar compensações a um ou ambos os componentes de vetor do primeiro predi- tor 1010. O conjunto de preditores não duplicados 1024 contém 4 preditores que são todos diferentes entre si e diferentes do primeiro preditor 1010 disponível após a veri-ficação de disponibilidade implementada pelo módulo de processamento de seleção 1008. Como uma consequência, nesta modalidade, o conjunto de preditores não du-plicados 1024, quando adicionado ao primeiro preditor 1010, contém 5 preditores não duplicados como fixados para o modo Merge. A geração de preditores não duplicados é executada em paralelo ao processo de supressão 1015. O módulo de processamento de supressão 1025 compara o conjunto de preditores não duplicados 1024 com o conjunto reduzido de preditores 1016 de modo a obter somente 5 preditores. O conjunto de preditores não duplicados 1026 contém o conjunto reduzido de preditores 1016 seguido pelo conjunto de preditores não duplicados gerados em 1024. Pode-se notar que o processo de supressão 1025 geralmente exige um máximo de 6 comparações. O caso mais complexo acontece quando o conjunto reduzido de preditores de vetor de movimento 1016 contém 4 preditores. O conjunto de preditores não duplicados 1024 contém 4 preditores. Teoricamente, o processo de supressão exige 16 comparações no caso mais complexo (4 preditores do conjunto reduzido de preditores de vetor de movimento 1016 por 4 preditores do conjunto de preditores não duplicados 1024). Entretanto, os preditores de vetor de movimento no conjunto de preditores não duplicados 1024 são diferentes do primeiro preditor, então somente o segundo, o terceiro e o quarto preditor do conjunto reduzido de preditores de vetor de movimento 1016 precisam ser comparados com o conjunto de preditores de vetor de movimento não duplicados 1024. Como uma consequência, 12 (4 por 3) comparações são necessárias. Os preditores são todos diferentes entre si no conjunto de preditores não du- plicados 1024, então no caso mais complexo, se os 3 primeiros preditores dos predi- tores não duplicados 1024 são iguais aos 3 últimos preditores do conjunto reduzido de preditores de vetor de movimento 1016, pode-se assumir que o último preditor em 1024 é diferente do preditor do conjunto reduzido de preditores de vetor de movimento 1016. Assim, somente 9 (3 por 3) comparações são necessárias.
[00144] Em seguida, um segundo conjunto de preditores de vetor de movimento 1018 é gerado pelo módulo de geração de preditores de vetor de movimento 1017. O processo de supressão e reordenamento 1021 verifica se os preditores de vetor de movimento do segundo conjunto de preditores 1018 não são duplicados comparados com o conjunto não duplicado 1026 que já contém 5 preditores. Se um preditor do segundo conjunto de preditores 1018 é diferente de todos os outros, ele é inserido na posição do número de preditores no conjunto reduzido de preditores 1016 (após os preditores do conjunto reduzido de preditores de vetor de movimento 1016 na lista). As etapas subsequentes 1022, 1019 e 1020 operam da mesma maneira dos módulos de processamento 722, 719 e 720 da FIG. 6.
[00145] Pode-se notar que a geração de preditores não duplicados 1023 pode ser adicionada no fim do processo de derivação, após o processo de supressão 1019. Isso exigiria um processo de supressão adicional que precisa de um ciclo mais e não resultaria no mesmo ordenamento de conjunto de preditores.
[00146] A quarta modalidade tem várias vantagens. Primeiramente, nessa modali-dade, cada posição de preditor em um valor. Consequentemente, o método fornece um processo mais robusto do que o modelo atual de HEVC. De fato, um codificador pode usar um índice de preditor sem valor no decodificador que pode causar uma pane no decodificador. Isso pode ocorrer, por exemplo, quando erros de rede ocorrem.
[00147] Essa modalidade compensa a perda de eficiência de codificação do escalonamento paralelo. Ademais, essa modificação também compensa a perda de eficiência de codificação de uma redução do número de candidatos gerados no módulo de geração de preditores de vetor de movimento 1017. Com esses preditores não duplicados, somente 2 preditores precisam ser gerados em 1021. Consequentemente, o processo de supressão 1021 precisa somente de 10 comparações no caso mais complexo. Assim, somente um ciclo é necessário ao invés de 3 para o caso mais complexo do modelo HEVC atual apresentado na FIG. 2. Com essa simplificação, somente 5 ciclos no caso mais complexo são necessários para derivar o conjunto de preditores Merge ao invés de 11 para o modelo HEVC atual.
[00148] Será apreciado que a quarta modalidade da FIG. 9 pode ser facilmente combinada com a terceira modalidade apresentada na FIG. 8.
[00149] Exemplos de processos para a geração de vetores de movimento adicionais como preditores implementados pelos módulos de geração de preditores de vetor de movimento 717, 817, 917, e 1017 das FIGs. 6, 7, 8 e 9 respectivamente serão agora descritos com relação às FIGs. 10(a)-(c). O modelo atual HEVC usa 3 esquemas para adicionar novos preditores com base na geração de conjunto atual. O primeiro esquema é usado para fatias B. A geração de preditores de vetor de movimento envolve combinar os preditores do conjunto reduzido de preditores 716, 816, 916, 1016 das FIGs. 6, 7, 8, e 9 respectivamente. Um preditor combinado é gerado através da seleção do vetor de movimento da lista L0 de um primeiro preditor e através da seleção do vetor de movimento da lista L1 de outro preditor. Por exemplo, o primeiro preditor combinado possível tem o vetor de movimento (e índice de referência) de L0 do primeiro preditor de 716 e o vetor de movimento (e índice de referência) de L1 do segundo preditor de 716. No modelo HEVC atual, 12 possíveis preditores combinados podem ser gerados. A FIG. 10(a) mostra um exemplo desse processo.
[00150] O segundo esquema pode somente ser usado para fatias B. O preditor es-calonado compreende alterar os preditores unidirecionais com preditores bidirecio-nais. Se um preditor de 716 é unidirecional, o vetor de movimento é criado na lista oposta com base no vetor de movimento inicial. Por exemplo, se o primeiro preditor de 716 é unidirecional e se ele aponta para L0 com o índice de referência 0, o valor de seu vetor de movimento é escalonado para apontar para o índice de referência 0 de L1. O preditor construído contém o índice de referência 0 e o valor do vetor de movimento para L0 e o índice de referência 0 e o vetor escalonado para a lista L1. Esse novo preditor bidirecional é adicionado ao segundo conjunto de preditores (718).Esse tipo de geração de preditor é muito complexa porque ela precisa escalonar ve-tores de movimento, assim isso aumenta o número de ciclos para o módulo 717 (3 ciclos). Assim, o processo de escalonamento pode ser limitado a inverter o sinal do componente de valor do vetor de movimento que pode ser executado em um ciclo, ao invés de 3 para o processo de escalonamento clássico. A FIG. 10(b) mostra um exem-plo dessa geração.
[00151] Outro método de gerar novos preditores de vetor de movimento é alterar os preditores bidirecionais para preditores unidirecionais. Nesse caso, quando um predi- tor é bidirecional, 2 novos preditores podem ser gerados (um para cada lista). Esse é um processo de baixa complexidade comparado com o processo de vetor de movimento escalonado da FIG. 10(a).
[00152] No modelo de HEVC atual, no fim da lista, um valor de “vetor de movimento zero” é adicionado. Para o Merge, o valor zero é configurado para ambos os vetores de movimento de L0 e L1. E se possível, o índice de quadro de referência de cada lista é aumentado para criar outros preditores zero. Assim, somente o índice de refe-rência é alterado. Se N índices de referência são usados em ambas as listas, N veto-res zero podem ser adicionados ao conjunto de preditores. A FIG. 10(c) ilustra um exemplo de tal processo de geração de preditores de vetor de movimento.
[00153] Ademais, é possível usar preditores não duplicados através da adição de uma ou mais compensações aos componentes ou vários componentes de um preditor disponível do conjunto inicial de preditores. Por exemplo, se somente um preditor está no conjunto inicial de preditores, é possível gerar 4 preditores que são todos diferentes. Por exemplo, considera-se que o preditor na lista é unidirecional, o primeiro pre- ditor é gerado através da adição de um valor de compensação em um componente do primeiro vetor de movimento. O segundo preditor é gerado através da adição da compensação inversa ao primeiro componente. O terceiro é obtido através da adição da compensação ao segundo componente e o quarto através da adição da compensação inversa ao segundo componente. Pode-se notar que esse processo pode ser aplicado ao primeiro candidato, de modo que o preditor possa ser derivado antes do processo de supressão 715.
[00154] A FIG. 11 mostra um exemplo de um escalonamento para o preditor temporal como aplicado em módulos de escalonamento 709, 809, 909 e 1009 das FIGs. 6, 7, 8 e 9 respectivamente. Nessa figura, o vetor de movimento colocalizado MVcol no quadro de referência Ref0 apontou para Ref2 com o POC (Contagem de Ordem de Imagem) igual a N-3. O quadro de referência do preditor temporal MVt foi determi-nado e é igual a Ref0 (Número POC igual a N-1). A distância temporal iDiffPocD do vetor de movimento colocalizado é igual ao POC de Ref2 menos o POC de Ref0. Assim, sua distância temporal é igual a:iDiffPocD = (N-3) - (N-1) = 2
[00155] Da mesma forma, a distância temporal iDiffPocB que precisa ser coberta pelo preditor temporal é igual ao POC do quadro atual N menos o POC de Ref0: iDiffPocB = (N) - (N-1) = 1
[00156] Teoricamente, o vetor de movimento escalonado para o preditor temporal é igual a: MVt = (iDiffPocB * MVcol)/iDiffPocD
[00157] Assim, no exemplo, cada componente (horizontal e vertical) é dividido por 2. Entretanto, no modelo HEVC atual, o escalonamento de um vetor de movimento é dado pelo seguinte processo: - O fator escalonado é determinado pela seguinte fórmula: iScale = (iDiffPocB * iX + 32) > > 6; - com iX iX = (0x4000 + abs(iDiffPocD/2) / iDiffPocD; - O MVt é então dado por: MVt = (iScale * MVcol + 127 + (iScale * MVcol < 0)) > > 8
[00158] Nessas fórmulas:
[00159] “> >” representa o operador de deslocamento
[00160] “abs” representa uma função que retorna o valor absoluto
[00161] “0x4000” representa o valor 16384
[00162] As modalidades da invenção fornecem assim um processo de derivação paralelo cujo objetivo de reduzir o número de ciclos necessários para derivar um conjunto de preditores de vetor de movimento com um impacto menor na eficiência de codificação.
[00163] Embora a presente invenção tenha sido descrita acima com relação às mo-dalidades específicas, a presente invenção não está limitada às modalidades especí-ficas, e modificações estarão claras a um versado na técnica que estão dentro do escopo da presente invenção. Muitas modificações e variações adicionais se sugerem aos versados na técnica fazendo referência às modalidades ilustrativas anteriores, que são dadas por meio de exemplo somente e que não são destinadas a limitar o escopo da invenção, que são determinadas unicamente pelas reivindicações em anexo. Em particular, as diferentes características de modalidades diferentes podem ser intercambiadas, onde apropriado.
[00164] Nas reivindicações, a palavra “compreendendo” não exclui outros elementos ou etapas, e o artigo indefinido “um” ou “uma” não exclui uma pluralidade. O mero fato de que as diferentes características são citadas em reivindicações dependentes mutuamente diferentes não indica que uma combinação dessas características não pode ser vantajosamente usada.