(Group Of Pictures) técnica de agrupamento de imagens empregada na compressão do tipo multi-frame, como por exemplo no formato MPEG2. Os quadros que compõem a imagem de vídeo são trabalhados em conjuntos, dentro dos quais ocorre o processo de compressão.

O primeiro quadro dentro de cada conjunto chama-se "I-frame" (abreviação de intra-frame) e é comprimido isoladamente, utilizando não o modo multi-frame e sim o intra-frame - daí seu nome. A partir deste quadro inicial, dois tipos de quadros são gerados: os quadros "B" e os quadros "P". Quadros "P" ("P-frame", de predicted-frame) são quadros que carregam as diferenças entre o primeiro quadro ("I-frame") do conjunto e os demais.

Assim, o conjunto de quadros que compõem a cena de um avião cruzando o céu azul é dividida em diversos sub-conjuntos. Para cada um desses subconjuntos, o primeiro quadro é comprimido no modo intra-frame e a seguir armazenado: é o "I-frame". A seguir, os quadros subsequentes ("P-frames") irão armazenar somente as diferenças em relação ao "I-frame", ou seja, as diferentes posições ocupadas pelos pixels correspondentes à imagem do avião em relação à suas posições no "I-frame". Com isso, na maioria dos casos (dependendo da "complexidade" da imagem), o espaço ocupado pelas informações do quadro será bem menor do que o ocupado pelo quadro completo "I-frame". Com isso, por exemplo 10 quadros comprimidos e armazenados no modo intra-frame irão ocupar mais espaço do que 10 quadros armazenados no modo multi-frame, porque aqui somente o primeiro (comprimido) é armazenado e os demais registram somente as diferenças em relação ao primeiro.

Para analisar as diferenças entre um quadro e outro, a imagem do primeiro quadro é dividida em pequenas áreas de somente 16x16 pixels cada, chamadas macroblocos. O processador procura cada macrobloco na segunda imagem, nas mesmas coordenadas X,Y. Se encontrá-lo e o mesmo for idêntico ao da primeira imagem, um vetor de mobilidade é marcado com o valor zero. Se não for idêntico, é porque ocorreu alguma modificação deste trecho da primeira imagem para a segunda.

Esta modificação pode ser devida a algum movimento ocorrido nos elementos da cena ou então porque uma nova cena completamente diferente da primeira apareceu. O processador tenta verificar a primeira hipótese, procurando o macrobloco a um pixel de distância à direita, à esquerda, acima e depois abaixo. Caso ainda não encontre correspondência, aumenta a distância da procura em 1 pixel, passando agora a procurar o macrobloco a 2 pixels de distância em todas as 4 direções. Se não houver correspondência, o processador vai aumentando a distância da procura, e se não encontrá-lo em nenhum local conclui que houve mudança de cena.

O processo é repetido para cada macrobloco (16x16 pixels) da primeira imagem, permitindo com isso gerar uma tabela de vetores indicando as mudanças de posição dos macroblocos entre uma imagem e outra, ou, em outras palavras, gerando as anotações do que mudou entre uma imagem e outra. Esta tabela de vetores chama-se Motion Compensation Block.

A seguir, com base nessa tabela de vetores e na imagem do "I-frame", o processador constrói um novo quadro de imagem, considerando somente os vetores iguais a zero, ou seja, somente os macroblocos que não se moveram da primeira imagem para a segunda são copiados do "I-frame" e montados neste novo quadro. Este quadro assim montado, como exemplifica a figura abaixo, será a base para a montagem do predicted-frame ( "P-frame"):

No exemplo, o quadro montado tem somente os pixels do céu, menos os do avião e menos os do trecho de céu antes encoberto pelo mesmo (o avião moveu-se para frente - no exemplo da figura acima foi considerado um deslocamento maior do que o que ocorreria na realidade entre um aquadro e outro para demonstrar com mais clareza o efeito). Em outras palavras, ele contém somente o que não mudou do primeiro para o segundo quadro.

A seguir este quadro montado é subtraído da segunda imagem: como ele contém o que ficou igual entre a primeira e a segunda imagem, o resultado desta subtração é exatamente a diferença entre as imagens. Este conteúdo então será o conteúdo do predicted-frame , como mostra a figura abaixo:

Ou seja, o "P-frame" contém somente os pixels correspondentes à imagem do avião e do pequeno trecho de céu atrás dele correspondente ao seu movimento.

Juntamente com cada "P-frame" gerado é armazenada sua tabela de vetores de deslocamento (gerada na primeira tarefa descrita acima, durante a comparação entre o "I-frame" e o quadro seguinte). Esta tabela recebe o nome de Motion Compensation Block. Armazenar somente os pixels que são diferentes entre uma e outra imagem e uma tabela de vetores para montagem das áreas que não sofreram alteração ocupa normalmente muito menos espaço do que se todos os pixels da segunda imagem fossem armazenados, daí a grande economia de espaço proporcionada por este método de compressão.

No momento da reprodução (play do vídeo gravado ou descompressão para permitir a edição-não-linear), o quadro de imagem correspondente ao "P-frame" é reconstruído da seguinte forma: o Motion Compensation Block é aplicado ao "I-frame" e com isso permite gerar um quadro com o que não mudou do "I-frame" para o quadro a ser regerado. A este quadro é então somado o conteúdo do "P-frame", permitindo assim a reconstrução da imagem completa.

Existe no entanto ainda outro tipo de quadro utilizado na compressão multi-frame: o "B-frame" (de bi-directionally frame). Após gerar sequências IPPPP ("I-frame" seguido de vários "P-frames"), ou seja, IPPPPIPPPP, e armazená-las na memória, o processador analisa as diferenças entre o primeiro "P" da sequência e o segundo "P" a seguir. Registra então estas informações, que ocupam menos espaço do que o primeiro "P-frame" isoladamente da sequência, e o substitui. Ou seja, a sequência torna-se IBPPPIPPPP. O segundo quadro é portanto representado com base nas informações do "I-frame" anterior e do "P-frame" posterior, ou seja, um processo nas duas direções (daí o nome bi-directionally frame).

O processo de substituição de "P-frames" por "B-frames" continua, comparando-se "I-frames" ou "P-frames" anteriores com "I-frames" ou "P-frames" posteriores, gerando a sequência IBBBPIBBBP, que ocupa ainda menos espaço do que a original IPPPPIPPPP.

Os quadros assim reduzidos em volume de informação (alguns completos, como os "I-frames", outros somente com diferenças e tabelas de vetores, como os "P-frames" e "B-frames") são tratados individualmente através do algoritmo DCT e a seguir comprimidos um a um através da compressão intra-frame.

O processo intra-frame permite o ajuste do nível de compressão a ser aplicado e é neste estágio do processo que diferentes taxas de compressão podem ser escolhidas, gerando vídeos comprimidos em MPEG2 com diferentes tamanhos, com diferentes bit rates (VBR, Variable Bit Rate).

Cada um dos conjuntos IBBBBP chama-se "GOP", abreviação de Group of Images. A maioria dos GOPs contém geralmente cerca de 15 quadros, podendo variar para menos quando alterações bruscas na imagem (cenas de ação por exemplo) acontecem. GOPs longos (15 quadros) são mais eficientes na compressão (ocupam menos espaço). No entanto, introduzem maiores problemas para a edição-não-linear (é necessário mais processamento para recuperar os quadros ao fazer-se por exemplo um simples corte: mais quadros são necessários para a reconstrução do que no GOP menor).

O formato HDV tem sua edição facilitada em relação à edição de formatos MPEG2 tradicionais por utilizar GOPs menores, com 6 quadros.

Existem dois tipos de GOPs, os abertos e os fechados. Supondo-se o exemplo acima

que mostra dois GOPs; se as informações codificadas no "B-frame" indicado acima, no final do primeiro GOP, forem dependentes do "P-frame" anterior a ele no mesmo GOP e do "I-frame" do GOP seguinte, como indicado abaixo

diz-se que este tipo de GOP é um GOP aberto. Caso contrário, se forem só dependentes de informações existentes dentro do próprio GOP, como mostrado abaixo

diz-se que este tipo de GOP é um GOP fechado. Um vídeo codificado com GOPs abertos introduz problemas na edição: se em algum corte for deletado o GOP da direita, no exemplo acima de GOPs abertos, será impossível o "B-frame" do GOP da esquerda conseguir reconstruir o último quadro da imagem correspondente a esse GOP. Para evitar este problema, os arquivos gerados no computador para edição MPEG2 codificam suas informações através de GOPs fechados e não abertos. Mesmo assim, problemas podem ocorrer se o corte for efetuado por exemplo no "P-frame" do primeiro GOP:

o primeiro GOP ficou incompleto, seus "B-frames" não podem mais reconstruir os quadros porque dependem da informação do "P-frame" eliminado. Assim, mesmo cortar dentro de um GOP fechado pode ser problemático.

Para alguns softwares de edição-não-linear estes problemas traduzem-se na falta de precisão na edição de conteúdos codificados em MPEG2. Outros softwares, notadamente os que trabalham com o formato HDV conseguem contornar estes problemas decodificando os GOPs de determinado trecho do vídeo para recriar todos os quadros do mesmo, efetuando o corte especificado e depois recodificando novamente toda a sequência para gerar novos GOPs. Isso exige no entanto muito mais processamento por parte do computador do que na edição de conteúdo comprimido no modo intra-frame, como na família DV de formatos.

Não existe um padrão para montagem dos quadros dentro dos GOPs, diferentes fabricantes adotam diferentes métodos, efetuando a codificação utilizando todos os tipos de frames (I, B e P), utilizando somente alguns deles (somente I e P) ou até mesmo somente (I). Neste último caso o conteúdo comprimido torna-se essencialmente semelhante ao comprimido com o modo intra-frame. No caso do MPEG2 por exemplo, se comprimido nesta forma, torna-se de alta qualidade e de fácil manipulação em edição-não-linear, porém perde bastante em economia de espaço.

Os GOPs gravados com somente um frame/GOP acima referidos (do tipo I), denominam-se short GOPs e os que contém mais de um frame (combinando os tipos I e/ou B e P) denominam-se long GOPs.