BRPI0304534B1 - method and apparatus for determining motion vector - Google Patents
method and apparatus for determining motion vector Download PDFInfo
- Publication number
- BRPI0304534B1 BRPI0304534B1 BRPI0304534A BR0304534A BRPI0304534B1 BR PI0304534 B1 BRPI0304534 B1 BR PI0304534B1 BR PI0304534 A BRPI0304534 A BR PI0304534A BR 0304534 A BR0304534 A BR 0304534A BR PI0304534 B1 BRPI0304534 B1 BR PI0304534B1
- Authority
- BR
- Brazil
- Prior art keywords
- motion vector
- image
- motion
- block
- encoded
- Prior art date
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
"método de cálculo de vetor de movimento". quando um bloco (mb22) cujo vetor de movimento se refere no modo direto contém uma pluralidade de vetores de movimento, 2 vetores de movimento mv23 e mv24, os quais são utilizados para o prognóstico interimagem de uma imagem corrente (p23) a ser codificada são determinados pelo ajuste de escala de um valor obtido a partir da obtenção da média da pluralidade de vetores de movimento ou da seleção de um dentre a pluralidade de vetores de movimento."motion vector calculation method". when a block (mb22) whose motion vector refers in direct mode contains a plurality of motion vectors, 2 motion vectors mv23 and mv24 which are used for interimaging prognosis of a current image (p23) to be encoded are determined by scaling a value obtained by averaging the plurality of motion vectors or selecting one from the plurality of motion vectors.
Description
Relatório Descritivo da Patente de Invenção para "MÉTODO E APARELHO PARA DETERMINAR O VETOR DE MOVIMENTO".Report of the Invention Patent for "METHOD AND APPARATUS FOR DETERMINING THE MOVEMENT VECTOR".
Campo Técnico [001] A presente invenção refere-se a um método de codificação e decodificação de imagem em movimento e particularmente, com um método de codificação por prognóstico referindo-se a várias imagens codificadas precedentes na ordem de exibição ou a várias imagens codificadas seguintes na ordem de exibição ou a várias imagens tanto precedentes como seguintes na ordem de exibição. Técnica de Fundamento da Técnica [002] Geralmente, o volume de informação é compactado pela redução da redundância nas direções temporal e espacial para a codificação de imagem em movimento. Portanto, a derivação do movimento e a compensação do movimento são executadas em uma base de bloco por bloco referindo-se a uma imagem precedente ou seguinte e uma codificação é executada para uma valor de diferença entre uma imagem por prognóstico obtida e uma imagem corrente para a codificação por prognóstico interimagem visando reduzir uma redundância temporal.Technical Field The present invention relates to a moving image encoding and decoding method and particularly to a predictive encoding method referring to several preceding encoded images in the order of display or to several subsequent encoded images. in the display order or to multiple images both preceding and following in the display order. Background Art Generally, the volume of information is compressed by reducing redundancy in the temporal and spatial directions for moving image coding. Therefore, motion derivation and motion compensation are performed on a block-by-block basis referring to a preceding or following image and a coding is performed to a difference value between a predicted image obtained and a current image for interimaging prognostic coding to reduce temporal redundancy.
[003] Em um método de codificação de imagem em movimento H,26L, o qual está atualmente sob padronização, uma imagem com somente a codificação por prognóstico intraimagem (imagem I), uma imagem para a qual a codificação por prognóstico interimagem é executada referindo-se a uma imagem (daqui para frente imagem P) e uma imagem para a qual a codificação por prognóstico interimagem é executada referindo-se a duas imagens precedentes na ordem de exibição ou a duas imagens seguintes na ordem de exibição ou a cada uma dentre as imagens precedentes e seguintes na ordem de exibição (daqui para frente imagem B) são propostas. A título exemplificativo, o H.26L é um novo padrão de codificação de vídeo desenvolvido para substituir seu antecessor H.263, sendo que um dos seus principais objetivos é conseguir uma economia 50% de taxa de bits em comparação com H.263 e uma eficiência de compressão mais elevada em comparação com H.263.[003] In a H, 26L motion picture coding method, which is currently under standardization, an image with only intraimage prognostic coding (image I), an image for which interimage prognostic coding is performed by referring to refers to an image (hereinafter image P) and an image for which interimage prognostic coding is performed by referring to two preceding images in the display order or two following images in the display order or each of The preceding and following images in the display order (hereinafter, image B) are proposed. By way of example, H.26L is a new video coding standard designed to replace its H.263 predecessor, one of its main goals being to achieve 50% bit rate savings compared to H.263 and a Higher compression efficiency compared to H.263.
[004] A figura 1 é uma ilustração apresentando um exemplo de uma relação de referência entre cada imagem de acordo com o método de codificação de imagem em movimento e as imagens de referência mencionadas acima.Figure 1 is an illustration showing an example of a reference relationship between each image according to the moving image encoding method and the reference images mentioned above.
[005] Na imagem 11, a codificação por prognóstico intraimagem é executada sem uma imagem de referência e na imagem P10, a codificação por prognóstico interimagem é executada referindo-se a uma imagem precedentes na ordem de exibição, P7. Em uma imagem B6, a codificação por prognóstico interimagem é executada referindo-se a duas imagens precedentes na ordem de exibição, em uma imagem B12, a codificação por prognóstico interimagem é executada referindo-se a duas imagens seguintes na ordem de exibição e em uma imagem B18, a codificação por prognóstico interimagem é executada referindo-se a cada uma dentre as imagens precedentes e seguintes na ordem de exibição.In image 11, intraimage prognostic coding is performed without a reference image and in image P10, interimage prognostic coding is performed by referring to a preceding image in the display order, P7. In an image B6, interimage prognostic coding is performed by referring to two preceding images in the display order, in a B12 image, interimage prognostic coding is performed by referring to two subsequent images in the display order and a In image B18, interimage prognostic coding is performed by referring to each of the preceding and following images in the order of display.
[006] Um modo direto é um dos modos de prognóstico de prognóstico duplo que executa a codificação por prognóstico interimagem referindo-se a cada uma das imagens precedentes e seguintes na ordem de exibição. No modo direto, os vetores de movimento para um bloco a ser codificado não são codificados no fluxo de bits diretamente e dois vetores de movimento para a compensação de movimento real são calculados referindo-se a um vetor de movimento de um bloco do mesmo local em uma imagem codificada próxima à imagem incluindo o bloco a ser codificado na ordem de exibição e um bloco de prognóstico é gerado.[006] A forward mode is one of the dual prognostic prognostic modes that performs interimage prognostic coding by referring to each of the preceding and following images in the order of display. In direct mode, motion vectors for a block to be encoded are not encoded in the bitstream directly, and two motion vectors for actual motion compensation are calculated by referring to a motion vector of a block from the same location at an encoded image next to the image including the block to be encoded in display order and a prognostic block is generated.
[007] A figura 2 apresenta um exemplo em que uma imagem codi- ficada que é referida na ordem para determinar um vetor de movimento no modo direto contém um vetor de movimento que refere-se a uma imagem precedente na ordem de exibição. "P" indicado por uma linha vertical na figura 2 não tem nada a fazer com um tipo de imagem e ele apresenta uma simples imagem. Na figura 2, por exemplo, uma imagem P83, na qual o prognóstico duplo é executado referindo-se às imagens P82 e P84, é uma imagem corrente a ser codificada. Se for assumido que um bloco com a codificação na imagem P83 é um bloco MB81, um vetor de movimento do bloco MB81 é determinado utilizando-se um vetor de movimento de um bloco do mesmo local MB82 na imagem P84 que é uma imagem de referência codificada para trás. Desde que o bloco MB82 contenha somente um vetor de movimento MV81 como um vetor de movimento, dois vetores de movimento MV82 e MV83 a serem obtidos são calculados diretamente pela aplicação de um ajuste de escala junto a um vetor de movimento MV81 e um intervalo de tempo TR81 baseado na Equação 1 (a) e na Equação 1 (b). MV82 = MV81/TR81 x TR82 Equação 1 (a) MV83 = -MV81/TR81 xTR83 Equação 1 (b) [008] Nestas equações, o intervalo de tempo TR81 apresenta um intervalo entre a imagem P84 e a imagem P82, ou seja, um intervalo de tempo entre a imagem P84 e uma imagem de referência indicada pelo vetor de movimento MV81. O intervalo de tempo TR82 apresenta um intervalo de tempo entre a imagem P83 e uma imagem de referência indicada pelo vetor de movimento MV82. O intervalo de tempo TR83 apresenta um intervalo de tempo entre a imagem P83 e uma imagem de referência indicada pelo vetor de movimento MV83.[007] Figure 2 presents an example in which a coded image that is referred to in order to determine a direct mode motion vector contains a motion vector that refers to a preceding image in the display order. "P" indicated by a vertical line in figure 2 has nothing to do with an image type and it presents a simple image. In Figure 2, for example, an image P83, in which dual prediction is performed referring to images P82 and P84, is a current image to be encoded. If it is assumed that a block encoded in image P83 is an MB81 block, a motion vector of block MB81 is determined using a motion vector of a block of the same location MB82 in image P84 which is a coded reference image. back. Since block MB82 contains only one motion vector MV81 as a motion vector, two motion vectors MV82 and MV83 to be obtained are calculated directly by applying a scaling to an MV81 motion vector and a time interval. TR81 based on Equation 1 (a) and Equation 1 (b). MV82 = MV81 / TR81 x TR82 Equation 1 (a) MV83 = -MV81 / TR81 xTR83 Equation 1 (b) [008] In these equations, the time interval TR81 has a range between image P84 and image P82, ie a time interval between image P84 and a reference image indicated by motion vector MV81. Time interval TR82 has a time interval between image P83 and a reference image indicated by motion vector MV82. Time interval TR83 has a time interval between image P83 and a reference image indicated by motion vector MV83.
[009] O modo direto inclui dois métodos, o prognóstico temporal já explicado e o prognóstico espacial e o prognóstico espacial é explicado abaixo. No prognóstico espacial no modo direto, por exemplo, a codificação é executada em um macrobloco baseado em 16 x 16 pixels e um vetor de movimento, o qual é obtido referindo-se a uma imagem mais próxima de uma imagem corrente a ser codificada na ordem de exibição, é selecionada a partir dos vetores de movimento nos três macroblocos nas vizinhanças do macrobloco corrente a ser codificado e o vetor de movimento selecionado é um vetor de movimento para o macrobloco corrente a ser codificado. Se três vetores de movimento referirem-se a uma mesma imagem, um valor médio é selecionado. Se dois dos três vetores de movimento referirem-se a uma imagem mais próxima de uma imagem corrente a ser codificada na ordem de exibição, o restante é considerado como vetor "0" e um valor médio destes valores é selecionado. Se somente 1 vetor de movimento referir-se a uma imagem mais próxima de uma imagem corrente a ser codificada na ordem de exibição, este vetor de movimento é selecionado. Assim, um vetor de movimento não é codificado para um macrobloco corrente a ser codificado no modo direto e um prognóstico de movimento é executado utilizando-se um vetor de movimento contido em outro macrobloco.The direct mode includes two methods, the temporal prognosis already explained and the spatial prognosis and the spatial prognosis is explained below. In direct mode spatial prediction, for example, coding is performed on a 16 x 16 pixel-based macroblock and a motion vector, which is obtained by referring to an image closer to a current image to be encoded in the order display, is selected from the motion vectors in the three macroblocks in the vicinity of the current macroblock to be encoded and the selected motion vector is a motion vector for the current macroblock to be encoded. If three motion vectors refer to the same image, an average value is selected. If two of the three motion vectors refer to an image closer to a current image to be encoded in the display order, the remainder is considered as a "0" vector and an average value of these values is selected. If only 1 motion vector refers to an image closer to a current image to be encoded in the display order, this motion vector is selected. Thus, a motion vector is not coded for a current macroblock to be coded in direct mode and a motion prognosis is performed using a motion vector contained in another macroblock.
[0010] A figura 3A é uma ilustração apresentando um exemplo de método de prognóstico de vetor de movimento no caso em que uma imagem precedente em uma imagem B na ordem de exibição é referida utilizando-se um método de prognóstico espacial convencional no modo direto. Nesta figura 3A, P indica uma imagem P, B indica uma imagem B e os números designados para os tipos de imagem nas quatros imagens direitas indicam uma ordem na qual cada imagem é codificada. Deve ser assumido que um macrobloco diagonalmente sombreado em uma imagem B4 é um macrobloco corrente a ser codificado. Quando um vetor de movimento de um macrobloco corrente a ser codificado é calculado utilizando-se um método de prognóstico espacial no modo direto, primeiro, três macroblocos codificados (a área sombreada com as linhas tracejadas) são selecionados a partir da adja- cência do macrobloco corrente a ser codificado. A explicação de um método para selecionar três macroblocos vizinhos é omitida aqui dentro. Os vetores de movimento nos três macroblocos codificados já foram calculados e armazenados. Existe um caso em que o vetor de movimento é obtido referindo-se a imagens diferentes para cada macrobloco mesmo se os macroblocos estiverem em uma mesma imagem. Os índices de referência nas imagens de referência utilizadas para codificar cada macrobloco podem apresentar qual imagem é referida a partir dos três macroblocos vizinhos respectivamente. Os detalhes dos índices de referência serão explicados posteriormente.Figure 3A is an illustration showing an example of motion vector prediction method in the case where a preceding image in an image B in the display order is referred to using a conventional direct mode spatial prediction method. In this figure 3A, P indicates an image P, B indicates an image B and the numbers assigned to the image types in the four right images indicate an order in which each image is encoded. It should be assumed that a diagonally shaded macroblock in an image B4 is a current macroblock to be encoded. When a motion vector of a current macroblock to be coded is calculated using a direct mode spatial prediction method, first three coded macrobles (the shaded area with dashed lines) are selected from the macroblock adjoining. current to be encoded. The explanation of a method for selecting three neighboring macroblocks is omitted here. Motion vectors in the three coded macroblocks have already been calculated and stored. There is a case where the motion vector is obtained by referring to different images for each macroblock even if the macroblocks are in the same image. The reference indices in the reference images used to encode each macroblock may display which image is referenced from the three neighboring macroblock respectively. The details of the benchmarks will be explained later.
[0011] Agora, por exemplo, é assumido que três macroblocos vizinhos são selecionados para um macrobloco corrente a ser codificado apresentado na figura 3A e os vetores de movimento em cada macrobloco codificado são um vetor de movimento a, b e c respectivamente. Aqui, é assumido que o vetor de movimento e o vetor de movimento b são obtidos referindo-se a uma imagem P com um número de imagem 11 de "11" e o vetor de movimento c é obtido referindo-se a uma imagem P com o número de imagem 11 de "8". Neste caso, entre estes vetores de movimento a, b e c, os vetores de movimento a e b que referem-se a uma imagem mais próxima de uma imagem corrente a ser codificada na ordem ou tempo de exibição, são candidatas para um vetor e movimento de uma macrobloco corrente a ser codificado. Neste caso, o vetor de movimento c é considerado como "0:" e um valor médio destes três vetores de movimento a, b e c é selecionado e determinado como um vetor de movimento do macrobloco corrente a ser codificado.Now, for example, it is assumed that three neighboring macroblocks are selected for a current macroblock to be encoded shown in FIG. 3A and the motion vectors in each encoded macroblock are a motion vector a, b and c respectively. Here it is assumed that motion vector and motion vector b are obtained by referring to an image P with an image number 11 of "11" and motion vector c are obtained by referring to an image P with the image number 11 of "8". In this case, among these motion vectors a, b and c, motion vectors a and b that refer to an image closer to a current image to be encoded in order or display time are candidates for a vector and motion of a macroblock. current to be encoded. In this case, the motion vector c is considered as "0:" and an average value of these three motion vectors a, b and c is selected and determined as a motion vector of the current macroblock to be encoded.
[0012] Entretanto, um método de codificação tal como o MPEG-4 pode executar a codificação para cada macrobloco em uma imagem utilizando uma estrutura de campo e uma estrutura de quadro. Portanto, em um método de codificação tal como o MPEG-4, existe um caso em que um macrobloco codificado na estrutura de campo e um macro-bloco codificado na estrutura de quadro são misturados em um quadro de quadro de referência. Mesmo em tal caso, se três macroblocos nas vizinhanças de um macrobloco corrente a ser codificado forem codificados na mesma estrutura que o macrobloco corrente a ser codificado, é possível derivar um vetor de movimento do macrobloco corrente a ser codificado utilizando o método de prognóstico espacial mencionado acima no modo direto sem quaisquer problemas. Ou seja, um caso em que três macroblocos vizinhos são codificados na estrutura de quadro para um macrobloco corrente a ser codificado na estrutura de quadro, ou em um caso em que três macroblocos vizinhos são codificados na estrutura de campo para um macrobloco corrente a ser codificado na estrutura de campo. O primeiro caso é como já explicado. No último caso, pela utilização de três vetores de movimento correspondendo aos campos de cima de três macroblocos vizinhos para um campo de cima de um macrobloco corrente a ser codificado e pela utilização de três vetores de movimento correspondendo aos campos de baixo de três macroblocos vizinhos para um campo de baixo do macrobloco corrente a ser codificado, um vetor de movimento do macrobloco corrente a ser codificado pode ser derivado para o campo de cima e para o campo de baixo respectivamente utilizando-se o método mencionado acima.However, an encoding method such as MPEG-4 can perform encoding for each macroblock in an image using a field structure and a frame structure. Therefore, in a coding method such as MPEG-4, there is a case where a macroblock encoded in the field frame and a macroblock encoded in the frame structure are mixed into a frame of reference frame. Even in such a case, if three macroblock in the vicinity of a current macroblock to be coded are encoded in the same structure as the current macroblock to be coded, it is possible to derive a motion vector from the current macroblock to be coded using the spatial prediction method mentioned. above in direct mode without any problems. That is, a case where three neighboring macroblocks are encoded in the frame structure for a current macroblock to be encoded in the frame structure, or in a case where three neighboring macroblocks are encoded in the field frame for a current macroblock to be encoded. in the field structure. The first case is as already explained. In the latter case, by using three motion vectors corresponding to the top fields of three neighboring macroblocks for a field above a current macroblock to be encoded and by using three motion vectors corresponding to the bottom fields of three neighboring macroblocks to be encoded. a lower field of the current macroblock to be encoded, a motion vector of the current macroblock to be encoded may be derived for the upper field and the lower field respectively using the method mentioned above.
[0013] Entretanto, no método por prognóstico temporal no modo direto, desde que o bloco mencionado acima contenha vários vetores de movimento para o prognóstico temporal no modo direto quando em um bloco com a codificação por prognóstico intraimagem, a compensação de movimento no modo direto é executada, se um bloco a cujo vetor de movimento refere-se pertence a uma imagem B tal como a B6 apresentada na figura 1, ocorre um problema no qual um cálculo do vetor de movimento por um ajuste de escala baseado na Equação 1 não pode ser aplicado. Adicional mente, existe um caso em que a precisão do valor do vetor de movimento (a precisão de meio pixel e a precisão da quarta parte do pixel, por exemplo) não alcança a precisão predeterminada desde que a operação de divisão é executada após o cálculo do vetor de movimento.However, in the direct mode temporal prognosis method, provided that the block mentioned above contains several motion vectors for the direct mode temporal prognosis when in a block with intra-image prognostic coding, direct mode motion compensation If a block to which the motion vector refers belongs to an image B such as B6 shown in Figure 1, a problem occurs where a motion vector calculation by a scaling based on Equation 1 cannot be applied. Additionally, there is a case where the motion vector value accuracy (half pixel precision and quarter pixel precision, for example) does not reach the predetermined precision since the division operation is performed after the calculation. of motion vector.
[0014] Quando um macrobloco corrente a ser codificado e um dos macroblocos vizinhos são codificados em uma estrutura diferente para o prognóstico espacial, não é especificado qual dentre a estrutura de campo e a estrutura de quadro é utilizada para codificar o macrobloco corrente a ser codificado, e um método para selecionar um vetor de movimento do macrobloco corrente a ser codificado a partir dos vetores de movimento de macroblocos vizinhos codificados tanto na estrutura de campo como na estrutura de quadro não é especificado.When a current macroblock to be encoded and one of the neighboring macroblocks are encoded in a different structure for spatial prediction, it is not specified which of the field structure and frame structure is used to encode the current macroblock to be encoded. , and a method for selecting a motion macroblock motion vector to be encoded from neighboring macroblock motion vectors encoded in both the field structure and the frame structure is not specified.
[0015] O primeiro objetivo da presente invenção é oferecer um método de prognóstico de vetor de movimento em uma direção temporal com alta precisão no modo direto, mesmo se um bloco cujo vetor de movimento é referido pertencer a uma imagem B.[0015] The first object of the present invention is to provide a method of predicting motion vector in a temporal direction with high precision in direct mode, even if a block whose motion vector is referred to belongs to an image B.
[0016] O segundo objetivo da presente invenção é oferecer um método de prognóstico de vetor de movimento na direção espacial com alta precisão no modo direto, mesmo se um bloco cujo vetor de movimento é referido pertencer a uma imagem B.[0016] The second object of the present invention is to provide a high precision spatial direction motion vector prediction method, even if a block whose motion vector is referred to belongs to a B image.
Descricão da Invenção [0017] De modo a alcançar o objetivo acima, um método de cálculo de vetor de movimento de acordo com a presente invenção é um método de cálculo de vetor de movimento para o prognóstico interima-gem com referência a uma pluralidade de imagens. O método de cálculo de vetor de movimento compreende uma etapa de referência para referir-se a uma pluralidade de imagens precedentes na ordem de exibição ou a uma pluralidade de imagens seguintes na ordem de exibição ou a uma pluralidade de imagens tanto precedentes como seguin- tes na ordem de exibição e uma etapa de compensação de movimento, com referência a um vetor de movimento de um bloco do mesmo local em uma imagem diferente de uma imagem para a qual um bloco de prognóstico interimagem pertence quando executa a compensação de movimento do bloco de prognóstico interimagem, para calcular um vetor de movimento do bloco de prognóstico interimagem utilizando pelo menos um vetor de movimento, o qual satisfaz uma condição predeterminada, entre vetores de movimento já calculados para o bloco localizado no mesmo local a cujo vetor de movimento refere-se. Portanto, de acordo com o método de cálculo de vetor de movimento da presente invenção, quando em um bloco com a codificação por prognóstico interimagem, a compensação de movimento é executada referindo-se a um vetor de movimento de um bloco localizado no mesmo local em uma outra imagem codificada e quando um bloco a cujo vetor de movimento e refere-se contém uma pluralidade de vetores de movimento, é possível realizar a compensação de movimento sem contradição pela geração de um vetor de movimento utilizado para ajustar a escala entre a pluralidade de vetores de movimento.In order to achieve the above objective, a motion vector calculation method according to the present invention is a motion vector calculation method for interim prognosis with reference to a plurality of images. . The motion vector calculation method comprises a reference step for referring to a plurality of preceding images in the display order or a plurality of subsequent images in the display order or a plurality of both preceding and following images. in the display order and a motion compensation step, with reference to a motion vector of a block of the same location in an image other than an image to which an interimage prognostic block belongs when it performs motion compensation of the motion block. interimage prognosis, to calculate a motion vector of the interimage prognostic block using at least one motion vector, which satisfies a predetermined condition, between motion vectors already calculated for the block located at the same location to which the motion vector refers . Therefore, according to the motion vector calculation method of the present invention, when in a block with interimage prognostic coding, motion compensation is performed by referring to a motion vector of a block located at the same location in another coded image and when a block to whose motion vector it refers and contains a plurality of motion vectors, motion compensation can be realized without contradiction by generating a motion vector used to scale between the plurality of motion vectors. Motion vectors.
[0018] Para o método de cálculo de vetor de movimento de acordo com a presente invenção, na etapa de referência, cada uma das imagens selecionadas a partir de uma primeira ordem de imagem e de uma segunda ordem de imagem pode ser referida. Aqui, a primeira ordem de imagem é a ordem na qual números de identificação são designados para as imagens em seqüência ascendente dando prioridade para uma imagem precedente na ordem de exibição e a segunda ordem de imagem é a ordem na qual números de identificação são designados para as imagens em seqüência ascendente dando prioridade para uma imagem seguinte na ordem de exibição. Na etapa de compensação de movimento, um vetor de movimento, o qual refere-se a uma imagem na primeira ordem de imagem, do bloco cujo vetor de movimento é referido, pode ser utilizado. Para o método, mesmo se um bloco a cujo vetor de movimento refere-se pertencer à imagem B, o utilizado para a compensação de movimento do bloco com o prognóstico interimagem pode ser determinado como um vetor de movimento referindo-se a uma imagem na primeira ordem de imagem e o método de cálculo de vetor de movimento por ajuste de escala pode ser aplicado.For the motion vector calculation method according to the present invention, in the reference step, each of the images selected from a first image order and a second image order may be referred to. Here, the first image order is the order in which ID numbers are assigned to ascending sequence images giving priority to a preceding image in the display order, and the second image order is the order in which ID numbers are assigned to images in ascending sequence giving priority to a next image in the order of their display. In the motion compensation step, a motion vector, which refers to an image in the first image order of the block whose motion vector is referred to, may be used. For the method, even if a block whose motion vector refers to belongs to image B, the one used for block motion compensation with interimage prognosis can be determined as a motion vector by referring to an image in the first image. image order and scaling motion vector calculation method can be applied.
[0019] Além disso, outro método de cálculo de vetor de movimento de acordo com a presente invenção inclui uma etapa de designação, uma primeira etapa de seleção e uma etapa de derivação. A etapa de designação é para designar um dentre um primeiro índice de referência ou um segundo índice de referência para a imagem codificada. Aqui, o primeiro índice de referência e o segundo índice de referência são utilizados para selecionar pelo menos uma dentre uma primeira imagem de referência ou uma segunda imagem de referência que são referidas quando se obtêm um bloco em uma imagem corrente a ser codificada por compensação de movimento a partir de uma pluralidade de imagens codificadas armazenadas em uma unidade de armazenamento. A primeira etapa de seleção é para selecionar um vetor de movimento indicando um valor médio dos vetores de movimento, quando se executa a compensação de movimento de um bloco na imagem corrente a ser codificada, existe uma pluralidade de vetores de movimento contendo os primeiros índices de referência entre os vetores de movimento do bloco na vizinhança da imagem corrente a ser codificada. A etapa de derivação é para derivar um vetor de movimento referindo-se a uma imagem precedente à imagem corrente a ser codificada na ordem de exibição ou uma imagem seguinte à imagem corrente a ser codificada na ordem de exibição ou imagens precedentes e seguintes à imagem corrente a ser codificada na ordem de exibição utilizando o vetor de movimento selecionado na primeira etapa de seleção. Portanto, quan- do a compensação de movimento é executada para um bloco na imagem corrente a ser codificada e quando existe uma pluralidade de vetores de movimento contendo o primeiro índice de referência entre os vetores dos blocos nas vizinhanças do bloco na imagem corrente a ser codificada, o vetor de movimento da imagem corrente a ser codificada pode ser derivado utilizando um vetor de movimento indicando um valor médio dos vetores de movimento.In addition, another method of motion vector calculation according to the present invention includes a designation step, a first selection step and a derivation step. The designation step is to designate one of a first reference index or a second reference index for the encoded image. Here, the first reference index and the second reference index are used to select at least one of a first reference image or a second reference image that is referred to when obtaining a block in a current image to be encoded by offset. movement from a plurality of encoded images stored in a storage unit. The first selection step is to select a motion vector indicating an average value of motion vectors, when performing motion compensation of a block in the current image to be encoded, there is a plurality of motion vectors containing the first indexes of motion. reference between the block motion vectors in the vicinity of the current image to be encoded. The derivation step is to derive a motion vector by referring to an image preceding the current image to be encoded in the order of display or an image following the current image to be encoded in the order of display or images preceding and following the current image to be encoded in the display order using the motion vector selected in the first selection step. Therefore, when motion compensation is performed for a block in the current image to be encoded and when there is a plurality of motion vectors containing the first reference index between block vectors in the vicinity of the block in the current image to be encoded , the motion vector of the current image to be encoded may be derived using a motion vector indicating an average value of motion vectors.
[0020] Para o método de cálculo de vetor de movimento de acordo com a presente invenção, um vetor de movimento indicando um valor médio dos menores primeiros índices de referência pode ser adicionalmente selecionado a partir dos vetores de movimento contendo os primeiros índices de referência na primeira etapa de seleção.For the motion vector calculation method according to the present invention, a motion vector indicating an average value of the lowest first reference indices can be additionally selected from the motion vectors containing the first reference indices in the first selection step.
[0021] Informação adicional a cerca do Fundamento Técnico para este Pedido: [0022] Pedido de Patente Japonês N- 2002 - 118598 depositado em 19 de abril de 2002;Additional information about the Technical Basis for this Application: Japanese Patent Application No. 2002-118598 filed April 19, 2002;
[0023] Pedido de Patente Japonês N- 2002 - 121053 depositado em 23 de abril de 2002;Japanese Patent Application No. 2002-121053 filed April 23, 2002;
[0024] Pedido de Patente Japonês N- 2002 - 156266 depositado em 29 de maio de 2002;Japanese Patent Application No. 2002 - 156266 filed May 29, 2002;
[0025] Pedido de Patente Japonês N- 2002 - 177889 depositado em 19 de junho de 2002;Japanese Patent Application No. 2002 - 177889 filed June 19, 2002;
[0026] Pedido de Patente Japonês N- 2002 - 193027 depositado em 2 de julho de 2002;Japanese Patent Application No. 2002 - 193027 filed July 2, 2002;
[0027] Pedido de Patente Japonês N- 2002 - 204713 depositado em 12 de julho de 2002;Japanese Patent Application No. 2002-204713 filed July 12, 2002;
[0028] Pedido de Patente Japonês N- 2002 - 262151 depositado em 6 de setembro de 2002;Japanese Patent Application No. 2002 - 262151 filed September 6, 2002;
[0029] Pedido de Patente Japonês N- 2002 - 290542 depositado em 2 de outubro de 2002;Japanese Patent Application No. 2002 - 290542 filed October 2, 2002;
[0030] Pedido de Patente Japonês Ns 2002 - 323096 depositado em 6 de novembro de 2002;Japanese Patent Application No. 2002 - 323096 filed November 6, 2002;
[0031] Pedido de Patente Japonês N2 60/378643 depositado em 9 de maio de 2002;Japanese Patent Application No. 60/378643 filed May 9, 2002;
[0032] Pedido de Patente Japonês N- 60/378954 depositado em 10 de maio de 2002;Japanese Patent Application No. 60/378954 filed May 10, 2002;
[0033] são incorporados aqui dentro por referência.Are incorporated herein by reference.
Breve Descrição dos Desenhos [0034] A figura 1 é um diagrama esquemático apresentando uma relação de referência das imagens de um exemplo convencional.Brief Description of the Drawings Figure 1 is a schematic diagram showing a reference relationship of the images of a conventional example.
[0035] A figura 2 é um diagrama esquemático apresentando uma operação em um modo direto convencional.[0035] Figure 2 is a schematic diagram showing an operation in a conventional direct mode.
[0036] A figura 3A é uma ilustração apresentando um exemplo de um método de prognóstico de vetor de movimento quando uma imagem de forma temporal precedente é referida em uma imagem B utilizando um método de prognóstico espacial de um modo direto convencional, [0037] A figura 3B é uma ilustração apresentando um exemplo de uma lista de referência gerada em cada imagem corrente a ser codificada.Figure 3A is an illustration showing an example of a motion vector prediction method when a preceding temporal shape image is referred to in an image B using a conventionally straightforward spatial prediction method, [0037] A Figure 3B is an illustration showing an example of a reference list generated in each current image to be encoded.
[0038] A figura 4 é uma ilustração explicativa de números de imagem e de índices de referência.Figure 4 is an explanatory illustration of image numbers and reference indices.
[0039] A figura 5 é uma ilustração apresentando um conceito de um formato de sinal de codificação de imagem de um aparelho de codificação de imagem convencional, [0040] A figura 6 é um diagrama de bloco apresentando uma operação para codificar de acordo com a primeira e com a segunda modalidades desta invenção, [0041] A figura 7 é um diagrama esquemático apresentando uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo precedente na ordem de exibição.Figure 5 is an illustration showing a concept of an image coding signal format of a conventional image coding apparatus. Figure 6 is a block diagram showing an operation for coding according to first and second embodiments of this invention, Figure 7 is a schematic diagram showing an operation when a block to which motion vector refers in direct mode contains two motion vectors which refer to the preceding time in the order display
[0042] A figura 8 é um diagrama esquemático comparando uma relação de referência de imagens na ordem de exibição e na ordem de codificação.[0042] Figure 8 is a schematic diagram comparing a reference frame of images in display order and coding order.
[0043] A figura 9 é um diagrama esquemático apresentando uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.[0043] Figure 9 is a schematic diagram showing an operation when a block to whose motion vector refers in direct mode contains two motion vectors that refer to the next time in the display order.
[0044] A figura 10 é um diagrama esquemático comparando uma relação de referência de imagens na ordem de exibição e na ordem de codificação.[0044] Figure 10 is a schematic diagram comparing an image reference ratio in display order and coding order.
[0045] A figura 11 é um diagrama de blocos apresentando uma operação para decodificar de acordo com a quinta e sexta modalidades da presente invenção.Fig. 11 is a block diagram showing an operation to decode according to the fifth and sixth embodiments of the present invention.
[0046] A figura 12 é um diagrama esquemático apresentando uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo precedente na ordem de exibição.[0046] Figure 12 is a schematic diagram showing an operation when a block to which motion vector refers in direct mode contains two motion vectors that refer to the preceding time in the display order.
[0047] A figura 13 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.Figure 13 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors which refer to the next time in the display order.
[0048] A figura 14 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.[0048] Figure 14 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors which refer to the next time in the display order.
[0049] A figura 15 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo precedente na ordem de exibição.Fig. 15 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors that refer to the preceding time in the display order.
[0050] A figura 16 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo precedente na ordem de exibição.Fig. 16 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors that refer to the preceding time in the display order.
[0051] A figura 17 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo precedente na ordem de exibição.Figure 17 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors that refer to the preceding time in the display order.
[0052] A figura 18 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo precedente na ordem de exibição.Figure 18 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors that refer to the preceding time in the display order.
[0053] A figura 19 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.Fig. 19 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors which refer to the next time in the order of display.
[0054] A figura 20 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.[0054] Figure 20 is a schematic diagram for presenting an operation when a block to whose motion vector refers in direct mode contains two motion vectors that refer to the next time in the display order.
[0055] A figura 21 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.Fig. 21 is a schematic diagram for presenting an operation when a block to which motion vector refers in direct mode contains two motion vectors which refer to the next time in the order of display.
[0056] A figura 22 é um diagrama esquemático para apresentar uma operação quando um bloco a cujo vetor de movimento refere-se no modo direto contém dois vetores de movimento que referem-se ao tempo seguinte na ordem de exibição.Fig. 22 is a schematic diagram for presenting an operation when a block to which motion vector refers in direct mode contains two motion vectors which refer to the next time in the display order.
[0057] A figura 23 é um diagrama esquemático para apresentar uma operação quando um vetor de movimento de um bloco vizinho é referido no modo direto.Fig. 23 is a schematic diagram for presenting an operation when a motion vector of a neighboring block is referred to in direct mode.
[0058] A figura 24 é uma ilustração apresentando um fluxo de bits.Fig. 24 is an illustration showing a bit stream.
[0059] A figura 25 é uma ilustração apresentando uma relação entre um bloco corrente a ser codificado e um bloco na vizinhança do bloco corrente a ser codificado.Fig. 25 is an illustration showing a relationship between a current block to be encoded and a block in the vicinity of the current block to be encoded.
[0060] A figura 26 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 26 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0061] A figura 27 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 27 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0062] A figura 28 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 28 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0063] A figura 29 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 29 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0064] A figura 30 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 30 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0065] A figura 31 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 31 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0066] A figura 32 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 32 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0067] A figura 33 é uma ilustração apresentando um vetor de movimento contido em um bloco na vizinhança de um bloco corrente a ser codificado.Fig. 33 is an illustration showing a motion vector contained in a block in the vicinity of a current block to be encoded.
[0068] A figura 34 é uma ilustração apresentando um procedimento para determinar um vetor de movimento a ser utilizado no modo direto.[0068] Figure 34 is an illustration showing a procedure for determining a motion vector to be used in direct mode.
[0069] A figura 35 é uma ilustração apresentando uma relação entre um bloco corrente a ser codificado e um bloco na vizinhança do bloco corrente a ser codificado.Fig. 35 is an illustration showing a relationship between a current block to be encoded and a block in the vicinity of the current block to be encoded.
[0070] A figura 36 é uma ilustração apresentando um procedimento para determinar um vetor de movimento de um bloco corrente a ser codificado utilizando um valor de um índice de referência.Fig. 36 is an illustration showing a procedure for determining a motion vector of a current block to be encoded using a value of a reference index.
[0071] A figura 37 é uma ilustração apresentando o prognóstico duplo no modo direto quando um vetor de movimento referindo-se a uma imagem armazenada em uma memória intermediária de longo prazo é somente um.Figure 37 is an illustration showing the double prognosis in direct mode when a motion vector referring to an image stored in a long term buffer is only one.
[0072] A figura 38 é uma ilustração apresentando o prognóstico duplo no modo direto quando vetores de movimento referindo-se a uma imagem armazenada na memória intermediária de longo prazo são dois.Fig. 38 is an illustration showing the double prognosis in direct mode when motion vectors referring to an image stored in long term buffer are two.
[0073] A figura 39 é uma ilustração apresentando um fluxo de processo de um método de cálculo de vetor de movimento.Fig. 39 is an illustration showing a process flow of a motion vector calculation method.
[0074] A figura 40 é um diagrama de blocos apresentando uma configuração de um aparelho de codificação de imagem em movimento 100 de acordo com a décima primeira modalidade da presente invenção.Fig. 40 is a block diagram showing a configuration of a moving image coding apparatus 100 according to the eleventh embodiment of the present invention.
[0075] A figura 41A é uma ilustração apresentando uma ordem de quadros informada para o aparelho de codificação de imagem em movimento 100 na ordem de tempo baseado em imagem a imagem.Fig. 41A is an illustration showing an informed frame order for the moving image coding apparatus 100 in the image-by-image time order.
[0076] A figura 41B é uma ilustração apresentando o caso em que a ordem de quadros apresentada na figura 41A é reordenada na ordem de codificação.Fig. 41B is an illustration showing the case where the frame order shown in Fig. 41A is reordered in the coding order.
[0077] A figura 42 é uma ilustração apresentando uma estrutura de uma lista de imagens de referência para explicar a primeira modalida- de.Fig. 42 is an illustration showing a structure of a list of reference images for explaining the first mode.
[0078] A figura 43A é um fluxograma apresentando um exemplo de um procedimento de cálculo de vetor de movimento utilizando um método de prognóstico espacial no modo direto quando um par de macro-blocos a ser codificado em uma estrutura de campo e um par de ma-croblocos a ser codificado em uma estrutura de quadro são misturados.Fig. 43A is a flowchart showing an example of a motion vector calculation procedure using a direct mode spatial prediction method when a pair of macroblock to be encoded in a field structure and a pair of ma -blocks to be encoded in a frame structure are mixed.
[0079] A figura 43B é uma ilustração apresentando um exemplo de uma localização de pares de macroblocos vizinhos junto aos quais a presente invenção é aplicada quando um par de macroblocos corrente a ser codificado é codificado em uma estrutura de quadro.Fig. 43B is an illustration showing an example of a location of neighboring macroblock pairs to which the present invention is applied when a current macroblock pair to be encoded is encoded in a frame structure.
[0080] A figura 43C é uma ilustração apresentando um exemplo de localização de pares de macroblocos vizinhos para os quais a presente invenção é aplicada quando um par de macroblocos corrente a ser codificado é codificado em uma estrutura de campo.Fig. 43C is an illustration showing an example of locating neighboring macroblock pairs to which the present invention is applied when a current macroblock pair to be encoded is encoded in a field structure.
[0081] A figura 44 é uma ilustração apresentando uma configuração de dados de um par de macroblocos quando a codificação é executada em uma estrutura de quadro e uma configuração de dados de um par de macroblocos quando a codificação é executada em uma estrutura de campo.Fig. 44 is an illustration showing a data configuration of a macroblock pair when encoding is performed in a frame structure and a data configuration of a macroblock pair when encoding is performed in a field structure.
[0082] A figura 45 é um fluxograma apresentando um procedimento de processamento detalhado em uma etapa S302 apresentada na figura 43.Fig. 45 is a flowchart showing a detailed processing procedure in step S302 shown in Fig. 43.
[0083] A figura 46 é um gráfico indicador apresentando uma relação entre os índices de campo de referência e os índices de quadro de referência.[0083] Fig. 46 is an indicator graph showing a relationship between reference field indices and frame reference indices.
[0084] A figura 47 é um fluxograma apresentando um procedimento de processamento detalhado em uma etapa S303 apresentada na figura 43.Fig. 47 is a flowchart showing a detailed processing procedure in step S303 shown in Fig. 43.
[0085] A figura 48 é uma ilustração apresentando uma relação de posição entre um par de macroblocos corrente a ser codificado e pares de macroblocos vizinhos em ordem para explicar a primeira modalidade.Fig. 48 is an illustration showing a position relationship between a current macroblock pair to be encoded and neighboring macroblock pairs in order to explain the first embodiment.
[0086] A figura 49 é uma ilustração apresentando uma relação de posição entre um par de macroblocos corrente a ser codificado e pares de macroblocos vizinhos em ordem para explicar a primeira modalidade.Fig. 49 is an illustration showing a position relationship between a current macroblock pair to be encoded and neighboring macroblock pairs in order to explain the first embodiment.
[0087] A figura 50 é uma ilustração apresentando um exemplo de uma configuração de dados de um fluxo de bits 700 gerado por uma unidade de geração de fluxo de bits 104.Fig. 50 is an illustration showing an example of a bit stream data configuration 700 generated by a bit stream generating unit 104.
[0088] A figura 51 é um diagrama de bloco apresentando uma configuração de um aparelho de decodificação de imagem em movimento 800 que decodifica o fluxo de bits 700 apresentado na figura 50.Fig. 51 is a block diagram showing a configuration of a moving picture decoding apparatus 800 which decodes the bit stream 700 shown in Fig. 50.
[0089] A figura 52A é uma ilustração apresentando um exemplo de um formato físico de um disco flexível que é um corpo de um meio de armazenamento.Fig. 52A is an illustration showing an example of a physical format of a floppy disk that is a body of a storage medium.
[0090] A figura 52B é uma ilustração apresentando uma vista externa do disco flexível visto a partir da frente, uma configuração da seção e o disco flexível.Fig. 52B is an illustration showing an external view of the floppy disk viewed from the front, a section configuration and the floppy disk.
[0091] A figura 52C é uma ilustração apresentando uma configuração para gravar e ler o programa mencionado acima em um disco flexível, FD.[0091] Fig. 52C is an illustration showing a configuration for writing and reading the above mentioned program on a floppy disk, FD.
[0092] A figura 53 é um diagrama de bloco apresentando toda a configuração do sistema de suprimento de conteúdo implementando um serviço de distribuição de conteúdo.Fig. 53 is a block diagram showing the entire configuration of the content delivery system implementing a content delivery service.
[0093] A figura 54 é uma ilustração apresentando um exemplo de uma aparência de um telefone celular.[0093] Fig. 54 is an illustration showing an example of a cell phone appearance.
[0094] A figura 55 é um diagrama de bloco apresentando uma configuração do telefone celular.Fig. 55 is a block diagram showing a cell phone configuration.
[0095] A figura 56 é uma ilustração para apresentar um dispositivo executando o processo de codificação ou de decodificação apresentado nas modalidades acima e um sistema utilizando o dispositivo.Fig. 56 is an illustration for presenting a device performing the encoding or decoding process set forth in the above embodiments and a system utilizing the device.
Melhor Modo para Realizar a Invenção [0096] A presente invenção é para resolver os problemas da tecnologia convencional e tem como objetivo propor um método de codificação e um método de decodificação de imagem em movimento que possa determinar um vetor de movimento utilizado para compensação de movimento sem contradição, mesmo se um bloco cujo vetor de movimento é referido em um modo direto for uma imagem B. Primeiro, os índices de referência serão explicados aqui dentro.Best Mode for Carrying Out the Invention The present invention is for solving the problems of conventional technology and aims to propose a coding method and a moving image decoding method that can determine a motion vector used for motion compensation. without contradiction, even if a block whose motion vector is referenced in a direct mode is an image B. First, the reference indices will be explained here.
[0097] A figura 3B é uma ilustração apresentando um exemplo de uma lista de imagens de referência 10 gerada para cada imagem corrente a ser codificada. Na lista de imagens de referência 10 apresentada na figura 3B, as imagens são apresentadas precedendo e seguindo uma imagem B na ordem de exibição com uma imagem B no centro e imagens par a qual a imagem B possa referir-se, tipos de imagem, um número de imagem 11, o primeiro índice de referência 12 e o segundo índice de referência 13 são apresentados. O número de imagem 11 é, por exemplo, um número apresentando uma ordem na qual cada imagem é codificada. O primeiro índice de referência 12 é o primeiro índice apresentando uma relação de posição relativa entre uma imagem corrente a ser codificada e imagens vizinhas e, por exemplo, é utilizado principal mente como um índice quando uma imagem corrente a ser codificada refere-se a uma imagem precedente na ordem de exibição. Uma lista de primeiros índices de referência 12 é chamada de "lista 0 de índices de referência (lista 0)"ou "primeira lista de índices de referência". Além disso, o índice de referência é chamado de índice relativo. Primeiro, na lista de imagens de referência 10 apresentada na figura 3B, o número inteiro que é avançado por "1" é designado para um valor do primeiro índice de referência 12 de "0" a partir da mais próxí- ma até uma imagem corrente a ser codificada em uma seqüência de tempo para uma imagem de referência precedendo uma imagem corrente a ser codificada na ordem de exibição. A seguir, após um valor avançado por "1" a partir de "0" ser designado para todas as imagens de referência seguindo uma imagem corrente a ser codificada na ordem de exibição, os valores seguintes são designados para as imagens de referência seguindo a imagem corrente a ser codificada na ordem de exibição a partir da mais próxima até a imagem corrente a ser codificada na ordem de exibição.Figure 3B is an illustration showing an example of a reference image list 10 generated for each current image to be encoded. In the reference image list 10 shown in Figure 3B, the images are presented preceding and following an image B in the display order with an image B in the center and images to which image B may refer, image types, a 11, the first benchmark 12 and the second benchmark 13 are displayed. Image number 11 is, for example, a number having an order in which each image is encoded. The first reference index 12 is the first index having a relative position relationship between a current image to be encoded and neighboring images and, for example, is used primarily as an index when a current image to be encoded refers to a preceding image in the display order. A list of first benchmarks 12 is called a "benchmark list 0 (list 0)" or "first benchmark list". Also, the reference index is called the relative index. First, in the reference image list 10 shown in Figure 3B, the integer that is advanced by "1" is assigned a value from the first reference index 12 of "0" from the nearest to a current image. to be encoded in a time sequence to a reference image preceding a current image to be encoded in the order of display. Then, after a value advanced by "1" from "0" is assigned to all reference images following a current image to be encoded in the display order, the following values are assigned to reference images following the image. current to be encoded in display order from closest to the current image to be encoded in display order.
[0098] O segundo índice de referência 13 é o segundo índice apresentando uma relação de posição relativa entre uma imagem corrente a ser codificada e imagens vizinhas e, por exemplo, é utilizado principalmente como um índice quando uma imagem corrente a ser codificada refere-se a uma imagem seguinte na ordem de exibição. Uma lista de segundos índices de referência 13 é chamada de "lista 1 de índices de referência (lista 1)" ou "segunda lista de índices de referência". Primeiro, o número inteiro que é avançado por "1" é designado para um valor do segundo índice de referência 13 que é de "0" a partir da mais próxima até uma imagem corrente a ser codificada na ordem de exibição. A seguir, após um valor avançado de "1" a partir de "0" ser designado para todas as imagens de referência seguindo uma imagem corrente a ser codificada na ordem de exibição, os valores seguintes são designados para as imagens de referência precedendo uma imagem corrente a ser codificada na ordem de exibição a partir do valor mais próximo até uma imagem corrente a ser codificada na ordem de exibição. Portanto, é visto na lista de imagens de referência 10 que como para o primeiro índice de referência 12 e para o segundo índice de referência, uma imagem de referência com o valor de índice de referência menor está mais próxima da imagem corrente a ser codificada na ordem de exibição. Um método para designar um número de índice de referência no estado inicial é explicado acima, entretanto, o método para designar um número de índice de referência pode ser alterado com base em imagem a imagem ou em uma base de fatia por fatia. No método para designar um número de índice de referência, por exemplo, um número pequeno pode ser designado para uma imagem distante na ordem de exibição, entretanto, tal índice de referência é utilizado, por exemplo, quando a eficiência da codificação é aperfeiçoada ao referir-se à imagem distante na ordem de exibição. Em outras palavras, desde que os índices de referência em um bloco são apresentados por palavras de código com comprimento variável e dados com comprimentos menores são designados para os índices de valores menores, por designar o índice de referência menor para a imagem de referência que aperfeiçoa a eficiência da codificação, se ela for referida, a quantidade de códigos nos índices de referência é reduzida e a eficiência da codificação adicional é aperfeiçoada.The second reference index 13 is the second index having a relative position relationship between a current image to be encoded and neighboring images and, for example, is used primarily as an index when a current image to be encoded refers to to a following image in the display order. A list of second benchmarks 13 is called a "benchmark list 1 (list 1)" or "second benchmark list". First, the integer that is advanced by "1" is assigned a value from the second reference index 13 that is "0" from the nearest to a current image to be encoded in the display order. Then, after an advanced value of "1" from "0" is assigned to all reference images following a current image to be encoded in the display order, the following values are assigned to reference images preceding an image. current to be encoded in the display order from the nearest value to a current image to be encoded in the display order. Therefore, it is seen in the reference image list 10 that as for the first reference index 12 and the second reference index, a reference image with the smaller reference index value is closest to the current image to be encoded in the reference image. Display order. A method for assigning a reference index number in the initial state is explained above, however, the method for assigning a reference index number can be changed on an image by image basis or on a slice by slice basis. In the method for assigning a reference index number, for example, a small number may be assigned to a distant image in the display order, however, such a reference index is used, for example, when coding efficiency is improved by referencing. to the distant image in the display order. In other words, since the reference indices in a block are presented by variable-length codewords and shorter length data are assigned to the smaller value indices by designating the smaller reference index for the refining reference image. coding efficiency, if it is referred to, the number of codes in the reference indices is reduced and the additional coding efficiency is improved.
[0099] A figura 4 é uma ilustração explicativa para números de imagem e índices de referência. A figura 4 apresenta um exemplo da lista de imagens de referência e apresenta uma imagem de referência, um número de imagem e um índice de referência utilizados quando co-dificando-se a imagem B no centro (indicada por uma linha tracejada). A figura 4A apresenta o caso designando índices de referência pelo método para designar índices de referência no estado inicial explicado utilizando a figura 3.[0099] Figure 4 is an explanatory illustration for image numbers and reference indices. Figure 4 shows an example of the reference image list and shows a reference image, an image number and a reference index used when coding image B in the center (indicated by a dashed line). Figure 4A presents the case designating benchmarks by the method for assigning benchmarks in the initial state explained using figure 3.
[00100] A figura 5 é um diagrama conceituai de um formato de sinal de codificação de imagem de um aparelho de codificação de imagem convencional. Imagem indica um sinal de codificação para uma imagem, Cabeçalho indica um sinal de codificação de cabeçalho incluído no cabeçalho de uma imagem, Blocol indica um sinal de codificação em um bloco codificado em um modo direto, Bloco2 indica um sinal de codificação em um bloco codificado por um prognóstico por interpola- ção diferente do modo direto, RidxO e Ridxl são o primeiro índice de referência e o segundo índice de referência respectivamente e MVO e MV1 são o primeiro vetor de movimento e o segundo vetor de movimento respectivamente. O bloco codificado Bloco2 possui dois índices de referência RidxO e Ridxl em um sinal de codificação nesta ordem para indicar duas imagens de referência a serem utilizadas para a compensação de movimento. Além disso, o primeiro vetor de movimento MV1 e o segundo vetor de movimento MV2 são codificados no sinal de codificação do bloco codificado Bloco2 nesta ordem. Pode ser julgado por "PredType" qual dos índices de referência RidxO e/ou Ridxl é utilizado. Uma imagem (a primeira imagem de referência) referida pelo primeiro vetor de movimento MVO é indicada pelo primeiro índice de referência RidxO e uma imagem (a segunda imagem de referência) referida pelo segundo vetor de movimento MV1 é indicada pelo segundo índice de referência Ridxl. Por exemplo, quando é indicado que as imagens são referidas de forma bidirecional pelos vetores de movimento MVO e MV1, RidxO e Ridxl são utilizados, quando é indicado que as imagens são referidas de forma unidirecional por um dos vetores de movimento MVO ou MV1, um dentre RidxO ou Ridxl correspondendo ao vetor de movimento é utilizado e quando o modo direto é indicado, nem RidxO nem Ridxl é utilizado.Figure 5 is a conceptual diagram of an image coding signal format of a conventional image coding apparatus. Image indicates a coding signal for an image, Header indicates a header coding signal included in the header of an image, Blocol indicates a coding signal in a direct mode coded block, Block2 indicates a coding signal in a coded block. By a non-direct interpolation prognosis, RidxO and Ridxl are the first reference index and the second reference index respectively, and MVO and MV1 are the first motion vector and the second motion vector respectively. Block coded Block 2 has two reference indices RidxO and Ridxl in a coding signal in this order to indicate two reference images to be used for motion compensation. In addition, the first motion vector MV1 and the second motion vector MV2 are encoded in the coding signal of coded block Block2 in this order. It can be judged by "PredType" which of the RidxO and / or Ridxl benchmarks is used. An image (the first reference image) referred to by the first MVO motion vector is indicated by the first reference index RidxO and an image (the second reference image) referred to by the second motion vector MV1 is indicated by the second reference index Ridx1. For example, when it is indicated that images are referred to bidirectionally by the motion vectors MVO and MV1, RidxO and Ridxl are used, when it is indicated that images are referred to unidirectionally by one of the motion vectors MVO or MV1, a RidxO or Ridxl corresponding to the motion vector is used and when direct mode is indicated, neither RidxO nor Ridxl is used.
[00101] A primeira imagem de referência é especificada pelo primeiro índice de referência e geralmente tem o tempo de exibição precedendo uma imagem corrente a ser codificada e a segunda imagem de referência é especificada pelo segundo índice de referência e geralmente tem o tempo de exibição seguindo à imagem corrente a ser codificada. Entretanto, como o método para designar índices de referência na figura 4 apresenta, existe um caso em que a primeira imagem de referência contém o tempo de exibição seguindo à imagem corrente a ser codificada e as segunda imagem de referência contém o tempo de exibição precedendo à imagem corrente a ser codificada. O primeiro índice de referência RidxO é um índice de referência indicando a primeira imagem de referência referida pelo primeiro vetor de movimento MVO do bloco Bloco2 e o segundo índice de referência Ridxl é um índice de referência indicando a segunda imagem de referência referida pelo segundo vetor de movimento MV1 do bloco Bloco2.[00101] The first reference image is specified by the first reference index and generally has the display time preceding a current image to be encoded and the second reference image is specified by the second reference index and usually has the following display time. the current image to be encoded. However, as the method for designating reference indices in Figure 4 presents, there is a case where the first reference image contains the display time following the current image to be encoded and the second reference image contains the display time preceding the current image to be encoded. The first reference index RidxO is a reference index indicating the first reference image referred to by the first MVO motion vector of Block 2 and the second reference index Ridx1 is a reference index indicating the second reference image referred to by the second reference vector. movement MV1 of block Block2.
[00102] Por outro lado, uma designação de imagens de referência para índices de referência pode ser alterada arbitrariamente ao indicar explicitamente, utilizando um sinal de controle de memória em um sinal codificado (RPSL no Cabeçalho na figura 5). Isto torna possível alterar a imagem de referência com o segundo índice de referência "0" para uma imagem de referência arbitrária. Por exemplo, como apresentado na figura 4B, a designação de índices de referência para números de imagem pode ser alterada.On the other hand, a reference image designation for reference indices can be arbitrarily altered by explicitly indicating using a memory control signal in an encoded signal (RPSL in the Header in Figure 5). This makes it possible to change the reference image with the second reference index "0" to an arbitrary reference image. For example, as shown in Figure 4B, the designation of reference indices for image numbers may be changed.
[00103] Assim, desde que a designação de imagem de referência para os índices de referência pode ser alterada arbitrariamente e a alteração da designação de imagens de referência para índices de referência geralmente designa um índice de referência menor para uma imagem o que aperfeiçoa a eficiência da codificação se selecionada como uma imagem de referência, a eficiência da codificação pode ser aperfeiçoada pela utilização de um vetor de movimento, o qual refere-se a uma imagem cujo índice de referência é o menor, como um vetor de movimento utilizado no modo direto. (Primeira Modalidade) [00104] Um método de codificação de imagem em movimento de acordo com a primeira modalidade da presente invenção é explicado utilizando o diagrama de blocos na figura 6.Thus, since the reference image designation for reference indices can be changed arbitrarily and changing the designation of reference images for reference indices generally designates a lower reference index for an image which improves efficiency. If encoding is selected as a reference image, encoding efficiency can be enhanced by using a motion vector, which refers to an image whose reference index is the smallest, such as a motion vector used in direct mode. . (First Modality) A motion picture coding method according to the first embodiment of the present invention is explained using the block diagram in Figure 6.
[00105] Uma imagem em movimento corrente a ser codificada é informada em uma memória de quadros 101 em uma ordem de exibição baseada em imagem a imagem e reordenada em uma ordem de codi- ficação. Cada imagem é dividida em um grupo chamado de um bloco, o qual é 16 (horizontal) x 16 (vertical) pixels em tamanho, por exemplo e os processos seguintes são executados em uma base de bloco a bloco.[00105] A current moving image to be encoded is entered into a frame memory 101 in an image-by-image display order and reordered in an encoding order. Each image is divided into a group called a block, which is 16 (horizontal) x 16 (vertical) pixels in size, for example and the following processes are performed on a block by block basis.
[00106] Um bloco lido a partir da memória de quadros 101 é informado para uma unidade de detecção de vetor de movimento 106. Aqui, um vetor de movimento de um bloco corrente a ser codificado é detectado utilizando-se uma imagem decodificada de uma imagem codificada armazenada na memória de quadros 105 como uma imagem de referência. Neste caso, em uma unidade de seleção de modo 107, um modo de prognóstico ótimo é determinado com referência a um vetor de movimento obtido na unidade de detecção de vetor de movimento 106 e um vetor de movimento utilizado em uma imagem codificada armazenada em uma unidade de armazenamento de vetor de movimento 108. Um modo de prognóstico obtido na unidade de seleção de modo 107 e um vetor de movimento utilizado no modo obtido são informados para uma unidade de cálculo de diferença 109 e uma imagem residual por prognóstico é gerada pelo cálculo de uma diferença de um bloco corrente a ser codificado e a codificação é executada em uma unidade de codificação residual por prognóstico 102. Além disso, o vetor de movimento utilizado no modo obtido na unidade de seleção de modo 107 é armazenado em uma unidade de armazenamento de vetor de movimento 108 de modo a ser utilizado para codificação pelos blocos e imagens seguintes. Um fluxo de processamento acima é uma operação quando uma codificação por prognóstico interimagem é selecionada, entretanto, uma chave 111 troca para uma codificação por prognóstico intraimagem. Eventualmente, a codificação de comprimento variável é executada para a informação de controle, tal como um vetor de movimento e para a informação de imagem, tal como a informação de imagem emitida a partir da unidade de codificação residual por prognóstico 102 e um fluxo de bits emitido eventualmente é gerado por uma unidade de geração de fluxo de bits 103.A block read from frame memory 101 is reported to a motion vector detection unit 106. Here, a motion vector of a current block to be encoded is detected using a decoded image of an image. coded memory stored in frame memory 105 as a reference image. In this case, in a mode selection unit 107, an optimal prognostic mode is determined with reference to a motion vector obtained from motion vector detection unit 106 and a motion vector used in an encoded image stored in a unit. vector storage mode 108. A prediction mode obtained in mode selection unit 107 and a motion vector used in the obtained mode are reported to a difference calculation unit 109 and a prognostic residual image is generated by the computation of a difference of a current block to be coded and coding is performed on a predictive residual coding unit 102. In addition, the motion vector used in the mode obtained in mode selection unit 107 is stored in a data storage unit. motion vector 108 to be used for encoding by the following blocks and images. An above processing stream is an operation when an interimage prognostic coding is selected, however, a key 111 switches to an intraimage prognostic coding. Eventually, variable length coding is performed for control information such as a motion vector and image information such as image information output from the predictive residual coding unit 102 and a bit stream. eventually issued is generated by a bitstream generation unit 103.
[00107] Um sumário do fluxo de codificação é explicado acima, entretanto, os detalhes do processo na unidade de detecção de vetor de movimento 106 e na unidade de seleção de modo 107 são explicados abaixo.[00107] A summary of the coding flow is explained above, however, the process details in motion vector detection unit 106 and mode selection unit 107 are explained below.
[00108] A detecção do vetor de movimento é executada em uma base de bloco por bloco ou em uma base de área por área (área é um bloco dividido). Utilizando as imagens codificadas precedentes e seguintes à uma imagem corrente a ser codificada na ordem de exibição como imagens de referência, uma imagem por prognóstico e um modo de prognóstico apresentando uma localização que é prognosticada ótima na área de pesquisa na imagem é gerada pela decisão por um vetor de movimento.Motion vector detection is performed on a block by block basis or on an area by area basis (area is a divided block). Using the coded images preceding and following a current image to be coded in display order as reference images, a prognostic image and a prognostic mode showing a location that is optimally predicted in the image search area is generated by the decision by A motion vector.
[00109] Um modo direto é um dos prognósticos duplos que podem executar o prognóstico de codificação por prognóstico interimagem referindo-se a duas imagens precedente e/ou seguinte na ordem de exibição. No modo direto, um bloco corrente a ser codificado não contém um vetor de movimento diretamente e dois vetores de movimento para a compensação de movimento real são calculados referindo-se a um vetor de movimento de um bloco do mesmo local em uma imagem codificada próxima na ordem de exibição e um bloco de prognóstico é gerado.[00109] A direct mode is one of the dual predictions that can perform interimage prediction coding prediction by referring to two preceding and / or next images in the display order. In direct mode, a current block to be encoded does not contain a motion vector directly and two motion vectors for real motion compensation are calculated by referring to a motion vector of a block of the same location in a coded image nearby in the display order and a predictive block is generated.
[00110] A figura 7 apresenta uma operação quando um bloco codificado referido-se a fim de determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se a duas imagens precedentes na ordem de exibição. Uma imagem P23 é uma imagem corrente a ser codificada e executa o prognóstico duplo referindo-se às imagens P22 e P24. Assuma que um bloco a ser codificado é um bloco MB21; e dois vetores de movimento requeridos são deter- minados utilizando-se um vetor de movimento contido em um bloco MB22, o qual é um bloco no mesmo local na imagem de referência seguinte codificada (a segunda imagem de referência especificada pelo segundo índice de referência) P24. Desde que o bloco MB22 contém os vetores de movimento MV21 e MV22 como um vetor de movimento, é impossível calcular dois vetores de movimento requeridos MV23 e MV24 pelo ajuste de escala diretamente de forma similar à Equação 1. Portanto, de forma similar a que Equação 2 apresenta, um vetor de movimento MV REF é calculado como um vetor de movimento a ter a escala ajustada a partir de um valor médio de dois vetores de movimento contidos no bloco MB22 e um intervalo de tempo TR_REF na hora da mesma forma é calculado a partir do valor médio. Então, os vetores de movimento MV23 e MV24 são calculados por se ajustar a escala do vetor de movimento MV_REF e do intervalo de tempo TR REF baseado na Equação 3. Neste caso, o intervalo de tempo TR21 indica um intervalo de tempo entre a imagem P24 e a imagem P21, ou seja, uma imagem referida pelo vetor de movimento MV21 e o intervalo de tempo TR22 indica um intervalo de tempo até uma imagem referida pelo vetor de movimento MV22. Além disso, o intervalo de tempo TR23 é um intervalo de tempo até uma imagem referida pelo vetor de movimento MV23 e o intervalo de tempo TR24 é um intervalo de tempo até uma imagem referida pelo vetor de movimento MV24. Os intervalos de tempo entre estas imagens podem ser determinados baseados, por exemplo, na informação indicando o tempo de exibição e na ordem de exibição adicionada para cada imagem ou na diferença de informação. Observe que uma imagem corrente a ser codificada refere-se a uma próxima imagem no exemplo da figura 7, entretanto, o caso referindo-se a uma imagem que não é a próxima pode ser tratado da mesma maneira. MV_REF = (MV21 + MV22)/2 .... Equação 2 (a) TR_REF = (TR21 + TR22)/2 .... Equação 2 (b) MV23 = MV_REF/TR_REF x TR23 .... Equação 3 (a) MV24 = -MV_REF/TR_REF x TR24 .... Equação 3 (b) [00111] A modalidade acima apresenta o método de codificação no qual uma codificação por prognóstico interimagem pode ser executada utilizando-se o modo direto sem contradição mesmo se um bloco a cujo vetor de movimento refere-se no modo direto pertencer a uma imagem B. No método de codificação, quando um bloco a cujo vetor de movimento refere-se no modo direto contém vários vetores de movimento que referem-se a uma imagem precedente na ordem de exibição, um vetor de movimento é gerado utilizando os vários vetores de movimento e dois vetores de movimento a serem utilizados para a compensação de movimento real são determinados pelo ajuste de escala. Observe que quando dois vetores de movimento MV23 e MV24 na figura 7 são calculados, é possível utilizar a Equação 4 ao invés da Equação 2 como um método para tirar a média dos vetores de movimento MV21 e MV22 e para tirar a média dos intervalos de tempo TR21 e TR22 de modo a calcular o vetor de movimento MVREF e o intervalo de tempo TR REF a terem a escala ajustada.[00110] Figure 7 shows an operation when a coded block referred to to determine a direct mode motion vector contains two motion vectors that refer to two preceding images in the display order. A P23 image is a current image to be encoded and performs dual prediction referring to images P22 and P24. Assume that a block to be encoded is an MB21 block; and two required motion vectors are determined using a motion vector contained in an MB22 block, which is a block at the same location in the next coded reference image (the second reference image specified by the second reference index) P24. Since block MB22 contains motion vectors MV21 and MV22 as a motion vector, it is impossible to calculate two required motion vectors MV23 and MV24 by scaling directly similarly to Equation 1. Therefore, similarly to that Equation 2 presents a motion vector MV REF is calculated as a motion vector scaled from an average value of two motion vectors contained in block MB22 and a time interval TR_REF at the same time is calculated as from the average value. Then the motion vectors MV23 and MV24 are calculated by adjusting the scale of the motion vector MV_REF and the time interval TR REF based on Equation 3. In this case, the time interval TR21 indicates a time interval between the image P24. and image P21, i.e. an image referred to by motion vector MV21 and time interval TR22 indicates a time interval to an image referred to by motion vector MV22. In addition, time interval TR23 is a time interval to an image referred to by motion vector MV23 and time interval TR24 is a time interval to an image referred to by motion vector MV24. The time intervals between these images may be determined based, for example, on the information indicating the display time and the display order added for each image or the information difference. Note that a current image to be encoded refers to a next image in the example of Figure 7, however, the case referring to a non-next image may be treated in the same way. MV_REF = (MV21 + MV22) / 2 .... Equation 2 (a) TR_REF = (TR21 + TR22) / 2 .... Equation 2 (b) MV23 = MV_REF / TR_REF x TR23 .... Equation 3 ( a) MV24 = -MV_REF / TR_REF x TR24 .... Equation 3 (b) [00111] The above embodiment presents the coding method in which interimage prognostic coding can be performed using direct mode without contradiction even if a block whose motion vector refers in direct mode to an image B. In the encoding method, when a block to whose motion vector refers in direct mode contains several motion vectors that refer to an image Preceding in the display order, a motion vector is generated using the various motion vectors and two motion vectors to be used for actual motion compensation are determined by scaling. Note that when two motion vectors MV23 and MV24 in figure 7 are calculated, it is possible to use Equation 4 instead of Equation 2 as a method for averaging MV21 and MV22 motion vectors and averaging time intervals. TR21 and TR22 to calculate the motion vector MVREF and the time interval TR REF to have the scale adjusted.
[00112] Primeiro, como a Equação 4 (a) apresenta, o vetor de movimento MV21' é calculado por se ajustar a escala de MV21 para igualar o intervalo de tempo com o vetor de movimento MV22. Então, o vetor de movimento MV REF é determinado por se tirar a média dos vetores de movimento MV21' e MV22. Aqui, o intervalo de tempo TR22 é utilizado diretamente como o intervalo de tempo TR_RF. Observe que o caso de calcular um vetor de movimento MV22' por se ajustar a escala do vetor de movimento MV22 ao invés de calcular o vetor de movimento MV21' por se ajustar a escala de um vetor de movimento MV21 pode ser tratado da mesma maneira. MV21' = MV21/TR21 x TR22 .... Equação 4 (a) MV_RF = (MV21' + MV22)/2 .... Equação 4 (b) TR_REF = TR22 .... Equação 4 (c) [00113] Observe que quando dois vetores de movimento MV23 e MV24 na figura 7 são calculados, como um vetor de movimento MV_REF e um intervalo de tempo TR REF que têm a escala ajustada, um vetor de movimento MV22 e um intervalo de tempo TR22, o qual refere-se a uma imagem P22 localizada temporariamente mais próxima de uma imagem P24 cujo vetor de movimento se refere, podem ser diretamente utilizados como a Equação 5 apresenta em vez de utilizar um valor médio de dois vetores de movimento como a Equação 2 apresenta. Da mesma forma, como um vetor de movimento MV REF e um intervalo de tempo TR_REF, um vetor de movimento MV21 e um intervalo de tempo TR21, o qual refere-se a uma imagem P21 localizada temporariamente mais distante, podem ser diretamente utilizados como a Equação 6 apresenta. Isto torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de codificação desde que cada bloco pertencendo a uma imagem P24 cujo vetor de movimento se refere pode executar a compensação de movimento por armazenar somente um dentre dois vetores de movimento. MV_REF = MV22 .... Equação 5 (a) TR_REF = TR22 .... Equação 5 (b) MV_REF = MV21 .... Equação 6 (a) TR_REF = TR21 .... Equação 6 (b) [00114] Observe que quando dois vetores e movimento MV23 e MV24 na figura 7 são calculados, como um vetor de movimento MV_REF e um intervalo de tempo TR_REF que têm a escala ajustada, um vetor de movimento que refere-se a uma imagem a ser codificada precedentemente pode ser diretamente utilizado ao invés de utilizar um valor médio de dois vetores de movimento como a Equação 2 apresen- ta. A figura 8A apresenta uma relação de referência na ordem de exibição de imagens em movimento como a figura 7 apresenta e a figura 8B apresenta um exemplo de uma ordem na qual as imagens são reorde-nadas pela ordem de codificação na memória de quadros 101 apresentada na figura 6. Aqui, uma imagem P23 indica um quadro a ser codificado no modo direto e uma imagem P24 indica uma imagem, cujo vetor de movimento se refere à codificação. Quando as imagens são re-ordenadas como apresentado na figura 8B, desde que um vetor de movimento que refere-se a uma imagem a ser codificada precedentemente é diretamente utilizado, um vetor de movimento MV22 e um intervalo de tempo TR22 são diretamente utilizados como um vetor de movimento MV_REF e como um intervalo de tempo TR REF como apresentado na Equação 5. Da mesma forma, é possível diretamente utilizar um vetor de movimento que refere-se a uma imagem a ser codificada posteriormente. Neste caso, um vetor de movimento MV21 e um intervalo de tempo TR21 são diretamente aplicados como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF como a Equação 6 apresenta. Isto torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de codificação desde que cada bloco pertencendo a uma imagem P24, cujo referido vetor de movimento pode executar a compensação de movimento por armazenar somente um dos dois vetores de movimento.First, as Equation 4 (a) presents, motion vector MV21 'is calculated by adjusting the scale of MV21 to match the time interval with motion vector MV22. Then the MV REF motion vector is determined by averaging the motion vectors MV21 'and MV22. Here the TR22 time slot is used directly as the TR_RF time slot. Note that the case of calculating a motion vector MV22 'by adjusting the scale of the motion vector MV22 rather than calculating the motion vector MV21' by adjusting the scale of a motion vector MV21 can be treated in the same way. MV21 '= MV21 / TR21 x TR22 .... Equation 4 (a) MV_RF = (MV21' + MV22) / 2 .... Equation 4 (b) TR_REF = TR22 .... Equation 4 (c) [00113 Note that when two motion vectors MV23 and MV24 in figure 7 are calculated, as a motion vector MV_REF and a time interval TR REF that have the scaled scale, a motion vector MV22 and a time interval TR22, which refers to a P22 image located closest to a P24 image whose motion vector it refers to, can be directly used as Equation 5 presents instead of using an average value of two motion vectors as Equation 2 presents. Likewise, as a motion vector MV REF and a time interval TR_REF, a motion vector MV21 and a time interval TR21, which refers to a temporarily distant located P21 image, can be directly used as the Equation 6 presents. This makes it possible to reduce the capacity of a motion vector storage unit in a coding apparatus since each block belonging to a P24 image whose motion vector it refers to can perform motion compensation by storing only one of two motion vectors. . MV_REF = MV22 .... Equation 5 (a) TR_REF = TR22 .... Equation 5 (b) MV_REF = MV21 .... Equation 6 (a) TR_REF = TR21 .... Equation 6 (b) [00114 ] Note that when two vectors and motion MV23 and MV24 in figure 7 are calculated, as a motion vector MV_REF and a time interval TR_REF that are scaled, a motion vector that refers to an image to be encoded previously. can be directly used instead of using an average value of two motion vectors as Equation 2 presents. Figure 8A shows a reference relationship in the moving image display order as Figure 7 shows and Figure 8B shows an example of an order in which images are reordered by the frame memory coding order 101 shown in Figure 8A. Figure 6. Here, an image P23 indicates a frame to be encoded in direct mode and an image P24 indicates an image whose motion vector refers to the encoding. When images are rearranged as shown in Fig. 8B, since a motion vector referring to an image to be encoded previously is directly used, a motion vector MV22 and a time interval TR22 are directly used as a motion vector MV_REF and as a timeframe TR REF as presented in Equation 5. Likewise, it is possible to directly use a motion vector that refers to an image to be encoded later. In this case, a motion vector MV21 and a time interval TR21 are directly applied as a motion vector MV_REF and as a time interval TR_REF as Equation 6 presents. This makes it possible to reduce the capacity of a motion vector storage unit in a coding apparatus as long as each block belonging to a P24 image, said motion vector can perform motion compensation by storing only one of the two motion vectors. .
[00115] Observe que nesta modalidade, o caso em que um vetor de movimento utilizado no modo direto é calculado por se ajustar a escala de um vetor de movimento referenciado utilizando um intervalo de tempo entre as imagens é explicado, entretanto, o vetor de movimento pode ser calculado pela multiplicação por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blo- cos ou com base em várias imagens.Note that in this embodiment, the case where a motion vector used in direct mode is calculated by scaling a referenced motion vector using a time interval between images is explained, however, the motion vector can be calculated by multiplying by a constant number. Here, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images.
[00116] Observe que na Equação 2 (a) ou 4 (b), quando um vetor de movimento MV_REF é calculado, após calcular o lado direito da Equação 2 (a) ou 4 (b), o vetor de movimento pode ser arredondado para uma precisão do vetor de movimento predeterminada (por exemplo, arredondado para um valor de 0,5 pixel unitário para um vetor de movimento com precisão de meio pixel). A precisão de um vetor de movimento não está limitada à precisão de meio pixel. Em adição, a precisão de um vetor de movimento pode ser determinada com base no bloco, com base na imagem e com base na seqüência, por exemplo. Além disso, nas Equações, 3 (a), 3 (b) e 4 (a), quando os vetores de movimento MV23, MV24 e MV21' são calculados, os vetores de movimento podem ser arredondados para uma precisão predeterminada de um vetor de movimento após calcular o lado direito das Equações 3 (a), 3 (b) e 4 (a). (Segunda Modalidade) [00117] Uma vista geral do processo de codificação baseado na figura 6 é totalmente igual à primeira modalidade. Aqui, uma operação detalhada do prognóstico duplo no modo direto é explicada utilizando a figura 9.Note that in Equation 2 (a) or 4 (b), when a motion vector MV_REF is calculated, after calculating the right side of Equation 2 (a) or 4 (b), the motion vector can be rounded. for a predetermined motion vector accuracy (for example, rounded to a value of 0.5 unit pixels for a half pixel precision motion vector). The accuracy of a motion vector is not limited to half pixel accuracy. In addition, the accuracy of a motion vector can be determined based on block, image based and sequence based, for example. Moreover, in Equations 3 (a), 3 (b) and 4 (a), when motion vectors MV23, MV24 and MV21 'are calculated, motion vectors can be rounded to a predetermined precision of a vector of movement after calculating the right side of Equations 3 (a), 3 (b) and 4 (a). (Second Modality) An overview of the coding process based on Figure 6 is totally the same as the first modality. Here, a detailed operation of the dual prognosis in direct mode is explained using figure 9.
[00118] A figura 9 apresenta uma operação quando um bloco referido de modo a determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se às duas imagens seguintes na ordem de exibição. Uma imagem P43 é uma imagem corrente a ser codificada e executa o prognóstico duplo referindo-se às imagens P42 e P44. Assuma que um bloco a ser codificado é um bloco MB41, então dois vetores de movimento requeridos são determinados utilizando-se um vetor de movimento de um bloco do mesmo local MB42 na imagem de referência codificada para trás (a segunda imagem de referência especificada pelo segundo índice de referência) Ρ44. Desde que o bloco MB42 contém dois vetores de movimento MV45 e MV46 como os vetores de movimento, dois vetores de movimento requeridos MV43 e MV44 não podem ser calculados por se aplicar diretamente o ajuste de escala de forma similar à Equação 1. Portanto, como a Equação 7 apresenta, um vetor de movimento MV_REF é determinado como um vetor de movimento a ter a escala ajustada a partir de um valor médio de dois vetores de movimento do bloco MB42 e um intervalo de tempo TR REF neste tempo é da mesma forma determinado a partir de um valor médio. Os vetores de movimento MV43 e MV44 são calculados por se ajustar a escala de um vetor de movimento MV_REF e um intervalo de tempo TR_REF baseado na Equação 8. Neste caso, um intervalo de tempo TR45 indica um intervalo de tempo entre uma imagem P44 e P45, ou seja, até uma imagem que é referida por um vetor de movimento MV45; e o intervalo de tempo TR46 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV46. Um intervalo de tempo TR43 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV43; e um intervalo de tempo TR44 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV44. Os intervalos de tempo entre estas imagens podem ser determinados baseados, por exemplo, na informação indicando o tempo de exibição e a ordem de exibição que é adicionada para cada imagem ou diferença de informação como explicado na primeira modalidade. Observe que uma imagem corrente a ser codificada refere-se a uma próxima imagem no exemplo da figura 9, entretanto, o caso referindo-se a uma imagem que não é a próxima pode ser tratado da mesma maneira. MV_REF = (MV45 + MV46)/2 .... Equação 7 (a) TR_REF = (TR45 + TR46)/2 .... Equação 7 (b) MV43 = - MV_REF/TR_REF x TR43 .... Equação 8 (a) MV44 = MV_REF/TR_REF χ TR44 .... Equação 8 (b) [00119] A modalidade acima apresenta o método de codificação no qual uma codificação por prognóstico interimagem pode ser executada utilizando o modo direto sem contradição mesmo se um bloco, cujo referido vetor de movimento no modo direto pertence a uma imagem B. No método de codificação, quando um bloco cujo referido vetor de movimento no modo direto contém vários vetores de movimento os quais referem-se a uma imagem seguinte na ordem de exibição, um vetor de movimento é gerado utilizando os vários vetores de movimento e dois vetores de movimento a serem utilizados para a compensação de movimento real são determinados pelo ajuste de escala.[00118] Figure 9 shows an operation when a block referred to for determining a direct mode motion vector contains two motion vectors which refer to the next two images in the order of display. A P43 image is a current image to be encoded and performs dual prediction referring to images P42 and P44. Assume that a block to be encoded is an MB41 block, then two required motion vectors are determined using a motion vector from a block of the same location MB42 in the back coded reference image (the second reference image specified by the second one). reference index) Ρ44. Since block MB42 contains two motion vectors MV45 and MV46 as the motion vectors, two required motion vectors MV43 and MV44 cannot be calculated by directly scaling similarly to Equation 1. Therefore, as the Equation 7 presents, a motion vector MV_REF is determined as a motion vector scaled from an average value of two MB42 motion vectors and a time interval TR REF at this time is likewise determined at from an average value. Motion vectors MV43 and MV44 are calculated by scaling an MV_REF motion vector and a time interval TR_REF based on Equation 8. In this case, a time interval TR45 indicates a time interval between an image P44 and P45. i.e. even an image that is referred to by a motion vector MV45; and time interval TR46 indicates a time interval to an image that is referred to by a motion vector MV46. A time interval TR43 indicates a time interval up to an image that is referred to by a motion vector MV43; and a time interval TR44 indicates a time interval up to an image that is referred to by a motion vector MV44. The time intervals between these images may be determined based, for example, on information indicating the display time and the display order that is added for each image or information difference as explained in the first embodiment. Note that a current image to be encoded refers to a next image in the example of Figure 9, however, the case referring to an image that is not next can be treated in the same way. MV_REF = (MV45 + MV46) / 2 .... Equation 7 (a) TR_REF = (TR45 + TR46) / 2 .... Equation 7 (b) MV43 = - MV_REF / TR_REF x TR43 .... Equation 8 (a) MV44 = MV_REF / TR_REF χ TR44 .... Equation 8 (b) [00119] The above embodiment presents the coding method in which interimage prognostic coding can be performed using direct mode without contradiction even if a block , wherein said direct mode motion vector belongs to an image B. In the coding method, when a block whose said direct mode motion vector contains several motion vectors which refer to a following image in the order of display, A motion vector is generated using the various motion vectors and two motion vectors to be used for actual motion compensation are determined by scaling.
[00120] Observe que quando dois vetores de movimento MV43 e MV44 na figura 9 são calculados, é possível utilizar a Equação 9 ao invés da Equação 7 como um método para tirar a média dos vetores de movimento MV45 e MV46 e para tirar a média dos intervalos de tempo TR45 e TR46 de modo a calcular o vetor de movimento MV_REF e o intervalo de tempo TR_REF a terem a escala ajustada. Primeiro, como a Equação 9 (a) apresenta, o vetor de movimento MV46' é calculado por se ajustar a escala de MV46 para igualar o intervalo de tempo com o vetor de movimento MV45. Então, o vetor de movimento MV_REF é determinado por se tirar a média dos vetores de movimento MV46' e MV45. Aqui, o intervalo de tempo TR41 é utilizado diretamente como o intervalo de tempo TR_REF. Observe que o caso de calcular um vetor de movimento MV45' por se ajustar a escala do vetor de movimento MV45 ao invés de calcular o vetor de movimento MV46' por se ajustar a escala de um vetor de movimento MV46 pode ser tratado da mesma maneira. MV46' = MV46/TR46 x TR45 .... Equação 9 (a) MV_REF = (MV46' + MV45)/2 .... Equação 9 (b) TR REF = TR45 .... Equação 9 (c) [00121] Observe que quando dois vetores de movimento MV43 e MV44 na figura 9 são calculados, como um vetor de movimento MV REF e um intervalo de tempo TR_REF que têm a escala ajustada, um vetor de movimento MV45 e um intervalo de tempo TR45, os quais referem-se a uma imagem P45 localizada temporariamente mais próxima de uma imagem P44, cujo referido vetor de movimento, pode ser diretamente utilizado como a Equação 10 apresenta ao invés e utilizar um valor médio de dois vetores de movimento como a Equação 7 apresenta. Da mesma forma, como um vetor de movimento MV REF e um intervalo de tempo TRREF, um vetor de movimento MV46 e um intervalo de tempo TR46, os quais referem-se a uma imagem P46 localizada temporariamente mais distante pode ser diretamente utilizada como a Equação 11 apresenta. Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de codificação desde que cada bloco pertencendo a uma imagem P44, cujo referido vetor de movimento pode implementar a compensação de movimento por armazenar somente um de dois vetores de movimento. MV_REF = MV45 .... Equação 10 (a) TR_REF = TR45 .... Equação 10 (b) MV_REF = MV46 .... Equação 11 (a) TR_REF = TR46 .... Equação 11 (b) [00122] Observe que quando dois vetores de movimento MV43 e MV44 na figura 9 são calculados, como um vetor de movimento MV REF e um intervalo de tempo TR REF que têm a escala ajustada, um vetor de movimento que refere-se a uma imagem a ser codificada precedentemente pode ser diretamente utilizado ao invés de se utilizar um valor médio de dois vetores de movimento como a Equação 7 apresenta. A figura 10A apresenta uma relação de referência de imagens na ordem de exibição de imagens em movimento como a figura 9 apresenta e a figura 10B apresenta um exemplo de uma ordem na qual as imagens são reordenadas na ordem de codificação na memória de quadros 101 apresentada na figura 6. Aqui, uma imagem P43 indica uma imagem a ser codificada no modo direto e uma imagem P44 indica uma imagem cujo vetor de movimento se refere à codificação. Quando as imagens são reordenadas como apresentado na figura 10B, desde que um vetor de movimento que refere-se a uma imagem a ser codificada precedentemente é diretamente utilizado, um vetor de movimento MV46 e um intervalo de tempo TR46 são diretamente utilizados como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF como apresentado na Equação 11. Da mesma forma, é possível diretamente utilizar um vetor de movimento que refere-se a uma imagem a ser codificada posteriormente. Neste caso, um vetor de movimento MV45 e um intervalo de tempo TR45 são diretamente aplicados como um vetor de movimento MV_REF e como um intervalo de tempo TR REF. Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de codificação desde que cada bloco pertencendo a uma imagem P44, cujo vetor de movimento referido pode executar a compensação de movimento por armazenar somente um de dois vetores de movimento.Note that when two motion vectors MV43 and MV44 in figure 9 are calculated, it is possible to use Equation 9 instead of Equation 7 as a method for averaging the motion vectors MV45 and MV46 and for averaging the time intervals TR45 and TR46 to calculate motion vector MV_REF and time interval TR_REF to scale. First, as Equation 9 (a) presents, motion vector MV46 'is calculated by adjusting the scale of MV46 to match the time interval with motion vector MV45. Then the motion vector MV_REF is determined by averaging the motion vectors MV46 'and MV45. Here the TR41 time slot is used directly as the TR_REF time slot. Note that the case of calculating a motion vector MV45 'by adjusting the scale of the motion vector MV45 rather than calculating the motion vector MV46' by adjusting the scale of a motion vector MV46 can be treated in the same way. MV46 '= MV46 / TR46 x TR45 .... Equation 9 (a) MV_REF = (MV46' + MV45) / 2 .... Equation 9 (b) TR REF = TR45 .... Equation 9 (c) [ Note that when two motion vectors MV43 and MV44 in figure 9 are calculated, such as an MV REF motion vector and a TR_REF time interval that have the scale adjusted, an MV45 motion vector and a TR45 time interval, the which refer to an image P45 located temporarily closest to an image P44 whose said motion vector can be directly used as Equation 10 presents instead and use an average value of two motion vectors as Equation 7 presents. Likewise, as a motion vector MV REF and a time interval TRREF, a motion vector MV46 and a time interval TR46, which all refer to a more distant, temporarily located image P46, can be directly used as the Equation. 11 presents. This method makes it possible to reduce the capacity of a motion vector storage unit in a coding apparatus as long as each block belonging to a P44 image, said motion vector of which can implement motion compensation by storing only one of two motion vectors. movement. MV_REF = MV45 .... Equation 10 (a) TR_REF = TR45 .... Equation 10 (b) MV_REF = MV46 .... Equation 11 (a) TR_REF = TR46 .... Equation 11 (b) [00122 ] Note that when two motion vectors MV43 and MV44 in figure 9 are calculated, such as an MV REF motion vector and a TR REF time interval that have the scale adjusted, a motion vector that refers to an image to be The coded above can be directly used instead of using an average value of two motion vectors as Equation 7 presents. Fig. 10A shows an image reference relationship in the moving image display order as Fig. 9 shows and Fig. 10B shows an example of an order in which images are reordered in the frame memory coding order 101 shown in Fig. 10A. Figure 6. Here, an image P43 indicates an image to be encoded in direct mode and an image P44 indicates an image whose motion vector refers to encoding. When images are reordered as shown in Fig. 10B, since a motion vector referring to an image to be encoded previously is directly used, a motion vector MV46 and a time interval TR46 are directly used as a motion vector. motion MV_REF and as a time interval TR_REF as presented in Equation 11. Similarly, it is possible to directly use a motion vector that refers to an image to be encoded later. In this case, a motion vector MV45 and a time interval TR45 are directly applied as a motion vector MV_REF and as a time interval TR REF. This method makes it possible to reduce the capacity of a motion vector storage unit in a coding apparatus as long as each block belonging to a P44 image, whose said motion vector can perform motion compensation by storing only one of two motion vectors. movement.
[00123] Observe que quando uma imagem que é referida de modo a determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se a duas imagens seguintes na ordem de exibição, é possível executar a compensação de movimento assumindo que dois vetores de movimento requeridos MV43 e MV44 são "0". Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de decodifi-cação e adicionalmente torna possível omitir um processo para calcular um vetor de movimento, desde que cada bloco pertencendo a uma imagem P44, cujo vetor de movimento referido não tem que armazenar um vetor de movimento.Note that when an image that is referenced to determine a direct mode motion vector contains two motion vectors that refer to two subsequent images in the display order, it is possible to perform motion compensation by assuming that two Required motion vectors MV43 and MV44 are "0". This method makes it possible to reduce the capacity of a motion vector storage unit in a decoding apparatus and further makes it possible to omit a process for calculating a motion vector, provided that each block belonging to a P44 image, whose vector of Said motion does not have to store a motion vector.
[00124] Observe que quando uma imagem que é referida de modo a determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se a duas imagens seguintes na ordem de exibição, é possível inibir referir-se a um vetor de movimento e aplicar somente uma codificação por prognóstico diferente do modo direto. Quando as duas imagens seguintes na ordem de exibição são referidas como uma imagem P44 apresenta na figura 9, é concebível que a correlação com uma imagem precedente na ordem de exibição seja baixa, porque é possível gerar uma imagem por prognóstico mais precisa por inibir o modo direto e selecionar outro método de prognóstico.Note that when an image that is referenced to determine a direct mode motion vector contains two motion vectors that refer to two subsequent images in the display order, it is possible to inhibit referring to a motion vector. move and apply only a different prognostic coding than direct mode. When the next two images in the display order are referred to as an image P44 shown in figure 9, it is conceivable that the correlation with a preceding image in the display order is low, because it is possible to generate a more accurate prognostic image by inhibiting the mode. select another prognostic method.
[00125] Observe que nesta modalidade, o caso em que um vetor de movimento utilizado no modo direto é calculado por se ajustar a escala de um vetor de movimento referenciado utilizando um intervalo de tempo entre as imagens é explicado, entretanto, o vetor de movimento pode ser calculado pela multiplicação por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blocos ou com base em várias imagens.Note that in this embodiment, the case where a motion vector used in direct mode is calculated by scaling a referenced motion vector using a time interval between images is explained, however, the motion vector can be calculated by multiplying by a constant number. Here, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images.
[00126] Observe que na Equação 7 (a) ou 9 (b), quando um vetor de movimento MV REF é calculado, após calcular o lado direito da Equação 7 (a) ou 9 (b), o vetor de movimento pode ser arredondado para uma precisão predeterminada do vetor de movimento. A precisão de um vetor de movimento inclui a precisão de meio pixel, a precisão de um terço de pixel e a precisão de um quarto de pixel ou semelhantes. Em adição, a precisão de um vetor de movimento pode ser determinada, por exemplo, com base no bloco, com base na imagem e com base na seqüência. Além disso, nas Equações 8 (a), 8 (b) e 9 (a), quando os vetores de movimento MV43, MV44 e MV46' são calculados, os veto- res de movimento podem ser arredondados para uma precisão predeterminada de um vetor de movimento após calcular o lado direito das Equações 8 (a), 8 (b) e 9 (a). (Terceira Modalidade) [00127] Um método de decodificação de imagem em movimento de acordo com a terceira modalidade da presente invenção é explicado utilizando o diagrama de blocos apresentado na figura 11. Entretanto, é assumido que o fluxo de bits gerado no método de codificação de imagem da primeira modalidade seja informado.Note that in Equation 7 (a) or 9 (b), when a motion vector MV REF is calculated, after calculating the right side of Equation 7 (a) or 9 (b), the motion vector can be rounded to a predetermined accuracy of the motion vector. The accuracy of a motion vector includes half-pixel accuracy, one-third pixel accuracy, and quarter-pixel precision or the like. In addition, the accuracy of a motion vector can be determined, for example, block-based, image-based, and sequence-based. Furthermore, in Equations 8 (a), 8 (b) and 9 (a), when motion vectors MV43, MV44 and MV46 'are calculated, motion vectors can be rounded to a predetermined precision of a vector. of motion after calculating the right side of Equations 8 (a), 8 (b) and 9 (a). (Third Mode) A motion picture decoding method according to the third embodiment of the present invention is explained using the block diagram shown in Figure 11. However, it is assumed that the bit stream generated in the encoding method first mode is informed.
[00128] Primeiro, várias informações tal como um modo de prognóstico, a informação do vetor de movimento e dados de codificação residual por prognóstico são extraídas a partir do fluxo de bits informado por um analisador de fluxo de bits 601.First, various information such as a predictive mode, motion vector information, and predictive residual coding data are extracted from the bitstream reported by a bitstream analyzer 601.
[00129] O modo de prognóstico e a informação do vetor de movimento são emitidas para uma unidade de decodificação de modo de prognóstico/vetor de movimento 608 e dados de codificação residual por prognóstico são emitidos para uma unidade de decodificação residual por prognóstico 602. A unidade de decodificação de modo de prognóstico/compensação de movimento 608 decodifica o modo de prognóstico e um vetor de movimento utilizado no modo de prognóstico. Na decodificação do vetor de movimento, um vetor de movimento decodificado armazenado na unidade de armazenamento de vetor de movimento 605 é utilizado. O modo de prognóstico decodificado e o vetor de movimento são emitidos para uma unidade de decodificação de compensação de movimento 604. Em adição, o vetor de movimento decodificado é armazenado na unidade de armazenamento de vetor de movimento 605 de modo a ser utilizado para decodificar os vetores de movimento dos blocos seguintes. Na unidade de decodificação de compensação de movimento 604, uma imagem por prognóstico é gerada baseado no modo de prognóstico informado e na informação de vetor de movimento utilizando uma imagem decodificada armazenada em uma memória de quadros 603 como uma imagem de referência. Uma imagem decodificada é gerada por se informar a imagem por prognóstico gerada acima para uma unidade de operação de adição 606 e adicionar a imagem informada para a imagem residual por prognóstico gerada em uma unidade de decodificação residual por prognóstico 602. A modalidade acima apresenta uma operação para um fluxo e bits por prognóstico interimagem, entretanto, uma chave 607 troca para um processo de decodificação para um fluxo de bits por prognóstico intraimagem.Prediction mode and motion vector information is output to a predictive mode / motion vector decode unit 608 and predictive residual coding data is output to a predictive residual decode unit 602. A predictive mode / motion compensation decoding unit 608 decodes the predictive mode and a motion vector used in the predictive mode. In motion vector decoding, a decoded motion vector stored in motion vector storage unit 605 is used. Decoded predictive mode and motion vector are output to a motion compensation decode unit 604. In addition, the decoded motion vector is stored in motion vector storage unit 605 for use to decode the motion vectors of the following blocks. In motion compensation decoding unit 604, a predictive image is generated based on the entered predictive mode and motion vector information using a decoded image stored in frame memory 603 as a reference image. A decoded image is generated by informing the prediction image generated above for an addition operation unit 606 and adding the informed image to the prognostic residual image generated in a prognostic residual decoding unit 602. The above embodiment has an operation for an interimage prognostic stream and bits, however, a key 607 switches to a decoding process for an intraimage prognostic bit stream.
[00130] Um sumário de um fluxo de decodificação é apresentado acima, entretanto, o processo detalhado na unidade de decodificação de compensação de movimento 604 é explicado abaixo.[00130] A summary of a decoding stream is presented above, however, the detailed process in motion compensation decoding unit 604 is explained below.
[00131] A informação de vetor de movimento é adicionada com base no bloco ou com base na área (um bloco dividido). Por utilizar imagens decodificadas precedendo e seguindo uma imagem corrente a ser codificada na ordem de exibição como imagens de referência, uma imagem por prognóstico para executar a compensação de movimento a partir das imagens é gerada.Motion vector information is added based on block or area-based (a divided block). By using decoded images preceding and following a current image to be encoded in the display order as reference images, a prognostic image for performing motion compensation from the images is generated.
[00132] Um modo direto é um dos prognósticos duplos que executa a codificação por prognóstico interimagem referindo-se a cada uma das imagens precedentes e seguintes na ordem de exibição. No modo direto, desde que um bloco corrente a ser codificado informa um fluxo de bits que não contém um vetor de movimento diretamente, dois vetores de movimento para a compensação de movimento real são calculados referindo-se a um vetor de movimento de um bloco do mesmo local em uma imagem decodificada próxima na ordem de exibição e uma imagem por prognóstico é gerada.[00132] A direct mode is one of the dual predictions that performs interimage prediction coding by referring to each of the preceding and following images in the order of display. In direct mode, since a current block to be encoded reports a bit stream that does not contain a motion vector directly, two motion vectors for the actual motion compensation are calculated by referring to a motion vector of a block of the motion. same location on a nearby decoded image in the display order and a prognostic image is generated.
[00133] A figura 7 apresenta uma operação quando uma imagem decodificada referida de modo a determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se a duas imagens precedentes na ordem de exibição. Uma imagem P23 é uma imagem corrente a ser decodificada e executa o prognóstico duplo referindo-se às imagens P22 e P24. Quando é assumido que um bloco a ser decodificado é um bloco MB21, dois vetores de movimento requeridos são determinados utilizando um vetor de movimento de um bloco do mesmo local MB22 na imagem de referência para trás decodificada (a segunda imagem de referência especificada pelo segundo índice de referência) P24. Desde que o bloco MB22 contenha dois vetores de movimento MV21 e MV22 como os vetores de movimento, os dois vetores de movimento requeridos MV23 e MV24 não podem ser calculados pela aplicação do ajuste de escala direto de forma similar à Equação 1. Portanto, como a Equação 2, um vetor de movimento MV_REF é determinado como um vetor de movimento a ter a escala ajustada a partir de um valor médio de dois vetores de movimento do bloco MB22 e um intervalo de tempo TR_REF neste momento é determinado igualmente a partir de um valor médio. Então, os vetores de movimento MV23 e MV24 são calculados ao se ajustar a escala de um vetor de movimento MV REF e de um intervalo de tempo TR_REF baseado na Equação 3. Neste caso, um intervalo de tempo TR21 indica um intervalo de tempo entre uma imagem P24 e P21, ou seja, até uma imagem que é referida por um vetor de movimento MV21 e um intervalo de tempo TR22 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV22. Um intervalo de tempo TR23 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV23; e um intervalo de tempo TR24 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV24. Os intervalos de tempo entre estas imagens podem ser determinados baseados, por exemplo, na informação indicando o tempo de exibição e a ordem de exibição adicionada para cada ima- gem ou na diferença de informação. Observe que uma imagem corrente a ser codificada refere-se a uma próxima imagem no exemplo da figura 7, entretanto, o caso referindo-se a uma imagem que não é a próxima pode ser tratado da mesma maneira.Fig. 7 shows an operation when a decoded image referred to as determining a direct mode motion vector contains two motion vectors which refer to two preceding images in the order of display. A P23 image is a current image to be decoded and performs dual prediction referring to images P22 and P24. When it is assumed that a block to be decoded is an MB21 block, two required motion vectors are determined using a motion vector from a block of the same location MB22 in the decoded back reference image (the second reference image specified by the second index). reference number) P24. Since block MB22 contains two motion vectors MV21 and MV22 as the motion vectors, the two required motion vectors MV23 and MV24 cannot be calculated by applying direct scaling similarly to Equation 1. Therefore, as the Equation 2, a motion vector MV_REF is determined as a motion vector scaled from an average value of two motion vectors of block MB22 and a time interval TR_REF at this time is also determined from a value medium. Then the motion vectors MV23 and MV24 are calculated by scaling an MV REF motion vector and a TR_REF time interval based on Equation 3. In this case, a time interval TR21 indicates a time interval between a P24 and P21, i.e. even an image that is referred to by a motion vector MV21 and a time interval TR22 indicates a time interval to an image that is referred to by a motion vector MV22. A time interval TR23 indicates a time interval up to an image that is referred to by a motion vector MV23; and a time interval TR24 indicates a time interval up to an image that is referred to by a motion vector MV24. The time intervals between these images can be determined based, for example, on the information indicating the display time and the display order added for each image or the information difference. Note that a current image to be encoded refers to a next image in the example of Figure 7, however, the case referring to a non-next image may be treated in the same way.
[00134] A modalidade acima apresenta o método de decodificação no qual uma decodificação prognóstico interimagem pode ser executada utilizando o modo direto sem contradição mesmo que um bloco, cujo referido vetor de movimento pertence a uma imagem B. No método de decodificação, quando um bloco, cujo referido vetor de movimento no modo direto contém vários vetores de movimento que referem-se a uma imagem precedente, um vetor de movimento é gerado utilizando os vários vetores de movimento e dois vetores de movimento a serem utilizados para a compensação de movimento real são determinados pelo ajuste de escala.[00134] The above embodiment presents the decoding method in which an interimage prognostic decoding can be performed using the direct mode without contradiction even if a block whose said motion vector belongs to an image B. In the decoding method, when a block , wherein said direct mode motion vector contains several motion vectors that refer to a preceding image, one motion vector is generated using the various motion vectors and two motion vectors to be used for the actual motion compensation are determined by scaling.
[00135] Observe que quando dois vetores de movimento MV23 e MV24 na figura 7 são calculados, é possível utilizar a Equação 4 ao invés da Equação 2 como um método para tirar a média dos vetores de movimento MV21 e MV22 e para tirar a média dos intervalos de tempo TR21 e TR22 de modo a calcular o vetor de movimento MV REF e o intervalo de tempo TRREF a terem a escala ajustada. Primeiro, como a Equação 4 (a) apresenta, o vetor de movimento MV21' é calculado por se ajustar a escala de MV21 para igualar o intervalo de tempo com o vetor de movimento MV22. Então, o vetor de movimento MV_REF é determinado por se tirar a média dos vetores de movimento MV21' e MV22. Aqui, o intervalo de tempo TR22 é utilizado diretamente como o intervalo de tempo TR REF. Observe que o caso calculando um vetor de movimento MV22' ao se ajustar a escala do vetor de movimento MV22 em vez de calcular o vetor de movimento MV2T ao se ajustar a escala de um vetor de movimento MV21 pode ser tratado da mesma maneira.Note that when two motion vectors MV23 and MV24 in figure 7 are calculated, it is possible to use Equation 4 instead of Equation 2 as a method for averaging the motion vectors MV21 and MV22 and for averaging the time intervals TR21 and TR22 to calculate motion vector MV REF and time interval TRREF to scale. First, as Equation 4 (a) presents, motion vector MV21 'is calculated by adjusting the scale of MV21 to match the time interval with motion vector MV22. Then the motion vector MV_REF is determined by averaging the motion vectors MV21 'and MV22. Here, the TR22 time slot is used directly as the TR REF time slot. Note that the case of calculating a motion vector MV22 'by adjusting the scale of the motion vector MV22 instead of calculating the motion vector MV2T by adjusting the scale of a motion vector MV21 can be treated in the same way.
[00136] Observe que quando dois vetores de movimento MV23 e MV24 na figura 7 são calculados, como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF que têm a escala ajustada, um vetor de movimento MV22 e um intervalo de tempo TR22, os quais referem-se a uma imagem P22 localizada temporariamente mais próxima de uma imagem P24, cujo vetor de movimento refere-se, podem ser diretamente utilizados como a Equação 5 apresenta em vez de utilizar um valor médio de dois vetores de movimento como a Equação 2 apresenta. Da mesma forma, como um vetor de movimento MV REF e como um intervalo de tempo TR_REF, um vetor de movimento MV21 e um intervalo de tempo TR21, os quais referem-se a uma imagem P21 localizada temporariamente mais distante podem ser diretamente utilizados como a Equação 6 apresenta. Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor em um aparelho de codificação desde que cada bloco pertencendo a uma imagem P24, cujo referido vetor de movimento pode realizar a compensação de movimento por armazenar somente um de dois vetores de movimento.Note that when two motion vectors MV23 and MV24 in figure 7 are calculated, as a motion vector MV_REF and as a time interval TR_REF that have the scaled scale, a motion vector MV22 and a time interval TR22, which refer to an image P22 located temporarily closest to an image P24, whose motion vector refers, can be directly used as Equation 5 presents instead of using an average value of two motion vectors as Equation 2 presents. Likewise, as a motion vector MV REF and as a time interval TR_REF, a motion vector MV21 and a time interval TR21, which refer to a temporarily distant located P21 image, can be directly used as the Equation 6 presents. This method makes it possible to reduce the capacity of a vector storage unit in a coding apparatus as long as each block belonging to a P24 image, said motion vector of which can perform motion compensation by storing only one of two motion vectors.
[00137] Observe que quando dois vetores de movimento MV23 e MV24 na figura 7 são calculados, como um vetor de movimento MV REF e como um intervalo de tempo TR_REF que têm a escala ajustada, um vetor de movimento que refere-se a uma imagem a ser codificada precedentemente pode ser diretamente utilizado, em vez de utilizar um valor médio de dois vetores de movimento como a Equação 2 apresenta. A figura 8A apresenta uma relação de referência na ordem de exibição de imagens em movimento como a figura 7 apresenta e a figura 8B apresenta uma ordem na qual um fluxo de bits é informado, ou seja, uma ordem de decodificação. Aqui, uma imagem P23 indica uma imagem decodificada no modo direto e uma imagem P24 indica uma imagem cujo vetor de movimento se refere à decodificação.Note that when two motion vectors MV23 and MV24 in figure 7 are calculated, as a motion vector MV REF and as a time interval TR_REF that are scaled, a motion vector that refers to an image. to be encoded earlier can be directly used instead of using an average value of two motion vectors as Equation 2 presents. Figure 8A shows a reference relationship in the moving image display order as Figure 7 shows and Figure 8B shows an order in which a bit stream is entered, that is, a decoding order. Here, an image P23 indicates an image decoded in direct mode and an image P24 indicates an image whose motion vector refers to decoding.
Quando considerando uma ordem como apresentada na figura 8B, desde que um vetor de movimento que refere-se a uma imagem a ser decodificada precedentemente é diretamente utilizado, um vetor de movimento MV22 e um intervalo de tempo TR22 são diretamente aplicados como um vetor de movimento MV_REF e como um intervalo de tempo TR REF como a Equação 5 apresenta. Da mesma forma, é possível diretamente utilizar um vetor de movimento que refere-se a uma imagem a ser decodificada posteriormente. Neste caso, um vetor de movimento MV21 e um intervalo de tempo TR21 são diretamente aplicados como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF como a Equação 6 apresenta. Isto torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de decodificação desde que cada bloco pertencendo a uma imagem P24, cujo referido vetor de movimento pode executar a compensação de movimento por armazenar somente um de dois vetores de movimento.When considering an order as shown in Figure 8B, since a motion vector referring to an image to be decoded previously is directly used, a motion vector MV22 and a time interval TR22 are directly applied as a motion vector. MV_REF and as a timeframe TR REF as Equation 5 presents. Likewise, it is possible to directly use a motion vector that refers to an image to be decoded later. In this case, a motion vector MV21 and a time interval TR21 are directly applied as a motion vector MV_REF and as a time interval TR_REF as Equation 6 presents. This makes it possible to reduce the capacity of a motion vector storage unit in a decoder as long as each block belonging to a P24 image, said motion vector can perform motion compensation by storing only one of two motion vectors. .
[00138] Observe que nesta modalidade, o caso em que um vetor de movimento utilizado no modo direto é calculado por se ajustar a escala de um vetor de movimento referenciado utilizando um intervalo de tempo entre as imagens é explicado, entretanto, o vetor de movimento pode ser calculado pela multiplicação por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blocos ou com base em várias imagens. (Quarta Modalidade) [00139] Uma vista geral do processo de codificação baseado na figura 11é totalmente igual a terceira modalidade. Aqui, uma operação detalhada do prognóstico duplo no modo direto é explicada utilizando a figura 9. Entretanto, é assumido que o fluxo e bits gerado no método de codificação de imagem da primeira modalidade é informado.Note that in this embodiment, the case where a motion vector used in direct mode is calculated by adjusting the scale of a referenced motion vector using a time interval between images is explained, however, the motion vector can be calculated by multiplying by a constant number. Here, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images. (Fourth Modality) An overview of the coding process based on Figure 11 is totally the same as the third modality. Here, a detailed operation of the dual mode direct prognosis is explained using Figure 9. However, it is assumed that the stream and bits generated in the image coding method of the first embodiment are informed.
[00140] A figura 9 apresenta uma operação quando uma imagem referida de modo a determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se a duas imagens seguintes na ordem de exibição. Uma imagem P43 é uma imagem corrente a ser decodificada e executa o prognóstico duplo referindo-se às imagens P42 e P44. Quando é assumido que um bloco a ser decodificado é um bloco MB41, dois vetores de movimento requeridos são determinados utilizando um vetor de movimento de um bloco do mesmo local MV42 na imagem de referência para trás decodificada (a segunda imagem de referência especificada pelo segundo índice de referência) P44. Desde que o bloco MB42 contém dois vetores de movimento MV45 e MV46 como os vetores de movimento, os dois vetores de movimento MV43 e MV44 não podem ser calculados por diretamente ajustar a escala de forma similar à Equação 1. Portanto, como a Equação 7, um vetor de movimento MV REF é determinado como um vetor de movimento a ter a escala ajustada a partir de um valor médio de dois vetores e movimento do bloco MB42 e um intervalo de tempo TRREF neste momento é determinado igualmente a partir de um valor médio. Então, os vetores de movimento MV43 e MV44 são calculados por se ajustar a escala de um vetor de movimento MV_REF e de um intervalo de tempo TR REF baseado na Equação 8. Neste caso, um intervalo de tempo TR45 indica um intervalo de tempo entre uma imagem P44 e P45, ou seja, até uma imagem que é referida por um vetor de movimento MV45; e o intervalo de tempo TR46 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV46. Um intervalo de tempo TR43 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV43; e um intervalo de tempo TR44 indica um intervalo de tempo até uma imagem que é referida por um vetor de movimento MV44. Observe que uma imagem corrente a ser decodificada refere-se a uma pró- xima imagem no exemplo da figura 9, entretanto, o caso referindo-se a uma imagem que não é adjacente pode ser tratado da mesma maneira.[00140] Figure 9 shows an operation when an image referenced to determine a direct mode motion vector contains two motion vectors which refer to two subsequent images in the order of display. A P43 image is a current image to be decoded and performs dual prediction referring to images P42 and P44. When it is assumed that a block to be decoded is an MB41 block, two required motion vectors are determined using a motion vector from a block of the same location MV42 in the decoded back reference image (the second reference image specified by the second index). reference number) P44. Since block MB42 contains two motion vectors MV45 and MV46 as motion vectors, the two motion vectors MV43 and MV44 cannot be calculated by directly scaling similarly to Equation 1. Therefore, as Equation 7, An MV REF motion vector is determined as a motion vector scaled from an average value of two vectors and MB42 block motion, and a TRREF time interval is then also determined from an average value. Then the motion vectors MV43 and MV44 are calculated by scaling a motion vector MV_REF and a TR REF time interval based on Equation 8. In this case, a TR45 time interval indicates a time interval between a image P44 and P45, i.e. even an image that is referred to by a motion vector MV45; and time interval TR46 indicates a time interval to an image that is referred to by a motion vector MV46. A time interval TR43 indicates a time interval up to an image that is referred to by a motion vector MV43; and a time interval TR44 indicates a time interval up to an image that is referred to by a motion vector MV44. Note that a current image to be decoded refers to a next image in the example of Figure 9, however, the case referring to an image that is not adjacent can be treated in the same way.
[00141] A modalidade acima apresenta o método de decodificação no qual uma decodificação, por prognóstico interimagem pode ser executada utilizando-se o modo direto sem contradição mesmo se um bloco, cujo referido vetor de movimento no modo direto pertencer a uma imagem B. No método de decodificação, quando um bloco, cujo referido vetor de movimento no modo direto contém vários vetores de movimento que referem-se a uma imagem seguinte na ordem de exibição, um vetor de movimento é gerado utilizando-se os vários vetores de movimento e dois vetores de movimento a serem utilizados para a compensação de movimento real são determinados ao se ajustar a escala.[00141] The above embodiment presents the decoding method in which a decoding by interimage prognosis can be performed using direct mode without contradiction even if a block whose said direct mode motion vector belongs to an image B. decoding method, when a block whose said direct mode motion vector contains several motion vectors that refer to a following image in the order of display, a motion vector is generated using the various motion vectors and two Motion vectors to be used for actual motion compensation are determined by adjusting the scale.
[00142] Observe que quando dois vetores de movimento MV43 e MV44 na figura 9 são calculados, é possível utilizar a Equação 7 ao invés da Equação 9 como um método para tirar a média dos vetores de movimento MV45 e MV46 e para tirar a média dos intervalos de tempo TR45 e TR46 de modo a calcular o vetor de movimento MV REF e o intervalo de tempo TR_REF a ter a escala ajustada. Primeiro, como a Equação 9 (a) apresenta, o vetor de movimento MV46' é calculado ao se ajustar a escala de MV46 para igualar o intervalo de tempo com o vetor de movimento MV45. Então, o vetor de movimento MV_REF é determinado por se tirar a média dos vetores MV46' e MV45. Aqui, o intervalo de tempo TR45 é utilizado diretamente como o intervalo de tempo TR RF. Observe que o caso calculando um vetor de movimento MV45' ao se ajustar a escala do vetor de movimento MV45 em vez de calcular o vetor de movimento MV46' ao se ajustar a escala de um vetor de movimento MV46 pode ser tratado da mesma maneira.Note that when two motion vectors MV43 and MV44 in figure 9 are calculated, it is possible to use Equation 7 instead of Equation 9 as a method for averaging motion vectors MV45 and MV46 and for averaging time intervals TR45 and TR46 to calculate motion vector MV REF and time interval TR_REF to scale. First, as Equation 9 (a) presents, motion vector MV46 'is calculated by adjusting the scale of MV46 to match the time interval with motion vector MV45. Then the motion vector MV_REF is determined by averaging the vectors MV46 'and MV45. Here the TR45 time slot is used directly as the TR RF time slot. Note that the case of calculating an MV45 'motion vector by adjusting the scale of the MV45 motion vector instead of calculating the MV46' motion vector by adjusting the scale of an MV46 motion vector can be treated in the same way.
[00143] Observe que quando dois vetores de movimento MV43 e MV44 na figura 9 são calculados, como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF que têm a escala ajustada, um vetor de movimento MV45 e um intervalo de tempo TR45, os quais referem-se a uma imagem P45 localizada temporariamente mais próxima de uma imagem P44, cujo referido vetor de movimento, podem ser diretamente utilizados, como a Equação 10 apresenta, ao invés de utilizar um valor médio de dois vetores de movimento como a Equação 7 apresenta. Da mesma forma, como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF, um vetor de movimento MV46 e um intervalo de tempo TR46, os quais referem-se a uma imagem P46 localizada temporariamente mais distante podem ser diretamente utilizados como a Equação 11 apresenta. Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de decodificação desde que cada bloco pertencendo a uma imagem P44, cujo referido vetor de movimento pode implementar a compensação de movimento por armazenar somente um de dois vetores de movimento.Note that when two motion vectors MV43 and MV44 in figure 9 are calculated, as a motion vector MV_REF and as a time interval TR_REF that have the scaled scale, a motion vector MV45 and a time interval TR45, which refer to an image P45 located temporarily closest to an image P44 whose said motion vector can be directly used, as equation 10 presents, rather than using an average value of two motion vectors as equation 7 presents. Likewise, as a motion vector MV_REF and as a time interval TR_REF, a motion vector MV46 and a time interval TR46, which all refer to a more distant, temporarily located image P46, can be directly used as the Equation. 11 presents. This method makes it possible to reduce the capacity of a motion vector storage unit in a decoder as long as each block belonging to a P44 image, said motion vector can implement motion compensation by storing only one of two motion vectors. movement.
[00144] Observe que quando dois vetores de movimento MV43 e MV44 na figura 9 são calculados, como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF que têm a escala ajustada, um vetor de movimento que refere-se a uma imagem a ser decodificada precedentemente pode ser diretamente utilizado, ao invés de utilizar um valor médio de dois vetores de movimento como a Equação 7 apresenta. A figura 10A apresenta uma relação de referência na ordem de exibição de imagens em movimento como a figura 9 apresenta e a figura 10B apresenta uma ordem na qual um fluxo de bits é informado, ou seja, uma ordem de decodificação. Aqui, uma imagem P43 indica uma imagem que é decodificada no modo direto e uma imagem P44 indica uma imagem, cujo vetor de movimento se refere à decodificação. Quando considerando uma ordem como apresentada na figura 10B, desde que um vetor de movimento que refere-se a uma imagem a ser decodificada precedentemente é diretamente utilizado, um vetor de movimento MV46 e um intervalo de tempo TR46 são diretamente aplicados como um vetor de movimento MV_REF e como um intervalo de tempo TR_REF como a Equação 10 apresenta. Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de decodificação desde que cada bloco pertencendo a uma imagem P44, cujo referido vetor de movimento pode executar a compensação de movimento ao armazenar somente um de dois vetores de movimento.Note that when two motion vectors MV43 and MV44 in figure 9 are calculated, as a motion vector MV_REF and as a time interval TR_REF that have the scaled, a motion vector that refers to an image to being decoded earlier can be directly used, rather than using an average value of two motion vectors as Equation 7 presents. Figure 10A shows a reference relationship in the moving image display order as Figure 9 shows and Figure 10B shows an order in which a bit stream is informed, that is, a decoding order. Here, an image P43 indicates an image that is decoded in direct mode and an image P44 indicates an image whose motion vector refers to decoding. When considering an order as shown in Figure 10B, since a motion vector referring to an image to be decoded previously is directly used, a motion vector MV46 and a time interval TR46 are directly applied as a motion vector. MV_REF and as a time interval TR_REF as Equation 10 presents. This method makes it possible to reduce the capacity of a motion vector storage unit in a decoder as long as each block belonging to a P44 image, said motion vector can perform motion compensation by storing only one of two motion vectors. movement.
[00145] Observe que quando um bloco que é referido de modo a determinar um vetor de movimento no modo direto contém dois vetores de movimento que referem-se as duas imagens seguintes na ordem de exibição, é possível executar a compensação de movimento assumindo que dois vetores de movimento requeridos MV43 e MV44 são "0". Este método torna possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento em um aparelho de decodificação e adicionalmente tornar possível omitir um processo para calcular um vetor de movimento desde que cada bloco pertencendo a uma imagem P44, cujo referido vetor de movimento não tem que armazenar um vetor de movimento.Note that when a block that is referenced to determine a motion vector in direct mode contains two motion vectors that refer to the next two images in the order of display, it is possible to perform motion compensation by assuming that two Required motion vectors MV43 and MV44 are "0". This method makes it possible to reduce the capacity of a motion vector storage unit in a decoding apparatus and further make it possible to omit a process for calculating a motion vector provided that each block belonging to a P44 image, whose motion vector is not have to store a motion vector.
[00146] Observe que nesta modalidade, o caso em que um vetor de movimento utilizado no modo direto é calculado por se ajustar a escalada de um vetor de movimento referenciado utilizando um intervalo de tempo entre as imagens é explicado, entretanto, o vetor de movimento pode ser calculado pela multiplicação por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blocos ou com base em várias imagens (Quinta Modalidade) [00147] O método de codificação/decodificação pode ser realizado não somente pelo método de codificação/decodificação apresentado na primeira modalidade até a quarta modalidade acima, mas também por um método de cálculo de vetor de movimento apresentado abaixo.Note that in this embodiment, the case where a motion vector used in direct mode is calculated by adjusting the scaling of a referenced motion vector using a time interval between images is explained, however, the motion vector can be calculated by multiplying by a constant number. Here a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images (Fifth Modality) [00147] The encoding / decoding method can be performed not only by the method encoding / decoding presented in the first mode up to the fourth mode above, but also by a motion vector calculation method shown below.
[00148] A figura 12 apresenta uma operação quando um bloco codificado ou decodificado referido de modo a calcular um vetor de movimento no modo direto contém dois vetores de movimento que referem-se as duas imagens precedentes na ordem de exibição. Uma imagem P23 é uma imagem corrente a ser codificada ou decodificada. Quando é assumido que um bloco a ser codificado ou decodificado é um bloco MB1, dois vetores de movimento requeridos são determinados utili-zando-se um vetor de movimento de um bloco do mesmo local MB2 na imagem de referência para trás codificada ou decodificada (a segunda imagem de referência especificada pelo segundo índice de referência) P24. Observe que na figura 12, o bloco MB1 é um bloco corrente de processo, os blocos MB1 e MB2 estão no mesmo local em outras imagens e os vetores de movimento MV21 são os primeiros vetores de movimento para frente que a imagem de referência é especificada pelo primeiro índice de referência e MV22 é o vetor de movimento para trás que a imagem de referência é especificada pelo segundo índice de referência e estes vetores de movimento são utilizados para a codificação ou decodificação do bloco MB2 e referem-se às imagens P21 e P22, respectivamente. As imagens P21, P22 e P24 são imagens codificadas ou decodificadas. Um intervalo de tempo TR21 é um intervalo de tempo entre a imagem P21 e a imagem P24; um intervalo de tempo TR22 é um intervalo de tempo entre a imagem P22 e a imagem P24; um intervalo de tempo TR21' é um intervalo de tempo entre P21 e a imagem P23; e um intervalo de tempo TR24' é um intervalo de tempo entre a imagem P23 e a imagem P24.[00148] Figure 12 shows an operation when a coded or decoded block referenced to calculate a direct mode motion vector contains two motion vectors which refer to the two preceding images in the order of display. A P23 image is a current image to be encoded or decoded. When it is assumed that a block to be encoded or decoded is an MB1 block, two required motion vectors are determined using a motion vector of a block of the same location MB2 in the encoded or decoded back reference image (the second reference image specified by second reference index) P24. Note that in Figure 12, MB1 block is a process current block, MB1 and MB2 blocks are in the same location in other images, and MV21 motion vectors are the first forward motion vectors that the reference image is specified by first reference index and MV22 is the backward motion vector that the reference image is specified by the second reference index and these motion vectors are used for encoding or decoding block MB2 and refer to images P21 and P22, respectively. P21, P22 and P24 images are encoded or decoded images. A time interval TR21 is a time interval between picture P21 and picture P24; a time interval TR22 is a time interval between picture P22 and picture P24; a time interval TR21 'is a time interval between P21 and picture P23; and a time interval TR24 'is a time interval between picture P23 and picture P24.
[00149] No método de calculo de vetor de movimento, como apre- sentado na figura 12, somente o vetor de movimento para frente (o primeiro vetor de movimento) MV21 codificado ou decodificado precedentemente é utilizado entre os vetores de movimento do bloco MB2 na imagem de referência P24 e os vetores de movimento MV21' e MV24' do bloco MB1 são calculados pelas equações seguintes.In the motion vector calculation method, as shown in Fig. 12, only the forward motion vector (the first motion vector) previously encoded or decoded MV21 is used between the motion vectors of block MB2 in the reference image P24 and motion vectors MV21 'and MV24' of block MB1 are calculated by the following equations.
[00150] MV21' = MV21 x TR217TR21 [00151] MV24' = -MV21 x TR247TR21 [00152] Então, o prognóstico duplo é executado a partir das imagens P21 e P24 utilizando os vetores de movimento MV21' e MV24'. Observe que um vetor de movimento do bloco MB1 pode ser calculado utilizando somente um vetor de movimento (o segundo vetor de movimento) MV22 codificado ou decodificado posteriormente entre os vetores de movimento do bloco MB2 na imagem de referência P24, ao invés de calcular os vetores de movimento MV21' e MV24' do bloco MB1 utilizando somente o vetor de movimento MV21. Além disso, como apresentado na primeira modalidade até a quarta modalidade, um vetor de movimento do bloco MB1 pode ser determinado utilizando ambos os vetores de movimento MV21 e MV22. Quando selecionando-se um dos vetores de movimento MV21 e MV22, um vetor de movimento de um bloco codificado ou decodificado precedentemente pode ser selecionado e ele pode ser estabelecido arbitrariamente em um aparelho de codificação e em um aparelho de decodificação. A compensação de movimento é possível quando a imagem P21 está na memória intermediária de imagem de referência de curto prazo ou na memória intermediária de imagem de referência de longo prazo. Será dada explicação para a memória intermediária de imagem de referência de curto prazo e para a memória intermediária de imagem de referência de longo prazo posteriormente.[00150] MV21 '= MV21 x TR217TR21 [00151] MV24' = -MV21 x TR247TR21 [00152] Then the double prognosis is performed from images P21 and P24 using motion vectors MV21 'and MV24'. Note that a motion vector of block MB1 can be calculated using only one motion vector (the second motion vector) MV22 encoded or decoded later between motion vectors of block MB2 in reference image P24, rather than calculating vectors MB21 'and MV24' motion block using only the MV21 motion vector. In addition, as shown in the first embodiment to the fourth embodiment, a motion vector of block MB1 can be determined using both motion vectors MV21 and MV22. When selecting one of the motion vectors MV21 and MV22, a motion vector of a previously encoded or decoded block may be selected and it may be arbitrarily set in a coding apparatus and a decoding apparatus. Motion compensation is possible when image P21 is in short-term reference image buffer or long-term reference image buffer. Explanation will be given to the short term reference image buffer and to the long term reference image buffer later.
[00153] A figura 13 apresenta uma operação quando um bloco codificado ou decodificado referido de modo a calcular um vetor de movi- mento no modo direto contém dois vetores de movimento que referem-se a duas imagens seguintes na ordem de exibição. Uma imagem P22 é uma imagem corrente a ser codificada ou decodificada. Quando é assumido que um bloco a ser codificado ou decodificado é um bloco MB1, dois vetores de movimento requeridos são determinados utilizando um vetor de movimento de um bloco do mesmo local MB2 na imagem de referência para trás codificada ou decodificada (a segunda imagem de referência) P23. Observe que na figura 13, o bloco MB1 é um bloco corrente de processamento, os blocos MB1 e MB2 são blocos localizados no mesmo local nas imagens e os vetores de movimento MV24 e MV25 são vetores de movimento para trás utilizados para a codificação ou decodificação do bloco MB2 e referem-se às imagens P21 e P22, respectivamente. As imagens P21, P23, P24 e P25 são imagens codificadas ou decodificadas. Um intervalo de tempo TR24 é um intervalo de tempo entre a imagem P23 e a imagem P24, um intervalo de tempo TR25 é um intervalo de tempo entre a imagem P23 e a imagem P25, um intervalo de tempo TR24' é um intervalo de tempo entre P22 e a imagem P24 e um intervalo de tempo TR21' é um intervalo de tempo entre a imagem P21 e a imagem P22.[00153] Figure 13 shows an operation when a coded or decoded block referenced to calculate a direct mode motion vector contains two motion vectors which refer to two subsequent images in the order of display. A P22 image is a current image to be encoded or decoded. When it is assumed that a block to be encoded or decoded is an MB1 block, two required motion vectors are determined using a motion vector from a block of the same location MB2 in the encoded or decoded back reference image (the second reference image ) P23. Note that in Figure 13, block MB1 is a current processing block, blocks MB1 and MB2 are blocks located at the same location in images, and motion vectors MV24 and MV25 are backward motion vectors used for encoding or decoding the MB2 block and refer to images P21 and P22 respectively. P21, P23, P24 and P25 images are encoded or decoded images. A time interval TR24 is a time interval between image P23 and image P24, a time interval TR25 is a time interval between image P23 and image P25, a time interval TR24 'is a time interval between P22 and image P24 and a time interval TR21 'is a time interval between image P21 and image P22.
[00154] Em um método de cálculo de vetor de movimento, como apresentado na figura 13, somente o vetor de movimento para trás MV24, o qual refere-se à imagem P24, do bloco MB2 na imagem de referência P23, é utilizado e os vetores de movimento MV21' e MV24' são calculados pelas equações seguintes. MV21' = -MV24 x TR217TR24 MV24' = MV24 x TR247TR24 [00155] Então, o prognóstico duplo é executado a partir das imagens P21 e P24 utilizando os vetores de movimento MV21' e MV24'.In a motion vector calculation method as shown in Fig. 13, only the backward motion vector MV24, which refers to image P24 of block MB2 in reference image P23, is used and Motion vectors MV21 'and MV24' are calculated by the following equations. MV21 '= -MV24 x TR217TR24 MV24' = MV24 x TR247TR24 [00155] Then the double prognosis is performed from images P21 and P24 using motion vectors MV21 'and MV24'.
[00156] Observe que, como apresentado na figura 14, quando somente um vetor de movimento para trás MV25, o qual aponta para a imagem P25, do bloco MB2 na imagem de referência P23, é utilizado, os vetores de movimento MV21' e MV24' são calculados pelas equações seguintes. Aqui, um intervalo de tempo TR24 é um intervalo de tempo entre a imagem P23 e a imagem P24; um intervalo de tempo TR25 é um intervalo de tempo entre a imagem P23 e a imagem P25; um intervalo de tempo TR25' é um intervalo de tempo entre a imagem P22 e a imagem P25; e um intervalo de tempo TR21' é um intervalo de tempo entre a imagem P21 e a imagem P22. MV21' = -MV25 x TR217TR25 MV25' = MV25 x TR257TR25 [00157] Então, o prognóstico duplo é executado a partir das imagens P21 e P24 utilizando os vetores de movimento MV21' e MV24'.Note that as shown in Fig. 14, when only a backward motion vector MV25, which points to image P25 of block MB2 in reference image P23, motion vectors MV21 'and MV24 are used. 'are calculated by the following equations. Here, a time interval TR24 is a time interval between picture P23 and picture P24; a time interval TR25 is a time interval between picture P23 and picture P25; a time interval TR25 'is a time interval between picture P22 and picture P25; and a time interval TR21 'is a time interval between picture P21 and picture P22. MV21 '= -MV25 x TR217TR25 MV25' = MV25 x TR257TR25 [00157] Then the double prognosis is performed from images P21 and P24 using motion vectors MV21 'and MV24'.
[00158] A figura 15 apresenta uma operação quando um bloco codificado ou decodificado referido de modo a calcular um vetor de movimento no modo direto contém dois vetores de movimento que referem-se a uma imagem precedente na ordem de exibição. Uma imagem P23 é uma imagem corrente a ser codificada ou decodificada. Quando é assumido que um bloco a ser codificado ou decodificado é um bloco MB1, dois vetores de movimento requeridos são determinados utilizando um vetor de movimento de um bloco do mesmo local MB2 na imagem de referência para trás codificada ou decodificada (a segunda imagem de referência especificada pelo segundo índice de referência) P24. Observe que na figura 15, o bloco MB1 é um bloco corrente de processamento, os blocos MB1 e MB2 são blocos localizados no mesmo local nas outras imagens. Os vetores de movimento MV21A e MV21B são vetores de movimento para frente utilizados para a codificação ou decodificação do bloco MB2 e ambos referem-se à imagem P21. As imagens P21, P22 e P24 são imagens codificadas ou decodificadas. Os intervalos de tempo TR21A e TR21B são um intervalo de tempo entre a imagem P21 e a imagem P24; um intervalo de tempo TR21' é um intervalo de tempo entre a imagem P21 e a imagem P23; e um intervalo de tempo TR24' é um intervalo de tempo entre P23 e a imagem P24.Fig. 15 shows an operation when a coded or decoded block referenced to calculate a direct mode motion vector contains two motion vectors that refer to a preceding image in the display order. A P23 image is a current image to be encoded or decoded. When it is assumed that a block to be encoded or decoded is an MB1 block, two required motion vectors are determined using a motion vector from a block of the same location MB2 in the encoded or decoded back reference image (the second reference image specified by the second reference index) P24. Note that in figure 15, block MB1 is a current processing block, blocks MB1 and MB2 are blocks located at the same location in the other images. Motion vectors MV21A and MV21B are forward motion vectors used for MB2 block encoding or decoding and both refer to image P21. P21, P22 and P24 images are encoded or decoded images. Time intervals TR21A and TR21B are a time interval between picture P21 and picture P24; a time interval TR21 'is a time interval between picture P21 and picture P23; and a time interval TR24 'is a time interval between P23 and image P24.
[00159] Em um método de cálculo de vetor de movimento, como apresentado na figura 15, somente o vetor de movimento para frente MV21A, o qual aponta para a imagem P21, do bloco MB2 na imagem de referência P24, é utilizado e os vetores de movimento MV21A' e MV24' são calculados pelas equações seguintes.[00159] In a motion vector calculation method as shown in Figure 15, only the forward motion vector MV21A, which points to image P21 of block MB2 in reference image P24, is used and the vectors MV21A 'and MV24' are calculated by the following equations.
MV21A' = M V21A x TR217TR21A MV24' = -MV21A x TR247TR21AMV21A '= M V21A x TR217TR21A MV24' = -MV21A x TR247TR21A
[00160] Então, o prognóstico duplo é executado a partir das imagens P21 e P24 utilizando os vetores de movimento MV21A' e MV24'.Then, the double prognosis is performed from images P21 and P24 using motion vectors MV21A 'and MV24'.
[00161] Observe que um vetor de movimento do bloco MB1 pode ser calculado utilizando-se somente um vetor de movimento para frente MV21B, o qual aponta para a imagem P21, do bloco MB2 na imagem de referência P24. Além disso, como apresentado na primeira modalidade até a quarta modalidade, um vetor de movimento do bloco MB1 pode ser determinado utilizando-se ambos os vetores de movimento para frente MV21A e MV21B. Quando selecionando-se um dos vetores de movimento para frente MV21A e MV21B, um vetor de movimento de um bloco codificado ou decodificado precedentemente (descrito anteriormente em um fluxo de bits) pode ser selecionado e ele pode ser estabelecido arbitrariamente por um aparelho de codificação e por um aparelho de decodificação. Aqui, o vetor de movimento codificado ou decodificado precedentemente significa o primeiro vetor de movimento. A compensação de movimento é possível quando a imagem P21 na memória intermediária de imagem de referência de curto prazo ou na memória intermediária de imagem de referência de longo prazo. Será dada explicação para a memória intermediária de imagem de referência de curto prazo e para a memória intermediária de imagem de refe- rência de longo prazo posteriormente.Note that a motion vector of block MB1 can be calculated using only a forward motion vector MV21B, which points to image P21 of block MB2 in reference image P24. In addition, as shown in the first embodiment to the fourth embodiment, a motion vector of block MB1 can be determined using both forward motion vectors MV21A and MV21B. When selecting one of the forward motion vectors MV21A and MV21B, a motion vector of a previously encoded or decoded block (described above in a bit stream) can be selected and it can be arbitrarily set by a coding apparatus and by a decoder. Here, the previously encoded or decoded motion vector means the first motion vector. Motion compensation is possible when image P21 in the short-term reference image buffer or long-term reference image buffer. Explanation will be given to short-term reference image buffer and to long-term reference image buffer later.
[00162] Observe que nesta modalidade, o caso em que um vetor de movimento utilizado no modo direto é calculado por se ajustar a escala de um vetor de movimento referenciado utilizando um intervalo de tempo entre as imagens é explicado, entretanto, o vetor de movimento pode ser calculado pela multiplicação por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blocos ou com base em várias imagens.Note that in this embodiment, the case where a motion vector used in direct mode is calculated by scaling a referenced motion vector using a time interval between images is explained, however, the motion vector can be calculated by multiplying by a constant number. Here, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images.
[00163] Observe que, nas equações mencionadas acima para calcular os vetores de movimento MV21', MV24', MV25' e MV21A', os vetores de movimento podem ser arredondados para uma precisão predeterminada de um vetor de movimento após calcular o lado direito das equações. A precisão do vetor de movimento inclui a precisão de meio pixel, a precisão de um terço do pixel e a precisão de um quarto do pixel ou semelhantes. Em adição, a precisão de um vetor de movimento pode ser determinada, por exemplo, com base no bloco, com base na imagem e com base na seqüência. (Sexta Modalidade) [00164] Nesta sexta modalidade, um método para calcular um vetor de movimento corrente por ajustar a escala somente de um de dois vetores de movimento para frente, os quais referem-se a duas imagens precedentes na ordem de exibição, é explicado utilizando as figuras 14, 15 e 16. Neste caso, uma imagem de referência utilizada de modo a determinar um vetor de movimento corrente no modo direto contém os dois vetores de movimento para frente. Observe que o bloco MB1 é um bloco corrente a ser processado; os blocos MB1 e MB2 são blocos no mesmo local em outras imagens; e os vetores de movimento MV21 e MV22 são vetores de movimento para frente utilizados para a codificação e decodificação do bloco MB2 e referem-se às imagens P21 e Ρ22, respectivamente. As imagens P21, P22 e P24 são imagens codificadas ou decodificadas. Um intervalo de tempo TR21 é um intervalo de tempo entre a imagem P21 e a imagem P24; um intervalo de tempo TR22 é um intervalo de tempo entre a imagem P22 e a imagem P24; um intervalo de tempo TR21' é um intervalo de tempo entre P21 e a imagem P23; e um intervalo de tempo TR22' é um intervalo de tempo entre P22 e a imagem P23.Note that in the equations mentioned above for calculating motion vectors MV21 ', MV24', MV25 'and MV21A', motion vectors can be rounded to a predetermined precision of a motion vector after calculating the right side of the motion. equations. Motion vector accuracy includes half-pixel precision, one-third pixel accuracy, and one-quarter pixel accuracy or the like. In addition, the accuracy of a motion vector can be determined, for example, block-based, image-based, and sequence-based. (Sixth Modality) In this sixth embodiment, a method for calculating a current motion vector by scaling only one of two forward motion vectors, which refer to two preceding images in the display order, is 14, 15 and 16. In this case, a reference image used to determine a current motion vector in direct mode contains the two forward motion vectors. Note that block MB1 is a current block to be processed; MB1 and MB2 blocks are blocks in the same place in other images; and motion vectors MV21 and MV22 are forward motion vectors used for MB2 block encoding and decoding and refer to images P21 and Ρ22, respectively. P21, P22 and P24 images are encoded or decoded images. A time interval TR21 is a time interval between picture P21 and picture P24; a time interval TR22 is a time interval between picture P22 and picture P24; a time interval TR21 'is a time interval between P21 and picture P23; and a time interval TR22 'is a time interval between P22 and picture P23.
[00165] Como para o primeiro método, quando um bloco MB2 em uma imagem de referência P24 contém o vetor de movimento para frente MV21 referindo-se à imagem P22 e um vetor de movimento para frente MV22 referindo-se à imagem P23 como apresentado na figura 16, um vetor de movimento MV22' do bloco MB1 é calculado utilizando somente um vetor de movimento MV22 que refere-se a uma imagem P22 próxima a uma imagem corrente P23 na ordem de exibição por uma equação seguinte. MV22' = MV22 x TR227TR22 [00166] Então, a compensação de movimento é executada a partir da imagem P22 utilizando o vetor de movimento MV22'.As for the first method, when an MB2 block in a reference image P24 contains the forward motion vector MV21 referring to the image P22 and a forward motion vector MV22 referring to the image P23 as shown in Figure 16, a motion vector MV22 'of block MB1 is calculated using only one motion vector MV22 which refers to an image P22 next to a current image P23 in the order of display by a following equation. MV22 '= MV22 x TR227TR22 [00166] Then motion compensation is performed from image P22 using motion vector MV22'.
[00167] Como o segundo método, quando um bloco MB2 de uma imagem de referência P24 contém um vetor de movimento para frente MV21 referindo-se a uma imagem P21 e um vetor de movimento para frente MV22 referindo-se a uma imagem P22 como apresentado na figura 17, um vetor de movimento MV21' do bloco MB1 é calculado utilizando somente um vetor de movimento MV21 que refere-se a uma imagem P21 estando longe de uma imagem corrente P23 na ordem de exibição por uma equação seguinte. MV21' = MV21 x TR217TR21 [00168] Então, a compensação de movimento é executada a partir da imagem P21 utilizando o vetor de movimento MV21'.As the second method, when an MB2 block of a reference image P24 contains a forward motion vector MV21 referring to an image P21 and a forward motion vector MV22 referring to an image P22 as shown. In Figure 17, a motion vector MV21 'of block MB1 is calculated using only one motion vector MV21 which refers to an image P21 being far from a current image P23 in the order of display by a following equation. MV21 '= MV21 x TR217TR21 [00168] Then motion compensation is performed from image P21 using motion vector MV21'.
[00169] O primeiro e o segundo métodos tornam possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento desde que o bloco MB2 pertencendo a uma imagem P24, cujo referido vetor de movimento pode realizar a compensação de movimento por armazenar somente um de dois vetores de movimento.[00169] The first and second methods make it possible to reduce the capacity of a motion vector storage unit as long as the MB2 block belonging to an image P24, said motion vector of which can perform motion compensation by storing only one of Two motion vectors.
[00170] Observe que a compensação de movimento pode ser executada a partir de uma imagem P22 próxima na ordem de exibição, utilizando o vetor de movimento para frente MV21 da mesma forma que na primeira modalidade. Um vetor de movimento MVN (não apresentado nesta figura) utilizado para a compensação de movimento é calculado por uma equação seguinte. MVN = MV21 x TR227TR21 [00171] Como o terceiro método, como apresentado na figura 18, um bloco de compensação de movimento é obtido a partir das imagens P21 e P22 respectivamente utilizando os vetores de movimento MV21' e MV22' calculados acima e uma imagem média é utilizada como uma imagem de interpolação na compensação de movimento.Note that motion compensation can be performed from a nearby image P22 in the order of display using the forward motion vector MV21 in the same way as in the first embodiment. An MVN motion vector (not shown in this figure) used for motion compensation is calculated by a following equation. MVN = MV21 x TR227TR21 As the third method, as shown in Figure 18, a motion compensation block is obtained from images P21 and P22 respectively using the motion vectors MV21 'and MV22' calculated above and an image Average is used as a tween image in motion compensation.
[00172] O terceiro método aumenta a quantidade calculada, entretanto, aperfeiçoa a precisão da compensação de movimento.[00172] The third method increases the calculated amount, however, it improves the accuracy of motion compensation.
[00173] Além disso, é possível obter um bloco de compensação de movimento a partir da imagem P22 utilizando os vetores de movimento mencionados acima MVN e MV22' e utilizar uma imagem média como uma imagem de interpolação na compensação de movimento.In addition, it is possible to obtain a motion compensation block from image P22 using the motion vectors mentioned above MVN and MV22 'and to use an average image as an interpolation image in motion compensation.
[00174] Observe que nesta modalidade, o caso em que um vetor de movimento utilizado no modo direto é calculado por se ajustar a escala de um vetor de movimento referenciado utilizando um intervalo de tempo entre as imagens é explicado, entretanto, o vetor de movimento pode ser calculado pela multiplicação de um vetor de movimento de referência por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodi-ficação é executada com base em vários blocos ou com base em vá- rias imagens.Note that in this embodiment, the case where a motion vector used in direct mode is calculated by adjusting the scale of a referenced motion vector using a time interval between images is explained, however, the motion vector can be calculated by multiplying a reference motion vector by a constant number. Here, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images.
[00175] Observe que, nas equações mencionadas acima para calcular os vetores de movimento MV21', MV22' e MVN, os vetores de movimento podem ser arredondados para uma precisão predeterminada de um vetor de movimento após calcular o lado direito das equações. A precisão do vetor de movimento inclui a precisão de meio pixel, a precisão de um terço do pixel e a precisão de um quarto do pixel ou semelhantes. Em adição, a precisão de um vetor de movimento pode ser determinada, por exemplo, com base no bloco, com base na imagem e com base na seqüência. (Sétima Modalidade) [00176] Na sexta modalidade acima, o caso quando uma imagem de referência utilizada para determinar um vetor de movimento de um bloco corrente a ser codificado ou decodificado contém dois vetores de movimento para frente no modo direto é descrito. Os dois vetores de movimento para frente referem-se às duas imagens precedentes na ordem de exibição. Entretanto, quando a imagem de referência contém dois vetores de movimento para trás que referem-se às duas imagens seguintes na ordem de exibição, é possível da mesma forma calcular um vetor de movimento corrente por ajustar a escala somente de um dos dois vetores de movimento para trás (os segundos vetores de movimento cuja imagem de referência é especificada pelos segundos índices de referência). Será dada explicação utilizando as figuras 17 até 20 abaixo. Observe que o bloco MB1 é um bloco corrente de processo, os blocos MB1 e MB2 são blocos do mesmo local em outras imagens e os vetores de movimento MV24 e MV25 são vetores de movimento para trás (os segundos vetores de movimento cuja imagem de referência é especificada pelos segundos índices de referência) utilizados para codificação ou decodificação do bloco MB2. As imagens P21, P23, P24 e P25 são imagens codificadas ou decodificadas. Um intervalo de tempo TR24 é um intervalo de tempo entre a imagem P23 e a imagem P24; um intervalo de tempo TR25 é um intervalo de tempo entre a imagem P23 e a imagem P25; um intervalo de tempo TR24' é um intervalo de tempo entre P22 e a imagem P25; e um intervalo de tempo TR25' é um intervalo de tempo entre P22 e a imagem P25.Note that in the equations mentioned above for calculating motion vectors MV21 ', MV22' and MVN, motion vectors can be rounded to a predetermined precision of a motion vector after calculating the right side of the equations. Motion vector accuracy includes half-pixel precision, one-third pixel accuracy, and one-quarter pixel accuracy or the like. In addition, the accuracy of a motion vector can be determined, for example, block-based, image-based, and sequence-based. (Seventh Modality) In the sixth embodiment above, the case when a reference image used to determine a motion vector of a current block to be encoded or decoded contains two forward motion vectors in direct mode is described. The two forward motion vectors refer to the two preceding images in the display order. However, when the reference image contains two backward motion vectors that refer to the next two images in the display order, it is likewise possible to calculate a current motion vector by scaling only one of the two motion vectors. backward (the second motion vectors whose reference image is specified by the second reference indices). Explanation will be given using figures 17 to 20 below. Note that MB1 block is a current process block, MB1 and MB2 blocks are blocks of the same location in other images, and motion vectors MV24 and MV25 are backward motion vectors (the second motion vectors whose reference image is specified by the second reference indices) used for MB2 block encoding or decoding. P21, P23, P24 and P25 images are encoded or decoded images. A time interval TR24 is a time interval between picture P23 and picture P24; a time interval TR25 is a time interval between picture P23 and picture P25; a time interval TR24 'is a time interval between P22 and picture P25; and a time interval TR25 'is a time interval between P22 and image P25.
[00177] Como o primeiro método, quando um bloco MB2 de uma imagem de referência P23 contém dois vetores de movimento para trás MV24 referindo-se a uma imagem P24 e MV25 referindo-se a uma imagem P25 como apresentado na figura 19, um vetor de movimento MV24' do bloco MB1 é calculado utilizando somente um vetor de movimento para trás MV24 que refere-se a uma imagem P24 estando temporariamente próxima de uma imagem corrente P22 por uma equação seguinte. MV24' = MV24 x TR247TR24 [00178] Então, a compensação de movimento é executada a partir da imagem P24 utilizando o vetor de movimento MV24'.As the first method, when an MB2 block of a reference image P23 contains two backward motion vectors MV24 referring to an image P24 and MV25 referring to an image P25 as shown in Figure 19, a vector MV24 'of the MB1 block is calculated using only one backward motion vector MV24 which refers to a picture P24 being temporarily close to a current picture P22 by a following equation. MV24 '= MV24 x TR247TR24 [00178] Then motion compensation is performed from image P24 using motion vector MV24'.
[00179] Observe que a compensação de movimento pode ser executada a partir de uma imagem P23 próxima na ordem de exibição, utilizando um vetor de movimento para trás MV24 da mesma forma que na primeira modalidade. Um vetor de movimento MVN1 (não apresentado nesta figura) utilizado para a compensação de movimento é calculado por uma equação seguinte. MVN1 = MV24 x TRN1/TR24 [00180] Como ao segundo método, quando um bloco MB2 de uma imagem de referência P23 contém dois vetores de movimento para trás MV24 referindo-se a uma imagem P24 e MV25 referindo-se a uma imagem P25 como apresentado na figura 20, um vetor de movimento MV25' do bloco MB1 é calculado utilizando somente um vetor de movimento para trás MV25 o qual refere-se a uma imagem P25 distante de uma imagem corrente P23 na ordem de exibição por uma equação seguinte. MV25' = MV25 x TR257TR25 [00181] Então, a compensação de movimento é executada a partir da imagem P25 utilizando o vetor de movimento MV25'.Note that motion compensation can be performed from a nearby image P23 in the display order using a backward motion vector MV24 in the same manner as in the first embodiment. An MVN1 motion vector (not shown in this figure) used for motion compensation is calculated by a following equation. MVN1 = MV24 x TRN1 / TR24 As with the second method, when an MB2 block of a reference image P23 contains two backward motion vectors MV24 referring to an image P24 and MV25 referring to an image P25 as shown in Fig. 20, a motion vector MV25 'of block MB1 is calculated using only one backward motion vector MV25 which refers to a picture P25 distant from a current picture P23 in the order of display by a following equation. MV25 '= MV25 x TR257TR25 [00181] Then motion compensation is performed from image P25 using motion vector MV25'.
[00182] O primeiro e o segundo métodos tornam possível reduzir a capacidade de uma unidade de armazenamento de vetor de movimento desde que o bloco MB2 pertencendo a uma imagem P23 cujo vetor de movimento é referido pode implementar a compensação de movimento por armazenar somente um de dois vetores de movimento.The first and second methods make it possible to reduce the capacity of a motion vector storage unit since the MB2 block belonging to a P23 image whose motion vector is referred to can implement motion compensation by storing only one of Two motion vectors.
[00183] Observe que uma compensação de movimento pode ser executada a partir de uma imagem P23 próxima na ordem de exibição, utilizando um vetor e movimento para trás MV25 da mesma forma que na primeira modalidade. Um vetor de movimento MVN2 (não apresentado nesta figura) utilizado para a compensação de movimento é calculado utilizando uma equação seguinte. MVN2 = MV25 x TRN1/TR25 [00184] Como o terceiro método, como apresentado na figura 21, um bloco de compensação de movimento é obtido a partir das imagens P24 e P25, respectivamente, utilizando os vetores de movimento MV24' e MV25' calculados acima e uma imagem média é utilizada como uma imagem de interpolação em uma compensação de movimento.Note that motion compensation can be performed from a nearby image P23 in the display order, using a vector and backward motion MV25 in the same way as in the first mode. An MVN2 motion vector (not shown in this figure) used for motion compensation is calculated using a following equation. MVN2 = MV25 x TRN1 / TR25 As the third method, as shown in Figure 21, a motion compensation block is obtained from images P24 and P25, respectively, using the calculated motion vectors MV24 'and MV25'. above and an average image is used as an interpolation image in a motion compensation.
[00185] O terceiro método aumenta a quantidade de cálculo, entretanto, aperfeiçoa a precisão da compensação de movimento.[00185] The third method increases the amount of calculation, however, it improves the accuracy of motion compensation.
[00186] Observe que, é possível obter um bloco de compensação de movimento a partir da imagem P24 utilizando os vetores de movimento MVN1 e MVN2 mencionados acima e utilizar uma imagem média como uma imagem de interpolação na compensação de movimento.Note that it is possible to obtain a motion compensation block from image P24 using the motion vectors MVN1 and MVN2 mentioned above and use an average image as an interpolation image in motion compensation.
[00187] Além disso, como apresentado na figura 22, quando uma imagem de referência referida de modo a determinar um vetor de movimento de um vetor de movimento corrente no modo direto contém um vetor de movimento para trás que refere-se a uma imagem seguinte na ordem de exibição, por exemplo, um vetor de movimento MV24' é calculado utilizando uma equação seguinte. MV24' = MV24 x TR247TR24 [00188] Então, a compensação de movimento é executada a partir da imagem P24 utilizando o vetor de movimento MV24'.Furthermore, as shown in Fig. 22, when a reference image referenced to determine a motion vector of a direct motion current motion vector contains a backward motion vector that refers to a following image. In display order, for example, a motion vector MV24 'is calculated using a following equation. MV24 '= MV24 x TR247TR24 [00188] Then motion compensation is performed from image P24 using motion vector MV24'.
[00189] Observe que a compensação de movimento pode ser executada a partir de uma imagem P23 próxima na ordem de exibição, utilizando um vetor de movimento para trás MV25 da mesma forma que na primeira modalidade. Um vetor de movimento MVN3 (não apresentado nesta figura) utilizado para a compensação de movimento é calculado por uma equação seguinte. MVN3 = MV24 x TRN1/TR24 [00190] Observe que nesta modalidade, o caso quando um vetor de movimento corrente é calculado pelo ajuste da escala do vetor de movimento para trás é explicado, quando contendo dois vetores de movimento para trás, os quais se referem às duas imagens seguintes na ordem de exibição e quando contendo um vetor de movimento para trás, o qual refere-se a uma imagem seguinte na ordem de exibição. Entretanto, um vetor de movimento corrente pode ser calculado refe-rindo-se a um vetor de movimento de um bloco vizinho em uma mesma imagem sem utilizar um vetor de movimento para trás e quando a codificação intraimagem é executada, um vetor de movimento corrente pode ser calculado referindo-se a um vetor de movimento de um bloco vizinho em uma mesma imagem.Note that motion compensation can be performed from a nearby image P23 in the display order using a backward motion vector MV25 in the same manner as in the first embodiment. An MVN3 motion vector (not shown in this figure) used for motion compensation is calculated by a following equation. MVN3 = MV24 x TRN1 / TR24 [00190] Note that in this embodiment, the case when a current motion vector is calculated by scaling the backward motion vector is explained when containing two backward motion vectors, which are refer to the next two images in the display order and when containing a backward motion vector, which refers to a following image in the display order. However, a current motion vector can be calculated by referring to a motion vector of a neighboring block in the same image without using a backward motion vector and when intra-image coding is performed, a current motion vector can be calculated by referring to a motion vector of a neighboring block in the same image.
[00191] Em primeiro lugar, o primeiro método de cálculo será descrito.Firstly, the first calculation method will be described.
[00192] A figura 23 apresenta uma relação de posição entre um ve- tor de movimento a ser referido e um bloco corrente. Um bloco MB1 é um bloco corrente e refere-se a um vetor de movimento de um bloco incluindo três pixels localizados em A, B e C. Observe que quando um pixel C não pode ser referido desde que ele localiza-se fora de um quadro ou ele não foi codificado/decodificado, um vetor de movimento de um bloco incluindo um pixel D é utilizado em vez de um bloco incluindo o pixel C. Por calcular um valor médio dos vetores de movimento de três blocos correntes incluindo os pixels A, B e C a serem referidos, um vetor de movimento utilizado realmente no modo direto é determinado. Por calcular um valor médio dos vetores de movimento dos três blocos, informação adicional apresentando qual vetor de movimento é selecionado não é necessária de ser descrita em um fluxo de bits. Por conseqüência, é possível obter um vetor de movimento expressando o movimento próximo do movimento real do bloco MB1. Neste caso, a compensação de movimento pode ser executada por somente referência para frente (referência à primeira imagem de referência) utilizando o vetor de movimento determinado e por referência bidirecional (referência à primeira imagem de referência e à segunda imagem de referência) utilizando um vetor de movimento paralelo com o vetor de movimento determinado.[00192] Figure 23 shows a position relationship between a motion vehicle to be referred to and a current block. An MB1 block is a current block and refers to a motion vector of a block including three pixels located at A, B, and C. Note that when a pixel C cannot be referenced since it is outside a frame or it was not encoded / decoded, a motion vector of a block including a pixel D is used instead of a block including pixel C. By calculating an average value of the motion vectors of three current blocks including pixels A, B and C to be referred to, a motion vector actually used in direct mode is determined. By calculating an average value of the motion vectors of the three blocks, additional information showing which motion vector is selected need not be described in a bit stream. Accordingly, it is possible to obtain a motion vector expressing the motion close to the actual motion of block MB1. In this case, motion compensation can be performed by forward reference only (reference to first reference image) using the determined motion vector and by bidirectional reference (reference to first reference image and second reference image) using a vector of parallel motion with the determined motion vector.
[00193] A seguir, o segundo método de cálculo será descrito.Next, the second calculation method will be described.
[00194] Sob o segundo método de cálculo, um valor médio não é selecionado como no primeiro método de cálculo e um vetor de movimento utilizado no modo direto real é determinado por selecionar-se um vetor de movimento cuja eficiência de codificação seja a mais elevada dos vetores de movimento dos três blocos incluindo os pixels A, B e C. Neste caso, a compensação de movimento pode ser executada por somente referência para frente (referência à primeira imagem de referência), utilizando o vetor de movimento determinando e por referência bidirecional (referência à primeira imagem de referência e à se- gunda imagem de referência) utilizando um vetor de movimento paralelo ao vetor de movimento determinado. A informação indicando um vetor de movimento com a mais elevada eficiência de codificação, por exemplo, é como apresentada na figura 24A, adicionada para uma área de cabeçalho de um bloco em um fluxo de bits gerado por uma unidade de geração de fluxo de bits 103 com a informação indicando um modo direto emitido a partir de uma unidade de seleção de modo 107. Observe que como apresentado na figura 24B, a informação indicando um vetor de movimento com a eficiência de codificação mais elevada pode ser adicionada para uma área de cabeçalho de um ma-crobloco. Aqui, a informação indicando um vetor de movimento com a eficiência de codificação mais elevada é, por exemplo, um número identificando um bloco incluindo um pixel corrente a ser referido e um número de identificação dado para cada bloco. Quando um bloco é identificado pelo número de identificação, um vetor de movimento com a eficiência mais elevada pode ser indicado por se utilizar somente um dos vetores de movimento utilizados para codificação de um bloco correspondendo a um número de identificação e quando os vetores de movimento são mais do que 1, um vetor de movimento com a eficiência de codificação mais elevada pode ser indicado por se utilizar vários vetores de movimento. Ou, um vetor de movimento com a eficiência mais elevada pode ser indicado pela utilização de um número de identificação dado para cada bloco para cada vetor de movimento na direção dupla (referência à primeira imagem de referência e à segunda imagem de referência). Este método de seleção torna possível sempre selecionar um vetor de movimento que torna a eficiência da codificação mais elevada. Entretanto, desde que a informação adicional apresentando que vetor de movimento é selecionado precisa ser descrita em um fluxo de bits, quantidade extra de código para a informação adicional é necessária. Em adição, o terceiro método de cálculo é expli- cado.Under the second calculation method, an average value is not selected as in the first calculation method and a motion vector used in real direct mode is determined by selecting a motion vector whose coding efficiency is the highest. of the motion vectors of the three blocks including pixels A, B and C. In this case, motion compensation can be performed by forward reference only (reference to the first reference image) using the determining motion vector and by bidirectional reference. (reference to first reference image and second reference image) using a motion vector parallel to the determined motion vector. Information indicating a motion vector with the highest coding efficiency, for example, is as shown in Fig. 24A, added to a block header area in a bit stream generated by a bit stream generating unit 103. with information indicating a direct mode output from a mode selection unit 107. Note that as shown in Fig. 24B, information indicating a motion vector with the highest encoding efficiency may be added to a header area of A croblock. Here, the information indicating a motion vector with the highest coding efficiency is, for example, a number identifying a block including a current pixel to be referred to and a given identification number for each block. When a block is identified by the identification number, a motion vector with the highest efficiency may be indicated by using only one of the motion vectors used to encode a block corresponding to an identification number and when the motion vectors are more than 1, a motion vector with the highest coding efficiency may be indicated by using multiple motion vectors. Or, a motion vector with the highest efficiency may be indicated by using an identification number given for each block for each motion vector in the double direction (reference to first reference image and second reference image). This selection method always makes it possible to select a motion vector that makes coding efficiency higher. However, since additional information showing which motion vector is selected needs to be described in a bitstream, extra amount of code for the additional information is required. In addition, the third method of calculation is explained.
[00195] Sob o terceiro método de cálculo, um vetor de movimento referindo-se a uma imagem de referência com o menor índice de referência é determinado como um vetor de movimento utilizado em um modo direto real. O menor índice de referência significa geralmente um vetor de movimento que refere-se a uma imagem próxima na ordem de exibição ou a um vetor de movimento com a eficiência de codificação mais elevada. Portanto, este método de seleção de vetor de movimento torna possível aperfeiçoar a eficiência da codificação, desde que um vetor de movimento utilizado no modo direto é gerado utilizando um vetor de movimento que refere-se a uma imagem mais próxima na ordem de exibição ou a um vetor de movimento com a eficiência de codificação mais elevada.Under the third method of calculation, a motion vector referring to a reference image with the lowest reference index is determined as a motion vector used in a real direct mode. The lowest reference index generally means a motion vector that refers to a close image in the display order or a motion vector with the highest encoding efficiency. Therefore, this motion vector selection method makes it possible to improve coding efficiency, since a motion vector used in direct mode is generated using a motion vector that refers to a closer image in the display order or a motion vector with the highest coding efficiency.
[00196] Observe que quanto todos os três vetores de movimento referem-se a uma mesma imagem de referência, um valor médio dos três vetores de movimento pode ser utilizado. Por outro lado, quando dois dos três vetores de movimento referem-se a uma imagem de referência com o menor valor do índice de referência, por exemplo, o mesmo dos dois vetores de movimento pode sempre ser selecionado. Como um exemplo, referindo-se à figura 23, existem três blocos incluindo os pixels A, B e C, respectivamente e quando os valores de índice de referência dos blocos incluindo os pixels A e B são os menores e a mesma imagem de referência é referida, um vetor de movimento no bloco incluindo o pixel A pode ser selecionado. Entretanto, quando os valores de índice de referência dos blocos incluindo os pixel A e C são os menores e a mesma imagem de referência é referida, um vetor de movimento em um bloco BL1 incluindo o pixel A localizado mais próximo de um bloco pode ser selecionado.Note that as all three motion vectors refer to the same reference image, an average value of the three motion vectors can be used. On the other hand, when two of the three motion vectors refer to a reference image with the smallest reference index value, for example, the same of the two motion vectors can always be selected. As an example, referring to Fig. 23, there are three blocks including pixels A, B and C respectively and when the reference index values of blocks including pixels A and B are the smallest and the same reference image is referred to, a motion vector in the block including pixel A may be selected. However, when the reference index values of blocks including pixels A and C are the smallest and the same reference image is referred to, a motion vector in a BL1 block including pixel A located closest to a block may be selected. .
[00197] Observe que o valor médio mencionado acima pode ser um valor médio de componentes na direção horizontal e na direção vertical de cada vetor de movimento e pode ser um valor médio do valor (valor absoluto) de cada vetor de movimento.Note that the mean value mentioned above can be an average value of components in the horizontal and vertical direction of each motion vector and can be an average value of the value (absolute value) of each motion vector.
[00198] No caso como apresentado na figura 25, um valor médio dos vetores de movimento pode ser um valor médio dos vetores de movimento contidos em 5 blocos: um bloco localizado de um bloco BL1 em uma imagem de referência seguinte; blocos incluindo os pixels A, B e C, respectivamente; +++ e um bloco incluindo um pixel D apresentado na figura 25. Como descrito acima, quando um bloco do mesmo local, o qual está próximo de um pixel corrente a ser codificado, do bloco BL1 em uma imagem de referência seguinte é utilizado, um processo para calcular um valor médio dos vetores de movimento torna-se mais fácil pela utilização de um bloco incluindo o pixel D de modo a tornar o número de blocos um número ímpar. Observe que quando vários blocos estão em uma área do mesmo local do bloco BL1 em uma imagem de referência seguinte, uma compensação de movimento pode ser executada para o bloco BL1 pela utilização de um vetor de movimento em um bloco que ocupa a maior área sobreposta com o bloco BL1, ou por dividir o bloco BL1 correspondendo à área dos vários blocos na imagem de referência seguinte e uma compensação de movimento pode ser executada com base no bloco divido.In the case as shown in Figure 25, an average value of motion vectors may be an average value of motion vectors contained in 5 blocks: a block located of a BL1 block in a following reference image; blocks including pixels A, B and C, respectively; +++ is a block including a pixel D shown in Figure 25. As described above, when a block of the same location, which is close to a current pixel to be encoded, of block BL1 in a following reference image is used, A process for calculating an average value of motion vectors is made easier by using a block including pixel D to make the number of blocks an odd number. Note that when multiple blocks are in an area of the same location as block BL1 in a following reference image, motion compensation can be performed for block BL1 by using a motion vector in a block that occupies the largest overlapping area with block BL1, or by dividing block BL1 corresponding to the area of the various blocks in the following reference image and motion compensation can be performed based on the split block.
[00199] Uma explicação será adicionalmente dada utilizando exemplo concretos.[00199] An explanation will be additionally given using concrete examples.
[00200] Como apresentado nas figuras 26 e 27, quando todos os blocos incluindo os pixels A, B e C contém um vetor de movimento que refere-se a uma imagem precedente a uma imagem corrente a ser codificada, qualquer um dentre os primeiro até o terceiro métodos de cálculo mencionados acima pode ser utilizado.As shown in Figures 26 and 27, when all blocks including pixels A, B and C contain a motion vector that refers to an image preceding a current image to be encoded, any one of the first to The third calculation methods mentioned above can be used.
[00201] Da mesma forma, como apresentado nas figuras 28 e 29, quando todos os blocos incluindo os pixels A, B e C contém um vetor de movimento que refere-se a uma imagem seguinte a uma imagem corrente a ser codificada, qualquer um dentre o primeiro até o terceiro métodos de cálculo pode ser utilizado.Likewise, as shown in Figures 28 and 29, when all blocks including pixels A, B and C contain a motion vector that refers to an image following a current image to be encoded, either from the first to the third calculation methods can be used.
[00202] A seguir, o caso apresentado na figura 30 é explicado. A figura 30 apresenta o caso em que cada um dos blocos incluindo os pixels A, B e C respectivamente contém cada um dos vetores de movimento, um refere-se a imagem precedente a uma imagem corrente a ser codificada e outro refere-se a uma imagem seguinte à imagem corrente a ser codificada.In the following, the case shown in figure 30 is explained. Figure 30 shows the case where each of the blocks including pixels A, B and C respectively contain each of the motion vectors, one refers to the image preceding a current image to be encoded and another refers to a image following the current image to be encoded.
[00203] De acordo com o primeiro método de cálculo, um vetor de movimento para frente utilizado para a compensação de movimento do bloco BL1 é selecionado por um valor médio dos vetores MVAf, MVBf e MVCf e um vetor de movimento para trás utilizado para compensação de movimento do bloco BL1 é selecionado por um valor médio dos vetores MVAb, MVBb e MVCb. Aqui, o vetor de movimento MVAf é um vetor de movimento para frente de um bloco contendo o pixel A, o vetor de movimento MVAb é um vetor de movimento para trás de um bloco contendo o pixel A, o vetor de movimento MVBf é um vetor de movimento para frente de um bloco contendo o pixel B, o vetor de movimento MVBb é um vetor de movimento para trás de um bloco contendo o pixel B, o vetor de movimento MVCf é um vetor de movimento para frente de um bloco contendo o pixel C, o vetor de movimento MVCb é um vetor de movimento para trás de um bloco contendo o pixel C. Os vetores de movimento tal como o vetor de movimento MVAf não estão limitados ao caso referindo-se a uma imagem como apresentado na figura. O mesmo se aplica para a explicação seguinte.According to the first calculation method, a forward motion vector used for BL1 motion compensation is selected by an average value of the MVAf, MVBf, and MVCf vectors and a backward motion vector used for compensation. Block BL1 is selected by an average value of the vectors MVAb, MVBb and MVCb. Here, the motion vector MVAf is a forward motion vector of a block containing pixel A, the motion vector MVAb is a backward motion vector of a block containing pixel A, the motion vector MVBf is a vector forward motion of a block containing pixel B, the motion vector MVBb is a backward motion vector of a block containing pixel B, the motion vector MVCf is a forward motion vector of a block containing pixel C, motion vector MVCb is a backward motion vector of a block containing pixel C. Motion vectors such as motion vector MVAf are not limited to the case by referring to an image as shown in the figure. The same applies to the following explanation.
[00204] De acordo com o segundo método de cálculo, um vetor de movimento a ser utilizado no modo direto real é determinado pela seleção de um vetor de movimento com a eficiência de codificação mais elevada dos vetores de movimento de referência para frente MVAf, MVBf e MVCf e pela seleção de um vetor de movimento com a eficiên- cia de codificação mais elevada dentre os vetores de movimento de referência para trás MVAb, MVBb e MVCb. Neste caso, a compensação de movimento pode ser executada por somente referência para frente utilizando um vetor com a eficiência de codificação mais elevada dentre os vetores de movimento de referência para frente MVAf, MVBf e MVCf e pelo prognóstico duplo utilizando um vetor de movimento paralelo ao vetor de movimento determinado. Observe que, de modo a alcançar a eficiência de codificação mais elevada, uma compensação de movimento pode ser executada por se selecionar um bloco e utilizar os vetores de movimento de referência para frente e para trás do bloco selecionado em vez da seleção em relação aos vetores de movimento de referência para frente e para trás respectivamente. Neste caso, desde que a informação indicando uma seleção possa ser reduzida se comparado com o caso em que selecionar a informação indicando um bloco que contém um pixel possuindo um vetor de movimento para frente selecionado em relação à eficiência de codificação mais elevada e um bloco que contém um pixel possuindo um vetor de movimento para trás selecionado em relação a eficiência de codificação mais elevada, a eficiência da codificação poderá ser aperfeiçoada. A seleção do bloco pode ser a partir do seguinte: 1. Um bloco inclui um pixel possuindo um vetor de movimento de referência para frente que refere-se a uma imagem de referência com o menor valor de índice de referência; 2. Um bloco possui o menor valor que é uma soma de um valor de índice de referência de uma imagem referida por um vetor de movimento de referência para frente de um bloco incluindo cada pixel e um valor de índice de referência de uma imagem referida por um vetor de movimento de referência para trás de um bloco incluindo cada pixel; 3. Um bloco seleciona um valor médio de índices de referência de uma imagem referida por um vetor de movimento de referência para frente e inclui um pixel possuindo um vetor de movimento de referência para frente com o valor médio selecionado e um vetor de movimento para trás está incluído no bloco; e 4. Um bloco seleciona um valor médio de índices de referência em uma imagem referida por um vetor de movimento de referência para trás e inclui um pixel possuindo um vetor de movimento para trás com o valor médio selecionado e um vetor de movimento para frente está incluído no bloco. Observe que quando cada um dos vetores de movimento para trás refere-se a uma mesma imagem, a seleção do método 1 e do método 3 é apropriada.According to the second calculation method, a motion vector to be used in real direct mode is determined by selecting a motion vector with the highest coding efficiency of the forward reference motion vectors MVAf, MVBf. and MVCf and by selecting a motion vector with the highest coding efficiency among the back reference motion vectors MVAb, MVBb and MVCb. In this case, motion compensation can be performed by forward reference only using a vector with the highest coding efficiency among the forward reference motion vectors MVAf, MVBf, and MVCf and by double prediction using a parallel motion vector. Determined motion vector. Note that in order to achieve the highest coding efficiency, motion compensation can be performed by selecting a block and using the forward and backward reference motion vectors of the selected block instead of selecting against the vectors. forward and backward reference movements respectively. In this case, as long as the information indicating a selection can be reduced compared to the case where selecting information indicating a block containing a pixel having a selected forward motion vector with respect to the highest coding efficiency and a block containing contains a pixel having a selected backward motion vector with respect to the highest coding efficiency, the coding efficiency may be improved. The block selection can be from the following: 1. A block includes a pixel having a forward reference motion vector that refers to a reference image with the lowest reference index value; 2. A block has the smallest value which is a sum of a reference index value of an image referred to by a forward reference motion vector of a block including each pixel and a reference index value of an image referred to by a reference motion vector behind a block including each pixel; 3. A block selects an average reference index value from an image referred to by a forward reference motion vector and includes a pixel having a forward reference motion vector with the selected average value and a backward motion vector. is included in the block; and 4. A block selects an average reference index value in an image referred to by a backward reference motion vector and includes a pixel having a backward motion vector with the selected mean value and a forward motion vector. included in the block. Note that when each of the backward motion vectors refers to the same image, the selection of method 1 and method 3 is appropriate.
[00205] De acordo com o terceiro método de cálculo, um dos vetores de movimento de referência para frente MVAf, MVBf e MVCf, o qual refere-se a uma imagem de referência com o menor valor de índice de referência, é um vetor de movimento de referência para frente (a primeira referência) utilizado no modo direto. Ou, um dos vetores de movimento de referência para trás MVAb, MVBb e MVCb, o qual refere-se a uma imagem de referência com o menor valor de índice de referência, é um vetor de movimento de referência para trás (a segunda referência) utilizado no modo direto. Observe que, no terceiro método de cálculo, o vetor de movimento para frente referindo-se à imagem de referência com o menor índice de referência é um vetor de movimento para frente de um bloco BL1 e o vetor de movimento para trás referindo-se à imagem de referência com o menor índice de referência é um vetor de movimento para trás do bloco BL1, entretanto, dois vetores de movimento BL1 e BL2 podem ser derivados utilizando-se um dentre um vetor de movimento para frente ou um vetor de movimento para trás referindo-se a uma imagem de referência com o menor índice de referência e a compensação de movimento pode ser executada utilizando o vetor de movimento derivado.According to the third method of calculation, one of the forward reference motion vectors MVAf, MVBf and MVCf, which refers to a reference image with the lowest reference index value, is a vector of forward reference movement (the first reference) used in direct mode. Or, one of the back reference motion vectors MVAb, MVBb and MVCb, which refers to a reference image with the lowest reference index value, is a backward reference motion vector (the second reference). used in direct mode. Note that in the third calculation method, the forward motion vector referring to the reference image with the lowest reference index is a forward motion vector of a BL1 block and the backward motion vector referring to the The reference image with the lowest reference index is a backward motion vector of block BL1, however, two motion vectors BL1 and BL2 can be derived using one of a forward motion vector or a backward motion vector. referring to a reference image with the lowest reference index and motion compensation can be performed using the derived motion vector.
[00206] A seguir, o caso apresentado na figura 31 é explicado. A figura 31 apresenta um caso em que o pixel A contém cada um dos vetores de movimento, um refere-se à imagem precedente e outro refe- re-se a uma imagem seguinte, o pixel B contém somente um vetor de movimento que refere-se a uma imagem precedente e o pixel C contém somente um vetor de movimento que refere-se a uma imagem seguinte.Next, the case shown in Figure 31 is explained. Fig. 31 presents a case where pixel A contains each of the motion vectors, one refers to the preceding image and the other to a following image, pixel B contains only one motion vector to refers to a preceding image and pixel C contains only one motion vector that refers to a following image.
[00207] Assim, quando existe um bloco incluindo um pixel contendo somente um vetor de movimento referindo-se à imagem unidirecional-mente, assumindo que um vetor de movimento referindo-se a uma imagem em outra direção é 0, o método de cálculo na figura 30 mencionada acima pode ser utilizado para a compensação de movimento. Especificamente, utilizando o primeiro ou o terceiro método de cálculo na figura 30, o cálculo pode ser executado assumindo MVCf = MVBb = 0. Ou seja, no primeiro método de cálculo, quando um vetor de movimento para frente do bloco BL1 é calculado, assumindo que um vetor de movimento MVCf do pixel C referindo-se a uma imagem precedente é 0, um valor médio dos vetores de movimento MVAf, MVBf e MVCf é calculado. Por outro lado, quando um vetor de movimento para trás do bloco BL1 é calculado, assumindo um vetor de movimento MVBb, o qual refere-se a uma imagem seguinte, do pixel B é 0, um valor médio dos vetores de movimento MVAb, MVBb e MVCb é calculado.Thus, when there is a block including a pixel containing only one motion vector referring to the image unidirectionally, assuming that a motion vector referring to an image in another direction is 0, the calculation method in the Figure 30 mentioned above can be used for motion compensation. Specifically, using the first or third calculation method in figure 30, the calculation can be performed by assuming MVCf = MVBb = 0. That is, in the first calculation method, when a forward motion vector of block BL1 is calculated, assuming whereas a motion vector MVCf of pixel C referring to a preceding image is 0, an average value of motion vectors MVAf, MVBf and MVCf is calculated. On the other hand, when a backward motion vector of block BL1 is calculated, assuming a motion vector MVBb, which refers to a following image, of pixel B is 0, an average value of motion vectors MVAb, MVBb and MVCb is calculated.
[00208] De acordo com o terceiro método de cálculo, assumindo que um vetor de movimento MVCf, o qual refere-se a uma imagem precedente, do pixel C e um vetor de movimento, o qual refere-se a uma imagem seguinte, do pixel B são 0, um vetor de movimento, o qual refere-se a uma imagem de referência com o menor valor de índice de referência, do bloco BL1 é calculado. Por exemplo, quando um bloco incluindo um pixel A refere-se a uma imagem com o primeiro índice de referência "0" e um bloco incluindo um pixel B refere-se a uma imagem com o primeiro índice de referência de "1", o menor valor do índice de referência é "0". Portanto, desde que somente o vetor de movimento MVBf, o qual refere-se a uma imagem precedente, do bloco incluindo o pixel refere-se a uma imagem com o menor primeiro índice de referência, o vetor de movimento MVBf é selecionado como um vetor de movimento para frente do bloco BL1. Além disso, por exemplo, quando ambos pixels A e C referem-se a uma imagem seguinte com o menor segundo índice de referência, por exemplo "0", assumindo que um vetor de movimento MVBb, o qual refere-se a uma imagem seguinte, de um pixel B é 0, um valor médio dos vetores de movimento MVAb, MVBb e MVCb é calculado. O vetor de movimento resultante do cálculo é estabelecido como um vetor de movimento para frente do bloco BL1.According to the third method of calculation, assuming a motion vector MVCf, which refers to a preceding image, of pixel C and a motion vector, which refers to a following image, of the pixel B is 0, a motion vector, which refers to a reference image with the lowest reference index value, from block BL1 is calculated. For example, when a block including a pixel A refers to an image with the first benchmark "0" and a block including a pixel B refers to an image with the first benchmark of "1", the lowest value of the benchmark is "0". Therefore, since only the motion vector MVBf, which refers to a preceding image, the block including the pixel refers to an image with the lowest first reference index, the motion vector MVBf is selected as a vector. forward movement of block BL1. In addition, for example, when both pixels A and C refer to a following image with the lowest second reference index, for example "0", assuming a motion vector MVBb, which refers to a following image. , of a pixel B is 0, an average value of the motion vectors MVAb, MVBb and MVCb is calculated. The motion vector resulting from the calculation is established as a forward motion vector of block BL1.
[00209] A seguir, é explicado um caso apresentado na figura 32. A figura 32 apresenta um caso quando o pixel A contém cada um dos vetores de movimento; um refere-se à imagem precedente e outro refe-re-se a uma imagem seguinte. O pixel B contém somente um vetor de movimento que refere-se a uma imagem precedente e o pixel C não contém um vetor de movimento e é codificado intraimagem.In the following, a case shown in Fig. 32 is explained. Fig. 32 presents a case when pixel A contains each of the motion vectors; one refers to the preceding image and another refers to a following image. Pixel B contains only a motion vector that refers to a preceding image and pixel C does not contain a motion vector and is encoded within the image.
[00210] Quando um bloco incluindo um pixel corrente C a ser codificado é codificado intraimagem, assumindo que os vetores de movimento que referem-se às imagens precedentes e seguintes do bloco são ambos 0, o método de cálculo na figura 30 mencionado acima pode ser utilizado para a compensação de movimento. Especificamente, o cálculo pode ser executado assumindo-se MVCf = MVCb = 0. Observe que, na figura 30, MVBb é 0.When a block including a current pixel C to be encoded is intra-image encoded, assuming that the motion vectors referring to the preceding and following images of the block are both 0, the calculation method in figure 30 mentioned above may be used for motion compensation. Specifically, the calculation can be performed assuming MVCf = MVCb = 0. Note that in Figure 30, MVBb is 0.
[00211] Finalmente, é explicado um caso apresentado na figura 33. A figura 33 apresenta um caso em que um pixel C é codificado pelo modo direto.Finally, a case shown in Fig. 33 is explained. Fig. 33 presents a case where a pixel C is encoded by the direct mode.
[00212] Quando os blocos incluindo um pixel corrente referido contém um bloco codificado pelo modo direto, a compensação de movimento do bloco BL1 pode ser executada utilizando um vetor de movimento utilizado para codificar um bloco codificado pelo modo direto e utilizando o método de cálculo apresentado na figura 30.When blocks including a referenced current pixel contain a direct mode encoded block, motion compensation of the BL1 block may be performed using a motion vector used to encode a direct mode encoded block and using the calculation method shown herein. in figure 30.
[00213] Observe que é determinado qual dentre um vetor de movimento de referência para frente ou para trás é utilizado em relação a uma imagem a ser referida, uma imagem a ser codificada e a informação de tempo incluída em cada imagem. Portanto, quando um vetor de movimento é derivado após diferenciar entre uma referência para frente e uma referência para trás, um vetor de movimento de cada bloco é julgado se é uma referência para frente ou uma referência para trás a partir da informação de tempo contida em cada imagem.Note that it is determined which of a forward or backward reference motion vector is used in relation to an image to be referred to, an image to be encoded, and the time information included in each image. Therefore, when a motion vector is derived after differentiating between a forward reference and a back reference, a motion vector of each block is judged whether it is a forward reference or a back reference from the time information contained in. each picture.
[00214] Em adição, um exemplo de um método de cálculo combinando os métodos de cálculo mencionados acima é explicado. A figura 34 é uma ilustração apresentando um procedimento para determinar um vetor de movimento a ser utilizado no modo direto. A figura 34 é um exemplo de um método para determinar um vetor de movimento utilizando índices de referência. Observe que RidxO e Ridxl apresentados na figura 34 são índices de referência explicados acima. A figura 34A apresenta um procedimento para determinar um vetor de movimento utilizando o primeiro índice de referência RidxO e a figura 34B apresenta um procedimento para determinar um vetor de movimento utilizando o segundo índice de referência Ridxl. Primeiro, a figura 34A é explicada.In addition, an example of a calculation method combining the calculation methods mentioned above is explained. Fig. 34 is an illustration showing a procedure for determining a motion vector to be used in direct mode. Fig. 34 is an example of a method for determining a motion vector using reference indices. Note that RidxO and Ridxl presented in figure 34 are reference indices explained above. Fig. 34A shows a procedure for determining a motion vector using the first reference index RidxO and Fig. 34B shows a procedure for determining a motion vector using the second reference index Ridx1. First, figure 34A is explained.
[00215] Em uma etapa S3701, existem três blocos incluindo os pixels A, B e C respectivamente e o número de blocos referindo-se a uma imagem utilizando o primeiro índice de referência RidxO é calculado.In step S3701, there are three blocks including pixels A, B and C respectively and the number of blocks referring to an image using the first reference index RidxO is calculated.
[00216] Quando o número de blocos calculado na etapa S3701 é "0", o número de blocos referindo-se a uma imagem utilizando o segundo índice de referência Ridxl é adicionalmente calculado em uma etapa S3702. Quando o número de blocos calculados na etapa S3702 é "0", a compensação de movimento é executada bidirecionalmente para um bloco corrente a ser codificado assumindo que um bloco de movimento do bloco corrente a ser codificado é "0" em uma etapa S3703. Por outro lado, quando o número de blocos calculados na etapa S3702 é "1" ou mais, um vetor de movimento de um bloco corrente a ser codificado é determinado em uma etapa S3704 pelo número e blocos contendo o segundo índice de referência Ridxl. Por exemplo, a compensação de movimento de um bloco corrente a ser codificado é executada utilizando o vetor de movimento determinado pelo número de blocos contendo o segundo índice de referência Ridxl.When the number of blocks calculated in step S3701 is "0", the number of blocks referring to an image using the second reference index Ridxl is further calculated in one step S3702. When the number of blocks calculated in step S3702 is "0", motion compensation is performed bidirectionally for a current block to be coded assuming that a motion block of the current block to be coded is "0" in a step S3703. On the other hand, when the number of blocks calculated in step S3702 is "1" or more, a motion vector of a current block to be encoded is determined in step S3704 by the number and blocks containing the second reference index Ridxl. For example, motion compensation of a current block to be encoded is performed using the motion vector determined by the number of blocks containing the second reference index Ridx1.
[00217] Quando o número de blocos calculado na etapa S3701 é "1", um vetor de movimento contendo o primeiro índice de referência RidxO é utilizado em uma etapa S3705.When the number of blocks calculated in step S3701 is "1", a motion vector containing the first reference index RidxO is used in a step S3705.
[00218] Quando o número de blocos calculado na etapa S3701 é "2", um vetor de movimento correspondendo a um valor médio de três vetores de movimento é utilizado em uma etapa S3706, assumindo que um bloco que não contém o primeiro índice de referência RidxO contém um vetor de movimento de MV = 0 do primeiro índice de referência RidxO.When the number of blocks calculated in step S3701 is "2", a motion vector corresponding to an average value of three motion vectors is used in a step S3706, assuming that a block that does not contain the first reference index. RidxO contains a motion vector of MV = 0 from the first RidxO reference index.
[00219] Quando o número de blocos calculado na etapa S3701 é "3", um vetor de movimento correspondendo a um valor médio de três vetores de movimento é utilizado em uma etapa S3707. Observe que a compensação de movimento na etapa S3704 pode ser executada bidi-recionalmente utilizando um vetor de movimento. Aqui, a compensação de movimento bidirecional pode ser executada após calcular um vetor de movimento na mesma direção como um vetor de movimento e um vetor de movimento na direção oposta ao primeiro vetor de movimento, por exemplo, por ajustar a escala do primeiro vetor de movimento, ou pode ser executado utilizando um vetor de movimento na mesma direção que o primeiro vetor de movimento e um vetor de movimento de "0". A seguir, é explicada a figura 34B.When the number of blocks calculated in step S3701 is "3", a motion vector corresponding to an average value of three motion vectors is used in one step S3707. Note that motion compensation in step S3704 can be performed bidirectionally using a motion vector. Here, bidirectional motion compensation can be performed after calculating a motion vector in the same direction as a motion vector and a motion vector in the opposite direction to the first motion vector, for example by scaling the first motion vector , or can be performed using a motion vector in the same direction as the first motion vector and a motion vector of "0". Next, figure 34B is explained.
[00220] O número de blocos contendo o segundo índice de referência Ridxl é calculado em uma etapa S3711.[00220] The number of blocks containing the second reference index Ridxl is calculated in one step S3711.
[00221] Quando o número de blocos calculado na etapa S3711 é "0", o número de blocos contendo o primeiro índice de referência Ridxl é adicionalmente calculado em uma etapa S3712. Quando o número de blocos calculado na etapa S3712 é "0", a compensação de movimento é executada bidirecionalmente para um bloco corrente a ser codificado assumindo-se que um bloco de movimento do bloco corrente a ser codificado é "0" em uma etapa S3713. Por outro lado, o número de blocos calculado na etapa S3712 é "1" ou mais, um vetor de movimento de um bloco corrente a ser codificado é determinado em uma etapa S3714 pelo número de blocos contendo o primeiro índice de referência RidxO. Por exemplo, a compensação de movimento de um bloco corrente a ser codificado é executada utilizando o vetor de movimento determinado pelo número de blocos contendo o primeiro índice de referência RidxO.When the number of blocks calculated in step S3711 is "0", the number of blocks containing the first reference index Ridxl is additionally calculated in one step S3712. When the number of blocks calculated in step S3712 is "0", motion compensation is performed bidirectionally for a current block to be coded assuming that a motion block of the current block to be coded is "0" in a step S3713 . On the other hand, the number of blocks calculated in step S3712 is "1" or more, a motion vector of a current block to be encoded is determined in one step S3714 by the number of blocks containing the first reference index RidxO. For example, motion compensation of a current block to be encoded is performed using the motion vector determined by the number of blocks containing the first reference index RidxO.
[00222] Quando o número de blocos calculado na etapa S3711 é "1", um vetor de movimento contendo o segundo índice de referência Ridxl é utilizado em uma etapa S3715.When the number of blocks calculated in step S3711 is "1", a motion vector containing the second reference index Ridxl is used in a step S3715.
[00223] Quando o número de blocos calculado na etapa S3711 é "2", um vetor de movimento correspondendo a um valor médio de três vetores de movimento é utilizado em uma etapa S3716, assumindo que um bloco que não contém o segundo índice de referência Ridxl contém um vetor de movimento de MV = 0 do segundo índice de referência Ridxl.When the number of blocks calculated in step S3711 is "2", a motion vector corresponding to an average value of three motion vectors is used in one step S3716, assuming that a block that does not contain the second reference index Ridxl contains a motion vector of MV = 0 from the second reference index Ridxl.
[00224] Quando o número de blocos calculado na etapa S3711 é "3", um vetor de movimento correspondendo a um valor médio de três vetores de movimento é utilizado em uma etapa S3717. Observe que a compensação de movimento na etapa S3714 pode ser executada bidirecionalmente utilizando um vetor de movimento. Aqui, a compensação de movimento bidirecional pode ser executada após calcular um vetor de movimento na mesma direção como um primeiro vetor de movimento e um vetor de movimento na direção oposta ao primeiro vetor de movimento, por exemplo, por se ajustar a escala do primeiro vetor de movimento, ou pode ser executada utilizando um vetor de movimento na mesma direção que o primeiro vetor de movimento e um vetor de movimento de "0".When the number of blocks calculated in step S3711 is "3", a motion vector corresponding to an average value of three motion vectors is used in one step S3717. Note that motion compensation in step S3714 can be performed bidirectionally using a motion vector. Here, bidirectional motion compensation can be performed after calculating a motion vector in the same direction as a first motion vector and a motion vector in the opposite direction to the first motion vector, for example by adjusting the scale of the first vector. motion, or can be performed using a motion vector in the same direction as the first motion vector and a motion vector of "0".
[00225] Observe que as Figs 34A e 34B são respectivamente explicadas, mas ambos métodos podem ser utilizados ou um destes métodos pode ser utilizado. Entretanto, quando um destes métodos é utilizado, por exemplo, quando um processo começado a partir da etapa 3704 apresentado na figura 34A é utilizado e um processo até a etapa S3704 é utilizado, um processo após a etapa S3711 apresentada na figura 34B pode ser utilizado. Quando um processo até a etapa S3704 é utilizado, desde que um processo após a etapa S3712 não é utilizado, um vetor de movimento pode ser determinado de forma única. Quando ambos processos das figuras 34A e 34B são utilizados, qualquer processo pode ser utilizado primeiro, ou os dois processo podem ser utilizados juntos. Quando um bloco na vizinhança de um bloco corrente a ser codificado é codificado no modo direto, um índice de referência referido por um vetor de movimento utilizado para codificar o bloco codificado no modo direto pode ser assumido como estando contido em um bloco codificado no modo direto e localizado na vizinhança de um bloco corrente a ser codificado.Note that Figs 34A and 34B are respectively explained, but both methods may be used or one of these methods may be used. However, when one of these methods is used, for example, when a process starting from step 3704 shown in figure 34A is used and a process up to step S3704 is used, a process after step S3711 shown in figure 34B may be used. . When a process up to step S3704 is used, provided that a process after step S3712 is not used, a motion vector can be uniquely determined. When both processes of FIGS. 34A and 34B are used, either process may be used first, or both processes may be used together. When a block in the vicinity of a current block to be encoded is encoded in direct mode, a reference index referred to by a motion vector used to encode the encoded block in direct mode may be assumed to be contained in a block encoded in direct mode. and located in the vicinity of a current block to be encoded.
[00226] A explicação detalhada do método para determinar um vetor de movimento será dada abaixo utilizando exemplos concretos de um bloco. A figura 35 é uma ilustração apresentando tipos de vetores de movimento contidos em cada bloco referido por um bloco corrente BL1 a ser codificado. Na figura 35A, um bloco contendo um pixel A é um bloco codificado intraimagem e um bloco contendo um pixel B inclui um vetor de movimento e a compensação de movimento é executada para o bloco utilizando um vetor de movimento e um bloco contendo um pixel C é um bloco incluindo dois vetores de movimento e a compensação de movimento é executada de forma bidirecional. O bloco contendo o pixel B contém um vetor de movimento indicado pelo segundo índice de referência Ridxl. Desde que o bloco contendo o pixel A é um bloco a ser codificado intraimagem, ele não contém um vetor de movimento. Em outras palavras, ele também não contém um índice de referência.[00226] The detailed explanation of the method for determining a motion vector will be given below using concrete examples of a block. Fig. 35 is an illustration showing motion vector types contained in each block referred to by a current block BL1 to be encoded. In Fig. 35A, a block containing a pixel A is an intra-image coded block and a block containing a pixel B includes a motion vector and motion compensation is performed for the block using a motion vector and a block containing a pixel C is a block including two motion vectors and motion compensation is performed bidirectionally. The block containing pixel B contains a motion vector indicated by the second reference index Ridxl. Since the block containing pixel A is a block to be encoded within the image, it does not contain a motion vector. In other words, it also does not contain a benchmark.
[00227] Na etapa S3701, o número de blocos contendo o primeiro índice de referência RidxO é calculado. Como apresentado na figura 35, desde que o número de blocos contendo o primeiro índice de referência RidxO é 2, assumindo que um bloco que não contém o primeiro índice de referência RidxO contém um vetor de movimento MV = 0 do primeiro índice de referência RidxO, um vetor de movimento correspondendo a um valor médio de três vetores de movimento é utilizado em uma etapa S3706. A compensação de movimento bidirecional pode ser executada para um bloco corrente a ser codificado utilizando somente o vetor de movimento acima, ou pode ser executada utilizando o segundo índice de referência Ridxl e outro vetor de movimento como apresentado abaixo.In step S3701, the number of blocks containing the first reference index RidxO is calculated. As shown in Fig. 35, since the number of blocks containing the first RidxO benchmark is 2, assuming that a block that does not contain the first RidxO benchmark contains a motion vector MV = 0 of the first RidxO benchmark, A motion vector corresponding to an average value of three motion vectors is used in one step S3706. Bidirectional motion compensation can be performed for a current block to be encoded using only the above motion vector, or it can be performed using the second reference index Ridxl and another motion vector as shown below.
[00228] Na etapa S3711, o número de blocos contendo o segundo índice de referência Ridxl é calculado. Como apresentado na figura 35, desde que o número de blocos contendo o segundo índice de referência Ridxl é 1, um vetor de movimento contendo o segundo índice de referência Ridxl é utilizado na etapa S3715.[00228] In step S3711, the number of blocks containing the second reference index Ridxl is calculated. As shown in Fig. 35, since the number of blocks containing the second reference index Ridxl is 1, a motion vector containing the second reference index Ridxl is used in step S3715.
[00229] Em adição, um exemplo de outro método de cálculo combinando os métodos de cálculo mencionados acima é explicado. A figura 38 é uma ilustração apresentando um procedimento para determinar um vetor de movimento de um bloco corrente a ser codificado utilizan- do os valores de índice de referência apresentando uma imagem referida por um vetor de movimento contido em blocos incluindo os pixels A, B e C, respectivamente. As figuras 36A e 36B são ilustrações apresentando um procedimento para determinar um vetor de movimento baseado no primeiro índice de referência RidxO e as figuras 36C e 36D são ilustrações apresentando um procedimento para determinar um vetor de movimento baseado no segundo índice de referência Ridxl. A figura 36A apresenta um procedimento baseado no primeiro índice de referência RidxO, por outro lado, a figura 36C apresenta um procedimento baseado no segundo índice de referência Ridxl. A figura 36B apresenta um procedimento baseado no primeiro índice de referência RidxO, por outro lado, a figura 36D apresenta um procedimento baseado no segundo índice de referência Ridxl. Por conseqüência, somente as figuras 36A e 36B são explicadas abaixo. Para começar, a figura 36A é explicada.In addition, an example of another calculation method combining the calculation methods mentioned above is explained. Fig. 38 is an illustration showing a procedure for determining a motion vector of a current block to be encoded using reference index values showing an image referred to by a motion vector contained in blocks including pixels A, B and C, respectively. Figures 36A and 36B are illustrations showing a procedure for determining a motion vector based on the first reference index RidxO and figures 36C and 36D are illustrations showing a procedure for determining a motion vector based on the second reference index RidxO. Figure 36A shows a procedure based on the first RidxO benchmark, on the other hand Figure 36C shows a procedure based on the second RidxO benchmark. Figure 36B shows a procedure based on the first RidxO benchmark, on the other hand Figure 36D shows a procedure based on the second RidxO benchmark. Accordingly, only figures 36A and 36B are explained below. To begin with, figure 36A is explained.
[00230] Em uma etapa S3801, é julgado se o menor primeiro índice de referência RidxO dos primeiros índices de referência RidxO efetivos pode ser selecionado.In step S3801, it is judged whether the smallest first RidxO benchmark of the first effective RidxO benchmarks can be selected.
[00231] Quando é possível selecionar o menor primeiro índice de referência RidxO a partir dos primeiros índices de referência RidxO efetivos, o vetor de movimento selecionado na etapa S3802 é utilizado.When it is possible to select the lowest first RidxO reference index from the first effective RidxO reference indices, the motion vector selected in step S3802 is used.
[00232] Quando os primeiros índices de referência RidxO efetivos incluem os vários menores índices de referência RidxO na etapa S3801, um vetor de movimento contido em um bloco selecionado por prioridade em uma etapa S3803 é utilizado. Aqui, a prioridade, por exemplo, determina um vetor de movimento a ser utilizado para a compensação de movimento de um bloco corrente a ser codificado em ordem alfabética de pixels contidos nos blocos.When the first effective RidxO reference indices include the several lowest RidxO reference indices in step S3801, a motion vector contained in a block selected by priority in a step S3803 is used. Here, priority, for example, determines a motion vector to be used for motion compensation of a current block to be encoded in alphabetical order of pixels contained in the blocks.
[00233] Quando não existe o primeiro índice de referência RidxO efetivo na etapa S3801, o processo que é diferente das etapas S3802 e S3803 é utilizado em uma etapa S3804. Por exemplo, um processo após uma etapa S3711 explicado na figura 374B pode ser utilizado. A seguir, a figura 36B é explicada. O ponto diferente entre as figuras 36A e 36B é que um processo nas etapas S3803 e S3804 na figura 36A é alterado para uma etapa S3813 na figura 36B.[00233] When there is no first effective RidxO benchmark in step S3801, the process that is different from steps S3802 and S3803 is used in step S3804. For example, a process following a step S3711 explained in figure 374B may be used. Next, figure 36B is explained. The different point between figures 36A and 36B is that a process in steps S3803 and S3804 in figure 36A is changed to a step S3813 in figure 36B.
[00234] Em uma etapa S3811, é julgado se o menor primeiro índice de referência RidxO dos primeiros índices de referência RidxO efetivos pode ser selecionado.In step S3811, it is judged whether the lowest first RidxO benchmark of the first effective RidxO benchmarks can be selected.
[00235] Quando é possível selecionar o menor primeiro índice de referência RidxO a partir dos primeiros índices de referência RidxO efetivos, o vetor de movimento selecionado na etapa S3812 é utilizado.When it is possible to select the lowest first RidxO reference index from the first effective RidxO reference indices, the motion vector selected in step S3812 is used.
[00236] Quando não existe o primeiro índice de referência efetivo RidxO na etapa S3811, o processo que é diferente de S3812 é utilizado na etapa S3813. Por exemplo, um processo após uma etapa S3711 explicado na figura 374B pode ser utilizado.[00236] When there is no first effective reference index RidxO in step S3811, the process that is different from S3812 is used in step S3813. For example, a process following a step S3711 explained in figure 374B may be used.
[00237] Observe que o primeiro índice de referência RidxO efetivo é indicado por "O" na figura 35B e é um índice de referência apresentando ter um vetor de movimento. Na figura 35B, os locais nos quais "x" é escrito indica que índices de referência não estão designados. Em uma etapa S3824 na figura 36C e em uma etapa S3833 na figura 36D, um processo após a etapa S3701 explicada na figura 34A pode ser utilizado.Note that the first effective RidxO reference index is indicated by "O" in Figure 35B and is a reference index showing having a motion vector. In Figure 35B, the places where "x" is written indicates that reference indices are not designated. In a step S3824 in figure 36C and a step S3833 in figure 36D, a process after step S3701 explained in figure 34A can be used.
[00238] A explicação detalhada do método para determinar um vetor de movimento será dada abaixo utilizando exemplos concretos de um bloco e a figura 35.[00238] The detailed explanation of the method for determining a motion vector will be given below using concrete examples of a block and Figure 35.
[00239] Em uma etapa S3801, é julgado se o menor primeiro índice de referência RidxO dos primeiros índices de referência RidxO efetivos pode ser selecionado.In step S3801, it is judged whether the lowest first RidxO benchmark of the first effective RidxO benchmarks can be selected.
[00240] No caso apresentado na figura 35 existem dois primeiros índices de referência RidxO efetivos, entretanto, quando é possível se- lecionar o menor primeiro índice de referência RidxO a partir dos primeiros índices de referência RidxO efetivos na etapa S3801, um vetor de movimento selecionado na etapa S3802 é utilizado.In the case presented in figure 35 there are two first effective RidxO benchmarks, however, when it is possible to select the lowest first RidxO benchmark from the first effective RidxO benchmarks in step S3801, a motion vector selected in step S3802 is used.
[00241] Quando os primeiros índices de referência RidxO efetivos incluem os vários menores índices de referência RidxO na etapa S3801, um vetor de movimento contido em um bloco selecionado por prioridade em uma etapa S3803 é utilizado. Aqui, a prioridade, por exemplo, determina um vetor de movimento a ser utilizado para a compensação de movimento de um bloco corrente a ser codificado em ordem alfabética de pixels contidos nos blocos. Quando os blocos incluindo os pixels B e C respectivamente contém o mesmo primeiro índice de referência RidxO, o primeiro índice de referência RidxO do bloco incluindo o pixel B é empregado pela prioridade e a compensação de movimento é executada para um bloco corrente BL1 a ser codificado utilizando um vetor de movimento correspondendo ao primeiro índice de referência RidxO do bloco contendo o pixel B. Neste caso, a compensação de movimento pode ser executada para o bloco corrente BL1 a ser codificado de forma bidirecional utilizando somente o vetor de movimento determinado, ou pode ser executada utilizando o segundo índice de referência Ridxl e outro vetor de movimento como apresentado abaixo.When the first effective RidxO reference indices include the several lowest RidxO reference indices in step S3801, a motion vector contained in a block selected by priority in a step S3803 is used. Here, priority, for example, determines a motion vector to be used for motion compensation of a current block to be encoded in alphabetical order of pixels contained in the blocks. When blocks including pixels B and C respectively contain the same first RidxO reference index, the first RidxO reference index of the block including pixel B is employed by priority and motion compensation is performed for a current block BL1 to be encoded. using a motion vector corresponding to the first RidxO reference index of the block containing pixel B. In this case, motion compensation may be performed for the current block BL1 to be bidirectionally encoded using only the determined motion vector, or it may be be performed using the second reference index Ridxl and another motion vector as shown below.
[00242] Em uma etapa S3821, é julgado se o menor segundo índice de referência Ridxl dos segundos índices de referência efetivos Ridxl pode ser selecionado.In a step S3821, it is judged whether the smallest second Ridxl reference index of the second effective Ridxl reference indices can be selected.
[00243] No caso apresentado na figura 35, desde que o segundo índice de referência efetivo Ridxl seja um, um vetor de movimento correspondendo ao segundo índice de referência Ridxl de um bloco contendo o pixel C é utilizado em uma etapa S3822.In the case shown in Fig. 35, provided that the second effective reference index Ridxl is one, a motion vector corresponding to the second reference index Ridxl of a block containing pixel C is used in a step S3822.
[00244] Observe que na explicação acima, como para o bloco que não contém índices de referência, assumindo que o bloco contém um vetor de movimento de "0", um valor médio de três vetores de movimento é selecionado, entretanto, assumindo que o bloco contém um vetor de movimento de "0", um valor médio de três vetores pode ser selecionado, ou um valor médio dos vetores de movimento de blocos contendo índices de referência pode ser selecionado.Note that in the above explanation, as for the block containing no reference indices, assuming the block contains a motion vector of "0", an average value of three motion vectors is selected, however, assuming that the block contains a motion vector of "0", an average value of three vectors can be selected, or an average value of block motion vectors containing reference indices can be selected.
[00245] Observe que um vetor de movimento utilizado para compensação de movimento de um bloco corrente a ser codificado pode ser determinado por prioridade diferente da explicada acima, por exemplo, na ordem dos pixels B - A - C, os quais estão contidos nos blocos.Note that a motion vector used for motion compensation of a current block to be encoded can be determined by a different priority than explained above, for example, in the order of pixels B - A - C, which are contained in the blocks. .
[00246] Assim, através da determinação de um vetor de movimento utilizado para compensação de movimento de um bloco corrente a ser codificado por utilizar um índice de referência, um vetor de movimento pode ser determinado de forma única. Além disso, de acordo com o exemplo mencionado acima, a eficiência da codificação pode ser aperfeiçoada. Em adição, desde que não seja necessário julgar se um vetor de movimento é uma referência para frente ou uma referência para trás utilizando a informação de tempo, é possível simplificar um processo para determinar um vetor de movimento. Quando com referência a um modo de prognóstico para cada bloco e um vetor de movimento utilizado para a compensação de movimento ou similares, existe um grupo de padrões, entretanto, como mencionado acima, desde que um processo seja feito por uma série de fluxos, ele é útil.Thus, by determining a motion vector used for motion compensation of a current block to be encoded by using a reference index, a motion vector can be uniquely determined. Moreover, according to the example mentioned above, the coding efficiency can be improved. In addition, as long as it is not necessary to judge whether a motion vector is a forward reference or a back reference using time information, a process for determining a motion vector can be simplified. When referring to a prediction mode for each block and a motion vector used for motion compensation or the like, there is a set of patterns, however, as mentioned above, provided that a process is done by a series of streams, it It is useful.
[00247] Observe que nesta modalidade, o caso calculando um vetor de movimento utilizado no modo direto por ajustar a escala de um vetor de movimento referido para utilizar um intervalo de tempo entre as imagens é explicado, entretanto, pode ser executado um cálculo pela multiplicação por um número constante. Aqui, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a de-codificação é executada com base em vários blocos ou com base em várias imagens. Observe que um método de cálculo utilizando os índices de referência RidxO e Ridxl não é somente um método utilizando um valor médio e os métodos de cálculo podem ser combinados com outros métodos de cálculo. Por exemplo, no terceiro método de cálculo mencionado acima, quando os vetores de movimento contidos nos blocos possuindo pixels A, B e C respectivamente referindo-se a uma mesma imagem cujo índice de referência é o menor são vários, não é necessário calcular um valor médio destes vetores de movimento e um vetor de movimento obtido a partir da obtenção de média destes vetores de movimento pode ser utilizado como um vetor de movimento do bloco BL1 utilizado no modo direto. Ou, por exemplo, um vetor de movimento cuja eficiência de codificação é amais elevada pode ser selecionado a partir dos vários vetores de movimento com os menores índice de referência.Note that in this embodiment, the case of calculating a motion vector used in direct mode by scaling a motion vector referred to using a time interval between images is explained, however, a calculation can be performed by multiplying. by a constant number. Here, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images. Note that a calculation method using the RidxO and Ridxl reference indices is not just a method using an average value and the calculation methods can be combined with other calculation methods. For example, in the third calculation method mentioned above, when motion vectors contained in blocks having pixels A, B and C respectively referring to the same image whose reference index is the smallest are several, it is not necessary to calculate a value. The mean of these motion vectors and a motion vector obtained from averaging these motion vectors can be used as a motion vector of the BL1 block used in direct mode. Or, for example, a motion vector whose coding efficiency is highest can be selected from the various motion vectors with the lowest reference index.
[00248] Além disso, um vetor de movimento para frente e um vetor de movimento para trás do bloco BL1 pode ser calculado independentemente ou dependentemente. Por exemplo, um vetor de movimento para frente e um vetor de movimento para trás podem ser calculados a partir de um mesmo vetor de movimento.In addition, a forward motion vector and a backward motion vector of block BL1 can be independently or dependently calculated. For example, a forward motion vector and a backward motion vector can be calculated from the same motion vector.
[00249] Por outro lado, um vetor de movimento para frente ou um vetor de movimento para trás, ambos obtidos a partir do cálculo, podem ser utilizados como um vetor de movimento do bloco BL1.On the other hand, a forward motion vector or a backward motion vector, both obtained from the calculation, can be used as a motion vector of block BL1.
[00250] (Oitava Modalidade) [00251] Nesta modalidade, um bloco de referência MB em uma imagem de referência contém um vetor de movimento para frente (o primeiro) referindo-se a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo como a primeira imagem de referência e um vetor de movimento para trás (o segundo) referindo-se a uma imagem de referência armazenada na memória intermediária de imagem de curto prazo como a segunda imagem de re- ferência.In this embodiment, a MB reference block in a reference image contains a forward motion vector (the first) referring to a reference image stored in the long image buffer. term as the first reference image and a backward motion vector (the second) referring to a reference image stored in the short-term image buffer as the second reference image.
[00252] A figura 37 é uma ilustração apresentando um prognóstico duplo no modo direto quando somente uma imagem de referência está armazenada na memória intermediária de imagem de longo prazo.[00252] Fig. 37 is an illustration showing a double prognosis in direct mode when only one reference image is stored in long term image buffer.
[00253] O ponto diferente da oitava modalidade das várias modalidades mencionadas acima é que um vetor de movimento para frente MV21 de um bloco MB2 em uma imagem de referência refere-se a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo.The point different from the eighth embodiment of the various embodiments mentioned above is that a forward motion vector MV21 of an MB2 block in a reference image refers to a reference image stored in long term image buffer.
[00254] A memória intermediária de imagem de curto prazo é uma memória intermediária para armazenar imagens de referência temporariamente e por exemplo, as imagens são armazenadas na ordem na qual as imagens são armazenadas em uma memória intermediária (ou seja, ordem de codificação/decodificação). Quando não existe capacidade de armazenamento suficiente para as imagens que são recentemente armazenadas na memória intermediária, as imagens armazenadas mais anteriormente são deletadas na memória intermediária.Short-term image buffer is a buffer for temporarily storing reference images, and for example, images are stored in the order in which images are stored in a buffer (ie, encoding / decoding order). ). When there is not enough storage capacity for images that are recently stored in buffer, the most previously stored images are deleted in buffer.
[00255] Na memória intermediária de imagem de longo prazo, as imagens não são sempre armazenadas na memória intermediária de imagem de longo prazo na ordem de tempo como na memória intermediária de imagem de curto prazo. Por exemplo, como uma ordem para armazenar as imagens, a ordem de tempo das imagens pode ser correspondida e a ordem de endereço em uma memória intermediária na qual as imagens são armazenadas pode ser correspondida. Portanto, é impossível ajustar a escala de um vetor de movimento MV21 refe-rindo-se a uma imagem armazenada na memória intermediária de imagem de longo prazo baseado em um intervalo de tempo.In long-term image buffering, images are not always stored in long-term image buffering in the order of time as in short-term image buffering. For example, as an order to store the images, the time order of the images can be matched and the address order in a buffer in which the images are stored can be matched. Therefore, it is impossible to scale an MV21 motion vector to an image stored in long-term image buffer based on a time interval.
[00256] Uma memória intermediária de imagem de longo prazo não é para armazenar uma imagem de referência temporariamente como a memória intermediária de imagem de curto prazo, mas para armazenar uma imagem de referência continuamente. Portanto, um intervalo de tempo correspondendo a um vetor de movimento armazenado na memória intermediária de imagem de longo prazo é muito mais amplo do que um intervalo de tempo correspondendo a um vetor de movimento correspondendo a um vetor de movimento armazenado na memória intermediária de imagem de curto prazo.A long-term image buffer is not for storing a reference image temporarily as short-term image buffering, but for storing a reference image continuously. Therefore, a time interval corresponding to a motion vector stored in long-term image buffering is much broader than a time interval corresponding to a motion vector corresponding to a motion vector stored in long-image buffering short term.
[00257] Na figura 37, um limite entre a memória intermediária de imagem de longo prazo e a memória intermediária de imagem de curto prazo é indicado por uma linha pontilhada vertical como apresentado na figura e a informação a cerca das imagens em relação ao lado esquerdo da linha pontilhada vertical é armazenada na memória intermediária de imagem de longo prazo e a informação a cerca das imagens no lado direito da linha pontilhada vertical é armazenada na memória intermediária de imagem de curto prazo. Aqui, um bloco MB1 em uma imagem P23 é um bloco corrente. Um bloco MB2 é um bloco de referência do mesmo local do bloco MB1 em uma imagem P24. Um vetor de movimento para frente MV21 do bloco MB2 na imagem de referência P24 é o primeiro vetor de movimento referindo-se a uma imagem P21 armazenada na memória intermediária de imagem de longo prazo como a primeira imagem de referência e um vetor de movimento para trás MV25 do bloco MB2 na imagem de referência P24 é o segundo vetor de movimento referindo-se a uma imagem P25 armazenada na memória intermediária de imagem de curto prazo como a segunda imagem de referência.[00257] In Figure 37, a boundary between long-term image buffer and short-term image buffer is indicated by a vertical dotted line as shown in the figure and the information about the images relative to the left side. The vertical dotted line image is stored in the long-term image buffer and information about the images on the right side of the vertical dotted line is stored in the short-term image buffer. Here, an MB1 block in an image P23 is a current block. An MB2 block is a reference block of the same location as MB1 block in a P24 image. An MB21 forward motion vector of block MB2 in reference image P24 is the first motion vector referring to an image P21 stored in long-term image buffer as the first reference image and a backward motion vector. MV25 of block MB2 in reference image P24 is the second motion vector referring to an image P25 stored in short-term image buffer as the second reference image.
[00258] Como mencionado acima, um intervalo de tempo TR21 entre as imagens P21 e P24 é correspondente a um vetor de movimento para frente MV21 referindo-se a uma imagem armazenada na memória intermediária de imagem de longo prazo, um intervalo de tempo TR25 entre as imagens P24 e P25 é correspondente a um vetor de movimento para trás MV25 referindo-se a uma imagem armazenada na memó- ria intermediária de imagem de curto prazo e o intervalo de tempo TR21 entre as imagens P21 e P24 pode tornar-se muito mais amplo do que o intervalo de tempo TR25 entre as imagens P24 e P25 ou pode ser indefinido.As mentioned above, a time interval TR21 between images P21 and P24 corresponds to a forward motion vector MV21 referring to an image stored in the long term image buffer, a time interval TR25 between images P24 and P25 correspond to a backward motion vector MV25 referring to an image stored in the short term image buffer and the time interval TR21 between images P21 and P24 may become much longer. wider than the TR25 time interval between images P24 and P25 or may be undefined.
[00259] Portanto, um vetor de movimento do bloco MB1 na imagem corrente P23 não é calculado pelo ajuste de escala de um vetor de movimento do bloco MB2 na imagem de referência P24 como nas modalidades anteriores, mas o vetor de movimento é calculado utilizando um método seguinte. MV21 = MV21' MV24' = 0 [00260] A equação superior apresenta que o primeiro vetor de movimento MV21 armazenado na memória intermediária de imagem de longo prazo é utilizado diretamente como o primeiro vetor de movimento MV21' em uma imagem corrente.Therefore, a motion vector of block MB1 in the current image P23 is not calculated by scaling a motion vector of block MB2 in reference image P24 as in the previous embodiments, but the motion vector is calculated using a following method. MV21 = MV21 'MV24' = 0 [00260] The upper equation shows that the first MV21 motion vector stored in long-term image buffer is used directly as the first MV21 motion vector in a current image.
[00261] A equação de baixo apresenta que desde que o segundo vetor de movimento MV24', o qual refere-se à imagem 24 armazenada na memória intermediária de imagem de curto prazo, do bloco MB1 na imagem corrente para a imagem P23 é suficiente menor do que o primeiro vetor de movimento MV21', MV24' é insignificante. O segundo vetor de movimento MV24' é tratado como "0".[00261] The equation below shows that since the second motion vector MV24 ', which refers to the image 24 stored in the short-term image buffer, the block MB1 in the current image to the image P23 is sufficiently smaller. than the first motion vector MV21 ', MV24' is insignificant. The second motion vector MV24 'is treated as "0".
[00262] Como descrito acima, um bloco de referência MB contém um vetor de movimento referindo-se a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo como a primeira imagem de referência; e um vetor de movimento referindo-se a uma imagem de referência armazenada na memória intermediária de imagem de curto prazo como a segunda imagem de referência. Neste caso, o prognóstico duplo é executado utilizando o vetor de movimento armazenado na memória intermediária de imagem de longo prazo fora dos vetores de movimento do bloco na imagem de referên- cia diretamente como um vetor de movimento de um bloco em uma imagem corrente.As described above, a reference block MB contains a motion vector referring to a reference image stored in long-term image buffer as the first reference image; and a motion vector referring to a reference image stored in short-term image buffer as the second reference image. In this case, the double prognosis is performed using the motion vector stored in long-term image buffer outside the block motion vectors in the reference image directly as a motion vector of a block in a current image.
[00263] Observe que uma imagem de referência armazenada na memória intermediária de longo prazo pode ser a primeira imagem de referência ou a segunda imagem de referência e um vetor de movimento MV21 referindo-se a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo pode ser um vetor de movimento para trás. Além disso, quando a segunda imagem de referência está armazenada na memória intermediária de imagem de longo prazo e a primeira imagem de referência está armazenada na memória intermediária de imagem de curto prazo, um vetor de movimento em uma imagem corrente é calculado por se ajustar a escala de um vetor de movimento referindo-se à primeira imagem de referência.Note that a reference image stored in long-term buffer may be the first reference image or second reference image and a motion vector MV21 referring to a reference image stored in the buffer image. Long term can be a backward motion vector. In addition, when the second reference image is stored in long-term image buffer and the first reference image is stored in short-term image buffer, a motion vector in a current image is calculated by adjusting the scale of a motion vector referring to the first reference image.
[00264] Isto torna possível executar o prognóstico duplo sem utilizar o tempo que é de forma considerável maior na memória intermediária de imagem de longo prazo ou indefinido.[00264] This makes it possible to perform dual prediction without using the time that is considerably longer in long-term or undefined image buffering.
[00265] Observe que o prognóstico duplo pode ser executado não diretamente utilizando um vetor de movimento referido mas utilizando um vetor de movimento por se multiplicar por um número constante.Note that dual prediction can be performed not directly using a motion vector referenced but using a motion vector by multiplying by a constant number.
[00266] Em adição, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blocos ou com base em várias imagens. (Nona Modalidade) [00267] Nesta modalidade, o prognóstico duplo no modo direto é apresentado. Neste caso, um bloco de referência MB em uma imagem de referência contém dois vetores de movimento para frente referindo-se a uma imagem de referência armazenada em uma memória intermediária de imagem de longo prazo.In addition, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images. (Ninth Mode) [00267] In this mode, the double prognosis in direct mode is presented. In this case, a reference block MB in a reference image contains two forward motion vectors referring to a reference image stored in a long term image buffer.
[00268] A figura 38 é uma ilustração apresentando o prognóstico duplo no modo direto quando um bloco de referência MB em uma ima- gem de referência contém dois vetores de movimento para frente refe-rindo-se a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo.[00268] Fig. 38 is an illustration showing the double prognosis in direct mode when a reference block MB in a reference image contains two forward motion vectors referring to a reference image stored in the buffer. Long-term imaging.
[00269] O ponto diferente da nona modalidade da oitava modalidade é que ambos vetores de movimento MV21 e MV22 de um bloco MB2 em uma imagem de referência referem-se a uma imagem armazenada na memória intermediária de imagem de longo prazo.The different point of the ninth embodiment of the eighth embodiment is that both motion vectors MV21 and MV22 of an MB2 block in a reference image refer to an image stored in long term image buffer.
[00270] Na figura 38, um limite entre a memória intermediária de imagem de longo prazo e a memória intermediária de imagem de curto prazo é indicado por uma linha vertical pontilhada como apresentado na figura e a informação a cerca das imagens no lado esquerdo da linha vertical pontilhada é armazenada na memória intermediária de imagem de longo prazo e a informação a cerca das imagens no lado direito da linha vertical pontilhada é armazenada na memória intermediária de imagem de curto prazo. Ambos os vetores de movimento MV21 e MV22 do bloco MB2 em uma imagem de referência P24 referem-se a uma imagem armazenada na memória intermediária de imagem de longo prazo. O vetor de movimento MV21 corresponde a uma imagem de referência P21 e o vetor de movimento MV22 corresponde a uma imagem de referência P22.In figure 38, a boundary between long-term image buffer and short-term image buffer is indicated by a dotted vertical line as shown in the figure and the information about the images on the left side of the line. vertical dotted image is stored in long-term image buffer and information about the images on the right side of the dotted vertical line is stored in short-term image buffer. Both MB21 block motion vectors MV21 and MV22 in a reference image P24 refer to an image stored in long-term image buffer. Motion vector MV21 corresponds to a reference image P21 and motion vector MV22 corresponds to a reference image P22.
[00271] Um intervalo de tempo TR22 entre as imagens P22 e P24 pode tornar-se muito mais amplo do que o intervalo de tempo TR25 entre as imagens P24 e P25 ou pode ser indefinido correspondendo ao vetor de movimento MV22 referindo-se à imagem P22 armazenada na memória intermediária de imagem de longo prazo.[00271] A time interval TR22 between images P22 and P24 may be much wider than the time interval TR25 between images P24 and P25 or may be undefined corresponding to motion vector MV22 referring to image P22 stored in the long-term image buffer.
[00272] Na figura 38. as imagens estão armazenadas na ordem das imagens P22 - P21 nessa ordem na memória intermediária de imagem de longo prazo. Aqui, a imagem P21 corresponde a um vetor de movimento MV21 e a imagem P22 corresponde a um vetor de movimento MV22. Na figura 38, um vetor de movimento de um bloco MB1 em uma imagem corrente é calculado como se segue. MV22' = MV22 MV24' = 0 [00273] A equação de cima apresenta que um vetor de movimento MV22 referindo-se a uma imagem P22 para a qual a menor ordem é designada é utilizado diretamente como um vetor de movimento MV22' do bloco MB1 em uma imagem corrente P23.[00272] In figure 38. the images are stored in the order of images P22 - P21 in that order in the long term image buffer. Here, image P21 corresponds to a motion vector MV21 and image P22 corresponds to a motion vector MV22. In Fig. 38, a motion vector of an MB1 block in a current image is calculated as follows. MV22 '= MV22 MV24' = 0 [00273] The above equation shows that an MV22 motion vector referring to an image P22 to which the smallest order is assigned is used directly as an MB22 motion vector 'from block MB1 in a current picture P23.
[00274] A equação de baixo apresenta que desde que o vetor de movimento para trás MV24' do bloco MB1 na imagem corrente P23 armazenada na memória intermediária de imagem de curto prazo é de forma suficiente menor do que o vetor de movimento MV21', MV24' é insignificante. O vetor de movimento para trás MV24' é tratado como "0".[00274] The equation below shows that since MB1's backward motion vector MV24 'in current image P23 stored in short-term image buffer is sufficiently smaller than motion vector MV21', MV24 'is insignificant. The backward motion vector MV24 'is treated as "0".
[00275] Como descrito acima, por diretamente utilizar um vetor de movimento referindo-se a uma imagem para a qual a menor ordem é designada fora dos vetores de movimento de um bloco em uma imagem de referência armazenada na memória intermediária de imagem de longo prazo, o prognóstico duplo pode ser feito sem utilizar o tempo, o qual é de forma considerável maior na memória intermediária de imagem de longo prazo ou indefinido.As described above, by directly utilizing a motion vector referring to an image to which the smallest order is designated outside the motion vectors of a block in a reference image stored in long term image buffer , the double prognosis can be made without using time, which is considerably greater in long-term or indefinite imaging buffer.
[00276] Observe que o prognóstico duplo pode ser feito não diretamente utilizando um vetor de movimento referido mas utilizando um vetor de movimento por multiplicar por um número constante.Note that the double prognosis can be made not directly using a motion vector referred to but using an motion vector by multiplying by a constant number.
[00277] Em adição, uma constante utilizada para a multiplicação pode ser variável quando a codificação ou a decodificação é executada com base em vários blocos ou com base em várias imagens.In addition, a constant used for multiplication can be variable when encoding or decoding is performed based on multiple blocks or based on multiple images.
[00278] Adicionalmente, quando ambos vetores de movimento MV21 e MV22 do bloco MB2 em uma imagem de referência referem-se a uma imagem armazenada na memória intermediária de imagem de longo prazo, um vetor de movimento referindo-se à primeira imagem de referência pode ser selecionado. Por exemplo, quando MV21 é um vetor de movimento referindo-se à primeira imagem de referência e MV22 é um vetor de movimento referindo-se à segunda imagem de referência, o vetor de movimento MV21 referindo-se a uma imagem P21 e um vetor de movimento "0" referindo-se a uma imagem P24 são utilizados como vetores de movimento de um bloco MB1. (Décima Modalidade) [00279] Nesta modalidade, um método de cálculo de um vetor de movimento no modo direto apresentado na quinta modalidade até a nona modalidade é explicado. Este método de cálculo de um vetor de movimento é aplicado para a codificação ou decodificação de uma imagem. Aqui, um bloco corrente a ser codificado ou decodificado é chamado de um bloco corrente MB. Um bloco do mesmo local do bloco corrente MB em uma imagem de referência é chamado de bloco de referência.Additionally, when both motion vectors MV21 and MV22 of block MB2 in a reference image refer to an image stored in long-term image buffer, a motion vector referring to the first reference image may be selected. For example, when MV21 is a motion vector referring to the first reference image and MV22 is a motion vector referring to the second reference image, the MV21 motion vector referring to a P21 image and a motion vector. Motion "0" referring to an image P24 is used as motion vectors of an MB1 block. (Tenth Modality) [00279] In this embodiment, a method of calculating a direct mode motion vector presented in the fifth embodiment until the ninth embodiment is explained. This method of calculating a motion vector is applied for encoding or decoding an image. Here, a current block to be encoded or decoded is called a MB current block. A block from the same location as the current MB block in a reference image is called a reference block.
[00280] A figura 39 é uma ilustração apresentando um fluxo de processo de um método de cálculo de vetor de movimento desta modalidade.Fig. 39 is an illustration showing a process flow of a motion vector calculation method of this embodiment.
[00281] Primeiro, é julgado se um bloco de referência MB em uma imagem de referência para trás por um bloco corrente MB contém um vetor de movimento (etapa S1). Se o bloco de referência MB não contiver um vetor de movimento (Não na etapa S1), o prognóstico duplo é executado assumindo que um vetor de movimento é "0" (etapa S2) e um processo para um cálculo de vetor de movimento está completado.First, it is judged whether a MB reference block in a back reference image by a current MB block contains a motion vector (step S1). If reference block MB does not contain a motion vector (Not in step S1), the double prognosis is executed assuming that a motion vector is "0" (step S2) and a process for a motion vector calculation is completed. .
[00282] Se o bloco de referência MB contiver um vetor de movimento (Sim na Etapa S1), é julgado se o bloco de referência contém um vetor de movimento para frente (etapa S3).If reference block MB contains a motion vector (Yes in Step S1), it is judged whether the reference block contains a forward motion vector (step S3).
[00283] Se o bloco de referência não contiver um vetor de movimento para frente (Não na etapa S3), desde que o bloco de referência MB contém somente um vetor de movimento para trás, o número de veto- res de movimento para trás é julgado (etapa S14). Quando o número de vetores de movimento para trás do bloco de referência MB é "2", o prognóstico duplo é executado utilizando dois vetores de movimento para trás com a escala ajustada baseado em um dos métodos de cálculo mencionados nas figuras 17, 18, 19 e 20.[00283] If the reference block does not contain a forward motion vector (Not in step S3), since reference block MB contains only a backward motion vector, the number of backward motion vectors is judged (step S14). When the number of backward motion vectors of reference block MB is "2", the double prognosis is performed using two scaled backward motion vectors based on one of the calculation methods mentioned in figures 17, 18, 19. and 20.
[00284] Por outro lado, quando o número de vetores de movimento para trás do bloco de referência MB é "1", o único vetor de movimento para trás contido no bloco de referência MB tem a escala ajustada e a compensação de movimento é executada utilizando o vetor de movimento para trás com a escala ajustada (etapa S16). Após completar o prognóstico duplo na etapa S15 ou S16, o processo do método de cálculo de vetor de movimento está completado.On the other hand, when the number of backward motion vectors of reference block MB is "1", the only backward motion vector contained in reference block MB is scaled and motion compensation is performed. using the scaled backward motion vector (step S16). After completing the double prognosis in step S15 or S16, the motion vector calculation method process is complete.
[00285] Por outro lado, se o bloco de referência MB contiver um vetor de movimento para frente (Sim na etapa S3), o número de vetores de movimento para frente do bloco de referência MB é julgado (etapa S4).On the other hand, if reference block MB contains a forward motion vector (Yes in step S3), the number of forward motion vectors of reference block MB is judged (step S4).
[00286] Quando o número de vetores de movimento para frente do bloco de referência MB é "1", é julgado se uma imagem de referência correspondendo ao vetor de movimento para frente do bloco de referência MB está armazenada na memória intermediária de imagem de longo prazo ou na memória intermediária de imagem de curto prazo (etapa S5).When the number of MB reference block forward motion vectors is "1", it is judged whether a reference image corresponding to MB reference block forward motion vector is stored in long image buffer term or short-term image buffer (step S5).
[00287] Quando a imagem de referência correspondendo ao vetor de movimento para frente do bloco de referência MB está armazenada na memória intermediária de imagem de curto prazo, o vetor de movimento para frente do bloco de referência MB tem a escala ajustada e o prognóstico duplo é executado utilizando o vetor de movimento para frente com a escala ajustada (etapa S6).When the reference image corresponding to the MB reference block forward motion vector is stored in the short-term image buffer, the MB reference block forward motion vector is scaled and double predicted. is performed using the scaled forward motion vector (step S6).
[00288] Quando a imagem de referência correspondendo ao vetor de movimento para frente do bloco de referência MB está armazenada na memória intermediária de imagem de longo prazo, o prognóstico duplo é executado baseado no método de cálculo de vetor de movimento apresentado na figura 37 assumindo que um vetor de movimento para trás é 0 e utilizando o vetor de movimento para frente do bloco de referência MB diretamente sem ajuste de escala (etapa S7). Após completar o prognóstico duplo na etapa S6 ou S7, um processo para o método de cálculo de vetor de movimento está completado.When the reference image corresponding to the forward motion vector of reference block MB is stored in the long term image buffer, the double prognosis is performed based on the motion vector calculation method shown in figure 37 assuming that a backward motion vector is 0 and using the forward motion vector of reference block MB directly without scaling (step S7). After completing the double prognosis in step S6 or S7, a process for the motion vector calculation method is completed.
[00289] Quando o número de vetores de movimento para frente do bloco de referência MB é "2", o número de vetores de movimento para frente correspondendo a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo é julgado (etapa S8).[00289] When the number of forward motion vectors of reference block MB is "2", the number of forward motion vectors corresponding to a reference image stored in long-term image buffer is judged (step S8). ).
[00290] Quando o número de vetores de movimento para frente correspondendo a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo é "0" na etapa S8, um vetor de movimento que está temporariamente próximo de uma imagem corrente contendo o bloco corrente MB tem a escala ajustada e o prognóstico duplo é executado utilizando o vetor de movimento para frente com a escala ajustada baseado no método de cálculo de vetor de movimento apresentado na figura 14 (etapa S9).When the number of forward motion vectors corresponding to a reference image stored in long-term image buffer is "0" in step S8, a motion vector that is temporarily close to a current image containing the block. The current MB is scaled and the double prognosis is performed using the scaled forward motion vector based on the motion vector calculation method shown in Figure 14 (step S9).
[00291] Quando o número de vetores de movimento para frente correspondendo a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo é "1" na etapa S8, um vetor de movimento em uma imagem armazenada na memória intermediária de imagem de curto prazo tem a escala ajustada e o prognóstico duplo é executado utilizando o vetor de movimento com a escala ajustada (etapa S10).When the number of forward motion vectors corresponding to a reference image stored in long-term image buffer is "1" in step S8, a motion vector in an image stored in short-image buffer The term is scaled and the double prognosis is performed using the scaled motion vector (step S10).
[00292] Quando o número de vetores de movimento para frente correspondendo a uma imagem de referência armazenada na memória intermediária de imagem de longo prazo é "2" na etapa S8, é julgado se uma mesma imagem na memória intermediária de imagem de longo prazo é referida por ambos dois vetores de movimento para frente (etapa S11). Se a mesma imagem na memória intermediária de imagem de longo prazo for referida por ambos dois vetores de movimento para frente (Sim na etapa S11), o prognóstico duplo é executado utilizando um vetor de movimento anteriormente codificado ou decodificado na imagem referida pelos dois vetores de movimento para frente na memória intermediária de imagem de longo prazo baseado no método de cálculo de vetor de movimento apresentado na figura 13(etapa S12).When the number of forward motion vectors corresponding to a reference image stored in long-term image buffer is "2" in step S8, it is judged whether the same image in long-term image buffer is referred to by both two forward motion vectors (step S11). If the same image in the long term image buffer is referred to by both two forward motion vectors (Yes in step S11), the double prognosis is performed using a motion vector previously encoded or decoded in the image referred to by the two forward motion vectors. forward motion in long-term image buffering based on the motion vector calculation method shown in Figure 13 (step S12).
[00293] Se uma mesma imagem na memória intermediária de imagem de longo prazo não for referida por ambos dois vetores de movimento para frente (Não na etapa S11), o prognóstico duplo é executado utilizando um vetor de movimento para frente correspondendo a uma imagem para a qual uma pequena ordem é designada na memória intermediária de imagem de longo prazo (etapa S13). Na memória intermediária de imagem de longo prazo, desde que as imagens de referência são armazenadas independente do tempo real das imagens, um vetor de movimento para frente a ser utilizado para o prognóstico duplo é selecionado de acordo com uma ordem designada para cada imagem de referência. Existe um caso em que a ordem das imagens de referência armazenadas na memória intermediária de imagem de longo prazo coincide com o tempo das imagens, entretanto, ela pode ser meramente coincidente com um endereço na memória intermediária. Em outras palavras, a ordem das imagens armazenadas na memória intermediária de imagem de longo prazo não necessariamente coincide com o tempo das imagens. Após completar o prognóstico duplo nas etapas S12eS13, o processo do método de cálculo de vetor de movimento está completado. (Décima Primeira Modalidade) [00294] A explicação detalhada da décima primeira modalidade de acordo com a presente invenção será dada abaixo utilizando ilustrações.If the same image in the long-term image buffer is not referred to by both two forward motion vectors (Not in step S11), the double prognosis is performed using a forward motion vector corresponding to an image for which a small order is assigned to the long term image buffer (step S13). In long-term image buffering, since reference images are stored independent of the actual time of the images, a forward motion vector to be used for dual prognosis is selected according to an order assigned to each reference image. . There is a case where the order of the reference images stored in the long term image buffer coincides with the time of the images, however, it may merely coincide with a buffer address. In other words, the order of the images stored in the long-term image buffer does not necessarily coincide with the time of the images. After completing the double prognosis in steps S12eS13, the process of motion vector calculation method is completed. (Eleventh Modality) The detailed explanation of the eleventh embodiment according to the present invention will be given below using illustrations.
[00295] A figura 40 é um diagrama de blocos apresentando uma configuração de um aparelho de codificação de imagem em movimento 1100 de acordo com a décima primeira modalidade da presente invenção. O aparelho de codificação de imagem em movimento 1100 é um aparelho que pode codificar imagens em movimento por aplicar um método de prognóstico espacial no modo direto mesmo se um bloco codificado em uma estrutura de campo e um bloco codificado em uma estrutura de quadro forem misturados e inclui uma memória de quadros 1101, uma unidade de cálculo de diferença 1102, uma unidade de codificação de diferença de prognóstico 1103, uma unidade de geração de fluxo de bits 1104, uma unidade de decodificação de diferença de prognóstico 1105, uma unidade de operação de adição 1106, uma memória de quadros 1107, uma unidade de detecção de vetor de movimento 1108, uma unidade de seleção de modo 1109, uma unidade de controle de codificação 110, uma chave 1111, uma chave 1112, uma chave 1113, uma chave 1114, uma chave 1115 e uma unidade de armazenamento de vetor de movimento 1116.Fig. 40 is a block diagram showing a configuration of a moving image coding apparatus 1100 according to the eleventh embodiment of the present invention. The motion picture coding apparatus 1100 is an apparatus that can encode motion pictures by applying a direct mode spatial prediction method even if a block encoded in a field structure and a block encoded in a frame structure are mixed and includes a frame memory 1101, a difference calculation unit 1102, a prognostic difference coding unit 1103, a bitstream generation unit 1104, a prognostic difference decoding unit 1105, a addition 1106, a frame memory 1107, a motion vector detection unit 1108, a mode selection unit 1109, an encoding control unit 110, a key 1111, a key 1112, a key 1113, a key 1114 , a key 1115 and a motion vector storage unit 1116.
[00296] A memória de quadros 1101 é uma memória de imagens armazenando as imagens informadas com base na imagem. A unidade de cálculo de diferença 1102 calcula o erro de prognóstico, o qual é a diferença entre uma imagem informada a partir da memória de quadros 1101 e uma imagem de referência obtida a partir de uma imagem decodificada baseado em um vetor de movimento e emite o mesmo. A unidade de codificação de diferença de prognóstico 1103 executa a conversão de freqüência para o erro de prognóstico obtido na unidade de cálculo de diferença 1102, quantiza e emite o mesmo. A unidade de geração de fluxo de bits 1104 converte para um formato do fluxo de bits codificado emitido após executar a codificação de comprimento variável do resultado codificado a partir da unidade de codificação de diferença de prognóstico 1103 e gera um fluxo de bits adicionando informação adicional tal como a informação de cabeçalho na qual a informação relacionada ao erro de prognóstico codificado é descrita. A unidade de decodificação de diferença de prognóstico 1105 executa a codificação de comprimento variável e a quantização inversa do resultado codificado a partir da unidade de codificação de diferença de prognóstico 1103 e após isto executa a conversão inversa da freqüên-cia tal como a conversão IDCT após executar e decodificar o resultado codificado para emitir o resíduo do prognóstico. A unidade de operação de adição 1106 adiciona um resíduo de prognóstico como um resultado decodificado, para a imagem de referência mencionada acima e emite uma imagem de referência apresentando a mesma imagem como uma imagem informada por dados de imagem codificados e decodificados. A memória de quadro 1107 é uma memória de imagens armazenando imagens de referência com base em imagens.[00296] Frame memory 1101 is an image memory for storing informed images based on the image. The difference calculation unit 1102 calculates the prognostic error, which is the difference between an informed image from frame memory 1101 and a reference image obtained from a decoded image based on a motion vector and outputs the same. The prediction difference coding unit 1103 performs frequency conversion for the prediction error obtained in the difference calculation unit 1102, quantizes and outputs it. Bitstream generation unit 1104 converts to a coded bit stream format issued after performing variable length coding of the coded result from the prediction difference coding unit 1103 and generates a bit stream by adding additional information such as as the header information in which information related to the coded prognostic error is described. The prognostic difference decoding unit 1105 performs variable length coding and inverse quantization of the encoded result from the prognostic difference coding unit 1103 and thereafter performs inverse frequency conversion such as IDCT conversion after execute and decode the coded result to emit the prognostic residue. Addition operation unit 1106 adds a prognostic residue as a decoded result to the reference image mentioned above and outputs a reference image presenting the same image as an image informed by encoded and decoded image data. Frame memory 1107 is an image memory storing reference images based on images.
[00297] A unidade de detecção de vetor de movimento 1108 deriva um vetor de movimento para cada codificação de um quadro corrente a ser codificado. A unidade de seleção de modo 1109 seleciona se o cálculo de um vetor de movimento é executado no modo direto ou em outro modo. A unidade de controle de codificação 1110 reordena as imagens informadas armazenadas na memória de quadros 1101 na ordem de entrada para a ordem de codificação. Adicionalmente, a unidade de controle de codificação 1110 julga qual dentre uma estrutura de campo ou uma estrutura de quadro é utilizada para codificação para cada tamanho predeterminado de um quadro corrente a ser codificado. Aqui, o tamanho predeterminado é um tamanho de dois macroblocos (por exemplo, 16 (horizontal) x 16 (vertical) pixels) combinado verticalmente (daqui para frente, par de macroblocos). Se uma estrutura de campo for utilizada para a codificação, um valor de pixel é lido a cada outra linha de varredura horizontal correspondendo ao entrelaçamento a partir da memória de quadros 1101, se uma base de quadro for utilizada para codificação, cada valor de pixel na imagem informada é lido seqüencialmente a partir da memória de quadros 1101 e cada valor de pixel lido é colocado na memória de modo a configurar um par de ma-croblocos corrente a ser codificado correspondendo à estrutura de campo ou à estrutura de quadro. A unidade de armazenamento de vetor de movimento 1116 armazena um vetor de movimento de um ma-crobloco codificado e os índices de referência dos quadros referidos pelo vetor de movimento. Os índices de referência são armazenados para cada macrobloco dos pares de macroblocos codificados.The motion vector detection unit 1108 derives a motion vector for each encoding of a current frame to be encoded. The mode selection unit 1109 selects whether the calculation of a motion vector is performed in direct mode or in another mode. The coding control unit 1110 reorders the informed images stored in frame memory 1101 in the input order to the coding order. Additionally, the coding control unit 1110 judges which of a field frame or frame structure is used for coding for each predetermined size of a current frame to be coded. Here, the default size is a size of two macroblocks (for example, 16 (horizontal) x 16 (vertical) pixels) vertically combined (hereafter, pair of macroblocks). If a field structure is used for encoding, a pixel value is read from each other horizontal scan line corresponding to interlacing from frame memory 1101, if a frame base is used for encoding, each pixel value in the The informed image is read sequentially from frame memory 1101 and each read pixel value is placed in memory to configure a current pair of macroblocks to be encoded corresponding to the field structure or frame structure. Motion vector storage unit 1116 stores a motion vector of an encoded macroblock and frame reference indices referred to by the motion vector. Reference indices are stored for each macroblock of the encoded macroblock pairs.
[00298] A seguir, uma operação do aparelho de codificação de imagem em movimento configurado como acima é explicada. As imagens a serem informadas são informadas para a memória de quadros 1101 com base na imagem em ordem de tempo. A figura 41A é uma ilustração apresentando uma ordem dos quadros informados para o aparelho de codificação de imagem em movimento 100 com base na imagem em ordem de tempo. A figura 41B é uma ilustração apresentando uma ordem das imagens reordenando a ordem das imagens apresentadas na figura 41A para a ordem de codificação. Na figura 41A, linhas verticais indicam imagens e o número indicado no lado inferior direito de cada imagem apresenta os tipos de imagem (I, P e B) com as primeiras letras do alfabeto e os números de imagem na ordem de tempo com os números seguintes. A figura 42 é uma ilustração apresentando uma estrutura de uma lista de quadros de referência 300 para explicar a décima primeira modalidade. Cada imagem informada para a memória de quadros 1101 é reordenada na ordem de codificação pela unidade de controle de codificação 1110. As imagens são reordenadas na ordem de codificação baseado na relação de referência de uma codificação por prognóstico interimagem e na ordem de codificação, uma imagem utilizada como uma imagem de referência é codificada anteriormente para uma imagem referindo-se a uma imagem.In the following, an operation of the motion picture coding apparatus configured as above is explained. The images to be informed are reported to frame memory 1101 based on the image in order of time. Fig. 41A is an illustration showing an order of the frames reported to the moving image coding apparatus 100 based on the image in time order. Fig. 41B is an illustration showing an order of the images by rearranging the order of the images shown in Fig. 41A to the coding order. In figure 41A, vertical lines indicate images and the number indicated on the lower right side of each image shows the image types (I, P and B) with the first letters of the alphabet and the image numbers in the order of time with the following numbers. . Fig. 42 is an illustration showing a structure of a frame list 300 to explain the eleventh embodiment. Each image reported to frame memory 1101 is reordered in coding order by coding control unit 1110. Images are reordered in coding order based on the reference ratio of an interimage prognostic coding and the coding order, an image. used as a reference image is previously encoded to an image referring to an image.
[00299] Por exemplo, é assumido que uma imagem P utiliza uma dentre três imagens I ou P precedentes e vizinhas como uma imagem de referência. Por outro lado, é assumido que uma imagem B utiliza uma dentre três imagens I ou P precedentes e vizinhas e uma das imagens I ou P seguintes e vizinhas como uma imagem de referência. Especificamente, uma imagem P7 que é informada após as imagens B5 e B6 na figura 41A é reordenada em colocada antes das imagens B5 e B6 desde que a imagem P7 é referida pelas imagens B5 e B6. Da mesma forma, uma imagem P10 informada após as imagens B8 e B9 é reordenada e colocada antes das imagens B8 e B9 e uma imagem P13 informada após as imagens B11 e B12 é reordenada e colocada antes das imagens B11 e B12. Por conseqüência, o resultado da reordenar uma ordem de imagens apresentada na figura 41A é como apresentado na figura 41B.For example, it is assumed that a P image uses one of three preceding and neighboring I or P images as a reference image. On the other hand, it is assumed that an image B uses one of three preceding and neighboring I or P images and one of the next and neighboring I or P images as a reference image. Specifically, an image P7 which is reported after images B5 and B6 in Fig. 41A is rearranged into placed before images B5 and B6 since image P7 is referred to by images B5 and B6. Similarly, an image P10 informed after images B8 and B9 is reordered and placed before images B8 and B9 and an image P13 informed after images B11 and B12 is rearranged and placed before images B11 and B12. Accordingly, the result of rearranging an order of images shown in Fig. 41A is as shown in Fig. 41B.
[00300] É assumido que cada imagem reordenada pela memória de quadros 1101 é lida com base no par de macroblocos e cada par de macroblocos tem o tamanho de 16 (horizontal) x 16 (vertical) pixels. Aqui, um par de macroblocos combina dois macroblocos verticalmente. Portanto, um par de macroblocos tem o tamanho de 16 (horizontal) x 32 (vertical) pixels. Um processo para codificar uma imagem B11 é explicado abaixo. Observe que nesta modalidade é assumido que a unidade de controle de codificação 1110 controla os índices de referência, ou seja, uma lista de quadros de referência.It is assumed that each frame reordered image 1101 is read based on the macroblock pair and each macroblock pair is 16 (horizontal) x 16 (vertical) pixels in size. Here, a pair of macroblocks combine two macroblocks vertically. Therefore, a pair of macroblocks is 16 (horizontal) x 32 (vertical) pixels in size. A process for encoding a B11 image is explained below. Note that in this embodiment it is assumed that the coding control unit 1110 controls the reference indices, ie a list of reference frames.
[00301] Desde que o quadro B11 é um quadro B, a codificação por prognóstico interimagem é executada utilizando a referência bidirecio-nal. É assumido que a imagem B11 utiliza duas das imagens precedentes P10, P7, P4 e uma imagem seguinte P13 como uma imagem de referência. Adicionalmente, é assumido que a seleção de duas ima- gens a partir destas quatro imagens pode ser especificada com base em macrobloco. Aqui, é assumido que os índices de referência são designados utilizando um método de condição inicial. Em outras palavras, uma lista de quadros de referência 300 durante a codificação da imagem B11 é como apresentada na figura 42. Com respeito a uma imagem de referência neste caso, a primeira imagem de referência é especificada pelo primeiro índice de referência na figura 42 e a segunda imagem de referência é especificada pelo segundo índice de referência.Since frame B11 is frame B, interimage prediction coding is performed using the bi-directional reference. It is assumed that picture B11 uses two of the preceding pictures P10, P7, P4 and a following picture P13 as a reference picture. In addition, it is assumed that the selection of two images from these four images can be specified based on macroblock. Here, it is assumed that reference indices are assigned using an initial condition method. In other words, a list of reference frames 300 during image coding B11 is as shown in Fig. 42. With respect to a reference image in this case, the first reference image is specified by the first reference index in Fig. 42 and The second reference image is specified by the second reference index.
[00302] Em um processo para a imagem B11, é assumido que a unidade de controle de codificação 1110 controla a chave 1113 para ficar ligada, as chaves 1114 e 1115 para ficarem desligadas. Portanto, um par de macroblocos na imagem B11 lida a partir da memória de quadros 1101 é informado para a unidade de detecção de vetor de movimento 1108, para a unidade de seleção de modo 109 e para a unidade de cálculo de diferença 1102. Na unidade de detecção de vetor de movimento 108, por utilizar os dados decodificados das imagens P10, P7 e P4 armazenadas na memória de quadros 1107 como uma imagem de referência, o primeiro vetor de movimento e o segundo vetor de movimento de cada macrobloco contido em um par de macroblocos é derivado. Na unidade de seleção de modo 1109, um modo de codificação para um par de macroblocos é determinado utilizando os vetores de movimento derivados na unidade de detecção de vetor de movimento 1108. Aqui, é assumido que o modo de codificação para uma imagem B pode ser selecionado, por exemplo, a partir da codificação intraimagem, da codificação por prognóstico interimagem utilizando vetor de movimento unidirecional, da codificação por prognóstico interimagem utilizando vetor de movimento bidirecional e um modo direto. Quando modos de codificação diferentes do modo direto são selecionados, é determinado qual dentre uma estrutura de quadro ou uma estrutura de campo é utilizada para codificar um par de macroblo-cos ao mesmo tempo.In a process for picture B11, it is assumed that coding control unit 1110 controls switch 1113 to be on, keys 1114 and 1115 to be off. Therefore, a pair of macroblock in image B11 read from frame memory 1101 is reported to motion vector detection unit 1108, mode selection unit 109, and difference calculation unit 1102. In unit motion detection sensor 108 by utilizing the decoded data from images P10, P7, and P4 stored in frame memory 1107 as a reference image, the first motion vector, and the second motion vector of each macroblock contained in a pair. macroblock is derived. In mode selection unit 1109, a coding mode for a pair of macroblocks is determined using the motion vectors derived in motion vector detection unit 1108. Here, it is assumed that the coding mode for an image B can be selected, for example, from intraimage coding, interimaging prognostic coding using one-way motion vector, interimaging prognostic coding using two-way motion vector and a direct mode. When encoding modes other than direct mode are selected, it is determined which of a frame structure or a field structure is used to encode a pair of macroblock at the same time.
[00303] Aqui, um método de cálculo de vetor de movimento utilizando um método de prognóstico espacial no modo direto é explicado. A figura 43A é um fluxograma apresentando um exemplo de um procedimento de cálculo de vetor de movimento utilizando um método por prognóstico espacial no modo direto quando um par de macroblocos a serem codificados em uma estrutura de campo e um par de macroblocos a serem codificados em uma estrutura de quadro são misturados.[00303] Here, a motion vector calculation method using a direct mode spatial prognostic method is explained. Fig. 43A is a flowchart showing an example of a motion vector calculation procedure using a direct mode spatial prediction method when a pair of macroblocks to be encoded in a field structure and a pair of macroblocks to be encoded in a Frame structure are mixed.
[00304] A figura 43B é uma ilustração apresentando um exemplo de uma localização de pares de macroblocos vizinhos junto aos quais a presente invenção é aplicada quando um par de macroblocos corrente a serem codificados é codificado em uma estrutura de quadro. A figura 43C é uma ilustração apresentando um exemplo de localização de pares de macroblocos vizinhos junto aos quais a presente invenção é aplicada quando um par de macroblocos a ser codificado é codificado em uma estrutura de campo. Um par de macroblocos diagonalmente sombreados nas figuras 43B e 43C é um par de macroblocos corrente a ser codificado.Fig. 43B is an illustration showing an example of a location of neighboring macroblock pairs to which the present invention is applied when a current macroblock pair to be encoded is encoded in a frame structure. Fig. 43C is an illustration showing an example of locating neighboring macroblock pairs to which the present invention is applied when a macroblock pair to be encoded is encoded in a field structure. A pair of diagonally shaded macroblock in FIGS. 43B and 43C is a current pair of macroblock to be encoded.
[00305] Quando um par de macroblocos corrente a ser codificado é codificado utilizando um prognóstico espacial no modo direto, três pares de macroblocos nas vizinhanças do par de macroblocos corrente a ser codificado são selecionados. Neste caso, o par de macrobloco corrente pode ser codificado em uma estrutura de campo ou em uma estrutura de quadro. Portanto, a unidade de controle de codificação 1110 primeiro determina qual dentre uma estrutura de campo ou uma estrutura de quadro é utilizada para codificar um par de macroblocos corrente a ser codificado. Por exemplo, quando o número e pares de macroblocos vizinhos codificados em uma estrutura de campo é grande, um par de macroblocos corrente é codificado em uma estrutura de campo e se o número de pares de macroblocos vizinhos codificados em uma estrutura de quadro for grande, um par de macroblocos corrente é codificado em uma estrutura de campo. Assim, por determinar qual dentre uma estrutura de campo e uma estrutura de quadro é utilizada para codificar um par de macroblocos corrente a ser codificado por utilizar a informação em relação aos blocos vizinhos, não é necessário descrever informação apresentando qual estrutura é utilizada para codificar um par de macroblocos corrente a ser codificado em um fluxo de bits. Adicionalmente, desde que uma estrutura é prognosticada a partir de pares de macroblocos vizinhos, é possível selecionar uma estrutura adequada.When a current macroblock pair to be encoded is encoded using a direct mode spatial prediction, three macroblock pairs in the vicinity of the current macroblock pair to be encoded are selected. In this case, the current macroblock pair can be encoded in a field structure or a frame structure. Therefore, the coding control unit 1110 first determines which of a field structure or frame structure is used to encode a pair of current macroblocks to be encoded. For example, when the number and pairs of neighboring macroblock encoded in a field structure is large, a current pair of macroblock encoded in a field structure and if the number of neighboring macroblock pairs encoded in a frame structure is large, A pair of current macroblocks is encoded in a field structure. Thus, by determining which of a field structure and a frame structure is used to encode a current pair of macroblocks to be encoded by using information relative to neighboring blocks, it is not necessary to describe information showing which structure is used to encode a current pair of macroblocks to be encoded in a bit stream. Additionally, as long as a structure is predicted from neighboring macroblock pairs, it is possible to select a suitable structure.
[00306] A seguir, a unidade de detecção de vetor de movimento 1108 calcula um vetor de movimento de um par de macroblocos corrente a ser codificado de acordo com a determinação do controle de codificação 1110. Primeiro, a unidade de detecção de vetor de movimento 1108 verifica qual dentre uma estrutura de campo ou uma estrutura de quadro é determinada para ser utilizada para codificação pela unidade de controle 110 (S301) e quando a estrutura de quadro é determinada como sendo utilizada para codificação, um vetor de movimento de um par de macroblocos corrente a ser codificado é derivado utilizando a estrutura de quadro (S302) e quando a estrutura de campo é determinada como sendo utilizada para codificação, um vetor de movimento do par de macroblocos corrente a ser codificado é derivado utilizando a estrutura de campo (S303).Next, motion vector detection unit 1108 calculates a motion vector of a current macroblock pair to be encoded according to the determination of encoding control 1110. First, motion vector detection unit 1108 checks which of a field structure or frame structure is determined to be used for encoding by control unit 110 (S301) and when the frame structure is determined to be used for encoding, a motion vector of a pair of current macroblock to be encoded is derived using frame structure (S302) and when the field structure is determined to be used for encoding, a motion vector of the current macroblock pair to be encoded is derived using field structure (S303) ).
[00307] A figura 44 é uma ilustração apresentando uma configuração de dados de um par de macroblocos quando a codificação é executada utilizando uma estrutura de quadro e uma configuração de um par de macroblocos quando a codificação é executada utilizando uma estrutura de campo. Na figura 44, um círculo branco indica um pixel em linhas de varredura horizontais de número ímpar e um círculo preto sombreado com um padrão tracejado de linhas oblíquas indica um pixel em linhas de varredura horizontais de número par. Quando um par de macroblocos é cortado a partir de cada quadro apresentando uma imagem informada, os pixels nas linhas de varredura horizontais de número ímpar e os pixels nas linhas de varredura horizontais de número par são colocados de forma alternada em uma direção vertical como apresentado na figura 44. Quando o par de macroblocos mencionado acima é codificado na estrutura de quadro, um processo é executado para cada macrobloco MB1 e para cada macrobloco MB2 para o par de macroblocos e um vetor de movimento é calculado para cada um dos macroblocos MB1 e MB2 formando um par de macroblocos. Quando o par de macroblocos é codificado na estrutura de campo, o par de macroblocos é dividido em macroblocos TF e BF. Aqui, o macrobloco TF indica um campo de cima e o macrobloco BF indica um campo de baixo quando entrelaçando um par de macroblocos em uma direção de linha de varredura horizontal e os dois campos formam um par de macroblocos. Então, um vetor de movimento é calculado para os dois campos respectivamente.Fig. 44 is an illustration showing a data configuration of a macroblock pair when coding is performed using a frame structure and a macroblock pair configuration when coding is performed using a field structure. In Figure 44, a white circle indicates a pixel in odd-numbered horizontal scan lines, and a black circle shaded with a dashed oblique line pattern indicates a pixel in even-numbered horizontal scan lines. When a pair of macroblocks are cut from each frame presenting an informed image, the pixels in the odd-numbered horizontal scan lines and the pixels in the even-numbered horizontal scan lines are alternately placed in a vertical direction as shown in Figure 44. When the above mentioned macroblock pair is encoded in the frame structure, a process is performed for each MB1 macroblock and for each MB2 macroblock for the macroblock pair and a motion vector is calculated for each MB1 and MB2 macroblock. forming a pair of macroblocks. When the macroblock pair is encoded in the field structure, the macroblock pair is divided into TF and BF macroblocks. Here, macroblock TF indicates an upper field and macroblock BF indicates a lower field when interlacing a pair of macroblocks in a horizontal scan line direction and the two fields form a pair of macroblocks. Then a motion vector is calculated for both fields respectively.
[00308] Baseado em tal par de macroblocos, o caso em que um o par de macroblocos corrente a ser codificado é codificado em uma estrutura de quadro é explicado como apresentando na figura 43B. A figura 45 é um fluxograma apresentando um procedimento de processamento detalhado em uma etapa S302 apresentada na figura 43. Observe que na figura 45, um par de macroblocos é indicado como MBP e um macrobloco é indicado como MB.Based on such a macroblock pair, the case in which a current macroblock pair to be encoded is encoded in a frame structure is explained as shown in Fig. 43B. Fig. 45 is a flowchart showing a detailed processing procedure in step S302 shown in Fig. 43. Note that in Fig. 45, a pair of macroblock is indicated as MBP and a macroblock is indicated as MB.
[00309] A unidade de seleção de modo 1109 primeiro calcula um vetor de movimento de um macrobloco MB1 (um macrobloco superior), o qual é um dos macroblocos formando um par de macroblocos corrente a ser codificado, utilizando um prognóstico espacial no modo direto. Primeiro, a unidade de seleção de modo 1109 calcula o menor valor de índices nas imagens referidas pelos pares de macroblocos vizinhos para os primeiro e segundo índices respectivamente (S501). Neste caso, entretanto, quando um par de macroblocos vizinho é codificado na estrutura de quadro, o valor é determinado utilizando somente um ma-crobloco adjacente a um macrobloco corrente a ser codificado. A seguir, é verificado se os pares de macroblocos vizinhos são codificados na estrutura de campo (S502) e se a codificação é executada utilizando a estrutura de campo, é adicionalmente verificado o número de campos para os quais o menores índices são designados nos campos referidos pelos dois macroblocos formando os pares de macroblocos vizinhos a partir de uma lista de quadros de referência na figura 42 (S503).The mode selection unit 1109 first calculates a motion vector of an MB1 macroblock (an upper macroblock), which is one of the macroblocks forming a current macroblock pair to be encoded, using a direct mode spatial prediction. First, mode selection unit 1109 calculates the smallest index value in the images referred by neighboring macroblock pairs for the first and second indexes respectively (S501). In this case, however, when a neighboring macroblock pair is encoded in the frame structure, the value is determined using only one macroblock adjacent to a current macroblock to be encoded. Next, it is checked if the neighboring macroblock pairs are encoded in the field structure (S502) and if the encoding is performed using the field structure, the number of fields for which the lowest indices are assigned in the referred fields is additionally checked. by the two macroblocks forming neighboring macroblock pairs from a list of reference frames in Fig. 42 (S503).
[00310] Quando o resultado da verificação da etapa S503 apresenta que o menor índice é designado para qualquer campo referido pelos dois macroblocos (ou seja, campos para os quais o mesmo índice é designado), um valor médio de vetores de movimento dos dois macroblocos é calculado e feito ser um vetor de movimento do par de macroblocos vizinho. Isto é desde de que, quando considerando baseado em uma estrutura entrelaçada, dois macroblocos dos pares de macroblocos com a estrutura de campo são adjacentes a um macrobloco corrente a ser codificado com a estrutura de quadro.When the result of the verification of step S503 shows that the smallest index is assigned to any field referred to by the two macroblocks (ie fields to which the same index is assigned), an average value of motion vectors of the two macroblocks. is calculated and made to be a motion vector of the neighboring macroblock pair. This is since, when considering based on an interlaced structure, two macroblocks of the macroblock pairs with the field structure are adjacent to a current macroblock to be encoded with the frame structure.
[00311] Quando o resultado da verificação da etapa S503 mostra que o menor índice é designado para somente um campo referido por um macrobloco; um vetor de movimento do macrobloco é determinado como um vetor do par de macroblocos vizinho (S504A). Quando o menor índice não é designado para nenhum dos campos referidos, um vetor de movimento do par de macroblocos vizinho é assumido como sendo "0" (S505).When the result of the verification of step S503 shows that the smallest index is assigned to only one field referred to by a macroblock; A macroblock motion vector is determined as a neighboring macroblock pair vector (S504A). When the lowest index is not assigned to any of the mentioned fields, a motion vector of the neighboring macroblock pair is assumed to be "0" (S505).
[00312] Nos casos acima, a partir dos vetores de movimento dos macroblocos vizinhos, por utilizar somente vetores de movimento referindo-se aos campos para os quais o menor índice é designado, é pos- sível selecionar um vetor de movimento com a eficiência de codificação mais elevada. Um processo em uma etapa S505 apresenta que não existe vetor de movimento adequado para o prognóstico.In the above cases, from the motion vectors of neighboring macroblocks, by using only motion vectors referring to the fields to which the lowest index is assigned, it is possible to select a motion vector with the efficiency of higher coding. A process in one step S505 shows that there is no proper motion vector for prognosis.
[00313] Quando o resultado da verificação da etapa S502 apresenta que os pares de macroblocos vizinhos são codificados na estrutura de quadro, entre os pares de macroblocos vizinhos, um vetor de movimento de um macrobloco adjacente a um macrobloco corrente a ser codificado é determinado como um vetor de movimento do par de macroblocos vizinho (S506).When the result of the verification of step S502 shows that neighboring macroblock pairs are encoded in the frame structure between neighboring macroblock pairs, a motion vector of a macroblock adjacent to a current macroblock to be encoded is determined as a motion vector of the neighboring macroblock pair (S506).
[00314] A unidade de seleção de modo 1109 repete os processos das etapas S501 até S506 acima para os três pares de macroblocos vizinhos selecionados. Como resultado, um vetor de movimento é calculado para cada um dos três pares de macroblocos vizinhos como para um macrobloco de um par de macroblocos corrente a ser codificado, por exemplo, um macrobloco MB1.[00314] The mode selection unit 1109 repeats the processes from steps S501 through S506 above for the three selected neighboring macroblock pairs. As a result, a motion vector is calculated for each of the three neighboring macroblock pairs as for a macroblock of a current macroblock pair to be encoded, for example, an MB1 macroblock.
[00315] A seguir, a unidade de seleção de modo 1109 verifica se o número de pares de macroblocos vizinhos referindo-se a um quadro com o menor índice ou para um campo do quadro entre três pares de macroblocos vizinhos é 1 (S507).Next, mode selection unit 1109 checks whether the number of neighboring macroblock pairs referring to a frame with the lowest index or to a frame field between three neighboring macroblock pairs is 1 (S507).
[00316] Neste caso, a unidade de seleção de modo 1109 unifica os índices de referência dos três pares de macroblocos vizinhos para um índice de quadro de referência ou para um índice de campo de referência e compara os mesmos. Em uma lista de quadros de referência apresentada na figura 42, os índices de referência são meramente designados para cada quadro, entretanto, desde que a relação entre os índices de quadro de referência e os índices de campo de referência para os quais os índices são designados para cada campo é constante, é possível converter um da lista de quadro de referência ou de uma lista de campo de referência para outros índices por cálculo.In this case, the mode selection unit 1109 unifies the reference indices of the three neighboring macroblock pairs to a reference frame index or a reference field index and compares them. In a list of reference frames shown in Fig. 42, reference indices are merely assigned to each frame, however, provided that the relationship between the reference frame indices and the reference field indices to which the indices are assigned. For each field is constant, you can convert one from the reference frame list or from a reference field list to other key figures by calculation.
[00317] A figura 46 é um gráfico indicador apresentando uma rela- ção entre os índices de campo de referência e os índices de quadro de referência.[00317] Fig. 46 is an indicator graph showing a relationship between the reference field indices and the reference frame indices.
[00318] Como apresentado na figura 46, existem vários quadros indicados pelo primeiro campo f1 e pelo segundo campo f2 em ordem cronológica em uma lista de campos de referência e índices de quadro de referência tal como 0, 1 e 2 são designados para cada quadro baseado nos quadros incluindo um bloco corrente a ser codificado (os quadros apresentados na figura 46). Em adição, os índices de campo de referência tal como 0, 1 e 2 são designados para o primeiro campo f1 e para o segundo campo f2 de cada quadro baseado no primeiro campo f1 de um quadro incluindo um bloco corrente a ser codificado (quando o primeiro campo é um campo corrente a ser codificado). Observe que os índices de campo de referência são designados a partir do primeiro campo f1 e do segundo campo f2 de um quadro próximo a um campo corrente a ser codificado. Aqui, se o bloco corrente a ser codificado for o primeiro campo f 1, os índices são designados dando prioridade para o primeiro campo f1 e se o bloco corrente a ser codificado for o segundo campo f2, os índices são designados dando prioridade para o segundo campo f2.As shown in Fig. 46, there are several tables indicated by the first field f1 and the second field f2 in chronological order in a list of reference fields and reference frame indices such as 0, 1 and 2 are assigned to each frame. based on the frames including a current block to be encoded (the frames shown in figure 46). In addition, reference field indices such as 0, 1 and 2 are assigned to the first field f1 and the second field f2 of each frame based on the first field f1 of a frame including a current block to be encoded (when the first field is a current field to be encoded). Note that reference field indices are assigned from the first field f1 and the second field f2 of a frame next to a current field to be encoded. Here, if the current block to be encoded is the first field f 1, the indexes are assigned giving priority to the first field f1 and if the current block to be encoded is the second field f2, the indexes are assigned giving priority to the second field. field f2.
[00319] Por exemplo, quando um macrobloco vizinho codificado na estrutura de quadro refere-se a um quadro com um índice de quadro de referência "1" e um macrobloco vizinho codificado na estrutura de campo refere-se ao primeiro campo f1 com um índice de campo de referência "2", os macroblocos vizinhos mencionados acima são tratados como se eles fizessem referência a uma mesma imagem. Em outras palavras, quando uma pré-condição de que um índice de quadro de referência referido por um macrobloco vizinho seja igual a metade do índice de campo de referência (arredondando para baixo após o ponto decimal) designado para um campo de referência de outro macrobloco vizinho é satisfeita, os macroblocos vizinhos são tratados como se eles fizessem referência a uma mesma imagem.For example, when a neighbor macroblock encoded in the frame structure refers to a frame with a frame reference index "1" and a neighbor macroblock encoded in the field structure refers to the first field f1 with an index With reference field "2", the neighboring macroblocks mentioned above are treated as if they refer to the same image. In other words, when a precondition that a reference frame index referenced by a neighboring macroblock is equal to half of the reference field index (rounding down after the decimal point) assigned to a reference field of another macroblock. neighbor is satisfied, neighboring macroblocks are treated as if they refer to the same image.
[00320] Por exemplo, quando um bloco corrente a ser codificado incluído no primeiro campo f1 indicado por Δ na figura 46 refere-se ao primeiro campo f1 com o índice de campo de referência "2" e um ma-crobloco vizinho com a estrutura de quadro refere-se a um quadro com o índice de quadro de referência "1", os blocos vizinhos mencionados acima são tratados como se eles fizessem referência a uma mesma imagem desde que a pré-condição mencionada acima é satisfeita. Por outro lado, quando um macrobloco vizinho refere-se ao primeiro campo com um índice de campo de referência "2" e outro macrobloco vizinho refere-se a um quadro com um índice de quadro de referência "3", os blocos vizinhos são tratados como se eles não fizessem referência a uma mesma imagem desde que a pré-condição não é satisfeita.For example, when a current block to be encoded included in the first field f1 indicated by Δ in Fig. 46 refers to the first field f1 with reference field index "2" and a neighbor macroblock with structure frame refers to a frame with the reference frame index "1", the neighboring blocks mentioned above are treated as if they referenced the same image as long as the precondition mentioned above is met. On the other hand, when a neighbor macroblock refers to the first field with a reference field index "2" and another neighbor macroblock refers to a frame with a reference frame index "3", neighboring blocks are treated. as if they did not refer to the same image since the precondition is not satisfied.
[00321] Como mencionado acima, se o resultado da verificação da etapa S507 apresentar que o número é 1, um vetor de movimento de um par de macroblocos vizinho referindo-se a um campo de um quadro com o menor índice ou um campo no quadro é determinado como um vetor de movimento de um macrobloco corrente a ser codificado (S508). Se o resultado da verificação da etapa S507 apresentar que o número não é 1, é adicionalmente verificado se o número dos pares de macroblocos vizinhos de três pares de macroblocos vizinhos referindo-se a um quadro com o menor índice ou um campo no quadro é 2 ou mais (S509). Então, se o número for 2 ou mais, assumindo que um vetor de movimento de pares de macroblocos vizinhos não referindo-se a um quadro com o menor índice ou um campo no quadro é "0" (S510), um valor médio de três vetores de movimento dos pares de macroblocos vizinhos é determinado como um vetor de movimento de um macrobloco corrente a ser codificado (S511). Se o resultado da verificação da etapa S509 for menor do que 2, desde que o número dos pares de macroblocos vizinhos referindo-se ao quadro com o menor índice ou o campo no quadro é "0", um vetor de movimento de um macrobloco corrente a ser codificado é determinado como "0" (S512).As mentioned above, if the result of the verification of step S507 shows that the number is 1, a motion vector of a neighboring macroblock pair referring to a field of a frame with the lowest index or a field in the frame is determined as a motion vector of a current macroblock to be encoded (S508). If the result of checking from step S507 shows that the number is not 1, it is further checked whether the number of neighboring macroblock pairs of three neighboring macroblock pairs referring to a frame with the lowest index or a field in the frame is 2. or more (S509). So if the number is 2 or more, assuming a motion vector of neighboring macroblock pairs not referring to a frame with the lowest index or a field in the frame is "0" (S510), an average value of three Movement vectors of neighboring macroblock pairs is determined as a motion vector of a current macroblock to be encoded (S511). If the result of checking step S509 is less than 2, provided that the number of neighboring macroblock pairs referring to the frame with the lowest index or the field in the frame is "0", a motion vector of a current macroblock to be encoded is determined as "0" (S512).
[00322] Como resultado do processo acima, um vetor de movimento MV1 pode ser obtido como um resultado do cálculo para um macrobloco formando um par de macroblocos a ser codificado, por exemplo MB1. A unidade de seleção de modo 109 executa o processo acima para um vetor de movimento com o segundo índice de referência e executa a compensação de movimento pelo prognóstico duplo utilizando os dois vetores de movimento obtidos. Entretanto, quando nenhum dos macroblocos vizinhos contém o primeiro ou o segundo vetor de movimento, a compensação de movimento é executada não utilizando um vetor de movimento na direção indicada por um vetor de movimento não contido nos macroblocos vizinhos, mas utilizando um vetor de movimento com direção única. Além disso, o mesmo processo é repetido para os outros macroblocos no par de macroblocos corrente a ser codificado, por exemplo, MB2. Como resultado, é igual executar a compensação de movimento no modo direto para cada um dos dois macroblocos em um par de macroblocos corrente a ser codificado.As a result of the above process, a motion vector MV1 can be obtained as a result of the calculation for a macroblock forming a pair of macroblocks to be encoded, for example MB1. The mode selection unit 109 performs the above process for a motion vector with the second reference index and performs motion compensation for the double prognosis using the two motion vectors obtained. However, when neither neighboring macroblock contains the first or second motion vector, motion compensation is performed not by using a motion vector in the direction indicated by a motion vector not contained in neighboring macroblocks, but using a motion vector with One way only. In addition, the same process is repeated for the other macroblocks in the current macroblock pair to be encoded, for example MB2. As a result, it is equal to perform direct mode motion compensation for each of the two macroblocks in a current pair of macroblocks to be encoded.
[00323] A seguir, um caso em que um par de macroblocos corrente a ser codificado é codificado na estrutura de quadro como apresentado na figura 43C é explicado. A figura 47 é um fluxograma apresentando um procedimento de processamento detalhado em uma etapa S303 apresentada na figura 43. A unidade de seleção de modo 1109 calcula um vetor de movimento MVt utilizando um prognóstico espacial no modo direto para um macrobloco formando um par de macroblocos a ser codificado, por exemplo, um macrobloco TF correspondendo a um campo de cima do par de macroblocos. Primeiro, a unidade de seleção de modo 1109 calcula o menor valor de índices na imagem referida pelos pares de macroblocos vizinhos (S601). Entretanto, quando os pares de macroblocos são processados pela estrutura de campo, so- mente um macrobloco de um campo (um campo de cima ou um campo de baixo) igual ao macrobloco corrente a ser codificado é considerado. A seguir, é verificado se os pares de macroblocos vizinhos são codificados pela estrutura de quadro (S602) e se a codificação for executada utilizando a estrutura de quadro, é adicionalmente julgado se os quadros referidos pelos dois macroblocos no par de macroblocos vizinho são quadros com o menor índice baseado no valor de índice designado para cada quadro uma lista de quadros de referência 300 (S603).In the following, a case in which a pair of current macroblock to be encoded is encoded in the frame structure as shown in Fig. 43C is explained. Fig. 47 is a flowchart showing a detailed processing procedure in step S303 shown in Fig. 43. Mode selection unit 1109 calculates a motion vector MVt using a direct mode spatial prediction for a macroblock forming a pair of macroblocks a be encoded, for example, a TF macroblock corresponding to a field above the macroblock pair. First, mode selection unit 1109 calculates the smallest index value in the image referred to by neighboring macroblock pairs (S601). However, when macroblock pairs are processed by the field structure, only one macroblock of a field (an upper field or a lower field) equal to the current macroblock to be encoded is considered. Next, it is checked whether the neighboring macroblock pairs are encoded by the frame structure (S602) and if the encoding is performed using the frame structure, it is further judged whether the frames referred to by the two macroblocks in the neighboring macroblock pair are frames with The smallest index based on the index value assigned to each frame is a list of 300 reference frames (S603).
[00324] Se o resultado da verificação da etapa S603 apresentar que o menor índice é designado para qualquer um dos quadros referidos pelos dois macroblocos, um valor médio dos vetores de movimento dos dois macroblocos é calculado e o resultado do cálculo é determinado como um vetor de movimento do par de macroblocos vizinho (S604). Se o resultado da verificação da etapa S603 mostrar que um ou ambos os quadros referidos não são quadros com o menor índice, é adicionalmente verificado se um quadro referido por qualquer um dos macroblocos contém o menor índice (S605). Se o resultado da verificação mostrar que o menor índice é designado para um quadro referido por um dos macroblocos, um vetor de movimento do macrobloco é determinado como um vetor de movimento do par de macroblocos vizinho (S606). Por outro lado, se o resultado da verificação da etapa S605 mostrar que nenhum dos macroblocos refere-se a um quando com o menor índice, um vetor de movimento do par de macroblocos vizinho é determinado como "0" (S607). Nos casos acima, a partir dos vetores de movimento dos macroblocos vizinhos, por utilizar somente os vetores de movimento referindo-se aos quadros para os quais o menor índice é designado, é possível selecionar um vetor de movimento com a eficiência de codificação mais elevada. Um processo em uma etapa S607 apresenta que não existe vetor de movimento adequado para o prognóstico.If the result of the verification of step S603 shows that the lowest index is assigned to either of the frames referred to by the two macroblocks, an average value of the motion vectors of the two macroblocks is calculated and the result of the calculation is determined as a vector. neighboring macroblock pair of motion (S604). If the result of checking from step S603 shows that one or both of the frames referenced are not frames with the lowest index, it is further checked whether a frame referenced by either macroblock contains the lowest index (S605). If the scan result shows that the smallest index is assigned to a frame referred to by one of the macroblocks, a macroblock motion vector is determined as a neighbor macroblock pair motion vector (S606). On the other hand, if the result of the verification of step S605 shows that none of the macroblock refers to one when with the lowest index, a motion vector of the neighboring macroblock pair is determined as "0" (S607). In the above cases, from the motion vectors of neighboring macroblocks, by using only motion vectors referring to the frames for which the lowest index is assigned, it is possible to select a motion vector with the highest coding efficiency. A process in one step S607 shows that there is no proper motion vector for prognosis.
[00325] Quando o resultado da verificação da etapa S602 mostra que os pares de macroblocos vizinhos são codificados na estrutura de campo, no par de macroblocos vizinhos, os vetores de movimento do par de macroblocos vizinho como um todo é determinando como um vetor de movimento do par de macroblocos correspondendo a um ma-crobloco corrente em um par de macroblocos corrente a ser codificado (S608). A unidade de seleção de modo 109 processa a partir das etapas S601 até S608 para três pares de macroblocos vizinhos selecionados. Como resultado, é igual obter um vetor de movimento para três pares de macroblocos vizinhos respectivamente como para um macro-bloco do par de macrobloco corrente a ser codificado, por exemplo, um macrobloco TF.When the result of the verification of step S602 shows that neighboring macroblock pairs are encoded in the field structure in the neighboring macroblock pair, the motion vectors of the neighboring macroblock pair as a whole is determining as a motion vector. of the macroblock pair corresponding to a current macroblock in a current macroblock pair to be encoded (S608). Mode select unit 109 processes from steps S601 through S608 for three pairs of selected neighboring macroblocks. As a result, it is equal to obtain a motion vector for three neighboring macroblock pairs respectively as for a macroblock of the current macroblock pair to be encoded, for example a TF macroblock.
[00326] A seguir, a unidade de detecção de vetor de movimento 108 verifica se o número de pares de macroblocos vizinhos referindo-se a um quadro com o menor índice entre três pares de macroblocos vizinhos é 1 (S609). Se for 1, um vetor de movimento de um par de macroblocos vizinho referindo-se a um quadro com o menor índice é determinado como um vetor de movimento do macrobloco corrente a ser codificado (S610). Se o resultado da verificação da etapa S609 mostrar que o número não é 1, é adicionalmente verificado se o número de pares de macroblocos vizinhos referindo-se a um quadro com o menor índice entre os três pares de macroblocos vizinhos é dois ou mais (S611). Então, se o número for dois ou mais, assumindo que um vetor de movimento dos pares de macroblocos vizinhos não referindo-se a um quadro com o menor índice é "0" (S612), um valor médio de três vetores de movimento dos pares de macroblocos vizinhos é determinado como um vetor de movimento do macrobloco corrente a ser codificado (S613). Se o resultado da verificação da etapa S611 for menor do que 2, desde que o número de pares de macroblocos vizinhos referindo-se a um quadro com o menor índice é "0", um vetor de movimen- to do macrobloco corrente a ser codificado é determinado como "0" (S614).Next, motion vector detection unit 108 checks whether the number of neighboring macroblock pairs referring to a frame with the lowest index among three neighboring macroblock pairs is 1 (S609). If 1, a motion vector of a neighboring macroblock pair referring to a frame with the lowest index is determined as a motion vector of the current macroblock to be encoded (S610). If the result of checking from step S609 shows that the number is not 1, it is further checked whether the number of neighboring macroblock pairs referring to a frame with the lowest index among the three neighboring macroblock pairs is two or more (S611 ). So if the number is two or more, assuming a motion vector of neighboring macroblock pairs not referring to a frame with the lowest index is "0" (S612), an average value of three pair motion vectors neighboring macroblock is determined as a motion vector of the current macroblock to be encoded (S613). If the result of the verification of step S611 is less than 2, since the number of neighboring macroblock pairs referring to a frame with the lowest index is "0", a motion vector of the current macroblock to be encoded. is determined as "0" (S614).
[00327] Como resultado do processo acima, um vetor de movimento MVt pode ser obtido como um resultado de cálculo para um macrobloco formando um par de macroblocos corrente a ser codificado, por exemplo, um macrobloco TF correspondendo a um campo de cima. A unidade de seleção de modo 109 repete o processo acima também para o segundo vetor de movimento (correspondendo ao segundo índice de referência). Como para um macrobloco TF, dois vetores e movimento podem ser obtidos pelo processo acima e a compensação de movimento é executada utilizando os dois vetores de movimento. Entretanto, quando nenhum dos macroblocos vizinhos contém o primeiro ou o segundo vetor de movimento, a compensação de movimento é executada não utilizando um vetor de movimento na direção indicada por um vetor de movimento não contido nos macroblocos vizinhos, mas utilizando um vetor de movimento em direção única. Isto é porque quando um par de macroblocos vizinho refere-se somente de forma unidirecional, é concebível que a eficiência da codificação torne-se mais elevada quando um par de macroblocos vizinho também refere-se a somente uma direção.[00327] As a result of the above process, a motion vector MVt can be obtained as a calculation result for a macroblock forming a current macroblock pair to be encoded, for example, a TF macroblock corresponding to an upper field. The mode selection unit 109 repeats the above process also for the second motion vector (corresponding to the second reference index). As for a TF macroblock, two motion vectors can be obtained by the above process and motion compensation is performed using the two motion vectors. However, when neither neighboring macroblock contains the first or second motion vector, motion compensation is performed not by using a motion vector in the direction indicated by a motion vector not contained in neighboring macroblocks, but using a motion vector in One way only. This is because when a neighboring macroblock pair refers only unidirectionally, it is conceivable that coding efficiency becomes higher when a neighboring macroblock pair also refers to only one direction.
[00328] Além disso, o mesmo processo é repetido para outro macrobloco no par de macroblocos corrente a ser codificado, por exemplo, BF correspondendo a um campo de baixo. Como resultado, é igual executar a compensação de movimento no modo direto para cada um dos dois macroblocos no par de macroblocos corrente a ser codificado, por exemplo, os macroblocos TF e BF.In addition, the same process is repeated for another macroblock in the current macroblock pair to be encoded, for example, BF corresponding to a field below. As a result, it is equal to perform direct mode motion compensation for each of the two macroblocks in the current pair of macroblocks to be encoded, for example, TF and BF macroblocks.
[00329] Observe que nos casos acima, quando uma estrutura de codificação para um par de macroblocos corrente a ser codificado e uma estrutura de codificação para um par de macroblocos vizinho são diferentes, é executado um cálculo por um processo tal como calcular um valor médio dos vetores de movimento dos dois macroblocos no par de macroblocos vizinho, entretanto, a presente invenção não está limitada aos casos acima. Por exemplo, somente quando uma estrutura de codificação para um par de macroblocos corrente a ser codificado e para um par de macroblocos vizinho são as mesmas, um vetor de movimento do par de macroblocos vizinho pode ser utilizado e quando uma estrutura de codificação para um par de macroblocos corrente a ser codificado e para um par de macroblocos vizinho são diferentes, um vetor do movimento do par de macroblocos vizinho cuja estrutura de codificação é diferente não é utilizado. Especificamente, 1. Quando um par de macroblocos corrente a ser codificado está codificado na estrutura de quadro, somente um vetor de movimento de um par de macroblocos vizinho codificado na estrutura de quadro é utilizado. Neste caso, quando nenhum dos vetores de movimento do par de macroblocos vizinho codificado na estrutura de quadro refere-se a um quadro com o menor índice, um vetor de movimento do par de macroblocos corrente a ser codificado é determinado como "0". Quando um par de macroblocos vizinho é codificado na estrutura de campo, um vetor de movimento do par de macroblocos vizinho é determinado como "0".Note that in the above cases, when a coding structure for a current macroblock pair to be coded and a coding structure for a neighboring macroblock pair are different, a calculation is performed by a process such as calculating an average value. of the motion vectors of the two macroblocks in the neighboring macroblock pair, however, the present invention is not limited to the above cases. For example, only when a coding structure for a current macroblock pair to be coded and a neighboring macroblock pair are the same, can a motion vector of the neighboring macroblock pair be used and when a coding structure for a pair is of the current macroblock to be encoded and for a neighboring macroblock pair are different, a motion vector of the neighboring macroblock pair whose coding structure is different is not used. Specifically, 1. When a current macroblock pair to be encoded is encoded in the frame structure, only a motion vector of a neighboring macroblock pair encoded in the frame structure is used. In this case, when none of the motion vectors of the neighboring macroblock pair encoded in the frame structure refers to a frame with the lowest index, a motion vector of the current macroblock pair to be encoded is set to "0". When a neighboring macroblock pair is encoded in the field structure, a motion vector of the neighboring macroblock pair is determined as "0".
[00330] A seguir, 2. Quando um par de macroblocos corrente a ser codificado é codificado na estrutura de campo, somente um vetor de movimento de um par de macroblocos vizinho codificado em uma estrutura de campo é utilizado. Neste caso, quando nenhum dos vetores de movimento do par de macroblocos vizinho codificado na estrutura de campo refere-se a um quadro com o menor índice, um vetor de movimento do par de macroblocos corrente a ser codificado é determinado como "0". Quando um par de macroblocos vizinho é codificado na estrutura de quadro, um vetor de movimento do par de macroblocos vizinho é determinado como "0". Assim, após calcular um vetor de movimento de cada par de macroblocos vizinho, 3. Quando o número de vetores de movimento obtidos por referir-se a um quadro com o menor índice ou um campo no quadro entre estes vetores de movimento é somente um, o vetor de movimento é determinado como um vetor de movimento de um par de macroblocos corrente no modo direto e se o número não for 1, um valor médio de três vetores de movimento é determinado como um vetor de movimento do par de macroblocos corrente no modo direto.[00330] Next, 2. When a current macroblock pair to be encoded is encoded in the field structure, only a motion vector of a neighboring macroblock pair encoded in a field structure is used. In this case, when none of the motion vectors of the neighboring macroblock pair encoded in the field structure refers to a frame with the lowest index, a motion vector of the current macroblock pair to be encoded is set to "0". When a neighboring macroblock pair is encoded in the frame structure, a motion vector of the neighboring macroblock pair is determined as "0". Thus, after calculating a motion vector of each neighboring macroblock pair, 3. When the number of motion vectors obtained by referring to a frame with the lowest index or a field in the frame between these motion vectors is only one, the motion vector is determined as a motion vector of a current macroblock pair in direct mode and if the number is not 1, an average value of three motion vectors is determined as a motion vector of the current macroblock pair in direct mode. direct.
[00331] Adicionalmente, nos casos acima, qual dentre uma estrutura de campo e uma estrutura de quadro é utilizada para codificar um par de macroblocos corrente a ser codificado é determinado baseado na maioria de uma estrutura de codificação de pares de macroblocos vizinhos codificados, entretanto, a presente invenção não está limitada ao caso acima. Uma estrutura de codificação pode ser fixa, por exemplo, uma estrutura de quadro é sempre utilizada para codificar no modo direto, ou uma estrutura de campo é sempre utilizada para codificar no modo direto. Neste caso, por exemplo, quando a estrutura de campo e a estrutura de quadro são trocadas para cada quadro corrente a ser codificado, isto pode ser descrito em um cabeçalho do fluxo de bits como um todo ou em um cabeçalho de quadro de cada quadro. A troca é executada, por exemplo, com base na seqüência, com base no GOP, com base na imagem e com base na fatia e neste caso, isto pode ser descrito em um cabeçalho correspondente de um fluxo de bits ou semelhante. Desnecessário dizer que, mesmo nos casos acima, somente quando as estruturas de codificação utilizadas para um par de macroblocos corrente a ser codificado e para um par de macroblocos vizinho são a mesma, um vetor de movimento do par de macroblocos corrente a ser codificado no modo direto pode ser calculado por um método utilizando um vetor de movimento do par de macroblocos vizinho. Em adição, quando transmitindo como pacotes, uma parte de cabeçalho e uma parte de dados podem ser separadas e transmitidas respectiva- mente. Neste caso, a parte de cabeçalho e a parte de dados nunca são incluídas em um fluxo de bits. Entretanto, como para os pacotes, apesar de uma ordem de transmissão poder ser mais ou menos fora de seqüência, uma parte de cabeçalho correspondendo a um parte de dados correspondente é apenas transmitida em outro pacote e não existe diferença mesmo se ela não estiver incluída em um fluxo de bits. Assim, apesar de fixar qual dentre a estrutura de quadro e a estrutura de campo é utilizada, um processo para determinar uma estrutura de codificação por utilizar a informação de vizinhos torna-se desnecessária e um processo pode ser simplificado.Additionally, in the above cases, which of a field structure and a frame structure is used to encode a current macroblock pair to be encoded is determined based on the majority of a coding frame of encoded neighboring macroblock pairs, however. , the present invention is not limited to the above case. An encoding structure may be fixed, for example, a frame structure is always used for direct mode coding, or a field structure is always used for direct mode coding. In this case, for example, when the field structure and frame structure are changed for each current frame to be encoded, this can be described in a bitstream header as a whole or in a frame header of each frame. Swapping is performed, for example, sequence-based, GOP-based, image-based and slice-based, in which case this can be described in a corresponding header of a bit stream or the like. Needless to say, even in the above cases, only when the coding structures used for a current macroblock pair to be encoded and a neighboring macroblock pair are the same, a motion vector of the current macroblock pair to be encoded in the mode. The direct stream can be calculated by a method using a motion vector of the neighboring macroblock pair. In addition, when transmitting as packets, a header part and a data part may be separated and transmitted respectively. In this case, the header part and the data part are never included in a bit stream. However, as for packets, although a transmission order may be more or less out of sequence, a header part corresponding to a corresponding data part is only transmitted in another packet and there is no difference even if it is not included in a bit stream. Thus, while fixing which of the frame structure and field structure is used, a process for determining a coding structure by utilizing neighbor information becomes unnecessary and a process can be simplified.
[00332] Em adição, no modo direto, após processar um par de ma-croblocos corrente utilizando tanto a estrutura de quadro como a estrutura de campo, uma estrutura de codificação com eficiência de codificação mais elevada pode ser selecionada. Neste caso, pode ser descrito qual dentre a estrutura de quadro e a estrutura de campo é selecionada em uma parte de cabeçalho de um par de macroblocos sob codificação. É desnecessário dizer que, mesmo nos casos acima, somente quando as estruturas de codificação utilizadas para um par de macroblocos corrente a ser codificado e para um par de macroblocos vizinho são as mesmas, um vetor de movimento do par de macroblocos corrente a ser codificado no modo direto pode ser calculado por um método utilizando um vetor de movimento do par de macroblocos vizinho. Por utilizar tal método, a informação apresentando qual dentre a estrutura de quadro e a estrutura de campo é utilizada torna-se necessária em um fluxo de bits, entretanto, é possível reduzir os dados residuais para a compensação de movimento e a eficiência da codificação pode ser aperfeiçoada.In addition, in direct mode, after processing a pair of current macroblocks using both the frame structure and the field structure, a higher coding efficiency coding structure can be selected. In this case, it can be described which of the frame structure and field structure is selected in a header part of a pair of coded macroblocks. Needless to say, even in the above cases, only when the coding structures used for a current macroblock pair to be encoded and a neighboring macroblock pair are the same, a motion vector of the current macroblock pair to be encoded in the Direct mode can be calculated by a method using a motion vector of the neighboring macroblock pair. By using such a method, information showing which of the frame structure and field structure is used becomes necessary in a bitstream, however, it is possible to reduce the residual data for motion compensation and the coding efficiency can be reduced. be perfected.
[00333] Na explicação acima, está o caso em que a compensação de movimento é executada para os pares de macroblocos vizinhos com base no tamanho do macrobloco, entretanto, a compensação de movimento pode ser executada com base em um tamanho diferente. Neste caso, como apresentado nas figuras 48A e 48B, um vetor de movimento contendo pixels localizados em a, b e c é utilizado como um vetor de movimento do par de macroblocos vizinho para cada ma-crobloco de um par de macroblocos corrente a ser codificado. A figura 48A apresenta o caso processando um macrobloco superior e a figura 48B apresenta o caso processamento um macrobloco inferior. Quando as estruturas (uma estrutura de quadro/uma estrutura de campo) para um par de macroblocos corrente e para os pares de macroblocos vizinhos são diferentes, um processo é executado utilizando um bloco incluindo pixels localizados em a, b e c e um bloco incluindo pixels localizados em a', b' e c' como apresentado nas figuras 49A e 49B. Aqui, as localizações a', b' e c' são um bloco incluído em outro macrobloco no mesmo par de macroblocos correspondendo às localizações de pixels a, b e c. Por exemplo, no caso da figura 49A, quando as estruturas de codificação (uma estrutura de quadro/uma estrutura de campo) para um par de macroblocos corrente e para os pares de macroblocos vizinhos são diferentes, um vetor de movimento de um bloco no lado esquerdo de um macrobloco corrente superior a ser codificado é determinado utilizando vetores de movimento de BL1 e BL2. No caso da figura 49B, quando as estruturas de codificação (uma estrutura de quadro/uma estrutura de campo) para um par de macroblocos corrente e para pares de macroblocos vizinhos são diferentes, um vetor de movimento de um bloco no lado esquerdo de um macrobloco corrente superior a ser codificado é determinado utilizando os vetores de movimento de BL3 e BL4. Pela utilização de tal método de processamento, mesmo se a compensação de movimento for executada para o macrobloco vizinho com base no tamanho utilizando um tamanho diferente de um macrobloco, um processo no modo direto pode ser executado em consideração à diferença da estrutura de quadro e da estrutura de campo.In the above explanation, it is the case that motion compensation is performed for neighboring macroblock pairs based on the size of the macroblock, however, motion compensation can be performed based on a different size. In this case, as shown in Figs. 48A and 48B, a motion vector containing pixels located at a, b and c is used as a motion vector of the neighboring macroblock pair for each macroblock of a current macroblock pair to be encoded. Fig. 48A shows the case processing an upper macroblock and Fig. 48B shows the case processing an upper macroblock. When the structures (a frame structure / field structure) for a current macroblock pair and neighboring macroblock pairs are different, a process is performed using a block including pixels located at a, and a block including pixels located at a ', b' and c 'as shown in figures 49A and 49B. Here, locations a ', b' and c 'are a block included in another macroblock in the same pair of macroblock corresponding to pixel locations a, b and c. For example, in the case of Fig. 49A, when the coding structures (a frame structure / a field structure) for a current macroblock pair and neighboring macroblock pairs are different, a motion vector of a block on the side The left side of a higher current macroblock to be encoded is determined using motion vectors of BL1 and BL2. In the case of Fig. 49B, when the coding structures (a frame structure / a field structure) for a current macroblock pair and neighboring macroblock pairs are different, a motion vector of a block on the left side of a macroblock The upper current to be encoded is determined using the motion vectors of BL3 and BL4. By using such a processing method, even if motion compensation is performed for the size-based neighbor macroblock using a different size than a macroblock, a direct mode process can be performed with regard to the difference in frame structure and size. field structure.
[00334] Além disso, quando a compensação de movimento é executada para o macrobloco vizinho com base no tamanho diferente de um macrobloco, pelo cálculo de um valor médio de vetores de movimento de um bloco incluído no macrobloco, o valor calculado pode ser um vetor de movimento do macrobloco. Mesmo se a compensação de movimento for executada para macroblocos vizinhos com base no tamanho utilizando um tamanho diferente de um macrobloco, um processo no modo direto pode ser executado em consideração à diferença de uma estrutura de quadro e de uma estrutura de campo.In addition, when motion compensation is performed for the neighboring macroblock based on the different size of a macroblock by calculating an average value of motion vectors of a block included in the macroblock, the calculated value may be a vector. of motion of the macroblock. Even if motion compensation is performed for size-based neighboring macroblocks using a different size than a macroblock, a direct mode process can be performed with respect to the difference of a frame structure and a field structure.
[00335] A propósito, como mencionado acima, um vetor de movimento é derivado e a codificação por prognóstico interimagem é executada baseado no vetor de movimento derivado. Como resultado, o vetor de movimento derivado na unidade de detecção de vetor de movimento 108 e a imagem de erro de prognóstico codificada são armazenados em um fluxo de bits com base no macrobloco. Entretanto, como para um vetor de movimento de um macrobloco codificado no modo direto, é meramente descrito que ele está codificado no modo direto e o vetor de movimento e os índices de referência não são descritos em um fluxo de bits. A figura 50 é uma ilustração apresentando um exemplo de uma configuração de dados de um fluxo e bits 700 gerado por uma unidade de geração de fluxo de bits 104. Como apresentado na figura 50, no fluxo de bits 700 gerado pela unidade de geração de fluxo de bits 104, um Cabeçalho é proporcionado para cada Imagem. O Cabeçalho contém, por exemplo, itens tal como um item RPSL apresentando a alteração de uma lista de quadros de referência 10 e um item apresentando um tipo de imagem da imagem e não apresentado nesta figura e quando um método de designação do primeiro índice de referência 12 e do segundo índice de referência 113 na lista de quadros 10 é alterado a partir dos parâmetros iniciais, um método de designação após a alteração é descrito no item RPSL.By the way, as mentioned above, a motion vector is derived and interimage prognostic coding is performed based on the derived motion vector. As a result, the derived motion vector in motion vector detection unit 108 and the coded prognostic error image are stored in a macroblock-based bit stream. However, as for a motion vector of a direct mode encoded macroblock, it is merely described that it is encoded in direct mode and the motion vector and reference indices are not described in a bit stream. Fig. 50 is an illustration showing an example of a stream and bit data configuration 700 generated by a bitstream generation unit 104. As shown in Fig. 50, in bitstream 700 generated by the stream generation unit bit 104, a Header is provided for each Image. The Header contains, for example, items such as an RPSL item presenting the change of a reference frame list 10 and an item displaying an image type of the image and not shown in this figure and when a method of assigning the first reference index 12 and second reference index 113 in the frame list 10 is changed from the initial parameters, an assignment method after the change is described in item RPSL.
[00336] Por outro lado, o erro de prognóstico codificado é gravado com base no macrobloco. Por exemplo, quando um macrobloco é codificado utilizando um prognóstico espacial no modo direto, um vetor de movimento do macrobloco não é descrito em um item Blocol e a informação apresentando que um modo de codificação é o modo direto é descrita em um item "PredType". Aqui, o item Blocol é um item no qual um erro de prognóstico correspondendo ao macrobloco é descrito e o item "PredType" apresenta um modo de codificação do macrobloco. Quando é selecionado que uma dentre a estrutura de quadro e a estrutura de campo é utilizada para codificação a partir do ponto de vista da eficiência de codificação mencionada acima, a informação apresentando a escolha entre a estrutura de quadro e a estrutura de campo é descrita. Subseqüentemente, o erro de prognóstico codificado é descrito em um item CodeRes. Quando outro macrobloco é um macrobloco codificado em um modo de codificação por prognóstico inte-rimagem, é descrito no item "PredType" em um item Bloco2 que um modo de codificação para o macrobloco é o modo de codificação por prognóstico inter. Aqui, o item CodeRes apresenta um modo de codificação descrito e o item "PredType" é um item no qual um erro de prognóstico correspondendo ao macrobloco é descrito. Neste caso, o primeiro índice de referência 12 do macrobloco é adicionalmente descrito em um item RidxO e o segundo índice de referência 13é adicionalmente descrito em um item Ridxl diferente do modo de codificação. Os índices de referência em um bloco são representados por palavras de código de comprimento variável e o comprimento de código mais curto é designado para o menor valor. Subseqüentemente, um vetor de movimento do macrobloco durante a referência de quadro para frente é descrito em um item MVO e um vetor de movimento durante a referência de quadro para trás é descrito em um item MV1. Então, o erro de prognóstico codificado é descrito no item CodeRes.On the other hand, the coded prognostic error is recorded based on the macroblock. For example, when a macroblock is encoded using a forward mode spatial prediction, a macroblock motion vector is not described in a Blocol item and information showing that an encoding mode is direct mode is described in a "PredType" item. . Here, the Blocol item is an item in which a prediction error corresponding to the macroblock is described and the item "PredType" has a macroblock coding mode. When it is selected that one of the frame structure and field structure is used for coding from the coding efficiency point of view mentioned above, the information showing the choice between frame structure and field structure is described. Subsequently, the coded prognostic error is described in a CodeRes item. When another macroblock is a macroblock encoded in an image prediction coding mode, it is described in the "PredType" item in a Block2 item that an encoding mode for the macroblock is the inter prediction coding mode. Here the CodeRes item has a coding mode described and the "PredType" item is an item in which a prediction error corresponding to the macroblock is described. In this case, the first reference index 12 of the macroblock is further described in a RidxO item and the second reference index 13 is further described in a Ridxl item other than the coding mode. Reference indices in a block are represented by variable-length codewords and the shortest code length is assigned the smallest value. Subsequently, a motion vector of the macroblock during forward frame reference is described in an MVO item and a motion vector during backward frame reference is described in an MV1 item. Then the coded prognostic error is described in the CodeRes item.
[00337] A figura 51 é um diagrama de blocos apresentando uma configuração de um aparelho de decodificação de imagem em movimento 800 que decodifica o fluxo de bits 700 apresentado na figura 50. O aparelho de decodificação de imagem em movimento 800 é um aparelho de decodificação de imagem em movimento que decodifica o fluxo de bits 700 no qual um erro de prognóstico incluindo um macrobloco codificado no modo direto é descrito e inclui uma unidade de análise de fluxo de bits 701, uma unidade de decodificação de diferença de prognóstico 702, uma unidade de decodificação de modo 703, uma unidade de decodificação de compensação de movimento 705, uma unidade de armazenamento de vetor de movimento 706, uma memória de quadros 707, uma unidade de operação de adição 708, as chaves 709 e 710 e uma unidade de decodificação de vetor de movimento 711. A unidade de análise de fluxo de bits 701 extrai vários dados a partir do fluxo de bits informado 700. Aqui, os vários dados incluem informação tal como informação em relação a um modo de codificação e informação em relação a um vetor de movimento ou semelhantes. A informação extraída em relação a um modo de codificação é emitida para a unidade de decodificação de modo 703. Por outro lado, a informação extraída em relação a um vetor de movimento é emitida para a unidade de decodificação de vetor de movimento 705. Adicionalmente, os dados de codificação de diferença de prognóstico extraídos são emitidos para a unidade de decodificação de diferença de prognóstico 702. A unidade de decodificação de diferença de prognóstico 702 decodifica os dados de codificação de diferença de prognóstico informados e gera uma imagem de diferença de prognóstico. A imagem de diferença de prognóstico gerada é emitida para a chave 709. Por exemplo, quando a chave 709 está conectada com um terminal b, uma imagem de diferença de prognóstico é emitida para a unidade de operação de adição 708.Fig. 51 is a block diagram showing a configuration of a motion picture decoding apparatus 800 which decodes the bit stream 700 shown in Fig. 50. The moving image decoding apparatus 800 is a decoding apparatus bit stream decoding motion picture 700 in which a prediction error including a direct mode encoded macroblock is described and includes a bit stream analysis unit 701, a prognostic difference decoding unit 702, a 703 decoding mode, a motion compensation decoding unit 705, a motion vector storage unit 706, a frame memory 707, an addition operation unit 708, keys 709 and 710, and a decoding unit vector set 711. Bitstream analysis unit 701 extracts various data from the reported bitstream 700. Here, the various data data includes information such as information relating to a coding mode and information relating to a motion vector or the like. Information extracted with respect to a coding mode is output to mode decoding unit 703. On the other hand, information extracted with respect to a motion vector is output to motion vector decoding unit 705. Additionally, extracted prognostic difference coding data is output to the prognostic difference decoding unit 702. The prognostic difference decoding unit 702 decodes the informed prognostic difference coding data and generates a prognostic difference image. The generated prognostic difference image is output to key 709. For example, when key 709 is connected to a terminal b, a prognostic difference image is output to addition operation unit 708.
[00338] A unidade de decodificação de modo 703 controla as chaves 709 e 710 referindo-se a uma informação de modo de codificação extraída a partir de um fluxo de bits. Quando um modo de codificação é o modo de codificação intraimagem, a unidade de decodificação de modo 703 controla para conectar a chave 709 com um terminal a e para conectar a chave 710 com um terminal c. Além disso, a unidade de decodificação de modo 703 emite uma informação de modo de codificação para a unidade de decodificação de compensação de movimento 705 e para a unidade de decodificação de vetor de movimento 711. A unidade de decodificação de vetor de movimento 711 decodifica um vetor de movimento codificado informado a partir da unidade de análise de fluxo de bits 701. O número da imagem de referência decodificada e o vetor de movimento decodificado são armazenados na unidade de armazenamento de vetor de movimento 706 e emitidos para a unidade de decodificação de compensação de vetor de movimento 705 ao mesmo tempo.The mode decoding unit 703 controls keys 709 and 710 by referring to encoding mode information extracted from a bit stream. When a coding mode is intra-picture coding mode, mode decoding unit 703 controls to connect switch 709 with terminal a and to connect switch 710 with terminal c. In addition, mode decoder unit 703 outputs encoding mode information to motion compensation decode unit 705 and motion vector decode unit 711. Motion vector decode unit 711 decodes a encoded motion vector entered from bit stream analysis unit 701. The decoded reference image number and the decoded motion vector are stored in motion vector storage unit 706 and output to the compensation decode unit motion vector icon at the same time.
[00339] Quando um modo de codificação é o modo direto, a unidade de decodificação de modo 703 controla para conectar a chave 709 com o terminal b e para conectar a chave 710 com um terminal d. Além disso, a unidade de decodificação de modo 703 emite uma informação de modo de codificação para a unidade de decodificação de compensação de movimento 705 e para a unidade de decodificação de vetor de movimento 711. A unidade de decodificação de vetor de movimento 711 determina um vetor de movimento a ser utilizado no modo direto utilizando um vetor de movimento do par de macroblocos vizinho e um número de imagem de referência armazenado na unidade de armazenamento de vetor de movimento 706, quando um modo de codificação é o modo direto. Desde que o método para determinar um vetor de movimento é o mesmo que o conteúdo explicado para a operação da unidade de seleção de modo 109 apresentada na figura 40, a explica- ção será omitida aqui.When a coding mode is direct mode, mode decoder unit 703 controls to connect switch 709 to terminal b and to connect switch 710 to terminal d. In addition, mode decoder unit 703 outputs encoding mode information to motion compensation decode unit 705 and motion vector decode unit 711. Motion vector decode unit 711 determines a motion vector to be used in direct mode using a motion vector of the neighboring macroblock pair and a reference image number stored in motion vector storage unit 706, when an encoding mode is direct mode. Since the method for determining a motion vector is the same as the contents explained for the operation of mode selection unit 109 shown in Fig. 40, the explanation will be omitted here.
[00340] Baseado no número de imagem de referência decodificado e no vetor de movimento decodificado, a unidade de decodificação de compensação de movimento 705 obtém uma imagem de compensação e movimento com base no macrobloco a partir da memória de quadros 707. A imagem de compensação de movimento obtida é emitida para a unidade de operação de adição 708. A memória de quadros 707 é uma memória armazenando imagens de decodificação com base no quadro. A unidade de operação de adição 708 adiciona a imagem de diferença de prognóstico informada para uma imagem de compensação de movimento e gera uma imagem decodificada. A imagem decodificada gerada é emitida para a memória de quadros 707.Based on the decoded reference image number and decoded motion vector, the motion compensation decoding unit 705 obtains a macroblock-based motion compensation image from frame memory 707. The compensation image motion rate obtained is output to addition operation unit 708. Frame memory 707 is a memory storing frame-based decoding images. Addition operation unit 708 adds the informed prediction difference image to a motion compensation image and generates a decoded image. The generated decoded image is output to frame memory 707.
[00341] Como mencionado acima, de acordo com esta modalidade, mesmo se um par de macroblocos vizinho codificado por uma estrutura de quadro e um par de macroblocos vizinho codificado por uma estrutura de campo forem misturados nos pares de macroblocos vizinhos codificados correspondendo a um par de macroblocos corrente a ser codificado incluam um método de prognóstico espacial no modo direto, um vetor de movimento pode ser facilmente calculado.As mentioned above, according to this embodiment, even if a neighboring macroblock pair encoded by a frame structure and a neighboring macroblock pair encoded by a field structure are mixed into the encoded neighboring macroblock pairs corresponding to one pair. Since current macroblocks to be encoded include a direct mode spatial prediction method, a motion vector can be easily calculated.
[00342] Observa-se que na modalidade acima, o caso em que cada imagem é processada com base no par de macroblocos (conectando dois macroblocos verticalmente) utilizando uma estrutura de quadro ou uma estrutura de campo é explicado, entretanto, um processo pode ser executado por trocar uma estrutura de quadro e uma estrutura de campo em uma base diferente, por exemplo, com base no macrobloco.It is noted that in the above embodiment, the case where each image is processed based on the pair of macroblocks (connecting two macroblocks vertically) using a frame structure or a field structure is explained, however, a process can be performed by exchanging a frame structure and a field structure on a different basis, for example based on the macroblock.
[00343] Além disso, na modalidade acima, é o caso em que um macrobloco em uma imagem B é processado no modo direto, entretanto, um macrobloco em uma imagem P pode ser da mesma forma processado. Quando codificando-se e decodificando-se uma imagem P, cada bloco executa a compensação de movimento a partir somente de uma imagem e uma lista de quadros de referência é somente uma. Portanto, de modo a executar o processo igual a esta modalidade em uma imagem P, o processo calculando dois vetores de movimento de um bloco corrente a ser codificado/decodificado (o primeiro quadro de referência e o segundo quadro de referência) nesta modalidade pode ser alterado para um processo calculando um vetor de movimento.Also, in the above embodiment, it is the case that a macroblock in an image B is processed in direct mode, however, a macroblock in an image P can be similarly processed. When encoding and decoding an image P, each block performs motion compensation from only one image and a list of reference frames is only one. Therefore, in order to perform the process equal to this mode on an image P, the process by calculating two motion vectors of a current block to be encoded / decoded (the first frame of reference and the second frame of reference) in this mode can be changed to a process calculating a motion vector.
[00344] Em adição, na modalidade acima, o caso em que a geração do prognóstico de um vetor de movimento utilizado no modo direto é executada utilizando vetores de movimento de três pares de macroblo-cos vizinhos é explicado, entretanto, o número de pares de macroblo-cos vizinhos a ser utilizado pode ser diferente. Por exemplo, um caso utilizando somente um vetor de movimento de um par de macroblocos vizinho localizado no lado esquerdo é concebível. (Décima Segunda Modalidade) [00345] Através do armazenamento de um programa para realizar uma configuração do método de codificação de imagem e do método de decodificação de imagem mencionados na modalidade acima em um meio de armazenamento tal como um disco flexível, torna possível facilmente executar o processo mencionado na modalidade acima em um sistema de computador independente.In addition, in the above embodiment, the case where prognostic generation of a motion vector used in direct mode is performed using motion vectors of three neighboring macro-pair pairs is explained, however, the number of pairs of neighboring macroblocks to be used may differ. For example, a case using only a motion vector of a neighboring macroblock pair located on the left side is conceivable. (Twelfth Mode) [00345] By storing a program for performing a configuration of the image encoding method and the image decoding method mentioned in the above embodiment on a storage medium such as a floppy disk, it is possible to easily execute the process mentioned in the above embodiment on a standalone computer system.
[00346] A figura 52 é uma ilustração explicando um meio de armazenamento que armazena um programa para realizar o método de codificação e o método de decodificação de imagem da primeira até a décima primeira modalidades acima em um sistema de computador.Fig. 52 is an illustration explaining a storage medium storing a program for performing the encoding method and the image decoding method from the first to the eleventh embodiments above in a computer system.
[00347] A figura 52B apresenta uma vista externa do disco flexível visto a partir da frente, uma configuração de uma seção transversal e o disco flexível e a figura 52A apresenta um exemplo de um formato físico de um disco flexível como um corpo do meio de gravação. Um disco flexível FD está contido em um invólucro F e várias trilhas Tr são formadas de forma concêntrica na superfície do disco a partir do raio ex- terno até o interno e cada trilha é dividida em 16 setores se na direção angular. Portanto, como para o disco flexível armazenando o programa mencionado acima, o método de codificação de imagem e um método de decodificação de imagem como o programa acima são armazenados em uma área alocada no disco flexível FD mencionado acima.Figure 52B shows an external view of the floppy disk viewed from the front, a cross-sectional configuration and the floppy disk, and Figure 52A shows an example of a physical shape of a floppy disk as a body of the media. recording. A floppy disk FD is contained in a shell F and several Tr tracks are formed concentric on the disc surface from the inner radius to the inner radius and each track is divided into 16 sectors if in the angular direction. Therefore, as for the floppy disk storing the program mentioned above, the image encoding method and an image decoding method such as the above program are stored in an area allocated on the floppy disk FD mentioned above.
[00348] A figura 52C apresenta uma configuração para gravar e ler o programa mencionado acima no disco flexível FD. Quando o programa mencionado acima é armazenado no disco flexível FD, o método de codificação de imagem e o método de decodificação de imagem como o programa mencionado acima são gravados via um controlador do disco flexível a partir de um sistema de computador Cs. Quando o método de codificação ou de decodificação mencionado acima é construído no sistema de computador pelo programa no disco flexível, o programa é lido a partir do disco flexível e transferido para o sistema de computador.Fig. 52C shows a configuration for writing and reading the above mentioned program on floppy disk FD. When the above mentioned program is stored on floppy disk FD, the image encoding method and the image decoding method as the above mentioned program are recorded via a floppy disk controller from a Cs computer system. When the aforementioned encoding or decoding method is built into the computer system by the program on the floppy disk, the program is read from the floppy disk and transferred to the computer system.
[00349] Observa-se que na explicação acima, um disco flexível é utilizado como um meio de armazenamento, entretanto, é possível executar da mesma forma utilizando um disco ótico. Além disso, um meio de armazenamento não está limitado a um disco flexível e um meio capaz de armazenar um programa tal como um CD-ROM, um cartão de memória e cassete ROM pode executar da mesma forma.It is noted that in the above explanation a floppy disk is used as a storage medium, however it is possible to perform the same way using an optical disk. In addition, a storage medium is not limited to a floppy disk and a medium capable of storing a program such as a CD-ROM, a memory card and a ROM cassette can perform the same way.
[00350] As aplicações do método de codificação de imagem e do método de decodificação de imagem apresentadas nas modalidades acima e um sistema utilizando as aplicações serão adicionalmente explicados.Applications of the image coding method and the image decoding method presented in the above embodiments and a system using the applications will be further explained.
[00351] A figura 53 é um diagrama de blocos apresentando uma configuração como um todo de um sistema de suprimento de conteúdo ex100 para realizar o serviço de distribuição de conteúdo. A área para proporcionar o serviço de comunicação é dividida em células de tamanho desejado e os locais de célula ex107 até ex110 os quais são esta- ções sem fios fixas são colocados em cada célula.Fig. 53 is a block diagram showing an overall configuration of an ex100 content delivery system for performing the content delivery service. The area for providing the communication service is divided into cells of desired size and cell locations ex107 through ex110 which are fixed wireless stations are placed in each cell.
[00352] Neste sistema de suprimento de conteúdo ex100, por exemplo, a Internet ex101 está conectada com dispositivos tal como um computador ex111, um PDA (Assistente Pessoal Digital) ex112, uma câmara ex113, um telefone celular ex114 e um telefone celular com uma câmara ex115 via o provedor de serviço Internet ex102, uma rede de telefone ex104 e locais de célula ex107 até ex110.In this ex100 content delivery system, for example, the ex101 Internet is connected to devices such as an ex111 computer, an ex112 Digital Personal Assistant (PDA), an ex113 camera, an ex114 mobile phone, and a cell phone with a camera ex115 via the ex102 internet service provider, an ex104 phone network, and ex107 through ex110 cell locations.
[00353] Entretanto, o sistema de suprimento de conteúdo ex100 não está limitado à configuração como apresentado na figura 53 e pode estar conectado com uma combinação de qualquer um dos mesmos. Além disso, cada dispositivo [00354] pode ser conectado diretamente com a rede de telefone ex104, não através dos locais de célula ex107 até ex110.However, the ex100 content delivery system is not limited to the configuration as shown in Fig. 53 and may be connected with a combination of any of them. In addition, each device [00354] can be connected directly to the ex104 telephone network, not through cell locations ex107 through ex110.
[00355] A câmara ex113 é um dispositivo tal como uma câmara de vídeo digital capaz de filmar imagens em movimento. O telefone celular pode ser um telefone celular de um sistema PDC (Comunicação Digital Pessoal), um sistema CDMA (Acesso Múltiplo por Divisão de Código), um sistema W-CDMA (Acesso Múltiplo por Divisão de Código de Banda Larga) ou um Sistema GSM (Sistema Global para Comunicações Móveis), um PHS (sistema de Telefone de Mão Pessoal) ou semelhante.Camera ex113 is a device such as a digital camcorder capable of shooting moving images. The cell phone may be a cell phone of a PDC (Personal Digital Communication) system, a CDMA (Code Division Multiple Access) system, a W-CDMA (Broadband Code Division Multiple Access) system or a GSM System (Global System for Mobile Communications), a PHS (Personal Handheld Telephone System) or the like.
[00356] Um servidor de fluxo contínuo ex103 está conectado com a câmara ex113 via o local de célula ex109 e a rede de telefone ex104 e a distribuição ao vivo ou semelhante utilizando a câmara ex113 baseado nos dados codificados transmitidos a partir do usuário torna-se possível. A câmara ex113 ou o servidor para transmitir os dados pode codificar os dados. Além disso, os dados de imagem em movimento filmados por uma câmara 116 podem ser transmitidos para o servidor de fluxo contínuo ex103 via o computador ex111. A câmara ex116 é um dispositivo tal como uma câmara digital capaz de filmar imagens em movimento e paradas. A câmara ex116 ou o computador ex111 pode codificar os dados de imagem em movimento. Uma LSI ex117 incluída no computador ex111 ou na câmara ex116 executa o processamento de codificação. O software para codificar e decodificar as imagens pode estar integrado dentro de qualquer tipo de meio de armazenamento (tal como um CD-ROM, um disco flexível e um disco rígido) que é um meio de gravação que pode ser lido pelo computador ex111 ou semelhante. Adicionalmente, um telefone celular ex115 com uma câmara ex115 pode transmitir os dados de imagem em movimento. Estes dados de imagem são os dados codificados pela LSI incluída no telefone celular ex115.An ex103 streaming server is connected to the ex113 camera via the ex109 cell site and the ex104 telephone network and live or similar distribution using the ex113 camera based on encoded data transmitted from the user becomes possible. The camera ex113 or the server for transmitting the data may encode the data. In addition, motion picture data filmed by a camera 116 may be transmitted to streaming server ex103 via computer ex111. The ex116 camera is a device such as a digital camera capable of shooting moving and still images. The camera ex116 or computer ex111 can encode motion picture data. An ex117 LSI included with the ex111 computer or ex116 camera performs encoding processing. Software for encoding and decoding images can be integrated into any type of storage medium (such as a CD-ROM, a floppy disk and a hard disk) which is a recording medium that can be read by the ex111 computer or the like. . Additionally, an ex115 mobile phone with an ex115 camera can transmit moving image data. This image data is the LSI encoded data included with the ex115 mobile phone.
[00357] O sistema de suprimento de conteúdo ex100 codifica o conteúdo (tal como um vídeo de música ao vivo) filmado pelos usuários utilizando a câmara ex113, a câmara ex116 ou semelhante da mesma maneira que na modalidade acima e transmite o mesmo para o servidor de colocação em fluxo ex103, enquanto o servidor de colocação em fluxo ex103 faz a distribuição do fluxo de dados de conteúdo para os clientes quando de sua requisição. Os clientes incluem o computador ex111, o PDA ex112, a câmara ex113, o telefone celular ex114 e assim por diante capazes de decodificar os dados codificados mencionados acima. No sistema de suprimento de conteúdo ex100, os clientes podem assim receber e reproduzir os dados codificados e adicionalmente podem receber, decodificar e reproduzir os dados em tempo real de modo a realizar a difusão pessoal.The ex100 content delivery system encodes content (such as a live music video) shot by users using camera ex113, camera ex116 or similar in the same manner as above and transmits it to the server. The ex103 streaming server, while the ex103 streaming server distributes the content data stream to clients upon their request. Customers include the ex111 computer, the ex112 PDA, the ex113 camera, the ex114 mobile phone, and so on capable of decoding the encoded data mentioned above. In the ex100 content delivery system, customers can thus receive and reproduce the encoded data and additionally can receive, decode and reproduce the data in real time in order to perform the personal broadcast.
[00358] Quando cada dispositivo neste sistema executa a codificação e a decodificação, o aparelho de codificação de imagem ou o aparelho de decodificação de imagem apresentado na modalidade acima pode ser utilizado. Um telefone celular é explicado como um exemplo.When each device in this system performs encoding and decoding, the image coding apparatus or the image decoding apparatus shown in the above embodiment may be used. A cell phone is explained as an example.
[00359] A figura 54 é uma ilustração apresentando o telefone celular ex115 utilizando o método de codificação de imagem e o método de decodificação de imagem explicados nas modalidades acima. O telefone celular ex115 possui uma antena ex201 para comunicação com o local de célula ex110 via ondas de rádio, uma unidade de câmara ex203 tal como uma câmara CCD capaz de filmar imagens em movimento e paradas, uma unidade de exibição ex202 tal como um vídeo de cristal líquido para exibir os dados obtidos por se decodificar as imagens e semelhantes filmadas pela unidade de câmara ex203 e recebidas pela antena ex201, uma unidade de corpo incluindo um conjunto de teclas de operação ex204, uma unidade de saída de voz ex208 tal como um alto-falante para emitir vozes, uma unidade de entrada de voz ex205 tal como um microfone para entrada de vozes, um meio de armazenamento ex207 para armazenar dados codificados ou decodificados tal como dados das imagens em movimento ou paradas filmadas pela câmara, dados de correios eletrônicos recebidos e dados de imagens em movimento ou paradas e uma unidade de fenda ex206 para ligar o meio de armazenamento ex207 com o telefone celular ex115. O meio de armazenamento ex207 armazena nele próprio uma memória flash, um tipo de EEPROM (Memória somente para leitura programável e que pode ser eletricamente apagada) que é uma memória não volátil que pode ser eletricamente apagada e regravada, em um invólucro plástico tal como um cartão SD.Fig. 54 is an illustration showing the mobile phone ex115 using the image coding method and the image decoding method explained in the above embodiments. The ex115 mobile phone has an ex201 antenna for communicating with the ex110 cell site via radio waves, an ex203 camera unit such as a CCD camera capable of shooting moving and still images, an ex202 display unit such as a video camera. liquid crystal for displaying the data obtained by decoding the images and the like filmed by the camera unit ex203 and received by the antenna ex201, a body unit including an ex204 operation key set, an ex208 voice output unit such as a loudspeaker. speakerphone, an ex205 voice input unit such as a voice input microphone, an ex207 storage medium for storing encoded or decoded data such as motion picture or camera shot data, e-mail data received and still or moving picture data, and an ex206 slot unit to connect the ex207 storage media to the mobile phone ex115. The storage medium ex207 stores itself a flash memory, a type of electrically erasable Programmable Read-Only Memory (EEPROM) which is a non-volatile memory that can be electrically erased and rewritten in a plastic enclosure such as a SD card.
[00360] A seguir, o telefone celular ex115 é explicado com referência à figura 55. No telefone celular ex115, uma unidade de controle principal ex311 para controle geral de cada unidade da unidade de corpo incluindo a unidade de vídeo ex202 e as teclas de operação ex204 está conectada com uma unidade de circuito de suprimento de força ex310, uma unidade de controle de entrada de operação ex304, uma unidade de codificação de imagem ex312, uma unidade de interface com a câmara ex303, uma unidade de controle LCD (Vídeo de Cristal Líquido) ex302, uma unidade de decodificação de imagem ex309, uma unidade de multiplexação/separação ex308, uma unidade de gravação e leitura ex307, uma unidade de circuito de modem ex306 e uma unidade de processamento de voz ex305 uns com os outros através do barramento síncrono ex313.Next, the ex115 cell phone is explained with reference to figure 55. On the ex115 cell phone, an ex311 main control unit for general control of each body unit unit including the ex202 video unit and operation keys ex204 is connected with an ex310 power supply circuit unit, an ex304 operation input control unit, an ex312 image encoding unit, an ex303 camera interface unit, an LCD (Crystal Video) control unit Ex302, an ex309 image decoding unit, an ex308 multiplexing / splitting unit, an ex307 write and read unit, an ex306 modem circuit unit, and an ex305 voice processing unit with each other across the bus synchronous ex313.
[00361] Quando uma tecla de término de chamada ou uma tecla de ativação é ligada pela operação de um usuário, a unidade de circuito de suprimento de força ex310 fornece para os respectivos componentes energia a partir de um pacote de bateria de modo a ativar o telefone celular digital com uma câmara ex115 para colocar o mesmo no estado de pronto.When a call end key or an activation key is turned on by the operation of a user, the ex310 power supply circuit unit supplies its components with power from a battery pack to activate the Digital cell phone with an ex115 camera to put it in the ready state.
[00362] No telefone celular ex115, a unidade de processamento de voz ex305 converte os sinais de voz recebidos pela unidade de entrada de voz ex205 em modo de conversão para dados de voz digitais sob o controle da unidade de controle principal ex311 incluindo uma CPU, ROM e RAM, a unidade de circuito de modem ex306 executa o processamento de espectro de difusão dos dados de voz digitais e a unidade de circuito de comunicação ex301 executa a conversão de digital para analógico e a transformação de freqüência dos dados, de modo a transmitir os mesmos via a antena ex201. Além disso, no telefone celular ex115, a unidade de circuito de comunicação ex301 amplifica os dados recebidos pela antena ex201 no modo de conversação e executa a transformação de freqüência e a conversão analógico para digital para os dados, a unidade de circuito de modem ex306 executa o processamento inverso de espectro de difusão dos dados e a unidade de processamento de voz ex305 converte os mesmos para dados de voz analógicos, de modo a emitir os mesmos via a unidade de saída de voz 208.On the ex115 mobile phone, the ex305 voice processing unit converts the voice signals received by the ex205 voice input unit into conversion mode for digital voice data under the control of the ex311 main control unit including a CPU, ROM and RAM, the ex306 modem circuit unit performs digital voice data broadcast spectrum processing and the ex301 communication circuit unit performs digital to analog conversion and data frequency transformation to transmit same via the ex201 antenna. In addition, on the ex115 mobile phone, the ex301 communication circuit unit amplifies the data received by the ex201 antenna in talk mode and performs frequency transformation and analog to digital conversion to data, the ex306 modem circuit unit performs reverse data spread spectrum processing and voice processing unit ex305 converts it to analog voice data so as to output it via voice output unit 208.
[00363] Adicionalmente, quando transmitindo um correio eletrônico no modo de comunicação de dados, os dados de texto do correio eletrônico informados por se operar as teclas de operação ex204 da uni- dade de corpo são enviados para a unidade de controle principal ex311 através da unidade de controle de entrada de operação ex304. Na unidade de controle principal ex311, após a unidade de circuito de modem ex306 executar o processamento de espectro de difusão dos dados de texto e a unidade de circuito de comunicação ex301 executar a conversão digital para analógico e a transformação de freqüência para os mesmos, os dados são transmitidos para o local de célula ex110 via a antena ex201.Additionally, when transmitting an e-mail in data communication mode, e-mail text data informed by operating the body unit's operation keys ex204 is sent to the ex311 main control unit via the ex304 operating input control unit. On the ex311 main control unit, after the ex306 modem circuit unit performs text data diffusion spectrum processing and the ex301 communication circuit unit performs digital to analog conversion and frequency transformation, data is transmitted to cell location ex110 via antenna ex201.
[00364] Quando dados de imagem são transmitidos no modo de comunicação de dados, os dados da imagem filmados pela unidade de câmara ex203 são fornecidos para a unidade de codificação de imagem ex312 via a unidade de interface com a câmara ex303. Quando eles não são transmitidos, também é possível exibir os dados da imagem filmados pela unidade de câmara ex203 diretamente na unidade de vídeo 202 via a unidade de interface com a câmara ex303 e a unidade de controle do LCD ex302.When image data is transmitted in data communication mode, image data filmed by camera unit ex203 is provided to image encoding unit ex312 via interface unit with camera ex303. When they are not transmitted, it is also possible to display the image data shot by camera unit ex203 directly on video unit 202 via interface unit with camera ex303 and LCD control unit ex302.
[00365] A unidade de codificação de imagem ex312, a qual inclui o aparelho de codificação de imagem como explicado na presente invenção, compacta e codifica os dados da imagem fornecidos a partir da unidade de câmara ex203 pelo método de codificação utilizado para o aparelho de codificação de imagem como apresentado na modalidade mencionada acima de modo a transformar os mesmos em dados de imagem codificados e envia os mesmos para a unidade de multiplexa-ção/separação ex308. Nesta hora, o telefone celular ex115 envia as vozes recebidas pela unidade de entrada de voz ex205 durante a filmagem pela unidade de câmara ex203 para a unidade de multiplexa-ção/separação ex308 como dados de voz digitais via a unidade de processamento de voz ex305.The image coding unit ex312, which includes the image coding apparatus as explained in the present invention, compresses and encodes the image data provided from the camera unit ex203 by the coding method used for the image coding apparatus. image encoding as presented in the above-mentioned embodiment in order to transform it into encoded image data and send it to the multiplexing / splitting unit ex308. At this time, the mobile phone ex115 sends the voices received by the voice input unit ex205 during shooting by the camera unit ex203 to the multiplexing / separation unit ex308 as digital voice data via the voice processing unit ex305.
[00366] A unidade de multiplexação/separação ex308 multiplexa os dados de imagem codificados fornecidos a partir da unidade de codifi- cação de imagem ex312 e os dados de voz fornecidos a partir da unidade de processamento de voz ex305 por um método predeterminado, a unidade de circuito de modem ex306 executa o processamento de espectro de difusão dos dados multiplexados obtidos como um resultado da multiplexação e a unidade de circuito de comunicação ex301 executa a conversão digital para analógico e a transformação de fre-qüência dos dados para transmitir via a antena ex201.The multiplexing / separating unit ex308 multiplexes the encoded image data provided from the image coding unit ex312 and the voice data supplied from the speech processing unit ex305 by a predetermined method, the unit modem circuitry ex306 performs diffusion spectrum processing of the multiplexed data obtained as a result of multiplexing and the ex301 communication circuitry unit performs digital to analog conversion and data frequency transformation to transmit via the ex201 antenna .
[00367] No que diz respeito a receber dados de um arquivo de imagem em movimento que está ligado com uma página da (Web) Rede ou semelhante no modo de comunicação de dados, a unidade de circuito de modem ex306 executa o processamento inverso de espectro de difusão dos dados recebidos a partir do local da célula ex110 via a antena ex201 e envia os dados multiplexados obtidos como resultado do processamento para a unidade de multiplexação/separação ex308.With respect to receiving data from a moving image file that is linked with a Network (Web) page or the like in data communication mode, the ex306 modem circuit unit performs reverse spectrum processing. broadcast data received from cell location ex110 via antenna ex201 and sends multiplexed data obtained as a result of processing to multiplexing / splitting unit ex308.
[00368] De modo a decodificar os dados multiplexados recebidos via a antena ex201, a unidade de multiplexação/separação ex308 separa os dados multiplexados em um fluxo de bits de dados de imagem e em um fluxo de bits de dados de voz e fornece os dados de imagem codificados para a unidade de decodificação de imagem ex309 e os dados de voz para a unidade de processamento de voz ex305, respectivamente, via o barramento síncrono ex313.In order to decode the multiplexed data received via the ex201 antenna, the ex308 multiplexing / splitting unit separates the multiplexed data into an image data bitstream and a voice data bitstream and provides the data. encoded images for the image decoding unit ex309 and voice data for the speech processing unit ex305, respectively, via the synchronous bus ex313.
[00369] A seguir, a unidade de decodificação de imagem ex309, a qual inclui o aparelho de decodificação de imagem como explicado na presente invenção, decodifica o fluxo e bits de dados de imagem pelo método de decodificação correspondendo ao método de codificação como apresentado na modalidade mencionada acima para gerar os dados de imagem em movimento reproduzidos e fornece estes dados para a unidade de vídeo ex202 via a unidade de controle LCD ex302 e assim os dados de imagem em movimento incluídos em um arquivo de imagem em movimento ligado com uma página da Rede, por exemplo, são exibidos. Ao mesmo tempo, a unidade de processamento de voz ex305 converte os dados de voz em dados de voz analógicos e fornece estes dados para a unidade de saída de voz ex208 e assim os dados de voz incluídos no arquivo de imagem em movimento ligado com uma página da Rede, por exemplo, são reproduzidos.Next, the image decoding unit ex309, which includes the image decoding apparatus as explained in the present invention, decodes the image data stream and bits by the decoding method corresponding to the encoding method as shown in mentioned mode for generating the reproduced motion picture data and provides this data to the ex202 video unit via the ex302 LCD control unit and thus the motion picture data included in a motion picture file linked with a Network, for example, are displayed. At the same time, the ex305 voice processing unit converts the voice data into analog voice data and supplies this data to the ex208 voice output unit and thus the voice data included in the one page motion picture file Network, for example, are played.
[00370] A presente invenção não está limitada ao sistema mencionado acima e pelo menos o aparelho de codificação de imagem ou o aparelho de decodificação de imagem nas modalidades mencionadas acima pode ser incorporado em um sistema de difusão digital como apresentado na figura 56. Tal difusão digital terrestre ou por satélite tem estado nos noticiários ultimamente. Mais especificamente, um fluxo de bits de informação de vídeo é transmitido a partir de uma estação de difusão ex409 ou comunicada por um satélite de difusão ex410 via ondas de rádio. Quando da recepção das mesmas, o satélite de difusão ex410 transmite ondas de rádio para difusão, uma antena de uso doméstico ex406 com uma função de recepção de difusão por satélite recebe as ondas de rádio e uma televisão (receptor) ex401 ou uma caixa decodificadora (STB) ex407 decodifica o fluxo de bits para reprodução. O aparelho de decodificação de imagem como apresentado na modalidade mencionada acima pode ser implementado no aparelho de reprodução ex403 para ler e decodificar o fluxo de bits gravado em um meio de armazenamento ex402 que é um meio de gravação tal como um CD e um DVD. Neste caso, os sinais de vídeo reproduzidos são exibidos em um monitor ex404. Também é concebido implementar o aparelho de decodificação de imagem na caixa decodificadora ex407 conectada com um cabo ex405 para uma televisão a cabo ou para a antena ex406 para difusão por satélite e/ou terrestre de modo a reproduzir os mesmos em um monitor ex408 da televisão ex401. O aparelho de decodificação de imagem pode ser incorporado na televisão, não na caixa decodificadora. Ou, um carro ex412 possuindo uma antena ex411 pode receber sinais a partir do satélite ex410 ou do local de célula ex107 para reproduzir as imagens em movimento em um aparelho de vídeo tal como um sistema de navegação de carro ex413.[00370] The present invention is not limited to the above mentioned system and at least the image coding apparatus or the image decoding apparatus in the above mentioned embodiments may be incorporated into a digital broadcasting system as shown in Fig. 56. terrestrial or satellite digital has been in the news lately. More specifically, a bit stream of video information is transmitted from an ex409 broadcast station or communicated by an ex410 broadcast satellite via radio waves. Upon reception, the ex410 broadcast satellite transmits radio waves for broadcast, an ex406 household antenna with a satellite broadcast reception function receives the radio waves and an ex401 television (receiver) or set-top box ( STB) ex407 decodes the bitstream for playback. The image decoding apparatus as presented in the above mentioned embodiment may be implemented in the playback device ex403 to read and decode the bit stream recorded on an ex402 storage medium which is a recording medium such as a CD and a DVD. In this case, the reproduced video signals are displayed on an ex404 monitor. It is also designed to implement the image decoding apparatus in the ex407 set-top box connected with an ex405 cable to a cable television or to the ex406 satellite and / or terrestrial antenna to reproduce them on an ex408 monitor on the ex401 television. . The picture decoder can be incorporated into the television, not the decoder box. Or, an ex412 car having an ex411 antenna can receive signals from the ex410 satellite or ex107 cell location to reproduce moving images on a video device such as an ex413 car navigation system.
[00371] Adicionalmente, o aparelho de codificação de imagem como apresentado na modalidade mencionada acima pode codificar sinais de imagem para gravação em um meio de armazenamento. Como um exemplo concreto, existe um gravador ex420, tal como um gravador de DVD para gravar sinais de imagem em um disco DVD ex421 e um gravador de disco para gravar os mesmos em um disco rígido. Eles podem ser gravados em um cartão SD ex422. Se o gravador ex420 incluir o aparelho de decodificação de imagem como apresentado na modalidade mencionada acima, os sinais de imagem gravados no disco DVD ex421 ou no cartão SD ex422 podem ser reproduzidos para exibição no monitor ex408.Additionally, the image coding apparatus as presented in the above-mentioned embodiment may encode image signals for recording on a storage medium. As a concrete example, there is an ex420 recorder, such as a DVD recorder for recording image signals on an ex421 DVD disc and a disc recorder for recording them on a hard disk. They can be recorded to an ex422 SD card. If the ex420 recorder includes the picture decoding apparatus as shown in the above mentioned mode, the picture signals recorded on the ex421 DVD disc or ex422 SD card can be played back for display on the ex408 monitor.
[00372] Como a estrutura do sistema de navegação de carro ex413, a estrutura sem a unidade e câmara ex203, a unidade de interface com a câmara ex303 e a unidade de codificação de imagem ex312 fora dos componentes apresentados na figura 55, é concebível. O mesmo vale para o computador ex111, para a televisão (receptor) ex401 e outros.Like the structure of the ex413 car navigation system, the structure without the ex203 camera unit and camera, the ex303 camera interface unit and the ex312 picture coding unit outside the components shown in figure 55 is conceivable. The same goes for the ex111 computer, the ex401 television (receiver) and others.
[00373] Em adição, três tipos de implementações podem ser concebidas para um terminal tal como o telefone celular ex114 mencionado acima; um terminal de envio/recepção implementado tanto com um codificador como com um decodificador; um terminal de envio implementado somente com um codificador; e um terminal de recepção implementado somente com um decodificador.In addition, three types of implementations may be designed for a terminal such as the above mentioned mobile phone ex114; a send / receive terminal implemented with both an encoder and a decoder; a send terminal implemented with only one encoder; and a receive terminal implemented with a decoder only.
[00374] Como descrito acima, é possível utilizar o método de codificação de imagem em movimento ou o método de decodificação de imagem em movimento nas modalidades mencionadas acima em qualquer um dos dispositivos e sistemas mencionados acima e utilizando este método, os efeitos descritos nas modalidades acima po- dem ser obtidos.As described above, it is possible to use the motion picture encoding method or the motion picture decoding method in the aforementioned embodiments in any of the above mentioned devices and systems and using this method, the effects described in the embodiments above can be obtained.
[00375] A partir da invenção assim descrita, será óbvio que as modalidades da invenção podem ser variadas de vários modos. Tais variações não são para ser consideradas como uma saída do espírito e do escopo da invenção e todas tais modificações como seriam óbvias para os versados na técnica são pretendidas para inclusão dentro do escopo das reivindicações seguintes.From the invention thus described, it will be obvious that the embodiments of the invention may be varied in various ways. Such variations are not to be construed as departing from the spirit and scope of the invention and all such modifications as would be obvious to those skilled in the art are intended for inclusion within the scope of the following claims.
Aplicabilidade Industrial [00376] O aparelho de codificação de imagem de acordo com a presente invenção é útil como um aparelho de codificação de imagem embutido em um computador pessoal com função de comunicação, em um PDA, em uma estação de difusão para difusão digital e em um telefones celular ou semelhante.Industrial Applicability The image coding apparatus according to the present invention is useful as an image coding apparatus embedded in a personal computer with communication function, a PDA, a broadcasting station for digital broadcasting and a a cell phones or similar.
[00377] O aparelho de decodificação de imagem de acordo com a presente invenção é útil como um aparelho de decodificação de imagem equipado para um computador pessoal com função de comunicação, um PDA, uma STB para receber difusão digital e um telefone celular ou semelhante.The image decoding apparatus according to the present invention is useful as an image decoding apparatus equipped for a communication function personal computer, a PDA, an STB for receiving digital broadcast and a cell phone or the like.
REIVINDICAÇÕES
Claims (4)
Applications Claiming Priority (12)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002118598 | 2002-04-19 | ||
JP2002121053 | 2002-04-23 | ||
US37864302P | 2002-05-09 | 2002-05-09 | |
US37895402P | 2002-05-10 | 2002-05-10 | |
JP2002156266 | 2002-05-29 | ||
JP2002177889 | 2002-06-19 | ||
JP2002193027 | 2002-07-02 | ||
JP2002204713 | 2002-07-12 | ||
JP2002262151 | 2002-09-06 | ||
JP2002290542 | 2002-10-02 | ||
JP2002323096 | 2002-11-06 | ||
PCT/JP2003/004805 WO2003090473A1 (en) | 2002-04-19 | 2003-04-16 | Motion vector calculating method |
Publications (2)
Publication Number | Publication Date |
---|---|
BR0304534A BR0304534A (en) | 2004-07-13 |
BRPI0304534B1 true BRPI0304534B1 (en) | 2016-12-13 |
Family
ID=32686467
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BRPI0304534A BRPI0304534B1 (en) | 2002-04-19 | 2003-04-16 | method and apparatus for determining motion vector |
BR0304535-8A BR0304535A (en) | 2002-04-19 | 2003-04-16 | Motion Vector Calculation Method |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR0304535-8A BR0304535A (en) | 2002-04-19 | 2003-04-16 | Motion Vector Calculation Method |
Country Status (1)
Country | Link |
---|---|
BR (2) | BRPI0304534B1 (en) |
-
2003
- 2003-04-16 BR BRPI0304534A patent/BRPI0304534B1/en active IP Right Grant
- 2003-04-16 BR BR0304535-8A patent/BR0304535A/en not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
BR0304534A (en) | 2004-07-13 |
BR0304535A (en) | 2004-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2664855T3 (en) | Motion vector calculation procedure | |
ES2743606T3 (en) | Procedure for calculating motion vectors | |
JP2004208259A (en) | Motion vector calculating method | |
JP2004208258A (en) | Motion vector calculating method | |
JP3878591B2 (en) | Video encoding method and video decoding method | |
BRPI0304534B1 (en) | method and apparatus for determining motion vector | |
JP3884472B2 (en) | Video encoding method and video decoding method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B25D | Requested change of name of applicant approved |
Owner name: PANASONIC CORPORATION (JP) Free format text: NOME ALTERADO DE: MATSUSHITA ELECTRIC INDUSTRIAL CO., LTD. |
|
B15K | Others concerning applications: alteration of classification |
Free format text: AS CLASSIFICACOES ANTERIORES ERAM: H04N 7/32, H03M 7/36 Ipc: H03M 7/36 (2006.01), H04N 19/56 (2014.01) |
|
B25A | Requested transfer of rights approved |
Owner name: PANASONIC INTELLECTUAL PROPERTY CORPORATION OF AME |
|
B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
B09A | Decision: intention to grant [chapter 9.1 patent gazette] | ||
B16A | Patent or certificate of addition of invention granted [chapter 16.1 patent gazette] |
Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 13/12/2016, OBSERVADAS AS CONDICOES LEGAIS. |