BR112017024902B1 - VIDEO CODING DEVICE, METHOD FOR PREDICTIVE CODING, VIDEO DECODING DEVICE, METHOD FOR DECODING A VIDEO BIT STREAM, AND COMPUTER READABLE NON-TRANSIENT MEDIA - Google Patents

VIDEO CODING DEVICE, METHOD FOR PREDICTIVE CODING, VIDEO DECODING DEVICE, METHOD FOR DECODING A VIDEO BIT STREAM, AND COMPUTER READABLE NON-TRANSIENT MEDIA 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
Portuguese (pt)
Other versions
BR112017024902A2 (en
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/en
Publication of BR112017024902B1 publication Critical patent/BR112017024902B1/en

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.VIDEO ENCODER, PREDICTIVE CODING METHOD, VIDEO DECODER, DECODING METHOD AND COMPUTER READABLE STORAGE MEDIUM. The present invention provides a frame buffer (306) adapted to store at least one reference frame of a video stream, said reference frame being different from a current frame of the video stream, a motion estimation unit (307) adapted to generate a motion vector by estimating motion between a reference block of the reference frame and a current block of the current frame, a blur filter selection unit (313) adapted to select one of a plurality of blur filters depending on of the orientation of the motion vector, a filtering unit (314) adapted to generate a filtered reference block by applying the selected blur filter to the reference block, a motion compensation unit (308) adapted to generating a prediction block filtered from the current block based on the current block, the motion vector, and the filtered reference block.

Description

CAMPO TÉCNICOTECHNICAL FIELD

[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.[001] The present invention generally relates to the field of video processing and to an apparatus for video motion compensation, and specifically relates to a video encoder and a video decoder for supporting motion compensation to predict frames in a video. The present invention further relates to a method for encoding and a method for decoding a video stream using motion compensation. Finally, the present invention relates to a computer program having program code for performing such a method.

FUNDAMENTOSFUNDAMENTALS

[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.[002] In the field of video processing, and in particular in the field of hybrid video coding and compression, it is known to use inter- and intra-image prediction, as well as transform coding. Such hybrid video coding technologies are used in well-known video compression standards such as H.261, H.263, MPEG-1, 2, 4, H.264/AVC, or 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.[003] Figure 1 shows a video encoder according to the state of the art. A video encoder 100 comprises an input for receiving input images and an output for generating an encoded video stream. The video encoder 100 is adapted to apply prediction, transformation, quantification, and entropy coding to a video sequence. The transformation, quantification, and entropy coding are performed, respectively, by a transform and quantification unit 101 and an entropy encoder 103. Between the transform and quantification unit 101 and the entropy encoder 103, a scan 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.[004] The video sequence corresponds to a plurality of input images, characterized in that each image is divided into blocks of a certain size that are intra- or inter-coded. The blocks of the first image of a video sequence are intra-coded using an intra-prediction unit 109. An intra-image is encoded using only the information within the same image, so that it can be decoded independently and can provide an entry point into the bitstream for random access.

[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.[005] For inter-coded images, information from previous and/or future coded images, which are called reference images, are used to reduce temporal redundancy. The reference images are processed by a backscan, dequantization, and inverse transform unit 104, by SAO (sample adaptive shift) and deblocking filters 105 and are stored in a frame buffer 106. Each block of an inter-coded image is predicted from a block of the same size in the reference images.

[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.[006] A motion estimate is applied by a motion estimation unit 107 to select motion data, such as, for example, a motion vector (MV), a mode decision, and reference frames. The motion estimation unit 107 comprises as input an image to be encoded and a reference image. The motion data is selected based on certain cost function to minimize the difference between the original block and its predicted block. An encoder control unit 110 selects motion information, such as motion vector or reference frame index, based on the rate distortion optimization procedure.

[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.[007] A motion compensation performed by a motion compensation unit 108 uses the motion data, which is encoded and transmitted as side information to the decoder, to generate prediction signals or motion compensated frame signals. The difference between the original block and its prediction, which is called residual or prediction error, is then transformed. The transform coefficients are generally quantized, swept, entropy encoded, and transmitted together with the motion data.

[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.[008] Decoder processing, which is part of video encoder 100, is shown in dashed box 111 in Figure 1. Figure 2 shows a video decoder 200 in accordance with the prior art. The video decoder 200 comprises, similarly to the video encoder 100, an entropy decoder 203, an inverse sweep, dequantization, and inverse transform unit 204, a deblocking filter and an SAO unit 205, a frame buffer 206 , a motion compensation unit 208 and an intra-forecast unit 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.[009] Both video encoder 100 and video decoder 200 generate identical predictions. The residual data is reconstructed by unit inverse scanning, dequantization, and inverse transform 204. The approximate input image is reconstructed blockwise by adding the residual to the prediction. The result of the addition can be added to loop filters to smooth out artifacts. The final reconstructed image is then stored in the image or frame buffer 206, which can be used for prediction of subsequent images.

[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.[010] Motion compensation, as, for example, applied in the video encoder 100 of Figure 1 and the video decoder of Figure 2, is one of the most important elements in hybrid video encoding/decoding. Motion compensation uses temporal information to predict the current block and thus reduces the redundancy of a video. The prediction accuracy depends on the content similarity between the reference block and the current block. With changing camera speed or certain objects in a scene, which is typically expected in action and sports films, motion blur varies from frame to frame, leading to reduced prediction accuracy.

[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.[011] The general method of motion compensation from video coding standards works well with stationary objects or objects moving at constant speed. However, accuracy is limited in case of variable motion blur. Motion blur occurs in the direction of object movement if an object moves during the exposure time. An accelerated object appears blurrier in the current frame than in the previous reference frame while a decelerated object appears sharper. The varying extent of blur between successive frames generally increases the prediction error. Thus, this results in reduced compression efficiency and consequently in an increased data rate for the inter-predicted block residual.

[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.[012] In this context, it is known to reduce prediction error by filtering the reference frame to vary motion blur compensation. For example, it is known to preset a plurality of blur filters and apply these blur filters to a reference frame stored in frame buffer 106. By iteratively testing the performance of each filter in terms of rate distortion optimization, the best filter blur is selected by the video encoder. To allow the video decoder to decode the generated bitstream, the blur filter that was selected by the video encoder is signaled to the decoder as side information within the bitstream.

[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.[013] However, even though such a technique may lead to a reduction in prediction error in the case of a blur variation between a reference frame and a current frame being inter-coded, signaling the selected blur filter from the Video encoder to video decoder requires additional bits within the encoded bitstream. This additional signaling, in turn, decreases the number of bits that can be used to encode the prediction error in the encoded bit stream.

SUMÁRIOSUMMARY

[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.[014] Having recognized the aforementioned disadvantages and problems, the present invention aims to improve the state of the art. In particular, the object of the present invention is to provide a video encoder, an encoding method, a video decoder and a decoding method for improved encoding and decoding of a video stream of subsequent frames.

[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.[015] The present invention particularly intends to improve the quality of inter-predictive coding, improving the accuracy of a prediction signal. The invention also aims to reduce the number of signaling bits within the encoded bit stream.

[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.[016] The aforementioned objective of the present invention is achieved by the solution provided in the included independent claims. Advantageous implementations of the present invention are further defined in the respective dependent claims.

[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.[017] A first aspect of the present invention provides a video encoder for predictive coding of a video stream of subsequent frames in accordance with motion compensation in a coded video bit stream. The video encoder comprises a frame buffer adapted to store at least one reference frame of the video stream, said reference frame being different from an actual frame of the video stream. The video encoder comprises a motion estimation unit adapted to generate a motion vector by estimating motion between a reference block of the reference frame and a current block of the current frame. The video encoder comprises a filter selection unit adapted to select one of a plurality of filters depending on the orientation of the motion vector. The video encoder comprises a filtering unit adapted to generate a filtered reference block by applying the selected filter to the reference block. The video encoder comprises a motion compensation unit adapted to generate a filtered prediction block of the current block based on the current block and the filtered reference block.

[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.[018] Thus, while the prior art requires additional information to be encoded into the bitstream for a video stream of subsequent frames, the present invention makes use of the motion vector, which is already part of the bitstream for the support of inter-prediction. Therefore, no additional signaling is required to support reference frame/block filtering. In the following, the "frame" and "block" features are interchangeable, since filtering and prediction can be applied to a block of a frame or even to the frame itself.

[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.[019] In a first form of implementation of the video encoder according to the first aspect, the motion compensation unit is adapted to further generate an unfiltered prediction block of the current block based on the current block and the reference block , and to output, from between the filtered prediction block and the unfiltered prediction block, the prediction block that minimizes a prediction error, the prediction error being the difference between the current block and the respective prediction block .

[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.[020] In this way, a rate distortion optimization can be done so that the filtered or unfiltered reference block is used to generate the encoded prediction error.

[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.[021] In another form of video encoder implementation according to the first aspect, the motion estimation unit is adapted to generate a second motion vector by estimating motion between the filtered reference block and the current block. Depending on a comparison of the second motion vector and the motion vector between the reference block and the current block, the filtered reference block is taken into account or disregarded to generate the encoded video bitstream.

[022] Assim, a predição de um bloco pode ser mais precisa pela avaliação de uma segunda estimativa de movimento.[022] Thus, the prediction of a block can be more accurate by evaluating a second movement estimate.

[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.[023] In another form of implementation of the video encoder according to the first aspect, the video encoder comprises coding means adapted to generate the encoded video bit stream based on the prediction error corresponding to the emitted prediction block. by the motion compensation unit.

[024] Por isso, a codificação preditiva eficiente pode ser implementada.[024] Therefore, efficient predictive coding can be implemented.

[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.[025] In another form of implementation of the video encoder according to the first aspect, the video encoder comprises coding means adapted to generate the encoded video bit stream, such that the encoded video bit stream comprises motion information and filter information. The motion information comprises the motion vector, and the filter information specifies whether the encoded video bitstream is based on the prediction error between the current block and the filtered prediction block or the prediction error between the current block and the unfiltered prediction block.

[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.[026] Thus, the filter information allows the video decoder to quickly determine whether or not additional reference block filtering should be done to perform predictive decoding.

[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.[027] In another form of implementation of the video encoder according to the first aspect, the coding means are adapted to add into the encoded video bit stream filter information at a block level for each predictive coded current block. , at a frame level, at a GOP level, at a PPS level, or at an SPS level.

[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.[028] In this way, it is possible to adaptively adjust the filter information to a desired granularity so that signaling can be optimized.

[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.[029] In another form of implementation of the video encoder according to the first aspect, the video encoder comprises a transform and quantification unit adapted to transform the prediction error by means of a linear spatial transform in order to generate coefficients of transform, and quantifying the transform coefficients, and a scanning unit and an entropy encoder, respectively, adapted to scanning and entropy coding the quantized transform coefficients so as to generate the encoded video bit stream.

[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.[030] Therefore, the number of bits to transmit the prediction error in the video bit stream can be further reduced.

[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.[031] In another form of implementation of the video encoder according to the first aspect, the filter selection unit is adapted to derive the angle of the motion vector with respect to the positive horizontal axis, and to select said one from a plurality of filters depending on the angle.

[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.[032] In this way, the selection of a filter to be applied to the reference block is simplified and can be carried out without other signaling bits.

[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.[033] In another form of implementation of the video encoder according to the first aspect, the video encoder is a video encoder for encoding a layer of the video stream.

[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.[034] In another form of implementation of the video encoder according to the first aspect, the filter selection unit is adapted to select one of a plurality of blurring and/or blurring filters depending on the orientation of the image vector. movement.

[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.[035] Therefore, it is possible to add or remove blur from the reference block in cases of acceleration or deceleration of movement within the video stream.

[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.[036] Another aspect of the present invention provides a hybrid video encoder for intra- and inter-frame prediction comprising such a video encoder.

[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.[037] Another aspect of the present invention provides a method for predictively coding a video stream of subsequent frames in accordance with motion compensation in a coded video bit stream. The method comprises: a step of storing at least one reference frame of the video stream, said reference frame being different from a current frame of the video stream, a motion estimation step comprising generating a motion vector for estimating motion between a reference block of the reference frame and a current block of the current frame, a step of selecting one of a plurality of filters depending on the orientation of the motion vector, a step of generating a filtered reference block by applying the selected filter to the block reference, a motion compensation step comprising generating a filtered prediction block of the current block based on the current block and the filtered reference block.

[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.[038] A further aspect of the present invention provides a video decoder for decoding a coded video bitstream obtained by predictively coding a video stream of subsequent frames in accordance with motion compensation, wherein the video bitstream of Coded video comprises a predictive coded current frame and a coded motion vector reflecting motion between a reference block of the reference frame and a current block of the current frame, said reference frame being different from the current frame. The video decoder comprises a decoder adapted to decode the encoded reference frame and the encoded motion vector to generate a reference frame and a motion vector, a frame buffer adapted to store the reference frame, a filter selection adapted to select one of a plurality of filters depending on the orientation of the motion vector, a filtering unit adapted to generate a filtered reference block by applying the selected filter to the reference block, a motion compensation unit adapted to generate the current block of the predictive coded current frame on the basis of the motion vector and the filtered reference block.

[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.[039] Thus, while the prior art requires additional information to be encoded into the bitstream for a video stream of subsequent frames, the present invention makes use of the motion vector, which is already part of the bitstream for the support of inter-prediction. Therefore, no additional signaling is required to support reference frame/block filtering. Furthermore, no information other than the current frame is required to select the filter and apply the selected filter to the reference frame/block.

[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.[040] In one form of video encoder implementation according to the further aspect, the encoded video bit stream comprises filter information related to the current block. The decoder is adapted to decode the filter information. The motion compensation unit is adapted to, depending on the value of the filter information, generate the current block of the predictive coded current frame based on the motion vector and the filtered reference block, or based on the motion vector and the filtered reference block. reference, which corresponds to the unfiltered reference block, that is, the reference block that was not processed by the selected filter.

[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.[041] In one form of video encoder implementation according to the further aspect, the filter selection unit is adapted to derive the angle of the motion vector, such as with respect to the positive horizontal axis, and select said one of a plurality of filters depending on the angle.

[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.[042] In one form of implementation of the video decoder according to the further aspect, the video decoder is a video decoder for single-layer encoding of the video stream.

[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.[043] In one form of implementation of the video decoder according to the further aspect, the filter selection unit is adapted to select one of a plurality of blurring and/or blurring filters depending on the orientation of the motion vector. .

[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.[044] Another aspect of the present invention provides a hybrid video decoder for intra- and inter-frame prediction comprising such a video decoder.

[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.[045] Another aspect of the present invention provides a method for decoding a coded video bit stream obtained by predictively coding a video stream of subsequent frames in accordance with motion compensation. The coded video bitstream comprises at least one coded reference frame, a predictive coded current frame, said reference frame being different from the current frame, and a coded motion vector reflecting motion between a reference block of the reference frame and a current block of the current frame. The method comprises decoding the encoded reference frame and the encoded motion vector so as to generate a reference frame and a motion vector, storing the reference frame, selecting one of a plurality of filters depending on the orientation of the motion vector, generating a filtered reference block by applying the selected filter to the reference block, motion compensation comprising generating the current block of the current frame predictively encoded based on the motion vector and the filtered reference block.

[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.[046] Another aspect of the present invention provides a computer program having a program code for performing such a method for encoding and/or decoding when the computer program is executed on a computing device.

[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.[047] It should be noted that all devices, elements, units and means described in the present application can be implemented in software or hardware elements or any type of combination thereof. All the steps that are performed by the various entities described in this application, as well as the functionalities described to be performed by the various entities, are intended to mean that the respective entity is adapted or configured to execute the respective steps and functionalities. Even if, in the following description of specific embodiments, a specific functionality or step to be formed completely by eternal entities is not reflected in the description of a specific detailed element of that entity that performs that specific step or functionality, it should be clear to a qualified person that These methods and functionalities can be implemented in respective software or hardware elements, or any type of combination thereof.

BREVE DESCRIÇÃO DOS DESENHOSBRIEF DESCRIPTION OF THE DRAWINGS

[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.[048] The above aspects and forms of implementation of the present invention will be explained in the following description of specific embodiments in relation to the attached drawings, in which: figure 1 shows a video encoder according to the state of the art; figure 2 shows a video decoder according to the state of the art; Figure 3 shows a video encoder according to an embodiment of the present invention; Figure 4 shows a video decoder according to an embodiment of the present invention; Figure 5 (a) shows an embodiment of motion blur compensation in accordance with the present invention; Figure 5 (b) shows an embodiment of motion blur compensation in accordance with the present invention; Figure 6 shows examples of motion vectors obtained by the embodiment of Figure 5 (a); figure 7 shows an embodiment of a filter according to the present invention; figure 8 shows an embodiment of a filter according to the present invention; and figure 9 shows an embodiment of filter coefficients according to the present invention.

DESCRIÇÃO DETALHADA DE MODALIDADESDETAILED DESCRIPTION OF MODALITIES

[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.[049] Figure 3 shows a video encoder in accordance with an embodiment of the present invention, and particularly a hybrid video encoder 300 for predictive coding of a video stream of subsequent frames in accordance with motion compensation in a video stream. bits of encoded video.

[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.[050] The video encoder 300 comprises, in particular, a frame buffer 306, a motion estimation unit 307, a filter selection unit 313, a filtering unit 314 and a motion compensation unit 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.[051] Frame buffer 306 is adapted to store at least one reference frame of the video stream. Said reference frame is different from an actual frame of the video stream. In the context of the invention, the current frame is a frame of the video stream that is currently encoded. The current frame is encoded using an intercoding technique, that is, the current frame is predicted from one or a plurality of reference frames. The reference frame can be a previous frame, that is, a frame that is located before the current frame within the video stream of subsequent frames. Alternatively, if direct prediction is used, the reference frame may be a future frame, i.e., a frame located after the current frame. In the case of a plurality of reference frames, at least one may be a previous frame and at least one of them may be a future frame. A reference frame can be intra-coded, that is, it can be encoded without using any additional frames and without any dependency on other frames, so that it can be decoded independently and can serve as an entry point for random video access.

[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.[052] The motion estimation unit 307 is adapted to generate a motion vector by estimating motion between a reference block of the reference frame and a current block of the current frame. Figure 3 accordingly shows that the motion estimation unit 307 comprises an input for the reference frame stored in the frame buffer 306 and an input for an input image corresponding to the current frame.

[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.[053] The motion vector is generated using a block motion estimate. The reference block and the current block are preferably a respective area or sub-area of the reference frame and the current frame. This block can have a regular, rectangular or irregular shape. Alternatively, blocks can be the same size as frames. Both the current block and the reference block have the same size. The size of blocks is set using a block mode. A block may correspond to a coding unit (CU) which is a basic coding structure of the video sequence of a predefined size, containing a part of a frame, for example 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.[054] The current block of the current frame that is intercoded is predicted from the reference block of the reference frame. The coding process for inter-frame prediction comprises choosing motion data comprising a reference index and the motion vector to be applied to predict the current block. The reference index is an index of the reference block and/or reference frame.

[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.[055] The filter selection unit 313 is adapted to select one of a plurality of filters depending on the orientation of the motion vector. The filtering unit 314 is adapted to generate a filtered reference block by applying the selected filter to the reference block. The motion compensation unit 308 is adapted to generate a filtered prediction block of the current block based on the current block and the filtered reference block.

[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.[056] Figure 3 therefore shows that the motion estimation unit 307 transmits the motion vector to the filter selection unit 313. The output of the filter selection unit 313 identifies the selected filter. The filtering unit 314 then applies the filter selected by the filter selection unit 313 to the reference frame reference block stored in the frame buffer 306, so as to generate a filtered reference block transmitted to the motion compensation unit 308 The motion compensation unit 308 then generates the filtered prediction block based on the current block of the current frame and the filtered reference block. Preferably, the filtered prediction block is generated based on the current block, the motion vector and the filtered reference block.

[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.[057] Particularly, for hybrid video coding, said motion estimation 307 is performed during coding to find the motion vector pointing to the best prediction unit in a reference frame. Motion compensation 308 uses motion data, which is encoded and transmitted as side information to the decoder, to generate prediction signals. Prediction signals refer to prediction blocks that can be combined to obtain a prediction framework.

[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.[058] The video encoder 300 of Figure 3 comprises other units similar to the video encoder 100 of Figure 1. Particularly, the video encoder 300 comprises similar units that are a transform and quantization unit 301, a raster unit 302, an entropy encoder 103, an inverse sweep, dequantization, inverse transform unit 304, an SAO filters and deblocking unit 305. The video encoder 300 comprises other similar units which are the motion estimation unit 307, the compensation unit of movement 308, the intra-prediction 309 which is responsible for the intra-prediction, for example, of the reference frame, and the encoder control 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.[059] In the hybrid video encoder 300 shown in Figure 3, based on the motion vector generated during motion estimation 307 for, for example, a block or coding unit, a predefined filter is selected 313 according to the orientation of said motion vector, and particularly according to the angle of said motion vector with respect to the horizontal axis. The angle is calculated based on the current block's motion vector. Then, the selected filter is applied to the reference frame stored in frame buffer 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.[060] In the video encoder 300, the motion compensation unit 308 is adapted to further generate an unfiltered prediction block of the current block based on the current block and the reference block, and particularly based on the current block, the motion vector and the reference block. The reference block taken into consideration here is the unfiltered reference block of the reference frame stored in the frame buffer 306. The motion compensation unit 308 is further adapted to output between the filtered prediction block and the unfiltered prediction block, the prediction block that minimizes a prediction error, the prediction error being the difference between the current block and the respective prediction block.

[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.[061] This means that the rate distortion performance of the filtered prediction block and the unfiltered prediction block will be compared. The option that has the best rate distortion performance is then chosen. This comparison and selection may be performed by encoder control 310. Encoder control 310 may select motion information, such as motion vector and reference index, and filter information such as blur flag, based on the procedure of rate distortion optimization.

[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.[062] The entropy encoder 303 is adapted to generate the encoded video bitstream such that the encoded video bitstream comprises motion information and filter information. The motion information comprises the motion vector selected by the unit and, advantageously, also the reference index which is an index to identify the reference block and/or reference frame used for predictive coding of the current block and/or current frame. . The filter information specifies whether the encoded video bitstream is based on the prediction error between the current block and the filtered prediction block or the prediction error between the current block and the unfiltered prediction block. Particularly, the filter information specifies whether the encoded bitstream was generated based on the filtered prediction block and the unfiltered prediction block.

[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.[063] The filter selection unit 313 is adapted to select one of a plurality of blurring or blurring filters depending on the orientation of the motion vector. The filters may be predetermined filters that reside in either the encoder 300 or a corresponding decoder such as the decoder 400 shown in Figure 4. Alternatively, the definition of the filters may be transmitted from the encoder 300 to the decoder 400 by the corresponding filter signaling in the stream. of bits. This means that fixed filters are used for all video sequences, so there is no need to send predefined filters, or custom filters are defined for, for example, difference categories of videos. In the latter case, filters can be sent via a SEI (Supplemental Enhancement Information) message to the decoder.

[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.[064] The filter information transmitted within the bit stream may be a filter flag. For example, a blur flag can be set for each block that has been encoded with inter-prediction, i.e., according to an inter-mode. The block-level flag can be used to indicate whether a blur or deblur filter has been used for a current block. Additionally, a blur flag added to a slice header can be used to indicate whether a blur/deblur filter has been used for the current slice. This flag in SPS (Sequence Parameter Set) can be used to indicate whether the blur/deblur filter was used for an encoded video sequence. This flag in PPS (Picture Parameter Set) can be used to indicate whether the blur/deblur filter was used for an encoded image. Alternatively, the blur flag can be used to indicate whether a blur filter has been used for the current block and a deblur flag can be used to indicate whether a deblur filter has been used for the current block.

[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.[065] In addition to the known standard coding methods that are intra-frame and inter-frame prediction (including skipping), the present invention proposes an additional mode that is motion blur compensation mode for hybrid video coding. This motion blur compensation can be considered as an inter-mode complement (including jumping) of hybrid video coding, such as HEVC, during encoding of a given block. The invention proposes creating temporal reference frames by filtering 314 the reconstructed frame stored in frame buffer 306 with an angle filter θ that is derived from the motion vector obtained by motion estimation 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.[066] These filtered reference frames and/or reference blocks are then used for motion blur compensation. If the blur filter is applied to the reference frame, the filtered reference frame and the original reference frame stored in frame buffer 306 share the same reference index. That is, a reference index will refer to a reconstructed frame in general motion estimation in hybrid video coding, or a blurred temporal frame used for motion estimation of the proposed motion blur compensation.

[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.[067] Motion estimation of motion blur compensation according to the present invention is performed after traditional motion estimation of hybrid video coding, such as motion estimation in 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).[068] The blur flag can be set for each block or coding unit encoded with inter mode (including jump) for all partition sizes (2Nx2N, 2NxN, 2NxNu, 2NxNd, ...). The decoder 400 is capable of determining whether the reference frame is blurred during reconstruction of a CU and to replicate the blurring of the reference frame using the angle θ derived from the encoded MV. The blur flag is considered within Rate Distortion (RD) optimization.

[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.[069] The flag at the coding unit or block level can be used to indicate whether a deblurring/deblurring filter has been used for a coding unit. Additionally, a flag in SPS can be used to indicate whether the blur/deblur filter was used for an encoded video sequence. A flag in PPS can also be used to indicate whether the blur/deblur filter was used for an encoded image.

[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.[070] Figure 4 shows a video decoder according to an embodiment of the present invention. This video decoder 400 corresponds to the video encoder 300 in that it comprises the elements of the video encoder 300 located in the dashed box 311 in Figure 3. The decoder 400 is adapted to decode the bit stream generated by the video encoder 300 and both the decoder 400 and the encoder generate identical predictions.

[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.[071] Video decoder 400 is a decoder for decoding a coded video bit stream obtained by predictive coding a video stream of subsequent frames in accordance with motion compensation. The coded video bitstream comprises a predictive coded current frame, which corresponds to the prediction error, and a coded motion vector reflecting movement between a reference block of the reference frame and a current block of the current frame, said reference frame. being different from the current situation.

[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.[072] The video decoder 400 comprises a decoder 403, a frame buffer 406, a filter selection unit 413, a filtering unit 414 and a motion compensation unit 408. The decoder 403 is adapted to decode the frame coded reference frame and the encoded motion vector to generate a reference frame and a motion vector. Frame buffer 406 is adapted to store the reference frame. The filter selection unit 413 is adapted to select one of a plurality of filters depending on the orientation of the motion vector. The filtering unit 414 is adapted to generate a filtered reference block by applying the selected filter to the reference block. The motion compensation unit 408 is adapted to generate the current block of the predictive coded current frame based on the motion vector and the filtered reference block.

[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.[073] Furthermore, the encoded video bitstream comprises filter information related to the current block. The decoder 403 is adapted to decode the filter information and the motion compensation unit 408 is adapted to, depending on the value of the filter information, generate the current block of the predictive encoded current frame based on the motion vector and the block of filtered reference, or based on the motion vector and reference block. Said reference block, in fact, corresponds to the unfiltered reference block, that is, the reference block that was not processed by the selected filter.

[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.[074] The filter selection unit 413 is adapted to derive the angle of the motion vector with respect to the positive horizontal axis, and select said one of a plurality of filters depending on the angle.

[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.[075] Figure 4 shows that the encoded video stream, i.e. the bit stream, is fed to the entropy decoder 403 which decodes the reference frame and prediction error for the current block/frame through the unit of inverse scanning, dequantization, inverse transform 404 and SAO and deblocking filters 405. The reference frame is stored in the frame buffer 406. On the other hand, the decoder 403 transmits the motion information and the filter information, which respectively comprise , the motion vector and the blur/deblur flag, for the filter selection unit 413 and the motion compensation unit 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.[076] Filter information, such as the blur/deblur flag, can be set for each block or coding unit that has been encoded with inter mode (including skip) for all partition sizes, including, e.g. example, 2Nx2N, 2NxN, 2NxNu, 2NxNd, The blur/deblur flag may be present in the slice header, PPS or SPS. The decoder 400 is capable of determining whether the reference frame is blurred during reconstruction of a block and replicating the blurring of the reference frame using the angle θ derived from the encoded motion vector. To make sure that the frames decoded in decoder 400 are identical to those reconstructed, the same filter is applied to the current block by decoder 400 and encoder 300, with the filter determined using the orientation of the decoded motion vector. Then the motion blur filter is applied to the reference frame/block. Motion compensation uses the filtered blur signal depending on the filter information and, in particular, if the blur/deblur flag indicates that a filter, e.g., blur filter, has been applied in encoder 300.

[077] Duas modalidades da compensação de movimento proposta, ou seja, a compensação de desfocagem de movimento no codificador é explicada nos seguintes.[077] Two modalities of the proposed motion compensation, i.e., motion blur compensation in the encoder are explained in the following.

[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.[078] Figure 5 (b) shows an embodiment of motion blur compensation in accordance with the present invention. This embodiment comprises a motion estimation in that, when encoding 500 the current block or coding unit (CU), a motion estimation 501 is performed by the motion estimation unit 307 to generate a motion vector for estimating motion between the reference block and the current block. During a filter generation 503, the filter selection unit 313 selects the filter corresponding to the orientation of the motion vector, that is, the angle θ of the motion vector with respect to, for example, the horizontal. The interval [0, π] for angle θ is subdivided into subintervals [0, θ1], [θ1, θ2] ... [θn-1, θn], [θn, π], with n being an integer value , and each sub-range is associated with a predefined filter.

[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.[079] Once the filter is generated or selected, that filter is applied to the reference block or frame to generate a filtered reference block/frame, such as, for example, a blurred reference block/frame 504. Figure 5 (b) shows that the filtered reference block/frame is generated for a filter flag, i.e. a blur flag, being true 502, while the reference block/frame is not filtered for a filter flag, i.e. , a blur flag, being false 505. Motion compensation 506 is applied to both the filtered reference block/frame and the unfiltered reference block/frame. Based on a rate distortion optimization 507 below, it is decided whether the filtered or unfiltered reference block is used to generate the prediction error.

[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.[080] Figure 5 (a) shows another embodiment of motion blur compensation according to the present invention. In contrast to the embodiment of Figure 5 (b), the blurred reference block/frame 504 is not sent to motion compensation 506, but is used to perform a second motion estimation.

[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.[081] Consequently, the motion estimation unit 307 is adapted to perform a second motion estimation 510 based on the filtered reference block 504 and thus generate a second motion vector for estimating motion between the filtered reference block 504 and the current block. A comparison 511 is then performed between the second motion vector generated by the second motion estimate 510 and the first motion vector, generated by the first motion estimate 501, between the reference block and the current block. Depending on this comparison 511, the filtered reference block is taken into account or disregarded to generate the encoded video bitstream.

[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.[082] Thus, the embodiment of Figure 5 (a) comprises two rounds of motion estimation 501, 510, the second motion estimation 510 being performed based on the filtered reference block/frame. The filtering/blurring method is thus ignored 512 in case the first and second motion vectors are not located in the same angular sector defined according to a sector algorithm.

[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.[083] During coding 501 of a given block or coding unit, an element of the sector-based algorithm in the coding process is the validation check of the predicted motion vector, which corresponds to the second motion vector, after a second estimate of movement 510 be made based on the filtered/blurred reference block/frame.

[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.[084] The validation check has the following three criteria: 1) the first motion vector and the second motion vector are in the same sector; 2) the second motion vector is non-zero vector; and 3) the motion vector is within the defined search range, i.e. ±64 in both horizontal and vertical directions.

[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.[085] Figure 6 shows examples of motion vectors obtained by the embodiment of Figure 5 (a) using the sector-based algorithm. Figure 6 shows four different angular sectors which are [0, π/4], [π/4, π/2], [π/2, 3π/4] and [3π/4, π]. The first motion vector obtained by the first motion estimate 501 is labeled “1. MV” and is located in the first sector.

[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.[086] According to a first example, the second motion estimate 510 is then applied and results in a second motion vector labeled "2. valid MV". Since the second motion vector is located in the same sector as the first motion vector, the blur flag is true 513. This means that motion compensation based on the filtered reference block is possible. In this case, motion compensation 506 is performed for both the filtered reference block and the unfiltered reference block from the frame buffer. A following rate distortion optimization is performed to select the filtered or unfiltered version.

[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.[087] According to a second example, the second motion vector labeled "invalid 2. MV" is located in a different sector than the sector of the first motion vector. As a consequence, filtering is ignored 512 and motion compensation is applied only to the unfiltered reference block.

[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.[088] In other words, after the blurring operation 504, the blurring flag is only set to true 513 in case the first motion vector and the second motion vector are located in the same defined sector. Otherwise, the blur flag is set to false 512. In contrast, in the embodiment of Figure 5(b) no second round of motion estimation is required. The blur flag is set to true 502 if 504 blur is performed. These embodiments are embodiments related to the encoder on how to decide whether the blur filter should be used.

[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.[089] Returning to the embodiment of Figure 5 (a), the first criterion preferably means that a representative direction is defined for each predefined sector. The representative direction is preferably in the middle of the sector. For example, Figure 6 shows the representative direction for the first sector, said direction being labeled as "Rep. MV”. Blur filters are generated based on the representative instructions. The number of sectors can be given according to different accuracy requirements and the same number of corresponding blur filters are calculated before encoding begins.

[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.[090] If the first and second motion vectors belong to the same sector, the same representative direction as well as the same blur filter is used by the encoder and the decoder. The decoder only needs to discover the direction carried by the transmitted motion vector and does the exact filtering to have the same reconstructed block or coding unit.

[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.[091] In the example in Figure 6, each filter covers an angle of π/4 = 45 ° if the number of four sectors is chosen. Since the first motion vector falls in the first sector, the representative motion vector points to the direction in the middle of the sector. If the second "valid 2. MV" motion vector falls in the same sector, the true value is given by the validation check and the decoder finds the same representative motion vector.

[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.[092] Preferably, the second motion vector is then transmitted to the decoder. This means that the video encoder comprises coding means 303 adapted to generate the encoded video bitstream such that the encoded video bitstream comprises motion information, wherein the motion information comprises the second motion vector.

[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.[093] If the "invalid 2. MV" second motion vector leads to another representative motion vector for the second vector, the false value will be given by the validation check.

[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.[094] Advantageously, a second criterion is that the second motion vector is a non-zero vector. This criterion is based on the fact that motion blur occurs if there is relative movement between objects and cameras during the exposure. A zero motion vector means that no motion is found for the block or encoding unit, so there should be no blurring and the validation check gives false as a result. No filter is then applied 314 to the reference block. This second criterion can be considered in addition to the first criterion or alone.

[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.[095] Finally, according to the third criterion, the second motion vector must be in the search range of the motion estimate for the validation check to be true. This third criterion can be considered in addition to the first and/or second criteria.

[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.[096] As the number of sectors increases, the blur direction will be more accurate while the validation rate of the second motion vector decreases, which may lead to a drop in gain and coding efficiency. There is therefore a trade-off between filter accuracy and validation rate.

[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.[097] Compared to the embodiment of Figure 5 (a), the coding frame of the embodiment of Figure 5 (b) is simplified by applying the same motion vector for motion compensation (MC) based on the filtered reference instead of a second movement estimate and an industry-based validation check. The embodiment of Figure 5 (b) can thus reduce execution time. In effect, this modality saves not only an additional motion estimate, but also the defocus region. Instead of blurring the entire area covered by the standard motion estimation, it is only necessary to blur the block or coding unit in the reference frame pointed to by the motion vector and its surroundings that will be used later by the interpolation. For the same reason described above in the embodiment of Figure 5 (a), here too a zero motion vector is excluded from motion blur compensation.

[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.[098] The embodiment of Figure 5 (a) introduces a second motion estimate in filtered reference frames and a sector-based validation check to ensure that the encoder and decoder share an identical blur direction. In the embodiment of Figure 5 (a), the prediction of a block or coding unit becomes more accurate with an increase in the number of filters, that is, with an increasing number of sectors, since the filters generated are more accurate. in directions. On the other hand, a greater number of filters means that the range of valid angles for the second motion vector decreases and motion blur compensation is ignored more often. Using 9 filters is a good compromise.

[099] Seguindo, será mostrada uma modalidade de filtros de desfocagem que podem ser usados para a compensação de desfocagem de movimento.[099] Next, a type of blur filters that can be used for motion blur compensation will be shown.

[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.[100] An ordinary uniform linear motion (PSF) defocus point spread function in continuous time domain is described with a line segment L and an angle θ with respect to the horizontal axis, as indicated in the following formula: where L is proportional to the speed of movement and duration of exposure, θ indicates the direction of movement and (x, y) is the location in the Cartesian coordinate system. This function is, for example, known as "Photo-Consistent Motion Blur Modeling for Realistic Image Synthesis", H. Lin and 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.[101] The discrete version of equation (1) is acquired by considering a bright spot that passes through the sensors covered by the line segment during the exposure time with constant speed, as known in "Parametric Blur Estimation for Blind Restoration of Natural Images: linear motion and out-of-focus”, J. Oliveira, M. Figueiredo and J. Bioucas-Dias, Image Processing, IEEE Transactions on Image Processing, 2014. Each defocus kernel coefficient is proportional to the time spent in each sensor element. With the assumption of constant motion, the filter coefficients are given by the normalized length of the intersection of the line segment with each pixel in the grid, as illustrated in Figure 7. Figure 7 shows a discrete version of the motion of each sensor element. linear defocus with θ = 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.[102] In case of variable blurring, a filtered reference can improve encoding performance. It is assumed that motion blur, as well as the change of motion blur, can be described by equation (1). The movement can be considered constant for the exposure time of a single frame. Since the time interval between two close frames is only 0.02 seconds for a 50 fps video sequence, we suggest that the change in the extent of motion blur should be small in most cases. Therefore, we employ a fixed extent of 3 pels to describe the phenomenon of variation in blur, i.e., L = 3. Therefore, the two-dimensional blur filter for the luminance component has a dimension of 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.[103] The other degree of freedom for a defocus filter is the angle θ. It is derived from the motion vector used in hybrid video coding such as HEVC. Therefore, a standard hybrid video encoding motion search is performed before the blur filter is established. The blurred reference frame is generated using the directions of the motion vectors.

[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.[104] The general discrete version of the 3x3 filter has 5 different coefficients a, b, c, d and e due to symmetry and is calculated according to an arbitrary angle θ using Figure 8. The suggested filter is a low-pass filter. For example, the filter coefficients for θ = 15° and θ = 60° are listed in Figure 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.[105] In one embodiment, we will only blur the luminance component of the reference using this 3x3 filter if a test sequence has the format 4:2:0. Chrominance pixels are at every other pixel position of the luminance component [6]. With a defocus extent of only 3 pels, three neighboring luminance pixels but only 1 chrominance pixel must be considered. A neighborhood chrominance pixel is outside the blur influence range, so no filter is needed. In the case of a 4:4:4 chrominance subsampling sequence, the same filter for luminance component will be applied to chrominance components.

[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.[106] The proposed motion blur model and the proposed blur filter are examples. Another blurring filter can also be applied according to the proposed invention, wherein the motion vector of the current coding unit/block is used to select predefined filters for improving coding efficiency in hybrid video coding.

[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.[107] The present invention has been described together with various embodiments as examples, as well as implementations. However, other variations can be understood and carried out by those skilled in the art and practicing the claimed invention, from studies of the drawings, this description and the independent claims. In the claims as well as in the description, the word "comprises" does not exclude other elements or steps and the indefinite article "a" or "one" does not exclude a plurality. A single element or other unit may fulfill the functions of multiple entities or items recited in the claims. The mere fact that certain measures are recited in the different dependent claims does not indicate that a combination of these measures cannot be used in an advantageous implementation.

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.1. Video encoding device for predictively encoding a video stream of subsequent frames in accordance with motion compensation into an encoded video bit stream, CHARACTERIZED by the fact that the video encoding device comprises: a frame buffer (306 ) adapted to store at least one reference frame of the video stream, the at least one reference frame being different from a current frame of the video stream; and a motion estimation unit (307) adapted to generate a motion vector by estimating motion between a reference block of the at least one reference frame and a current block of the current frame; a filter selection unit (313) adapted to select one of a plurality of filters depending on the orientation of the motion vector; a filtering unit (314) adapted to generate a filtered reference block by applying the selected filter to the reference block; and a motion compensation unit (308) adapted to generate a filtered prediction block of the current block based on the current block and the filtered reference block. 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.2. Video encoding device according to claim 1, CHARACTERIZED by the fact that the motion compensation unit (308) is adapted to further generate an unfiltered prediction block of the current block based on the current block and the block reference, and to output, from between the filtered prediction block and the unfiltered prediction block, the prediction block that minimizes a prediction error, the prediction error being the difference between the current block and the respective block of prediction. 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.3. Video encoding device according to claim 1 or 2, CHARACTERIZED by the fact that the motion estimation unit (307, 510) is further adapted to generate a second motion vector for estimating motion between the reference block filtered and the current block; and depending on a comparison (511) of the second motion vector and the motion vector between the reference block and the current block, taking the filtered reference block into account or disregarding the filtered reference block to generate the bit stream encoded video. 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.4. Video encoding device according to claim 2 or 3, CHARACTERIZED by the fact that it comprises coding means (303) adapted to generate the encoded video bit stream based on the prediction error corresponding to the prediction block . 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.5. Video encoding device according to any one of claims 1 to 4, CHARACTERIZED by the fact that it further comprises encoding means (303) adapted to generate the encoded video bit stream so that the video bit stream encoded comprises motion information and filter information; wherein the motion information comprises the motion vector; and wherein the filter information specifies whether the encoded video bitstream is based on the prediction error between the current block and the filtered prediction block or the prediction error between the current block and the unfiltered prediction block. 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).6. Video encoding device according to claim 5, CHARACTERIZED by the fact that the encoding means (303) are adapted to add to the encoded video bit stream filter information at a block level for each current block coded predictively, at a frame level, at a GOP (picture group) level, at a PPS (picture parameter set) level, or at an SPS (sequence parameter set) level. 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.7. Video encoding device according to any one of claims 4 to 6, CHARACTERIZED by the fact that it comprises a transform and quantification unit (301) adapted to transform the prediction error by means of a linear spatial transform so as to generate transform coefficients, and quantify the transform coefficients; and a scanning unit (302) and an entropy encoder (303), respectively, adapted to scan and entropy encode the quantized transform coefficients so as to generate the encoded video bit stream. 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.8. Video encoding device according to any one of claims 1 to 7, CHARACTERIZED by the fact that the filter selection unit (210) is adapted to derive the angle of the motion vector and select the one among the plurality of filters depending on the angle. 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.9. Video encoding device according to any one of claims 1 to 8, CHARACTERIZED by the fact that the video encoder is additionally configured for single-layer encoding of the video stream. 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.10. Video encoding device according to any one of claims 1 to 9, CHARACTERIZED by the fact that the filter selection unit (313) is adapted to select at least one of a plurality of blurring and blurring filters depending on the orientation of the motion vector. 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.11. Video encoding device according to any one of claims 1 to 10, CHARACTERIZED by the fact that the video encoding device comprises a hybrid video encoder for intra-frame and inter-frame prediction. 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.12. Method for predictive coding of a video stream of subsequent frames in accordance with motion compensation in an encoded video bit stream, the method being CHARACTERIZED by the fact that it comprises: storing at least one reference frame of the video stream , the at least one reference frame being different from a current frame of the video stream; generating a motion vector by estimating motion between a reference block of the at least one reference frame and a current block of the current frame; selecting one of a plurality of filters depending on the orientation of the motion vector; generating a filtered reference block by applying the selected filter to the reference block; and generating a filtered prediction block of the current block based on the current block and the filtered reference block. 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.13. Video decoder device for decoding a coded video bit stream obtained by predictively coding a video stream of subsequent frames in accordance with motion compensation, CHARACTERIZED by the fact that the coded video bit stream comprises a frame of coded reference, a predictive coded current frame, and a coded motion vector reflecting motion between a reference block of a reference frame and a current block of a current frame, the reference frame being different from the current frame, the video decoder device comprising: a decoder (403) adapted to decode the encoded reference frame and the encoded motion vector to generate the reference frame and a motion vector; a frame buffer (406) adapted to store the reference frame; a filter selection unit (413) adapted to select one of a plurality of filters depending on the orientation of the motion vector; a filtering unit (414) adapted to generate a filtered reference block by applying the selected filter to the reference block; and a motion compensation unit (408) adapted to generate the current block of the current frame based on the motion vector and the filtered reference block. 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.14. Video decoder device according to claim 13, CHARACTERIZED by the fact that the encoded video bit stream comprises filter information related to the current block; the decoder (403) is adapted to decode the filter information; and the motion compensation unit (408) is adapted to, depending on the value of the filter information, generate the current block of the predictive coded current frame based on the motion vector and the filtered reference block, or based on the motion vector. movement and in the reference block. 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.15. Video decoder device according to any one of claims 13 to 14, CHARACTERIZED by the fact that the filter selection unit (413) is adapted to derive the angle of the motion vector and select the one among the plurality of filters depending on the angle. 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.16. Video decoding device according to any one of claims 13 to 15, CHARACTERIZED by the fact that it is for single-layer encoding of the video stream. 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.17. Video decoder device according to any one of claims 13 to 16, CHARACTERIZED by the fact that the filter selection unit (413) is adapted to select at least one of a plurality of blurring and blurring filters depending on the orientation of the motion vector. 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.18. Video decoder device according to any one of claims 13 to 17, CHARACTERIZED by the fact that the video decoder device comprises a hybrid video decoder for intra-frame and inter-frame prediction. 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.19. Method for decoding a coded video bitstream obtained by predictively coding a video stream of subsequent frames in accordance with motion compensation, CHARACTERIZED by the fact that the coded video bitstream comprises at least one reference frame coded, a predictive coded current frame, and a coded motion vector reflecting motion between a reference block of a reference frame and a current block of a current frame, wherein the reference frame is different from the current frame, the method comprising : decoding the at least one encoded reference frame and the encoded motion vector so as to generate the reference frame and a motion vector; store the frame of reference; selecting one of a plurality of filters depending on the orientation of the motion vector; generate a filtered reference block by applying the selected filter to the reference block; and generate the current block of the current frame based on the motion vector and the filtered reference block. 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.20. Non-transitory computer-readable medium having computer-executable instructions stored therein, CHARACTERIZED by the fact that the computer-executable instructions, when executed by a processor in an apparatus, cause the apparatus to perform a method for predictive coding of a video stream of subsequent frames in accordance with motion compensation into an encoded video bitstream, the method comprising: storing at least one reference frame of the video stream, the at least one reference frame being different from a current frame of the video stream; generating a motion vector by estimating motion between a reference block of the at least one reference frame and a current block of the current frame; selecting one of a plurality of filters depending on the orientation of the motion vector; generating a filtered reference block by applying the selected filter to the reference block; and generating a filtered prediction block of the current block based on the current block and the filtered reference block. 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.21. Non-transitory computer-readable medium having computer-executable instructions stored therein, CHARACTERIZED by the fact that the computer-executable instructions, when executed by a processor in an apparatus, cause the apparatus to perform a method for decoding a stream of coded video bits obtained by predictively coding a video stream of subsequent frames in accordance with motion compensation, wherein the coded video bitstream comprises at least one coded reference frame, a predictive coded current frame, and a encoded motion vector reflecting movement between a reference block of a reference frame and a current block of a current frame, wherein the reference frame is different from the current frame, the method comprising: decoding the at least one encoded reference frame and the motion vector encoded to generate the reference frame and a motion vector; store the reference frame; selecting one of a plurality of filters depending on the orientation of the motion vector; generating a filtered reference block by applying the selected filter to the reference block; and generate the current block of the current frame based on the motion vector and the filtered reference block.
BR112017024902-2A 2015-05-21 VIDEO CODING DEVICE, METHOD FOR PREDICTIVE CODING, VIDEO DECODING DEVICE, METHOD FOR DECODING A VIDEO BIT STREAM, AND COMPUTER READABLE NON-TRANSIENT MEDIA BR112017024902B1 (en)

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 (en) 2018-07-31
BR112017024902B1 true BR112017024902B1 (en) 2024-05-21

Family

ID=

Similar Documents

Publication Publication Date Title
KR102668077B1 (en) Apparatus and method for image coding and decoding
US10536716B2 (en) Apparatus and method for video motion compensation
KR101239567B1 (en) Methods and apparatus for adaptively choosing a search range for motion estimation
WO2019062544A1 (en) Inter frame prediction method and device and codec for video images
JP2017522789A5 (en)
KR20170083455A (en) Method, application processor, and mobile terminal for processing reference image
BR112016023406B1 (en) METHOD AND DEVICE FOR ENCODING OR DECODING VIDEO DATA, AND COMPUTER READABLE MEMORY
TW201709731A (en) Methods and systems of restricting bi-prediction in video coding
US9332279B2 (en) Method and digital video encoder system for encoding digital video data
BR112016015854B1 (en) METHOD ON A COMPUTING DEVICE WITH A VIDEO ENCODER, COMPUTING DEVICE AND COMPUTER READABLE MEDIA FOR MOTION VECTOR PRECISION SELECTION
BR112020008896A2 (en) interpolation filter for a device and interprediction method for video encoding
KR20200005648A (en) Intra prediction mode based image processing method and apparatus therefor
KR20200140844A (en) Device for selecting an in-screen-prediction mode for padding
JP2022535859A (en) Method for constructing MPM list, method for obtaining intra-prediction mode of chroma block, and apparatus
BR112021010896A2 (en) VIDEO IMAGE CODING AND DECODING METHOD AND DEVICE
BR112017024902B1 (en) VIDEO CODING DEVICE, METHOD FOR PREDICTIVE CODING, VIDEO DECODING DEVICE, METHOD FOR DECODING A VIDEO BIT STREAM, AND COMPUTER READABLE NON-TRANSIENT MEDIA
JP6200335B2 (en) Movie encoding apparatus and movie encoding program
JP5299319B2 (en) Motion vector detection device
JP2016213657A (en) Encoded block size determination device, encoding device, and program
JP2023075158A (en) Inter-prediction method and device, video encoder, and video decoder
JP5718438B2 (en) Compressed video encoding device, compressed video decoding device, compressed video encoding method, and compressed video decoding method
BR112021003486A2 (en) methods and devices for encoding and decoding a data stream representing at least one image