# Imatges I, P i B

Les imatges I, P i B resulten de la compressió del senyal de vídeo en els estàndards ITU-T o MPEG. Aquestes imatges poden ser dels següents tipus:
* Les imatges I: són les que es codifiquen per si mateixes.
* Les imatges P: són les predites per extrapolació.
* Les imatges B: són les predites per interpolació.
En els estàndards de compressió de vídeo com MPEG, s'utilitzen aquests tipus d'imatges per a comprimir les dades. De fet, en lloc de codificar cada imatge que conforma el vídeo, es pot codificar una imatge totalment i després les diferències entre aquesta imatge i les imatges següents, explotant així la redundància en relació a les imatges veïnes.
Per exemple, en una seqüència de vídeo amb un segon pla fix, es pot representar solament les parts que es mouen, per a no codificar cada vegada el segon pla que no canvia i guanyar així molt en capacitats de compressió. En aquests tipus d'algorismes, es codifiquen algunes imatges per si mateixes i es prediuen les altres. Les imatges són dividides en macroblocs (en general de 16 X 16 píxels) i segueixen el concepte de compensació de moviment per a la predicció: per cada macrobloc d'una imatge que volem codificar a partir d'una imatge de referència (que pot ser una anterior o una posterior), es busca on està en la imatge de referència, i es defineix un vector de moviment que dona el moviment relatiu entre els dos macroblocs que es corresponen. Per descomptat, entre dues imatges, no es poden trobar sempre macroblocs completament idèntics, i s'utilitza una tècnica de comparació entre els macroblocs per a buscar els que són més correlacionats entre ells. Es pot predir una imatge a partir de la imatge de referència i els vectors de moviment, i així obtenim la diferència entre aquesta imatge predita i la imatge original que volem codificar.
Llavors, només cal enviar les imatges codificades per si mateixes, les matrius de vectors de moviment i les diferències entre les imatges de referència i les altres per a codificar la seqüència vídeo.
Alguns macroblocs de les imatges P o B poden ser codificats per si mateixos per a refrescar-los i per a evitar errors massa importants que es poden produir si hi ha moltes imatges predites entre la imatge I anterior i la imatge actual.

## Explicació detallada
### Imatges I: Intra

* És una imatge codificada sense referència a cap imatge anterior, sinó referida exclusivament a ella mateixa.
* Pot ser generada pel codificador per a crear un punt d'accés aleatori, és a dir, un punt que permeti al decodificador començar la descodificació adequadament en referència a aquesta marca (localització d'imatge).
* Típicament, requereixen major nombre de bits per a la seva codificació que l'altre tipus d'imatges (B o P).
* Aquestes imatges són freqüentment utilitzades com punt de referència per a la descodifcació d'altres imatges. Períodes de refresc d'aproximadament mig segon s'usen típicament en aplicacions de 'broadcast' de televisió digital i en emmagatzematge en DVD. Per altra banda, períodes de refresc superiors a l'anteior poden ser utilitzats en mitjans com sistemes de videoconferència, on és molt habitual l'enviament de les imatges I.
* La codificació de les imatges I és molt semblant a la que s'utilitza en JPEG. La diferència radica en les taules de quantificació i en els procediments que s'utilitzen per a fer canvis sobre les escales de quantificació.

### Imatges P: Predicted

La codificació de les imatges P és una mica més complexa que les imatges intra-trama, car ha de realitzar-se l'estimació de moviment i decidir quin és la forma més eficient de codificar un macrobloc en funció dels resultats obtinguts. En aquest apartat es defineixen els diferents tipus de macroblocs que poden aparèixer en la codificació de les imatges P. Una de les primeres peculiaritats de les imatges P és que pot saltar-se la codificació d'alguns macroblocs (skipped macroblock). Això ocorre quan el processador considera que no és necessari codificar un macrobloc, ja que la informació que conté pot aproximar-se amb prou precisió basant-nos en la informació que tenim en la mateixa posició en la imatge de referència anterior. En aquest cas, els 4 blocs que formen el macrobloc se substituïxen pels mateixos píxels que teníem en la imatge anterior, el que significa que, en el fons, estem realitzant una compensació de moviment amb un vector de moviment nul i que l'error de predicció obtingut és suficientment pròxim a zero com perquè no calgui codificar-lo. A més dels macroblocs skipped és possible tenir 7 tipus addicionals que es denoten com predmc, pred-c, pred-m, intra-d, pred-mcq, pred-cq i intra-q. Les abreviatures que s'utilitzen per a identificar els possibles tipus de macrobloc corresponen a:
* pred: Macrobloc codificat utilitzant predicció. La codificació no és intra-trama.
* m: Macrobloc codificat utilitzant compensació de moviment forward. Es transmet el vector de moviment associat.
* c: Com a mínim es transmet la informació d'error associada a un dels blocs que formen el macrobloc.
* d: S'utilitza el quantificador per defecte.
* q: Es realitza un canvi en l'escala del quantificador.
* skipped: Macroblocs que no són transmesos.
La missió del codificador és triar, d'entre les diferents possibilitats de codificar un macrobloc, aquella que proporcioni la millor opció. Generalment, les decisions no són evidents i han de provar-se diverses possibilitats abans de prendre a una decisió. Les matrius de quantificació utilitzades en el cas de realitzar codificació mitjançant predicció tenen un pas de quantificació uniforme per a tots els coeficients. Això és degut al fet que el contingut freqüencial dels senyals d'error no mostra cap preferència per a concentrar la seva energia en unes freqüències particulars i en principi tots els coeficients tenen la mateixa importància en la reconstrucció de les imatges. En la figura es mostra la matriu de quantificació per defecte que s'utilitza en la codificació inter-trama.

### Imatges B: Bi-predicted/Bi-directional

* Les imatges B requereixen descodificació prèvia d'altres imatges de la seqüència per a ser descodificades correctament.
* Poden contenir tant dades d'imatge com vectors de desplaçament, o també combinacions dels dos elements.
* Inclouen alguns mètodes de predicció que obtenen la predicció d'una regió en moviment (per exemple, un macrobloc o una regió d'àrea menor) portant a terme un mitjà de les prediccions obtingudes usant dues regions de referència prèviament descodificades.
* En estàndards de codificació més antics (com MPEG-2), les imatges B no s'utilitzen mai com referències per a la predicció d'altres imatges. El resultat és una codificació amb menys qualitat (producte de la utilització de menys bits) que pot ser utilitzada en les imatges B, ja que la pèrdua de detall no perjudicarà la qualitat de la predicció de les imatges subsegüents.
* En H.264, hi ha l'opció d'utilitzar-les o no com a referències per a la descodificació d'altres imatges (a discreció del codificador).
* En estàndards de codificació més antics (com MPEG-2), s'utilitzen exactament dues imatges prèviament codificades com a referències durant la codificació, i solament cal una d'aquestes dues imatges per a precedir la imatge B en el monitor i l'altra per a seguir-la.
* En H.264, es pot utilitzar una, dues o més imatges prèviament descodificades com a referències durant la codificació, i poden tenir qualsevol ordre de reproducció arbitrari, relatiu a la imatge o imatges utilitzades en a la seva predicció.
* Típicament, calen menys bits per a codificar una imatge B que amb les I o P.

## Agrupació de fotogrames: GOP

Generalment, en una seqüència de vídeo, els fotogrames s'agrupen en un Grup de Fotogrames, un GOP (group of pictures). Es tracta de la unitat d'accés aleatori més petita. En el seu interior hi trobem:
* Un fotograma I (el primer).
* Un o diversos fotogrames P.
* Diversos fotogrames B intercalats.
El més típic és trobar 12 fotogrames en un GOP, però el codificador pot canviar-ho dinàmicament. En el cas de detectar un canvi d'escena, forçaria un fotograma I que donaria inici a un nou GOP.
Així podríem ordenar la seqüència de fotogrames des de dos punts de vista diferents:
* Ordre de visualització, com ho veu l'usuari.
* Ordre de bitstream, com es generen els fotogrames.
S'explica en la següent taula:
Ordre de visualització :
| I | B | B | P | B | B | P | B | B | P | B | B | I |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| Ordre de bitstream |||||||||||||
| I | P | B | B | P | B | B | P | B | B | I | B | B |
| 1 | 4 | 2 | 3 | 7 | 5 | 6 | 10 | 8 | 9 | 13 | 11 | 12 |

## Bibliografia

* Sistemas audiovisuales I. Televisión analógica y digital. Francesc Tarrés. Edicions UPC, any 2000. ISBN 84-8301-393-2.