# FMO

L'H.264/MPEG-4 AVC és el nou estàndard de compressió de vídeo digital desenvolupat conjuntament pel Grup d'Experts en Codificació de Vídeo (VCEG) de la ITU-T i el Grups d'Experts en Imatges en Moviment (MPEG) de l'ISO/IEC. A part d'utilitzar algorismes de codificació eficients, les especificacions de l'H.264/AVC defineixen una sèrie d'eines per a combatre els errors en transmissió. La més innovadora és l'anomenada Ordenació flexible dels macroblocs ('FMO, Flexible Macroblock Ordering) que es descriu tot seguit en aquest article.
Una de les característiques noves que s'ha introduït en l'estàndard H.264/AVC és la possibilitat de dividir la imatge en regions anomenades grups de slices. Cada grup de slices es pot dividir alhora en diverses slices; així doncs, hem de definir el terme slice com a seqüència de macroblocs dins del mateix grup de slices que es processa en ordre d'escanejat (d'esquerra a dreta i de dalt a baix) dins del conjunt de macroblocs del grup. Un slice sempre es pot descodificar de forma independent.
El FMO consisteix a decidir a quin slice pertany cada macrobloc de la imatge. Cada macrobloc s'assigna lliurement a un grup de slices mitjançant un MBAmap (mapa de situació dels macroblocs) que consisteix en un número d'identificació per a cada macrobloc de la imatge que especifica a quin grup de slice pertany cada macrobloc. El nombre de grups de slices per a cada imatge està limitat a 8 per tal de no complicar excessivament els esquemes de situació de macroblocs.
Si desactivem el FMO, les imatges estaran formades per una sola slice amb els macroblocs en ordre d'escanejat. L'ús de FMO és compatible amb qualsevol tipus de predicció inter-frame.
Amb aquesta tècnica podem corregir errors amb molta facilitat explotant la redundància (teoria del senyal) espacial de les imatges. Una bona idea és triar els grups de slices de manera que cap macrobloc i qualsevol veí seu siguin del mateix grup. Així doncs, si una slice es perd durant la transmissió, és molt més fàcil reconstruir els blocs perduts amb la informació dels blocs veïns. Hem de tenir en compte les característiques de transmissió d'aquestes slices: cada slice es transmet independentment en unitats anomenades paquets, i cada paquet conté a la seva capçalera la informació necessària per a descodificar-se independentment dels altres paquets (tenint en compte que les imatges utilitzades com a referència són idèntiques en el codificador i descodificador). Utilitzant FMO conjuntament amb mètodes avançats de correcció d'errors es pot mantenir la qualitat visual tot i tenir taxes de pèrdues de paquets de fins al 10%.

## Tipus

En usar FMO, la imatge es pot dividir en diverses pautes d'escanejat de macroblocs. Hi ha set tipus diferents de FMO, etiquetats com a Type 0 fins a Type 6. El Type 6 és l'únic que permet ordenar els macroblocs de forma aleatòria, donant així molta flexibilitat a l'usuari. La informació sobre quin tipus de FMO estem fent servir s'ha d'incorporar a la capçalera dels paquets.
A continuació es descriuen les pautes dels FMO no aleatoris:
* Type 0: utilitza tires de macroblocs que es repeteixen fins a omplir tota la imatge. Per a reconstruir el MBAmap només cal conèixer la longitud d'aquestes tires.
* Type 1: utilitza una funció matemàtica, coneguda tant en el codificador com en el descodificador, per a repartir els macroblocs. La distribució de la figura, en què els macroblocs es distribueixen en forma d'escaquer, és molt utilitzada (vegeu Aplicacions).
* Type 2: es fa servir per a marcar àrees rectangulars anomenades d'interès. En aquest cas es guarden en els MBAmaps les coordenades superior-esquerra i inferior-dreta dels rectangles.
* Type 3-5: són tipus dinàmics que deixen créixer o disminuir de manera cíclica els grups de slices de les diferents imatges consecutives. Així doncs, només s'ha de conèixer la direcció, la taxa de creixement i la posició en el cicle per tal de tenir ben definits els grups de slices.
Nota: Cada color representa un grup de slices

## Aplicacions

En aquest apartat es descriuen algunes de les possibles aplicacions del FMO:
* El Type 1 és útil per a mantenir la privadesa de les videoconferències. La imatge es divideix en 2 grups de slices amb els macroblocs distribuïts com un escaquer i cada grup de slices s'envia en un paquet diferent. D'aquesta manera, si una persona vol descodificar la videoconferència haurà de saber exactament en quins dos paquets s'està enviant.
* El Type 1 també es pot utilitzar en mitjans de transmissió on hi ha una alta taxa de pèrdues de paquets (exemple en l'apartat Resultats experimentals).
* El Type 2 també pot ser molt útil. Imaginem que volem transmetre un telenotícies amb una taxa de bits baixa. Si codifiquem la imatge amb la taxa de bits distribuïda homogèniament en tota la imatge tindrem uns mals resultats. Com que les persones som particularment sensibles als errors d'imatge de les cares, podem marcar la regió de la cara del presentador de televisió per tal que sigui codificada amb més bits. Així doncs, el fons del plató serà codificat amb menys bits i el presentador amb molts més bits (mantenint la taxa total de bits del principi). D'aquesta manera la qualitat visual subjectiva haurà augmentat significativament.

## Resultats experimentals

Per a realitzar aquests resultats s'ha utilitzat un programari de referència de l'estàndard H.264/AVC [1]. En aquestes imatges es poden veure dos frames de la seqüència Stefan.yuv, en un cas sense aplicar FMO i en l'altre utilitzant FMO del Type 1:
Veiem clarament a la part inferior dreta de la imatge com s'han perdut paquets (sense FMO els macroblocs s'envien per ordre d'escanejat) i no s'han pogut descodificar els macroblocs de la imatge. En utilitzar FMO Type 1, en canvi, tenim dos tipus de grups de slices dividint la imatge com un escaquer. Així doncs, quan es perd un tros de paquet del grup de slices 0 podem recuperar el tros d'imatge interpolant els macroblocs veïns que no s'han perdut perquè pertanyien al grup de slices 1.

## Conclusions

Veient els resultats experimentals de l'aplicació de FMO, podem dir que és una tècnica molt útil per a corregir errors. El seu ús millora la qualitat visual tan subjectiva com objectiva (SNR o MSE) quan els paquets estan sotmesos a una certa taxa de pèrdua. Tot i els clars avantatges del FMO també té l'inconvenient que s'ha d'enviar la informació del tipus de FMO que estem fent servir a la capçalera del paquet. Això es tradueix en un clar increment dels bits que hem d'enviar i, per tant, l'ús de FMO s'aconsella només en mitjans de transmissió en els quals s'estima que hi haurà una certa taxa de pèrdua de paquets.

## Vegeu també

* Còdec de vídeo
* Vector de moviment
* Relació senyal-soroll

## Referències

* [1] Software H.264: http://iphome.hhi.de/suehring/tml/download/
* T.Wiegand, G.J. Sullivan, G. Bjøntegaard, A.Luthra: Overview of the H.264/AVC Video Coding Standard. IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, July 2003 (referència en anglès)
* Y.Dhondt, P.Lambert: Flexible Macroblock Ordering, an error resilience tool in H.264/AVC. Fifth FTW PhD Symposium, Faculty of Engineering, Ghent University, Desembre 2004, Paper No. 106 (referència en anglès)