BR112017024902B1 - Dispositivo codificador de vídeo, método para codificação preditiva, dispositivo decodificador de vídeo, método para decodificar um fluxo de bits de vídeo, e meio não transitório legível por computador - Google Patents

Dispositivo codificador de vídeo, método para codificação preditiva, dispositivo decodificador de vídeo, método para decodificar um fluxo de bits de vídeo, e meio não transitório legível por computador Download PDF

Info

Publication number
BR112017024902B1
BR112017024902B1 BR112017024902-2A BR112017024902A BR112017024902B1 BR 112017024902 B1 BR112017024902 B1 BR 112017024902B1 BR 112017024902 A BR112017024902 A BR 112017024902A BR 112017024902 B1 BR112017024902 B1 BR 112017024902B1
Authority
BR
Brazil
Prior art keywords
block
video
frame
motion vector
motion
Prior art date
Application number
BR112017024902-2A
Other languages
English (en)
Other versions
BR112017024902A2 (pt
Inventor
Zhijie ZHAO
Yiqun Liu
Joern Ostermann
Original Assignee
Huawei Technologies Co., Ltd
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd filed Critical Huawei Technologies Co., Ltd
Priority claimed from PCT/EP2015/061278 external-priority patent/WO2016184527A1/en
Publication of BR112017024902A2 publication Critical patent/BR112017024902A2/pt
Publication of BR112017024902B1 publication Critical patent/BR112017024902B1/pt

Links

Abstract

CODIFICADOR DE VÍDEO, MÉTODO DE CODIFICAÇÃO PREDITIVA, DECODIFICADOR DE VÍDEO, MÉTODO DE DECODIFICAÇÃO E MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR. A presente invenção fornece um buffer de quadro (306) adaptado para armazenar pelo menos um quadro de referência de um fluxo de vídeo, referido quadro de referência sendo diferente de um quadro atual do fluxo de vídeo, uma unidade de estimativa de movimento (307) adaptada para gerar um vetor de movimento por estimar movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual, uma unidade de seleção de filtro de desfocagem (313) adaptada para selecionar uma de uma pluralidade de filtros de desfocagem dependendo da orientação do vetor de movimento, uma unidade de filtragem (314) adaptada para gerar um bloco de referência filtrado por aplicar o filtro de desfocagem selecionado ao bloco de referência, uma unidade de compensação de movimento (308) adaptada para gerar um bloco de predição filtrado do bloco atual com base no bloco atual, o vetor de movimento e o bloco de referência filtrado.

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se geralmente ao campo de processamento de vídeo e a um aparelho para compensação de movimento de vídeo, e especificamente refere-se a um codificador de vídeo e a um decodificador de vídeo para suportar compensação de movimento para prever quadros em um vídeo. A presente invenção refere-se ainda a um método para codificar e um método para decodificar um fluxo de vídeo utilizando uma compensação de movimento. Finalmente, a presente invenção refere-se a um programa de computador tendo um código de programa para executar tal método.
FUNDAMENTOS
[002] No campo do processamento de vídeo e, em particular, no campo da codificação e compressão de vídeos híbridos, é conhecido usar a previsão inter e intra-imagem, bem como codificação de transformada. Tais tecnologias de codificação de vídeo híbridas são usadas em padrões de compressão de vídeo conhecidos como H.261, H.263, MPEG-1, 2, 4, H.264/AVC ou HEVC.
[003] A Figura 1 mostra um codificador de vídeo de acordo com o estado da técnica. Um codificador de vídeo 100 compreende uma entrada para receber imagens de entrada e uma saída para gerar um fluxo de vídeo codificado. O codificador de vídeo 100 é adaptado para aplicar predição, transformação, quantificação e codificação de entropia para uma sequência de vídeo. A transformação, quantificação, e codificação de entropia são realizadas, respectivamente, por uma unidade de transformada e quantificação 101 e por um codificador de entropia 103. Entre a unidade de transformada e quantificação 101 e o codificador de entropia 103, é proporcionada uma unidade de varredura 102.
[004] A sequência de vídeo corresponde a uma pluralidade de imagens de entrada, caracterizado por cada imagem ser dividida em blocos de um determinado tamanho que são intra ou inter-codificados. Os blocos da primeira imagem de uma sequência de vídeo são intra-codificados por meio de uma unidade de intra-predição 109. Uma intra-imagem é codificada usando apenas a informação dentro da mesma imagem, de modo que pode ser decodificada independentemente e pode fornecer um ponto de entrada no fluxo de bits para acesso aleatório.
[005] Para imagens inter-codificadas, informação a partir de imagens codificadas anteriores e/ou futuras, que são chamadas de imagens de referência, são usadas para reduzir a redundância temporal. As imagens de referência são processadas por uma unidade de varredura inversa, desquantificação, e transformada inversa104, por filtros SAO (deslocamento adaptativo de amostra) e desbloqueio 105 e são armazenadas em um buffer de quadro 106. Cada bloco de uma imagem inter-codificada é previsto a partir de um bloco do mesmo tamanho nas imagens de referência.
[006] Uma estimativa de movimento é aplicada por uma unidade de estimativa de movimento 107 para selecionar dados de movimento, como, por exemplo, um vetor de movimento (MV), uma decisão de modo e quadros de referência. A unidade de estimativa de movimento 107 compreende como entrada uma imagem a ser codificada e uma imagem de referência. Os dados de movimento são selecionados com base em determinada função de custo para minimizar a diferença entre o bloco original e seu bloco previsto. Uma unidade de controle de codificador 110 seleciona a informação de movimento, como vetor de movimento ou índice de quadro de referência, com base no procedimento de otimização de distorção de taxa.
[007] Uma compensação de movimento realizada por uma unidade de compensação de movimento 108 usa os dados de movimento, que são codificados e transmitidos como informação laterais ao decodificador, para gerar sinais de predição ou sinais de quadro compensados de movimento. A diferença entre o bloco original e sua predição, que é chamada de erro residual ou de predição, é então transformada. Os coeficientes de transformada são geralmente quantificados, varridos, codificados por entropia e transmitidos em conjunto com os dados de movimento.
[008] O processamento de decodificador, que é parte do codificador de vídeo 100, é mostrado na caixa tracejada 111 na Figura 1. A Figura 2 mostra um decodificador de vídeo 200 de acordo com o estado da técnica. O decodificador de vídeo 200 compreende, de forma semelhante ao codificador de vídeo 100, um decodificador de entropia 203, uma unidade de varredura inversa, desquantificação, e transformada inversa 204, um filtro de desbloqueio e uma unidade SAO 205, um buffer de quadro 206, uma unidade de compensação de movimento 208 e uma unidade de intra-previsão 209.
[009] Tanto o codificador de vídeo 100 como o decodificador de vídeo 200 geram previsões idênticas. Os dados residuais são reconstruídos pela unidade de varredura inversa, desquantificação, e transformada inversa 204. A imagem de entrada aproximada é reconstruída por bloco ao adicionar o residual à predição. O resultado da adição pode ser adicionado aos filtros de loop para suavizar os artefatos. A imagem reconstruída final é então armazenada na imagem ou buffer de quadro 206, que pode ser usada para a predição de imagens subsequentes.
[010] A compensação de movimento, como, por exemplo, aplicada no codificador de vídeo 100 da Figura 1 e no decodificador de vídeo da Figura 2, é um dos elementos mais importantes na codificação/decodificação de vídeo híbrida. A compensação de movimento utiliza informação temporal para prever o bloco atual e reduz assim a redundância de um vídeo. A precisão da predição depende da semelhança do conteúdo entre o bloco de referência e o bloco atual. Com a mudança de velocidade da câmera ou certos objetos em uma cena, que normalmente é esperada em ação e filmes esportivos, desfocagem de movimento varia de quadro para quadro, levando a uma precisão de predição reduzida.
[011] O método geral de compensação de movimento a partir de padrões de codificação de vídeo funciona bem com objetos estacionários ou objetos em movimento de velocidade constante. No entanto, a precisão é limitada em caso de desfocagem de movimento variável. A desfocagem de movimento ocorre na direção de movimento do objeto se um objeto se move durante o tempo de exposição. Um objeto acelerado parece mais desfocado no quadro atual do que no quadro de referência anterior enquanto um objeto desacelerado parece mais nítido. A extensão variável da desfocagem entre quadros sucessivos geralmente aumenta o erro de predição. Assim, isso resulta em eficiência de compressão reduzida e consequentemente em uma taxa de dados aumentada para o residual de blocos inter- preditos.
[012] Neste contexto, é sabido reduzir o erro de predição por filtrar o quadro de referência para variar a compensação de desfocagem de movimento. Por exemplo, é conhecido predefinir uma pluralidade de filtros de desfocagem e aplicar esses filtros de desfocagem a um quadro de referência armazenado no buffer de quadro 106. Ao testar iterativamente o desempenho de cada filtro em termos de otimização de distorção de taxa, o melhor filtro de desfocagem é selecionado pelo codificador de vídeo. Para permitir que o decodificador de vídeo decodifique o fluxo de bits gerado, o filtro de desfocagem que foi selecionado pelo codificador de vídeo é sinalizado para o decodificador como informação lateral dentro do fluxo de bits.
[013] No entanto, mesmo que tal técnica possa levar a uma redução do erro de predição no caso de uma variação de desfocagem entre um quadro de referência e um quadro atual sendo inter-codificado, a sinalização do filtro de desfocagem selecionado a partir do codificador de vídeo para o decodificador de vídeo requer bits adicionais dentro do fluxo de bits codificado. Esta sinalização adicional, por sua vez, diminui o número de bits que podem ser usados para codificar o erro de predição no fluxo de bits codificado.
SUMÁRIO
[014] Tendo reconhecido as desvantagens e problemas acima mencionados, a presente invenção visa melhorar o estado da técnica. Em particular, o objetivo da presente invenção é fornecer um codificador de vídeo, um método de codificação, um decodificador de vídeo e um método de decodificação para uma codificação e decodificação melhoradas de um fluxo de vídeo de quadros subsequentes.
[015] A presente invenção pretende particularmente melhorar a qualidade da codificação inter-preditiva, melhorando a precisão de um sinal de predição. A invenção também pretende reduzir o número de bits de sinalização dentro do fluxo de bits codificado.
[016] O objetivo acima mencionado da presente invenção é conseguido pela solução fornecida nas reivindicações independentes incluídas. As implementações vantajosas da presente invenção são ainda definidas nas respectivas reivindicações dependentes.
[017] Um primeiro aspecto da presente invenção fornece um codificador de vídeo para codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com a compensação de movimento em um fluxo de bits de vídeo codificado. O codificador de vídeo compreende um buffer de quadro adaptado para armazenar pelo menos um quadro de referência do fluxo de vídeo, referido quadro de referência sendo diferente de um quadro atual do fluxo de vídeo. O codificador de vídeo compreende uma unidade de estimativa de movimento adaptada para gerar um vetor de movimento por estimar movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual. O codificador de vídeo compreende uma unidade de seleção de filtro adaptada para selecionar uma de uma pluralidade de filtros dependendo da orientação do vetor de movimento. O codificador de vídeo compreende uma unidade de filtragem adaptada para gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência. O codificador de vídeo compreende uma unidade de compensação de movimento adaptada para gerar um bloco de predição filtrado do bloco atual com base no bloco atual e no bloco de referência filtrado.
[018] Assim, enquanto a técnica anterior requer informação adicional para ser codificada no fluxo de bits para um fluxo de vídeo de quadros subsequentes, a presente invenção faz uso do vetor de movimento, que já é parte do fluxo de bits para o suporte de inter-predição. Portanto, nenhuma sinalização adicional é necessária para suportar a filtragem do quadro/bloco de referência. No seguinte, os recursos "quadro" e "bloco" são intercambiáveis, uma vez que a filtragem e predição podem ser aplicadas a um bloco de um quadro ou mesmo ao próprio quadro.
[019] Em uma primeira forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, a unidade de compensação de movimento é adaptada para gerar ainda um bloco de predição não filtrado do bloco atual com base no bloco atual e o bloco de referência, e para emitir, a partir de entre o bloco de predição filtrado e o bloco de predição não filtrado, o bloco de predição que minimiza um erro de predição, o erro de predição sendo a diferença entre o bloco atual e o respectivo bloco de predição.
[020] Desta forma, uma otimização de distorção de taxa pode ser feita de modo que o bloco de referência filtrado ou não filtrado seja usado para gerar o erro de predição codificado.
[021] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, a unidade de estimativa de movimento é adaptada para gerar um segundo vetor de movimento por estimar movimento entre o bloco de referência filtrado e o bloco atual. Dependendo de uma comparação do segundo vetor de movimento e o vetor de movimento entre o bloco de referência e o bloco atual, o bloco de referência filtrado é levado em consideração ou desconsiderado para gerar o fluxo de bits de vídeo codificado.
[022] Assim, a predição de um bloco pode ser mais precisa pela avaliação de uma segunda estimativa de movimento.
[023] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, o codificador de vídeo compreende meios de codificação adaptados para gerar o fluxo de bits de vídeo codificado com base no erro de predição correspondente ao bloco de predição emitido pela unidade de compensação de movimento.
[024] Por isso, a codificação preditiva eficiente pode ser implementada.
[025] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, o codificador de vídeo compreende meios de codificação adaptados para gerar o fluxo de bits de vídeo codificado, de modo que o fluxo de bits de vídeo codificado compreende informação de movimento e informação de filtro. A informação de movimento compreende o vetor de movimento e a informação de filtro especifica se o fluxo de bits de vídeo codificado baseia-se no erro de predição entre o bloco atual e o bloco de predição filtrado ou no erro de predição entre o bloco atual e o bloco de predição não filtrado.
[026] Assim, a informação de filtro permite que o decodificador de vídeo determine rapidamente se a filtragem adicional do bloco de referência deve ou não ser feita para realizar a decodificação preditiva.
[027] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, os meios de codificação são adaptados para adicionar no fluxo de bits de vídeo codificado a informação de filtro em um nível de bloco para cada bloco atual codificado preditivo, em um nível de quadro, em um nível de GOP, em um nível de PPS ou em um nível SPS.
[028] Desta forma, é possível ajustar adaptativamente a informação de filtro para uma granularidade desejada de modo que a sinalização possa ser otimizada.
[029] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, o codificador de vídeo compreende uma unidade de transformada e quantificação adaptada para transformar o erro de predição por meio de uma transformada espacial linear de modo a gerar coeficientes de transformada, e quantificar os coeficientes de transformada, e uma unidade de varredura e um codificador de entropia, respectivamente, adaptados para varrer e codificar entropia os coeficientes de transformada quantificados de modo a gerar o fluxo de bits de vídeo codificado.
[030] Por isso, o número de bits para transmitir o erro de predição no fluxo de bits de vídeo pode ser ainda mais reduzido.
[031] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, a unidade de seleção de filtro é adaptada para derivar o ângulo do vetor de movimento em relação ao eixo horizontal positivo, e para selecionar referido um de uma pluralidade de filtros dependendo do ângulo.
[032] Deste modo, a seleção de um filtro a ser aplicado ao bloco de referência é simplificada e pode ser realizada sem outros bits de sinalização.
[033] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, o codificador de vídeo é um codificador de vídeo para a codificação de uma camada do fluxo de vídeo.
[034] Em uma outra forma de implementação do codificador de vídeo de acordo com o primeiro aspecto, a unidade de seleção de filtro é adaptada para selecionar um de uma pluralidade de filtros de desfocagem e/ou remoção de desfocagem dependendo da orientação do vetor de movimento.
[035] Por isso, é possível adicionar ou remover desfocagem do bloco de referência em casos de aceleração ou desaceleração do movimento dentro do fluxo de vídeo.
[036] Um outro aspecto da presente invenção fornece um codificador de vídeo híbrido para predição intra e inter- quadro que compreende um tal codificador de vídeo.
[037] Um outro aspecto da presente invenção fornece um método para a codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com a compensação de movimento em um fluxo de bits de vídeo codificado. O método compreende: um passo de armazenar pelo menos um quadro de referência do fluxo de vídeo, referido quadro de referência sendo diferente de um quadro atual do fluxo de vídeo, um passo de estimativa de movimento compreendendo gerar um vetor de movimento por estimar movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual, um passo de selecionar um de uma pluralidade de filtros dependendo da orientação do vetor de movimento, um passo de gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência, um passo de compensação de movimento compreendendo gerar um bloco de predição filtrado do bloco atual com base no bloco atual e no bloco de referência filtrado.
[038] Um aspecto adicional da presente invenção fornece um decodificador de vídeo para decodificar um fluxo de bits de vídeo codificado obtido por codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com a compensação de movimento, em que o fluxo de bits de vídeo codificado compreende um quadro atual codificado preditivo e um vetor de movimento codificado refletindo movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual, referido quadro de referência sendo diferente do quadro atual. O decodificador de vídeo compreende um decodificador adaptado para decodificar o quadro de referência codificado e o vetor de movimento codificado de modo a gerar um quadro de referência e um vetor de movimento, um buffer de quadro adaptado para armazenar o quadro de referência, uma unidade de seleção de filtro adaptada para selecionar uma de uma pluralidade de filtros dependendo da orientação do vetor de movimento, uma unidade de filtragem adaptada para gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência, uma unidade de compensação de movimento adaptada para gerar o bloco atual do quadro atual codificado preditivo na base do vetor de movimento e o bloco de referência filtrado.
[039] Assim, enquanto a técnica anterior requer que informação adicional seja codificada no fluxo de bits para um fluxo de vídeo de quadros subsequentes, a presente invenção faz uso do vetor de movimento, que já é parte do fluxo de bits para o suporte de inter-predição. Portanto, nenhuma sinalização adicional é necessária para suportar a filtragem do quadro/bloco de referência. Além disso, nenhuma informação além do quadro atual é necessária para selecionar o filtro e aplicar o filtro selecionado ao quadro/bloco de referência.
[040] Em uma forma de implementação do codificador de vídeo de acordo com o aspecto adicional, o fluxo de bits de vídeo codificado compreende uma informação de filtro relacionada com o bloco atual. O decodificador é adaptado para decodificar a informação de filtro. A unidade de compensação de movimento é adaptada para, dependendo do valor da informação de filtro, gerar o bloco atual do quadro atual codificado preditivo com base no vetor de movimento e no bloco de referência filtrado, ou com base no vetor de movimento e no bloco de referência, que corresponde ao bloco de referência não filtrado, ou seja, ao bloco de referência que não foi processado pelo filtro selecionado.
[041] Em uma forma de implementação do codificador de vídeo de acordo com o aspecto adicional, a unidade de seleção de filtro é adaptada para derivar o ângulo do vetor de movimento, tal como em relação ao eixo horizontal positivo, e selecionar referido um de uma pluralidade de filtros dependendo no ângulo.
[042] Em uma forma de implementação do decodificador de vídeo de acordo com o aspecto adicional, o decodificador de vídeo é um decodificador de vídeo para codificação de camada única do fluxo de vídeo.
[043] Em uma forma de implementação do decodificador de vídeo de acordo com o aspecto adicional, a unidade de seleção de filtro é adaptada para selecionar um de uma pluralidade de filtros de desfocagem e/ou remoção de desfocagem dependendo da orientação do vetor de movimento.
[044] Um outro aspecto da presente invenção fornece um decodificador de vídeo híbrido para a predição intra e inter- quadro compreendendo um tal decodificador de vídeo.
[045] Um outro aspecto da presente invenção fornece um método para decodificar um fluxo de bits de vídeo codificado obtido por codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com a compensação de movimento. O fluxo de bits de vídeo codificado compreende pelo menos um quadro de referência codificado, um quadro atual codificado preditivo, referido quadro de referência sendo diferente do quadro atual, e um vetor de movimento codificado refletindo movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual. O método compreende decodificar o quadro de referência codificado e o vetor de movimento codificado de modo a gerar um quadro de referência e um vetor de movimento, armazenar o quadro de referência, selecionar um de uma pluralidade de filtros dependendo da orientação do vetor de movimento, gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência, compensação de movimento compreendendo gerar o bloco atual do quadro atual codificado preditivo com base no vetor de movimento e no bloco de referência filtrado.
[046] Um outro aspecto da presente invenção fornece um programa de computador tendo um código de programa para executar tal método para codificar e/ou decodificar quando o programa de computador é executado em um dispositivo de computação.
[047] Deve ser notado que todos os dispositivos, elementos, unidades e meios descritos na presente aplicação podem ser implementados no software ou elementos de hardware ou qualquer tipo de combinação deles. Todos os passos que são realizados pelas várias entidades descritas na presente aplicação bem como as funcionalidades descritas para serem realizadas pelas várias entidades, pretendem significar que a respectiva entidade é adaptada ou configurada para executar os respectivos passos e funcionalidades. Mesmo se, na descrição a seguir de modalidades específicas, uma funcionalidade ou passo específico para ser formado completamente por entidades eternas não refletidas na descrição de um elemento detalhado específico dessa entidade que executa esse passo ou funcionalidade específica, deve ser claro para uma pessoa qualificada que esses métodos e funcionalidades podem ser implementados nos respectivos elementos de software ou hardware, ou qualquer tipo de combinação deles.
BREVE DESCRIÇÃO DOS DESENHOS
[048] Os aspectos e formas de implementação acima da presente invenção serão explicados na descrição a seguir de modalidades específicas em relação aos desenhos anexos, nos quais: a figura 1 mostra um codificador de vídeo de acordo com o estado da técnica; a figura 2 mostra um decodificador de vídeo de acordo com o estado da técnica; a figura 3 mostra um codificador de vídeo de acordo com uma modalidade da presente invenção; a figura 4 mostra um decodificador de vídeo de acordo com uma modalidade da presente invenção; a figura 5 (a) mostra uma modalidade da compensação de desfocagem de movimento de acordo com a presente invenção; a figura 5 (b) mostra uma modalidade da compensação de desfocagem de movimento de acordo com a presente invenção; a figura 6 mostra exemplos de vetores de movimento obtidos pela modalidade da Figura 5 (a); a figura 7 mostra uma modalidade de um filtro de acordo com a presente invenção; a figura 8 mostra uma modalidade de um filtro de acordo com a presente invenção; e a figura 9 mostra uma modalidade de coeficientes de filtro de acordo com a presente invenção.
DESCRIÇÃO DETALHADA DE MODALIDADES
[049] A Figura 3 mostra um codificador de vídeo de acordo com uma modalidade da presente invenção, e particularmente um codificador de vídeo híbrido 300 para codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com a compensação de movimento em um fluxo de bits de vídeo codificado.
[050] O codificador de vídeo 300 compreende, em particular, um buffer de quadro 306, uma unidade de estimativa de movimento 307, uma unidade de seleção de filtro 313, uma unidade de filtragem 314 e uma unidade de compensação de movimento 308.
[051] O buffer de quadro 306 é adaptado para armazenar pelo menos um quadro de referência do fluxo de vídeo. Referido quadro de referência é diferente de um quadro atual do fluxo de vídeo. No contexto da invenção, o quadro atual é um quadro do fluxo de vídeo que é atualmente codificado. O quadro atual é codificado usando uma técnica de inter- codificação, ou seja, o quadro atual é previsto a partir de uma ou uma pluralidade de quadros de referência. O quadro de referência pode ser um quadro anterior, ou seja, um quadro que é localizado antes do quadro atual dentro do fluxo de vídeo de quadros subsequentes. Alternativamente, se predição direta for usada, o quadro de referência pode ser um quadro futuro, ou seja, um quadro localizado após o quadro atual. No caso de uma pluralidade de quadros de referência, pelo menos um pode ser um quadro anterior e pelo menos um deles pode ser um quadro futuro. Um quadro de referência pode ser intra-codificado, ou seja, pode ser codificado sem usar qualquer quadro adicional e sem qualquer dependência de outros quadros, de modo que possa ser decodificado independentemente e pode servir como ponto de entrada para acesso de vídeo aleatório.
[052] A unidade de estimativa de movimento 307 é adaptada para gerar um vetor de movimento por estimar movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual. A Figura 3 mostra, em conformidade, que a unidade de estimativa de movimento 307 compreende uma entrada para o quadro de referência armazenado no buffer de quadro 306 e uma entrada para uma imagem de entrada que corresponde ao quadro atual.
[053] O vetor de movimento é gerado usando uma estimativa de movimento de bloco. O bloco de referência e o bloco atual são, de preferência, uma área ou sub-área respectiva do quadro de referência e o quadro atual. Esse bloco pode ter uma forma regular, retangular ou uma forma irregular. Alternativamente, os blocos podem ter o mesmo tamanho que os quadros. Tanto o bloco atual como o bloco de referência têm o mesmo tamanho. O tamanho dos blocos é definido por meio de um modo de bloco. Um bloco pode corresponder a uma unidade de codificação (CU) que é uma estrutura de codificação básica da sequência de vídeo de um tamanho predefinido, contendo uma parte de um quadro, por exemplo, 64x64 pixels.
[054] O bloco atual do quadro atual que é inter- codificado é previsto a partir do bloco de referência do quadro de referência. O processo de codificação para a predição inter-quadro compreende a escolha de dados de movimento que compreendem um índice de referência e o vetor de movimento a ser aplicado para prever o bloco atual. O índice de referência é um índice do bloco de referência e/ou do quadro de referência.
[055] A unidade de seleção de filtro 313 é adaptada para selecionar um de uma pluralidade de filtros dependendo da orientação do vetor de movimento. A unidade de filtragem 314 é adaptada para gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência. A unidade de compensação de movimento 308 é adaptada para gerar um bloco de predição filtrado do bloco atual com base no bloco atual e no bloco de referência filtrado.
[056] A Figura 3 mostra, por conseguinte, que a unidade de estimativa de movimento 307 transmite o vetor de movimento para a unidade de seleção de filtro 313. A saída da unidade de seleção de filtro 313 identifica o filtro selecionado. A unidade de filtragem 314 aplica então o filtro selecionado pela unidade de seleção de filtro 313 ao bloco de referência do quadro de referência armazenado no buffer de quadro 306, de modo a gerar um bloco de referência filtrado transmitido para a unidade de compensação de movimento 308. A unidade de compensação de movimento 308 gera então o bloco de predição filtrado com base no bloco atual do quadro atual e o bloco de referência filtrado. De preferência, o bloco de predição filtrado é gerado com base no bloco atual, no vetor de movimento e no bloco de referência filtrado.
[057] Particularmente, para a codificação de vídeo híbrida, referida estimativa de movimento 307 é realizada durante a codificação para encontrar o vetor de movimento apontando para a melhor unidade de predição em um quadro de referência. A compensação de movimento 308 usa dados de movimento, que são codificados e transmitidos como informação laterais para o decodificador, para gerar sinais de predição. Os sinais de predição referem-se a blocos de predição que podem ser combinados para obter um quadro de predição.
[058] O codificador de vídeo 300 da Figura 3 compreende outras unidades similarmente ao codificador de vídeo 100 da Figura 1. Particularmente, o codificador de vídeo 300 compreende unidades semelhantes que são uma unidade de transformada e quantificação 301, uma unidade de varredura 302, um codificador de entropia 103, uma unidade de varredura inversa, desquantificação, transformada inversa 304, uma unidade de filtros SAO e desbloqueio 305. O codificador de vídeo 300 compreende outras unidades semelhantes que são a unidade de estimativa de movimento 307, a unidade de compensação de movimento 308, a intra-predição 309 que é responsável pela intra-predição, por exemplo, do quadro de referência, e o controle de codificador 310.
[059] No codificador de vídeo híbrido 300 mostrado na Figura 3, com base no vetor de movimento gerado durante a estimativa de movimento 307 para, por exemplo, um bloco ou unidade de codificação, um filtro predefinido é selecionado 313 de acordo com a orientação do referido vetor de movimento, e particularmente de acordo com o ângulo do referido vetor de movimento em relação ao eixo horizontal. O ângulo é calculado com base no vetor de movimento do bloco atual. Em seguida, o filtro selecionado é aplicado ao quadro de referência armazenado no buffer de quadro 306.
[060] No codificador de vídeo 300, a unidade de compensação de movimento 308 é adaptada para gerar adicionalmente um bloco de predição não filtrado do bloco atual com base no bloco atual e o bloco de referência, e particularmente com base no bloco atual, o vetor de movimento e o bloco de referência. O bloco de referência levado em consideração aqui é o bloco de referência não filtrado do quadro de referência armazenado no buffer de quadro 306. A unidade de compensação de movimento 308 é, além disso, adaptada para emitir, entre o bloco de predição filtrado e o bloco de predição não filtrado, o bloco de predição que minimiza um erro de predição, o erro de predição sendo a diferença entre o bloco atual e o respectivo bloco de predição.
[061] Isso significa que o desempenho de distorção de taxa do bloco de predição filtrado e o bloco de predição não filtrado será comparado. A opção que apresenta melhor desempenho de distorção de taxa é então escolhida. Esta comparação e esta escolha podem ser realizadas pelo controle de codificador 310. O controle de codificador 310 pode selecionar a informação de movimento, como vetor de movimento e índice de referência, e a informação de filtro como a bandeira de desfocagem, com base no procedimento de otimização de distorção de taxa.
[062] O codificador de entropia 303 é adaptado para gerar o fluxo de bits de vídeo codificado de modo que o fluxo de bits de vídeo codificado compreende informação de movimento e informação de filtro. A informação de movimento compreende o vetor de movimento selecionado pela unidade e, vantajosamente, também o índice de referência que é um índice para identificar o bloco de referência e/ou o quadro de referência usado para codificação preditiva do bloco atual e/ou quadro atual. A informação de filtro especifica se o fluxo de bits de vídeo codificado baseia-se no erro de predição entre o bloco atual e o bloco de predição filtrado ou no erro de predição entre o bloco atual e o bloco de predição não filtrado. Particularmente, a informação de filtro especifica se o fluxo de bits codificado foi gerado com base no bloco de predição filtrado e no bloco de predição não filtrado.
[063] A unidade de seleção de filtro 313 é adaptada para selecionar um de uma pluralidade de filtros de desfocagem ou remoção de desfocagem dependendo da orientação do vetor de movimento. Os filtros podem ser filtros pré-determinados que residem tanto no codificador 300 como em um decodificador correspondente como o decodificador 400 mostrado na Figura 4. Alternativamente, a definição dos filtros pode ser transmitida do codificador 300 para o decodificador 400 pelo filtro correspondente sinalizando no fluxo de bits. Isso significa que os filtros fixos são usados para todas as sequências de vídeo, de modo que não há necessidade de enviar os filtros predefinidos, ou os filtros personalizados são definidos para, por exemplo, categorias de diferença de vídeos. No último caso, os filtros podem ser enviados através de uma mensagem de SEI (informação de aprimoramento suplementar) para o decodificador.
[064] A informação de filtro transmitida dentro do fluxo de bits pode ser uma bandeira de filtro. Por exemplo, uma bandeira de desfocagem pode ser definida para cada bloco que foi codificado com a inter-predição, ou seja, de acordo com um modo inter. A bandeira em nível de bloco pode ser usada para indicar se um filtro de desfocagem ou remoção de desfocagem foi usado para um bloco atual. Além disso, uma bandeira de desfocagem adicionada em um cabeçalho de fatia pode ser usada para indicar se um filtro de desfocagem/remoção de desfocagem foi usado para a fatia atual. Essa bandeira em SPS (conjunto de parâmetros de sequência) pode ser usada para indicar se o filtro de desfocagem/remoção de desfocagem foi usado para uma sequência de vídeo codificada. Essa bandeira em PPS (conjunto de parâmetros de imagem) pode ser usada para indicar se o filtro de desfocagem/remoção de desfocagem foi usado para uma imagem codificada. Alternativamente, a bandeira de desfocagem pode ser usada para indicar se um filtro de desfocagem foi usado para o bloco atual e uma bandeira de remoção de desfocagem pode ser usada para indicar se um filtro de remoção de desfocagem foi usado para o bloco atual.
[065] Além dos métodos de codificação padrão conhecidos que são a predição intra-quadro e inter-quadro (incluindo salto), a presente invenção propõe um modo adicional que é o modo de compensação de desfocagem de movimento para a codificação de vídeo híbrida. Esta compensação de desfocagem de movimento pode ser considerada como um complemento de modo inter (incluindo salto) de codificação de vídeo híbrida, como HEVC, durante a codificação de um determinado bloco. A invenção propõe a criação de quadros de referência temporais por filtrar 314 o quadro reconstruído armazenado no buffer de quadro 306 com um filtro de ângulo θ que é derivado do vetor de movimento obtido pela estimativa de movimento 307.
[066] Esses quadros de referência filtrados e/ou blocos de referência são então usados para a compensação de desfocagem de movimento. Caso o filtro de desfocagem seja aplicado ao quadro de referência, o quadro de referência filtrado e o quadro de referência original armazenados no buffer de quadro 306 compartilham o mesmo índice de referência. Ou seja, um índice de referência irá referir-se a um quadro reconstruído na estimativa de movimento geral em codificação de vídeo híbrida, ou um quadro temporal desfocado usado para a estimativa de movimento da compensação de desfocagem de movimento proposta.
[067] A estimativa de movimento da compensação de desfocagem de movimento de acordo com a presente invenção é executada após a estimativa de movimento tradicional de codificação de vídeo híbrida, como estimativa de movimento em HEVC.
[068] A bandeira de desfocagem pode ser definida para cada bloco ou unidade de codificação codificada com o modo inter (incluindo salto) para todos os tamanhos de partição (2Nx2N, 2NxN, 2NxNu, 2NxNd, ...). O decodificador 400 é capaz de determinar se o quadro de referência é desfocado durante a reconstrução de uma CU e para replicar a desfocagem do quadro de referência usando o ângulo θ derivado do MV codificado. A bandeira de desfocagem é considerada dentro da otimização de distorção de taxa (RD).
[069] A bandeira em nível de unidade de codificação ou bloco pode ser usada para indicar se um filtro de desfocagem/remoção de desfocagem foi usado para uma unidade de codificação. Além disso, uma bandeira em SPS pode ser usada para indicar se o filtro de desfocagem/remoção de desfocagem foi usado para uma sequência de vídeo codificada. Uma bandeira em PPS também pode ser usada para indicar se o filtro de desfocagem/remoção de desfocagem foi usado para uma imagem codificada.
[070] A Figura 4 mostra um decodificador de vídeo de acordo com uma modalidade da presente invenção. Este decodificador de vídeo 400 corresponde ao codificador de vídeo 300, na medida em que compreende os elementos do codificador de vídeo 300 localizados na caixa tracejada 311 na Figura 3. O decodificador 400 é adaptado para decodificar o fluxo de bits gerado pelo codificador de vídeo 300 e tanto o decodificador 400 quanto o codificador geram previsões idênticas.
[071] O decodificador de vídeo 400 é um decodificador para decodificar um fluxo de bits de vídeo codificado obtido por codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com a compensação de movimento. O fluxo de bits de vídeo codificado compreende um quadro atual codificado preditivo, que corresponde ao erro de predição, e um vetor de movimento codificado refletindo movimento entre um bloco de referência do quadro de referência e um bloco atual do quadro atual, referido quadro de referência sendo diferente do quadro atual.
[072] O decodificador de vídeo 400 compreende um decodificador 403, um buffer de quadro 406, uma unidade de seleção de filtro 413, uma unidade de filtragem 414 e uma unidade de compensação de movimento 408. O decodificador 403 é adaptado para decodificar o quadro de referência codificado e o vetor de movimento codificado de modo a gerar um quadro de referência e um vetor de movimento. O buffer de quadro 406 é adaptado para armazenar o quadro de referência. A unidade de seleção de filtro 413 é adaptada para selecionar um de uma pluralidade de filtros dependendo da orientação do vetor de movimento. A unidade de filtragem 414 é adaptada para gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência. A unidade de compensação de movimento 408 é adaptada para gerar o bloco atual do quadro atual codificado preditivo com base no vetor de movimento e no bloco de referência filtrado.
[073] Além disso, o fluxo de bits de vídeo codificado compreende uma informação de filtro relacionada ao bloco atual. O decodificador 403 é adaptado para decodificar a informação de filtro e a unidade de compensação de movimento 408 é adaptada para, dependendo do valor da informação de filtro, gerar o bloco atual do quadro atual codificado preditivo com base no vetor de movimento e no bloco de referência filtrado, ou com base no vetor de movimento e no bloco de referência. O referido bloco de referência, de fato, corresponde ao bloco de referência não filtrado, ou seja, ao bloco de referência que não foi processado pelo filtro selecionado.
[074] A unidade de seleção de filtro 413 é adaptada para derivar o ângulo do vetor de movimento em relação ao eixo horizontal positivo, e selecionar referido um de uma pluralidade de filtros dependendo do ângulo.
[075] A Figura 4 mostra que o fluxo de vídeo codificado, ou seja, o fluxo de bits, é alimentado para o decodificador de entropia 403 que decodifica o quadro de referência e o erro de predição para o bloco/quadro atual através da unidade de varredura inversa, desquantificação, transformada inversa 404 e filtros SAO e desbloqueio 405. O quadro de referência é armazenado no buffer de quadro 406. Por outro lado, o decodificador 403 transmite a informação de movimento e a informação de filtro, que compreendem, respectivamente, o vetor de movimento e a bandeira de desfocagem/remoção de desfocagem, para a unidade de seleção de filtro 413 e a unidade de compensação de movimento 408.
[076] A informação de filtro, como a bandeira de desfocagem/remoção de desfocagem, pode ser definida para cada bloco ou unidade de codificação que tenha sido codificado com o modo inter (incluindo salto) para todos os tamanhos de partição, incluindo, por exemplo, 2Nx2N, 2NxN, 2NxNu, 2NxNd, A bandeira de desfocagem/remoção de desfocagem pode estar presente no cabeçalho de fatia, PPS ou SPS. O decodificador 400 é capaz de determinar se o quadro de referência é desfocado durante a reconstrução de um bloco e replicar a desfocagem do quadro de referência usando o ângulo θ derivado do vetor de movimento codificado. Para se certificar que os quadros decodificados no decodificador 400 são idênticos aos reconstruídos, o mesmo filtro é aplicado ao bloco atual pelo decodificador 400 e pelo codificador 300, sendo o filtro determinado usando a orientação do vetor de movimento decodificado. Em seguida, o filtro de desfocagem de movimento é aplicado ao quadro/bloco de referência. A compensação de movimento utiliza o sinal de desfocagem filtrado dependendo da informação de filtro e, em particular, se a bandeira de desfocagem/remoção de desfocagem indicar que um filtro, por exemplo, filtro de desfocagem, foi aplicado no codificador 300.
[077] Duas modalidades da compensação de movimento proposta, ou seja, a compensação de desfocagem de movimento no codificador é explicada nos seguintes.
[078] A Figura 5 (b) mostra uma modalidade da compensação de desfocagem de movimento de acordo com a presente invenção. Esta modalidade compreende uma estimativa de movimento na medida em que, ao codificar 500 o bloco atual ou unidade de codificação (CU), uma estimativa de movimento 501 é realizada pela unidade de estimativa de movimento 307 para gerar um vetor de movimento por estimar movimento entre o bloco de referência e o bloco atual. Durante uma geração de filtro 503, a unidade de seleção de filtro 313 seleciona o filtro correspondente à orientação do vetor de movimento, isto é, ao ângulo θ do vetor de movimento em relação, por exemplo, à horizontal. O intervalo [0, π] para o ângulo θ é subdividido em sub-intervalos [0, θ1], [θ1, θ2] ... [θn-1, θn], [θn, π], sendo n um valor inteiro, e cada sub-intervalo é associado a um filtro predefinido.
[079] Uma vez que o filtro é gerado ou selecionado, esse filtro é aplicado ao bloco ou quadro de referência para gerar um bloco/quadro de referência filtrado, como, por exemplo, um bloco/quadro de referência desfocado 504. A Figura 5 (b) mostra que o bloco/quadro de referência filtrado é gerado para uma bandeira de filtro, ou seja, uma bandeira de desfocagem, sendo verdadeira 502, enquanto o bloco/quadro de referência não é filtrado para uma bandeira de filtro, ou seja, uma bandeira de desfocagem, sendo falsa 505. A compensação de movimento 506 é aplicada tanto ao bloco/quadro de referência filtrado e para o bloco/quadro de referência não filtrado. Com base em uma otimização de distorção de taxa 507 a seguir, é decidido se o bloco de referência filtrado ou não filtrado é usado para gerar o erro de predição.
[080] A Figura 5 (a) mostra uma outra modalidade da compensação de desfocagem de movimento de acordo com a presente invenção. Em contraste com a modalidade da Figura 5 (b), o bloco/quadro de referência desfocado 504 não é enviado para a compensação de movimento 506, mas é usado para realizar uma segunda estimativa de movimento.
[081] Consequentemente, a unidade de estimativa de movimento 307 é adaptada para realizar uma segunda estimativa de movimento 510 com base no bloco de referência filtrado 504 e assim gerar um segundo vetor de movimento por estimar movimento entre o bloco de referência filtrado 504 e o bloco atual. Uma comparação 511 é então realizada entre o segundo vetor de movimento gerado pela segunda estimativa de movimento 510 e o primeiro vetor de movimento, gerado pela primeira estimativa de movimento 501, entre o bloco de referência e o bloco atual. Dependendo desta comparação 511, o bloco de referência filtrado é levado em consideração ou desconsiderado para gerar o fluxo de bits de vídeo codificado.
[082] Assim, a modalidade da Figura 5 (a) compreende duas rodadas de estimativa de movimento 501, 510, a segunda estimativa de movimento 510 sendo realizada com base no bloco/quadro de referência filtrado. O método de filtragem/desfocagem é assim ignorado 512 no caso do primeiro e segundo vetores de movimento não estarem localizados no mesmo setor angular definido de acordo com um algoritmo de setor.
[083] Durante a codificação 501 de um determinado bloco ou unidade de codificação, um elemento do algoritmo baseado em setor no processo de codificação é a verificação de validação do vetor de movimento previsto, que corresponde ao segundo vetor de movimento, após uma segunda estimativa de movimento 510 ser feita com base no bloco/quadro de referência filtrado/desfocado.
[084] A verificação de validação tem três critérios seguintes: 1) o primeiro vetor de movimento e o segundo vetor de movimento estão no mesmo setor; 2) o segundo vetor de movimento é vetor não-zero; e 3) o vetor de movimento está dentro do intervalo de pesquisa definido, ou seja, ± 64 nas direções horizontal e vertical.
[085] A Figura 6 mostra exemplos de vetores de movimento obtidos pela modalidade da Figura 5 (a) usando o algoritmo baseado em setor. A Figura 6 mostra quatro setores angulares diferentes que são [0, π/4], [π/4, π/2], [π/2, 3π/4] e [3π/4, π]. O primeiro vetor de movimento obtido pela primeira estimativa de movimento 501 é rotulado como "1. MV” e é localizado no primeiro setor.
[086] De acordo com um primeiro exemplo, a segunda estimativa de movimento 510 é então aplicada e resulta em um segundo vetor de movimento rotulado "2. válido MV". Uma vez que o segundo vetor de movimento é localizado no mesmo setor que o primeiro vetor de movimento, a bandeira de desfocagem é verdadeira 513. Isso significa que uma compensação de movimento com base no bloco de referência filtrado é possível. Neste caso, uma compensação de movimento 506 é realizada tanto para o bloco de referência filtrado como para o bloco de referência não filtrado a partir do buffer de quadro. Uma otimização de distorção de taxa seguinte é realizada para selecionar a versão filtrada ou não filtrada.
[087] De acordo com um segundo exemplo, o segundo vetor de movimento rotulado "inválido 2. MV" é localizado em um setor diferente do setor do primeiro vetor de movimento. Como consequência, a filtragem é ignorada 512 e uma compensação de movimento é aplicada apenas para o bloco de referência não filtrado.
[088] Em outras palavras, após a operação de desfocagem 504, a bandeira de desfocagem é ajustada apenas para verdadeiro 513 no caso do primeiro vetor de movimento e o segundo de vetor movimento serem localizados no mesmo setor definido. Caso contrário, a bandeira de desfocagem é configurada para falso 512. Em contraste, na modalidade da Figura 5 (b) não é necessária nenhuma segunda rodada de estimativa de movimento. A bandeira de desfocagem é definida como verdadeiro 502 se a desfocagem 504 for executada. Essas modalidades são modalidades relacionadas ao codificador sobre como decidir se o filtro de desfocagem deve ser usado.
[089] Voltando à modalidade da Figura 5 (a), o primeiro critério preferencialmente significa que uma direção representativa é definida para cada setor predefinido. A direção representativa é de preferência no meio do setor. Por exemplo, a Figura 6 mostra a direção representativa para o primeiro setor, sendo a referida direção rotulada como "Rep. MV”. Os filtros de desfocagem são gerados com base nas instruções representativas. O número de setores pode ser dado de acordo com diferentes requisitos de precisão e o mesmo número de filtros de desfocagem correspondentes é calculado antes do início da codificação.
[090] Se o primeiro e o segundo vetores de movimento pertencem ao mesmo setor, a mesma direção representativa, bem como o mesmo filtro de desfocagem é usado pelo codificador e pelo decodificador. O decodificador só precisa descobrir a direção transportada pelo vetor de movimento transmitido e faz a filtragem exata para ter o mesmo bloco reconstruído ou unidade de codificação.
[091] No exemplo da Figura 6, cada filtro cobre um ângulo de π/4 = 45 ° se o número de quatro setores for escolhido. Como o primeiro vetor de movimento cai no primeiro setor, o vetor de movimento representativo aponta para a direção no meio do setor. Se o segundo vetor de movimento "válido 2. MV" cai no mesmo setor, o valor verdadeiro é dado pela verificação de validação e o decodificador encontra o mesmo vetor de movimento representativo.
[092] De preferência, o segundo vetor de movimento é então transmitido para o decodificador. Isto significa que o codificador de vídeo compreende meios de codificação 303 adaptados para gerar o fluxo de bits de vídeo codificado de modo que o fluxo de bits de vídeo codificado compreende informação de movimento, em que a informação de movimento compreende o segundo vetor de movimento.
[093] Se o segundo vetor de movimento "inválido 2. MV" leva a outro vetor de movimento representativo para o segundo vetor, o valor falso será dado pela verificação de validação.
[094] Vantajosamente, um segundo critério consiste em que o segundo vetor de movimento é um vetor não-zero. Este critério baseia-se no fato de que desfocagem de movimento ocorre se houver um movimento relativo entre objetos e câmeras durante a exposição. Um vetor de movimento zero significa que nenhum movimento é encontrado para o bloco ou unidade de codificação, portanto, não deve haver desfocagem e a verificação de validação dá falso como resultado. Nenhum filtro é então aplicado 314 ao bloco de referência. Este segundo critério pode ser considerado além do primeiro critério ou sozinho.
[095] Finalmente, de acordo com o terceiro critério, o segundo vetor de movimento deve estar no intervalo de pesquisa da estimativa de movimento para que a verificação de validação seja verdadeira. Este terceiro critério pode ser considerado além do primeiro e/ou segundo critério.
[096] Com o aumento do número de setores, a direção do desfocagem será mais precisa enquanto a taxa de validação do segundo vetor de movimento diminui, o que pode levar a uma queda no ganho e eficiência de codificação. Existe, portanto, uma compensação entre a precisão de filtro e a taxa de validação.
[097] Em comparação com a modalidade da Figura 5 (a), o quadro de codificação da modalidade da Figura 5 (b) é simplificado aplicando o mesmo vetor de movimento para compensação de movimento (MC) com base na referência filtrada em vez de uma segunda estimativa de movimento e uma verificação de validação com base no setor. A modalidade da Figura 5 (b) pode assim reduzir o tempo de execução. Com efeito, esta modalidade poupa não apenas uma estimativa de movimento adicional, mas também a região de desfocagem. Em lugar de desfocar a área inteira coberta pela estimativa de movimento padrão, é necessário apenas desfocar o bloco ou unidade de codificação no quadro de referência apontado pelo vetor de movimento e seu entorno que será usado posteriormente pela interpolação. Pelo mesmo motivo acima descrito na modalidade da Figura 5 (a), também aqui um vetor de movimento zero é excluído da compensação de desfocagem de movimento.
[098] A modalidade da Figura 5 (a) introduz uma segunda estimativa de movimento em quadros de referência filtrados e uma verificação de validação baseada em setor para garantir que o codificador e o decodificador compartilhem uma direção de desfocagem idêntica. Na modalidade da Figura 5 (a), a predição de um bloco ou unidade de codificação torna-se mais precisa com um aumento do número de filtros, ou seja, com um número crescente de setores, uma vez que os filtros gerados são mais precisos nas direções. Por outro lado, um maior número de filtros significa que o intervalo de ângulos válidos para o segundo vetor de movimento diminui e a compensação de desfocagem de movimento é ignorada com mais frequência. O uso de 9 filtros é um bom compromisso.
[099] Seguindo, será mostrada uma modalidade de filtros de desfocagem que podem ser usados para a compensação de desfocagem de movimento.
[100] Uma função de espalhamento de ponto de desfocagem de movimento linear uniforme comum (PSF) em domínio de tempo contínuo é descrita com um segmento de linha L e um ângulo θ em relação ao eixo horizontal, conforme indicado na seguinte fórmula: em que L é proporcional à velocidade de movimento e duração de exposição, θ indica a direção de movimento e (x, y) é a localização no sistema de coordenadas cartesianas. Esta função é, por exemplo, conhecida por "Modelagem de desfocagem de movimento consistente de foto para síntese de imagem realista", H. Lin e C. Chang, PSIVT 2006.
[101] A versão discreta da equação (1) é adquirida considerando um ponto brilhante que atravessa os sensores cobertos pelo segmento de linha durante o tempo de exposição com velocidade constante, conforme conhecido em "Estimação de desfocagem paramétrica para restauração cega de imagens naturais: movimento linear e fora-de-foco”, J. Oliveira, M. Figueiredo e J. Bioucas-Dias, Processamento de Imagem, Transações de IEEE no Processamento de Imagem, 2014. Cada coeficiente do núcleo de desfocagem é proporcional ao tempo gasto em cada elemento de sensor. Com o pressuposto de um movimento constante, os coeficientes de filtro são dados pelo comprimento normalizado da interseção do segmento de linha com cada pixel na grade, conforme ilustrado na Figura 7. A Figura 7 mostra uma versão discreta do movimento de desfocagem linear com θ = arctan 4/5.
[102] Em caso de desfocagem variável, uma referência filtrada pode melhorar o desempenho de codificação. Supõe- se que desfocagem de movimento, bem como a mudança de desfocagem de movimento, pode ser descrita pela equação (1). O movimento pode ser considerado constante para o tempo de exposição de um único quadro. Uma vez que o intervalo de tempo entre dois quadros próximos é de apenas 0,02 segundos para uma sequência de vídeo de 50 fps, sugerimos que a alteração da extensão de desfocagem de movimento seja pequena na maioria dos casos. Portanto, empregamos uma extensão fixa de 3 pels para descrever o fenômeno de variação na desfocagem, ou seja, L = 3. Portanto, o filtro de desfocagem bidimensional para o componente de luminância tem uma dimensão de 3x3.
[103] O outro grau de liberdade para um filtro de desfocagem é o ângulo θ. Ele é derivado do vetor de movimento usado na codificação de vídeo híbrida, como HEVC. Por isso, uma pesquisa de movimento de codificação de vídeo híbrida padrão é executada antes que o filtro de desfocagem seja estabelecido. O quadro de referência desfocado é gerado usando as direções dos vetores de movimento.
[104] A versão discreta geral do filtro 3x3 tem 5 coeficientes diferentes a, b, c, d e e devido à simetria e é calculada de acordo com um ângulo arbitrário θ usando a Figura 8. O filtro sugerido é um filtro passa-baixo. Por exemplo, os coeficientes de filtro para θ = 15 ° e θ = 60 ° estão listados na Figura 9.
[105] Em uma modalidade, apenas desfocaremos o componente de luminância da referência usando esse filtro 3x3 se uma sequência de teste tiver o formato 4:2:0. Os pixels de crominância estão em todas as outras posições de pixel do componente de luminância [6]. Com uma extensão de desfocagem de apenas 3 pels, três pixels de luminância vizinhos, mas apenas 1 pixel de crominância deve ser considerado. Um pixel de crominância de vizinhança está fora da faixa de influência de desfocagem, portanto, nenhum filtro é necessário. No caso de uma sequência de sub-amostragem de crominância 4:4:4, o mesmo filtro para componente de luminância será aplicado para componentes de crominância.
[106] O modelo de desfocagem de movimento proposto e o filtro de desfocagem proposto são exemplos. Outro filtro de desfocagem também pode ser aplicado de acordo com a invenção proposta, em que o vetor de movimento da unidade/bloco de codificação atual é usado para selecionar filtros predefinidos para a melhoria da eficiência de codificação na codificação de vídeo híbrida.
[107] A presente invenção foi descrita em conjunto com várias modalidades como exemplos, bem como implementações. No entanto, outras variações podem ser compreendidas e efetuadas pelos especialistas na técnica e praticando a invenção reivindicada, a partir dos estudos dos desenhos, esta descrição e as reivindicações independentes. Nas reivindicações, bem como na descrição, a palavra "compreende" não exclui outros elementos ou passos e o artigo indefinido "uma" ou "um" não exclui uma pluralidade. Um único elemento ou outra unidade pode preencher as funções de várias entidades ou itens recitados nas reivindicações. O mero fato de que certas medidas são recitadas nas diferentes reivindicações dependentes diferentes não indica que uma combinação dessas medidas não pode ser usada em uma implementação vantajosa.

Claims (21)

1. Dispositivo codificador de vídeo para codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com compensação de movimento em um fluxo de bits de vídeo codificado, CARACTERIZADO pelo fato de que o dispositivo codificador de vídeo compreende: um buffer de quadro (306) adaptado para armazenar pelo menos um quadro de referência do fluxo de vídeo, o pelo menos um quadro de referência sendo diferente de um quadro atual do fluxo de vídeo; e uma unidade de estimativa de movimento (307) adaptada para gerar um vetor de movimento por estimar movimento entre um bloco de referência do pelo menos um quadro de referência e um bloco atual do quadro atual; uma unidade de seleção de filtro (313) adaptada para selecionar um dentre uma pluralidade de filtros dependendo da orientação do vetor de movimento; uma unidade de filtragem (314) adaptada para gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência; e uma unidade de compensação de movimento (308) adaptada para gerar um bloco de predição filtrado do bloco atual com base no bloco atual e no bloco de referência filtrado.
2. Dispositivo codificador de vídeo, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que a unidade de compensação de movimento (308) é adaptada para gerar ainda um bloco de predição não filtrado do bloco atual com base no bloco atual e no bloco de referência, e para emitir, a partir de entre o bloco de predição filtrado e o bloco de predição não filtrado, o bloco de predição que minimiza um erro de predição, o erro de predição sendo a diferença entre o bloco atual e o respectivo bloco de predição.
3. Dispositivo codificador de vídeo, de acordo com a reivindicação 1 ou 2, CARACTERIZADO pelo fato de que a unidade de estimativa de movimento (307, 510) é ainda adaptada para gerar um segundo vetor de movimento por estimar movimento entre o bloco de referência filtrado e o bloco atual; e dependendo de uma comparação (511) do segundo vetor de movimento e do vetor de movimento entre o bloco de referência e o bloco atual, levar o bloco de referência filtrado em consideração ou desconsiderado, o bloco de referência filtrado para gerar o fluxo de bits de vídeo codificado.
4. Dispositivo codificador de vídeo, de acordo com a reivindicação 2 ou 3, CARACTERI ZADO pelo fato de que compreende meios de codificação (303) adaptados para gerar o fluxo de bits de vídeo codificado com base no erro de predição correspondente ao bloco de predição.
5. Dispositivo codificador de vídeo, de acordo com qualquer uma das reivindicações 1 a 4, CARACTERIZADO pelo fato de que compreende ainda meios de codificação (303) adaptados para gerar o fluxo de bits de vídeo codificado de modo que o fluxo de bits de vídeo codificado compreende informação de movimento e informação de filtro; em que a informação de movimento compreende o vetor de movimento; e em que a informação de filtro especifica se o fluxo de bits de vídeo codificado baseia-se no erro de predição entre o bloco atual e o bloco de predição filtrado ou no erro de predição entre o bloco atual e o bloco de predição não filtrado.
6. Dispositivo codificador de vídeo, de acordo com a reivindicação 5, CARACTERIZADO pelo fato de que os meios de codificação (303) são adaptados para adicionar no fluxo de bits de vídeo codificado a informação de filtro em um nível de bloco para cada bloco atual codificado preditivo, em um nível de quadro, em um nível GOP (grupo de imagens), em um nível PPS (conjunto de parâmetros de imagem) ou em um nível SPS (conjunto de parâmetros de sequência).
7. Dispositivo codificador de vídeo, de acordo com qualquer uma das reivindicações 4 a 6, CARACTERIZADO pelo fato de que compreende uma unidade de transformada e quantificação (301) adaptada para transformar o erro de predição por meio de uma transformada espacial linear de modo a gerar coeficientes de transformada, e quantificar os coeficientes de transformada; e uma unidade de varredura (302) e um codificador de entropia (303), respectivamente, adaptados para varrer e codificar entropia os coeficientes de transformada quantificados de modo a gerar o fluxo de bits de vídeo codificado.
8. Dispositivo codificador de vídeo, de acordo com qualquer uma das reivindicações 1 a 7, CARACTERIZADO pelo fato de que a unidade de seleção de filtro (210) é adaptada para derivar o ângulo do vetor de movimento e selecionar o um dentre a pluralidade de filtros dependendo do ângulo.
9. Dispositivo codificador de vídeo, de acordo com qualquer uma das reivindicações 1 a 8, CARACTERIZADO pelo fato de que o codificador de vídeo é adicionalmente configurado para codificação de única camada do fluxo de vídeo.
10. Dispositivo codificador de vídeo, de acordo com qualquer uma das reivindicações 1 a 9, CARACTERIZADO pelo fato de que a unidade de seleção de filtro (313) é adaptada para selecionar pelo menos um de uma pluralidade de filtros de desfocagem e remoção de desfocagem dependendo da orientação do vetor de movimento.
11. Dispositivo codificador de vídeo, de acordo com qualquer uma das reivindicações 1 a 10, CARACTERIZADO pelo fato de que o dispositivo codificador de vídeo compreende um codificador de vídeo híbrido para predição intra-quadro e inter-quadro.
12. Método para codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com compensação de movimento em um fluxo de bits de vídeo codificado, o método sendo CARACTERIZADO pelo fato de que compreende: armazenar pelo menos um quadro de referência do fluxo de vídeo, o pelo menos um quadro de referência sendo diferente de um quadro atual do fluxo de vídeo; gerar um vetor de movimento por estimar movimento entre um bloco de referência do pelo menos um quadro de referência e um bloco atual do quadro atual; selecionar um dentre uma pluralidade de filtros dependendo da orientação do vetor de movimento; gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência; e gerar um bloco de predição filtrado do bloco atual com base no bloco atual e no bloco de referência filtrado.
13. Dispositivo decodificador de vídeo para decodificar um fluxo de bits de vídeo codificado obtido por codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com compensação de movimento, CARACTERIZADO pelo fato de que o fluxo de bits de vídeo codificado compreende um quadro de referência codificado, um quadro atual codificado preditivo e um vetor de movimento codificado refletindo movimento entre um bloco de referência de um quadro de referência e um bloco atual de um quadro atual, o quadro de referência sendo diferente do quadro atual, o dispositivo decodificador de vídeo compreendendo: um decodificador (403) adaptado para decodificar o quadro de referência codificado e o vetor de movimento codificado de modo a gerar o quadro de referência e um vetor de movimento; um buffer de quadro (406) adaptado para armazenar o quadro de referência; uma unidade de seleção de filtro (413) adaptada para selecionar um dentre uma pluralidade de filtros dependendo da orientação do vetor de movimento; uma unidade de filtragem (414) adaptada para gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência; e uma unidade de compensação de movimento (408) adaptada para gerar o bloco atual do quadro atual com base no vetor de movimento e no bloco de referência filtrado.
14. Dispositivo decodificador de vídeo, de acordo com a reivindicação 13, CARACTERIZADO pelo fato de que o fluxo de bits de vídeo codificado compreende informação de filtro relacionada com o bloco atual; o decodificador (403) é adaptado para decodificar a informação de filtro; e a unidade de compensação de movimento (408) é adaptada para, dependendo do valor da informação de filtro, gerar o bloco atual do quadro atual codificado preditivo com base no vetor de movimento e no bloco de referência filtrado, ou com base no vetor de movimento e no bloco de referência.
15. Dispositivo decodificador de vídeo, de acordo com qualquer uma das reivindicações 13 a 14, CARACTERIZADO pelo fato de que a unidade de seleção de filtro (413) é adaptada para derivar o ângulo do vetor de movimento e selecionar o um dentre a pluralidade de filtros dependendo do ângulo.
16. Dispositivo decodificador de vídeo, de acordo com qualquer uma das reivindicações 13 a 15, CARACTERIZADO pelo fato de que é para codificação de única camada do fluxo de vídeo.
17. Dispositivo decodificador de vídeo, de acordo com qualquer uma das reivindicações 13 a 16, CARACTERIZADO pelo fato de que a unidade de seleção de filtro (413) é adaptada para selecionar pelo menos um de uma pluralidade de filtros de desfocagem e remoção de desfocagem dependendo da orientação do vetor de movimento.
18. Dispositivo decodificador de vídeo, de acordo com qualquer uma das reivindicações 13 a 17, CARACTERIZADO pelo fato de que o Dispositivo decodificador de vídeo compreende um decodificador de vídeo híbrido para predição intra-quadro e inter-quadro.
19. Método para decodificar um fluxo de bits de vídeo codificado obtido por codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com compensação de movimento, CARACTERIZADO pelo fato de que o fluxo de bits de vídeo codificado compreende pelo menos um quadro de referência codificado, um quadro atual codificado preditivo, e um vetor de movimento codificado refletindo movimento entre um bloco de referência de um quadro de referência e um bloco atual de um quadro atual, em que o quadro de referência é diferente do quadro atual, o método compreendendo: decodificar o pelo menos um quadro de referência codificado e o vetor de movimento codificado de modo a gerar o quadro de referência e um vetor de movimento; armazenar o quadro de referência; selecionar um dentre uma pluralidade de filtros dependendo da orientação do vetor de movimento; gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência; e gerar o bloco atual do quadro atual com base no vetor de movimento e no bloco de referência filtrado.
20. Meio não transitório legível por computador tendo instruções executáveis por computador armazenadas no mesmo, CARACTERIZADO pelo fato de que as instruções executáveis por computador, quando executadas por um processador em um aparelho, fazem com que o aparelho realize um método para codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com compensação de movimento em um fluxo de bits de vídeo codificado, o método compreendendo: armazenar pelo menos um quadro de referência do fluxo de vídeo, o pelo menos um quadro de referência sendo diferente de um quadro atual do fluxo de vídeo; gerar um vetor de movimento por estimar movimento entre um bloco de referência do pelo menos um quadro de referência e um bloco atual do quadro atual; selecionar um dentre uma pluralidade de filtros dependendo da orientação do vetor de movimento; gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência; e gerar um bloco de predição filtrado do bloco atual com base no bloco atual e no bloco de referência filtrado.
21. Meio não transitório legível por computador tendo instruções executáveis por computador armazenadas no mesmo, CARACTERIZADO pelo fato de que as instruções executáveis por computador, quando executadas por um processador em um aparelho, fazem com que o aparelho realizo um método para decodificação de um fluxo de bits de vídeo codificado obtido por codificação preditiva de um fluxo de vídeo de quadros subsequentes de acordo com compensação de movimento, em que o fluxo de bits de vídeo codificado compreende pelo menos um quadro de referência codificado, um quadro atual codificado preditivo, e um vetor de movimento codificado refletindo movimento entre um bloco de referência de um quadro de referência e um bloco atual de um quadro atual, em que o quadro de referência é diferente do quadro atual, o método compreendendo: decodificar o pelo menos um quadro de referência codificado e o vetor de movimento codificado de modo a gerar o quadro de referência e um vetor de movimento; armazenar o quadro de referência; selecionar um dentre uma pluralidade de filtros dependendo da orientação do vetor de movimento; gerar um bloco de referência filtrado por aplicar o filtro selecionado ao bloco de referência; e gerar o bloco atual do quadro atual com base no vetor de movimento e no bloco de referência filtrado.
BR112017024902-2A 2015-05-21 Dispositivo codificador de vídeo, método para codificação preditiva, dispositivo decodificador de vídeo, método para decodificar um fluxo de bits de vídeo, e meio não transitório legível por computador BR112017024902B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2015/061278 WO2016184527A1 (en) 2015-05-21 2015-05-21 Apparatus and method for video motion compensation

Publications (2)

Publication Number Publication Date
BR112017024902A2 BR112017024902A2 (pt) 2018-07-31
BR112017024902B1 true BR112017024902B1 (pt) 2024-05-21

Family

ID=

Similar Documents

Publication Publication Date Title
KR102668077B1 (ko) 영상 부호화 및 복호화 장치 및 그 방법
US10536716B2 (en) Apparatus and method for video motion compensation
WO2019062544A1 (zh) 视频图像的帧间预测方法、装置及编解码器
JP2017522789A5 (pt)
KR20170083455A (ko) 참조 이미지 프로세싱을 위한 방법, 애플리케이션 프로세서 및 모바일 기기
BR112016023406B1 (pt) Método e dispositivo para codificar ou decodificar dados de vídeo, e memória legível por computador
TW201709731A (zh) 在視訊寫碼中限制雙向預測之方法及系統
US9332279B2 (en) Method and digital video encoder system for encoding digital video data
BR112016015854B1 (pt) Método em um dispositivo de computação com um codificador de vídeo, dispositivo de computação e meio legível por computador para seleção da precisão de vetor de movimento
KR20110043490A (ko) 움직임 추정에 대한 검색 범위 선택 방법과 그의 시스템 및 컴퓨터 판독가능 저장 매체
KR20200140844A (ko) 패딩을 위한 화면내-예측 모드 선택을 위한 장치
BR112020008896A2 (pt) filtro de interpolação para um aparelho e método de interpredição para codificação de vídeo
KR20200005648A (ko) 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치
JP2022535859A (ja) Mpmリストを構成する方法、クロマブロックのイントラ予測モードを取得する方法、および装置
BR112021010896A2 (pt) Método e aparelho de codificação e decodificação de imagem de vídeo
BR112017024902B1 (pt) Dispositivo codificador de vídeo, método para codificação preditiva, dispositivo decodificador de vídeo, método para decodificar um fluxo de bits de vídeo, e meio não transitório legível por computador
JP6200335B2 (ja) 動画符号化装置、及び動画符号化プログラム
JP5299319B2 (ja) 動きベクトル検出装置
JP2016213657A (ja) 符号化ブロックサイズ決定装置、符号化装置、及びプログラム
JP2023075158A (ja) インター予測方法及び装置、ビデオエンコーダ、並びにビデオデコーダ
JP5718438B2 (ja) 圧縮動画符号化装置、圧縮動画復号化装置、圧縮動画符号化方法および圧縮動画復号化方法
BR112021003486A2 (pt) métodos e dispositivos para codificação e decodificação de um fluxo de dados representando pelo menos uma imagem