Breve presentación del estándar de codificación HEVC -H.265- donde se expone el funcionamiento de los codificadores y decodificadores que utilizan este estándar.
Incluye bibliografía de consulta
Breve presentación del estándar de codificación HEVC -H.265-
1. Gonzalo Rielo. Julio 2014
Breve Presentación del estándar de
codificación H.265
1
2. Introducción
Resumen Técnico:
• HEVC reutiliza muchos de los conceptos que se utilizan en
H,264. Los dos son técnicas de codificación basados en el
análisis de bloques, por lo que ambos tienen las mismas
premisas de trabajo:
I. Subdivisión de la imagen en macrobloques, que pueden
ser divididos en bloques más pequeños.
II. Reducción de la redundancia espacial utilizando técnicas
de reducción intra-frame
III. Reducción de la redundancia temporal utilizando
técnicas de compresión inter-fame (estimación y
compensación del movimiento).
IV. Compresión del residuo de restar la predicción del la
imagen actual utilizando transformadas y cuantización
V. Reducción de la redundancia final en la transmisión de
vectores de movimientos residuales y señalización
utilizando codificación de la entropía.2
4. Particionado de la Imagen
A diferencia de H.264, no se
utilizan macrobloques fijos de 16
x 16 píxeles.
Se utilizan “coding tree blocks”
CTBs y pueden ser 64x64 ,
32x32 y 16x16.
La decisión del tamaño de los
bloques la toma el codificador.
Los CTBs son divididos
recursivamente en regiones de
32x32, 16x16 y 8x8 llamados
“Coding Blocks” CB
Se busca la utilización de unas nuevas estructuras: los “Quadtree”, árboles
cuaternarios.
4
5. Interpretando el CTB
Los CTB especifican la ramificación en orden de lectura del Quadtree sobre
la división que se ha creado para el tratamiento.
IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 22, NO. 12, DECEMBER 2012
HELLEet al.: BLOCK MERGING FOR QUADTREE-BASED PARTITIONING IN HEVC
La estructura de un árbol cuaternario permite dividir una imagen en
bloques de tamaño variable , y por tanto generando un marco de trabajo
para la optimización de la relación entre un modelo que busque precisión y
un modelo que busque optimizar el coste de codificación, esto es el
bitrate.
5
6. Interpretando el CTB (II)
Los CB dentro de un CTB son codificados siguiendo un orden de lectura
transversal, Z–Scan, que será el orden en ser enviados e interpretados
*Imagen de http://flylib.com/
** Shevach Riabtsev. HEVC Overview
*
**
6
7. Particionando más el CTB
En el ejemplo:
64x64 CTB, dividido en CBs:
• 1 CB de 32x32
• 9 CB de 16x16
• 16 CB de 8x8
Los CB dentro de un CTB son divididos
siendo la raíz de dos nuevos árboles:
Árbol de Predicción una sola vez,
creado Prediction Blocks (PB) como
hojas. Cada CB es particionado
siempre en 1, 2 ó 4 PB.
Árbol de Transformada de manera
recursiva, creando Transform Blocks
(TB) como hojas utilizando el Residual
Quadtree (RQT)
La decisión de qué árbol crear la toma
el codificador dependiendo de en qué
punto de la codificación se encuentre.
La predicción siempre va antes que la
transformada que se utiliza tras la resta
de la señal con la imagen predicha.
7
8. El Viaje de la Estimación (I)
Ref
Motion
Est.
Motion
Comp.
+
Intra
Pred.
Intra
Inter
-
Residual
T & Q CABAC
Bit-Stream
Q-1& T-1
+
+
MVs
Intra
Est.
Mode
SAO Params
Est.
Deblk.
Filter Control
Reconstructed
RefRefRef.
DPB
RefRefRef
Input Video
SAO params
Quantized
residuals
Reference samples Intra/Inter
Decision
MVs/Intra modes
SAO
Decoded
Picture Buffer
8
9. Tratamiento de la Predicción (I)
Los PB que se generan a partir de los CB
tienen 8 modos sobre los que se puede
decidir hacer la predicción:
Un Coding Block puede estar formado
por 1, 2 ó 4 PB, dependiendo de dos
variables, si la predicción es interframe
o interframe y los modos permitidos
para cada uno de las predicciones.
Existen dos modos cuadrados que sólo
son usados en codificación intraframe
(NxN, 2Nx2N).
En codificación interframe se utilizan
las ocho posibilidades.
2Nx2N NxN
nLx2N nRx2N
2NxnU 2NxnD
2NxN Nx2N
9
10. 2NxnU 2NxnD nRx2NnLx2N
Tratamiento de la Predicción (II)
Los modos asimétricos para las codificaciones Interframe para identificar
vectores de movimiento son muy convenientes en partes de las imágenes con
grandes transiciones de frecuencia, bien en luminancia, crominancia o
ambas.
Los CB son siempre intra o inter pero no las dos.
Por ejmplo Un CB puede ser dividido en 2 PB, y ambos serán predichos como
intra o inter.
La idea es que si quieres partir un CB en intra e inter lo que hay que hacer es
dividir el CB en unidades más pequeñas, poniéndose el límite en 8x8.
N hace referencia siempre a la mitad del ancho de CB y n un cuarto del CB.
Para un CB de 32, N = 8 y n = 4
10
11. Tratamiento de la Predicción (III)
ESTIMACIÓN /COMPENSACIÓN
INTRAFRAME (I)
Tiende a eliminar redundancia dentro del
propio frame y generar imágenes de
referencia tipo I-frame.
La predicción se hace a partir de dos arrays
unidimensionales del doble de tamaño que
el CB a tratar, uno superior otro a la
izquierda , más el vértice superior izquierda.
Los datos de los arrays corresponden a
muestras ya analizadas.
Existen 35 modos distintos de análisis en
HEVC, frente a los sólo 9 de AVC. Estos
modos incluyen los modos tradicionales
planar y DC.
Si no hay muestras en el array porque pertenecen a otro slice o están fuera
de la imagen, las muestras son filtradas y se codificarán posteriormente,
mediante un proceso bien definido en la norma que te permite el rellenar el
array de modo válido.11
12. Tratamiento de la Predicción (III)
ESTIMACIÓN INTRAFRAME (II)
El modo Planar hace un gradiente entre las muestras.
El modo DC usa un solo valor para predicción de todo el prediction block.
171615141312111098765432
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
0 : Intra_Planar
1 : Intra_DC
Direcciones de los modos de análisis en Intraframe12
13. El Viaje de la Estimación II
Ref
Motion
Est.
Motion
Comp.
+
Intra
Pred.
Intra
Inter
-
Residual
T & Q CABAC
Bit-Stream
Q-1& T-1
+
+
MVs
Intra
Est.
Mode
SAO Params
Est.
Deblk.
Filter Control
Reconstructed
RefRefRef.
DPB
RefRefRef
Input Video
SAO params
Quantized
residuals
Reference samples Intra/Inter
Decision
MVs/Intra modes
SAO
Decoded
Picture Buffer
13
14. Tratamiento de la Predicción (IV)
ESTIMACIÓN INTERFRAME (I)
El objetivo es la creación de vectores de movimiento (MV), para tratar de
eliminar la redundancia que se produce en las imágenes en frames
sucesivos y anteriores a uno de referencia.
El proceso general se conoce como MVP, motion vector prediction.
Es un proceso altamente costoso en términos de cómputo y cálculo, dado
que la búsqueda se hace en cada posición de pixel entre los distintos
frames en análisis.
Utilizan dos técnicas compensación: AMVP (Advanced Motion Vector
Prediction) y Merging.
La predicción consiste en tres pasos
Búsqueda
• Datos de
referenica
• Padding
(relleno)
Interpolación
• AMVP
• Merge
Ponderación
• Opcional
Padding
14
15. Tratamiento de la Predicción (V)
ESTIMACIÓN INTERFRAME (II). AMVP(i)
Es un proceso de “competición entre posiciones de vectores predichos.
Se forman dos arrays, uno vertical izquierdo y otro superior con todos los
puntos candidatos.
Se seleccionan los candidatos en los arrays entre todo el array. Estos
vectores son MVP.
Cuando uno de los candidatos deja de estar disponible pasa ser buscado
como Temporal (TMVP), sobre una selección previa en otros frames.
Si se trata de TVMP el candidato tiene que estar en el mismo CTB, sino ese
candidato no vale y no se usa.
IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 22, NO. 12, DECEMBER 2012
HELLEet al.: BLOCK MERGING FOR QUADTREE-BASED PARTITIONING IN HEVC
Shevach Riabtsev .Detailed Overview of HEVC/H.265.
15
16. Tratamiento de la Predicción (Vi)
PREDICCIÓN INTERFRAME (II). AMVP(ii)
Candidatos izquierdos: Los primeros disponibles
son:
Candidatos Superiores: B0, B1, B2
Si ambos candidatos están disponibles y tienen
el mismo valor de movimiento uno es excluido.
Si uno de los candidatos no está disponible o
está excluido entonces el se utliza el TVMP
(colocalizado) a menos que la predicción
temporal esté deshabilitada: los primeros
disponibles son C1 y C0. Si C0 está fuera del
mismo CTB. Se excluye y la elección será C1.
Si el número de candidatos disponible es menor
de 2, no se crean vectores de movimiento, MV. IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 22, NO. 12, DECEMBER 2012
HELLEet al.: BLOCK MERGING FOR QUADTREE-BASED PARTITIONING IN HEVC
16
17. Tratamiento de la Predicción (Vii)
PREDICCIÓN INTERFRAME (III). Merging
Busca bloques grandes en la imagen con la misma “tensión” de movimiento.
Elimina parte de la redundancia que los Quadtree dejaban pendiente,
mejorando mucho la compresión final pero complicando el procesado.
Junta Bloques que han sido descompuestos por el Quadtree.
La selección de los bloques se hace justo tras los filtrados verticales y
horizntales que se realiza en el AMVP.
Benjamin Bros. Relax it’s only HEVC Relax, it’s only HEVC
WBU-ISOG Forum, Nov. 27.-28. 2012, Geneva (CH)
17
18. Tratamiento de la Predicción (Viii)
IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 22, NO. 12, DECEMBER 2012
HELLEet al.: BLOCK MERGING FOR QUADTREE-BASED PARTITIONING IN HEVC
PREDICCIÓN INTERFRAME (III). Merging (ii)
B0B1B2
A1
A0
comparación
Sólo 5 comparaciones (arcos en la figura)
son ejecutados (en lugar de 10 de las
versiones originales del estándar) para la
eliminación de duplicaciones.
Shevach Riabtsev .Detailed Overview of HEVC/H.265.
18
19. Interpolation Flow Chart (w/o weighted prediction)
Fwd Ref
Horizontal
Filter
Vertical
Filter
>>6
>>2
8 bits per pixel
10 bits per pix
Bwd Ref
Horizontal
Filter
Vertical
Filter
>>6
>>2
8 bits per pixel
10 bits per pix
Merge
Tratamiento de la Predicción (VIII)
PREDICCIÓN INTERFRAME (IV). Flujo Completo
Shevach Riabtsev .Detailed Overview of HEVC/H.265.
19
20. La Transformación del Residuo
Ref
Motion
Est.
Motion
Comp.
+
Intra
Pred.
Intra
Inter
-
Residual
T & Q CABAC
Bit-Stream
Q-1& T-1
+
+
MVs
Intra
Est.
Mode
SAO Params
Est.
Deblk.
Filter Control
Reconstructed
RefRefRef.
DPB
RefRefRef
Input Video
SAO params
Quantized
residuals
Reference samples Intra/Inter
Decision
MVs/Intra modes
SAO
Decoded
Picture Buffer
Shevach Riabtsev .Detailed Overview of HEVC/H.265.
20
21. Codificación del Residuo. Transformada
Tras la resta de la imagen original con la imagen con las compensaciones y
estimaciones Intra e Inter se genera una imagen de residuo que se pasa a
codificar a partir de una transformada y una cuantificación. Se codifica la
entropía de la imagen.
Paso previo a la resta se deben generar el árbol cuaternario de
transformada RQT con sus hojas los TB.
El resultado de la transformación
pueden ser bloques desde 32x32
hasta 4x4.
El trabajo con tamaños tan grandes
como 32x32 con 1024 coeficientes,
hace que se utilicen nuevas técnicas
de predicción. El tener áreas grandes
de las transformaciones convierte en
HEVC en muy eficiente.
Transformada con TB de 16x16 con
subbloques de 4x421
22. Transform Block (TB)
Las muestras de croma pueden en codificaciones de 4x4 son realmente
de 2x2
Ejemplo.
CB es dividido en dos TB niveles (el bloque #1 se divide en cuatro
bloques):
0
2 3
1,2 1,3
1,0 1,1
0 2 3
1,0 1,1 1,2 1,3
Shevach Riabtsev .Detailed Overview of HEVC/H.265.
22
23. Codificación del Residuo (II)
Matemáticamente hablando, TB
grandes codifican señales
estacionarias y TB pequeños señales
impulsivas.
En la codificación ya no se utilizan las
técnicas en zigzag, sino que se
utilizan tres métodos, vertical,
horizontal y lateral derecha arriba.
Para subbloques de 4x4 (siempre
serán Intra) no se utiliza codificación
de la DCT sino la transformada del
seno la DST, que ha demostrado ser
más eficiente.
El resultado de la DCT o de la DST es
un entero que se busca compensar
sobre todo el subbloque.
23
24. Codificación CABAC
La codificación CABAC (Context Adpatative Binary Arithmetic Code) se
utiliza par ala codificación de la entropía tras la realización de la
transformada DCT o DST.
A diferencia de AVC, no se tiene codificación CAVLC.
Se realiza en tres pasos:
Binariazión y cuantificacaión de los enteros de la transformada
Modelización de la transformación
Codificación aritmética.
24
25. Estructura de división y recomposición
Imagen
Componentes
Coding Tree Units – CTU -
Coding Tree Blocks – CTB - Coding Untis CU
Coding Blocks
CB Prediction
Units PU
Transform
Blocks TB
Prediction
Blocks PB
Trasnform
Units TU
Prediction
Blocks PB
Transform
Blocks TB
División física División física + Sintaxis
25
26. La Compañía del Residuo
Ref
Motion
Est.
Motion
Comp.
+
Intra
Pred.
Intra
Inter
-
Residual
T & Q CABAC
Bit-Stream
Q-1& T-1
+
+
MVs
Intra
Est.
Mode
SAO Params
Est.
Deblk.
Filter Control
Reconstructed
RefRefRef.
DPB
RefRefRef
Input Video
SAO params
Quantized
residuals
Reference samples Intra/Inter
Decision
MVs/Intra modes
SAO
Decoded
Picture Buffer
Shevach Riabtsev .Detailed Overview of HEVC/H.265.
26
27. Filtro Deblocking
Se aplica a todos las fronteras de los PB y de los TB con una granularidad
de 8x8 o mayor con las siguientes excepciones:
Límite de imagen.
Límite del Slice.
Límites del Tile.
Se analizan primero los límites verticales y luego los horizontales:
Se determina el peso del filtro deblocking de cada TB (Bs)
Bs Valores Dados dos TB P y Q adyacentes
0 – No aplicar En cualquier
otro caso
1 – Débilmente P y Q
pertenecen a
diferente TB
Si la imagen
de referencia
es distinta
para P y Q
Si P y Q
tienen
distinto
número de
MV
Si la
diferencia
entre los MV
es mayor de
una unidad.
2 - Seguro P o Q son intra
27
28. Filtro SAO – Sample Adaptative Offset
Se hace siempre después del Deblocking
El objetivo es corregir las subpredicción, defectos de codificación y el
“banding” en zonas grandes.
Lo que realmente se hace es subdividir los colores en bandas y aplicar
un offset que se adaptando todas las zonas a la misma colorimetría..
Es un filtrado opcional y se pude aplicar o no dentro de una codificación.
Realmente no se aplica en la codificación sino que los parámetros son
transmitidos para que el deco los interprete en la recepción.
SAO Activo SAO desactivo
28
29. PARALELISMO
slice segment
boundary
slice boundary
independent
slice segment
dependent
slice segment
tile
boundary
• Los Slice dividen horizontalmente
la imagen.
• Los Tile dividen en rectángulos de
CTUs la imagen.
• Los Slice están compuestos por
uno o más Slice Segments.
• Los Tiles están compuestos por
uno o más slices.
• Todos los slice están compuestos
por coding tree units (CTU)
Particionando la imágenes en slices, slice segments y tiles
29
30. Paralelismo (II)
Slices y Tiles
Cada Slice depende de un Slice Principal.
Un Slice independiente no puede ser decodificado. Sólo Slice Principal
contiene toda la información de referencia para la decodificación del grupo.
No se soporta el entrelazado. En HEVC toda la codificación es progresiva.
PROS CONTRAS
Slices • Resincronización rápida en caso de
pérdida en la transmisión
• Muy adecuado para transmisiones de
baja velocidad.
• No rompen ni la codificación intra ni la
predicción de vectores
• Facilitan el MTU
• Se introduce un overhead importante
por la dependencia de los slice del slice
de referencia.
• Se incluye distorsión en la señal debido a
las fronteras entre los distintos slices.
Tiles • El escaneo de los tiles es en el mismo
orden de transmisión
• Muy enfocado al trabajo
multiprocesador, pudiéndose crear el
mismo número de tlies como de
procesadores.
• Composición de una señal 4K a partir de
cuatro fuentes independientes. Con
slices sólo se pueden componer bandas
horizontales.
• El tamaño predefinido de los Tiles hacen
el MTU más complicado y fijado a un
tamaño.
• Rompen la predicción intra en los
límetes de cada Tile.
30
31. Paralelismo (III)
Codificación por frente de onda
En este tercer método de paralelismo se envían filas de CTB.
La codificación CABAC se aplica de manera secuencial y no empieza en cada
fila hasta que no se ha terminado el segundo CTB de la fila anterior.
Las predicciones intra son permitidas entre las CTU de una misma fila.
Para el procesado multiprocesador hay que trabajar con procesados cruzados
empeorando el rendimiento.31
32. El final del camino
Ref
Motion
Est.
Motion
Comp.
+
Intra
Pred.
Intra
Inter
-
Residual
T & Q CABAC
Bit-Stream
Q-1& T-1
+
+
MVs
Intra
Est.
Mode
SAO Params
Est.
Deblk.
Filter Control
Reconstructed
RefRefRef.
DPB
RefRefRef
Input Video
SAO params
Quantized
residuals
Reference samples Intra/Inter
Decision
MVs/Intra modes
SAO
Decoded
Picture Buffer
32
33. Estructura de Transmisión
VPS SPS PPS
Slice
Header
Slice Data
Picture #1
* * * *
Slice
Header
Slice Data
Picture #k
Slice
Header
Slice Data * * * *
CTU
Header
CU DataCU Hdr * * * * CU DataCU Hdr
33
34. Definiciones
Coding Tree Block (CTB):
La IMAGEN se divide en estrucutruas cuadradas NxN llamadas coding tree blocks (CTBs).
El tamaño de N de los CTB es escogida por el codificador (16x16, 32x32, 64x64). La
luminancia cubre un área cuadrada de muestras de tamaño NxN, mientras que la
crominancia cubre en cada componente un área cada una de ellas N/2 N/2 (en 4:2:0).
Coding Block (CB):
Cada CTB es la raíz de árbol de codificación que se utiliza para dividir el CTB en coding
blocks (CBs). El tamaño del CB puede ir desde el mismo tamaño del CTB hasta un tamaño
mínimo de 8x8. El tamaño adaptativo es debido a que los CBs representan las hojas del
Quadtree que forma el CTB.
Cada Coding Block es la raíz para dos nuevos árboles, uno de predicción (Prediction tree) y
otro de transformada (Transform tree).
Pediction Block (PB):
Cada una de las hojas del pediction tree es lo que se considera un Prediction Block, si bien
este árbol sólo tiene un nivel y realmente describe cómo un CB puede ser particionado entre
diferentes modos de particionado en los inter-PB. El prediction tree especifica la posición y
tamaño de los PB.
34
35. Definiciones
Transform Block (TB):
Los CB son divididos en un segundo árbol de transformada, transform tree. Las unidades de
este árbol de transformada son los Transform Block (TB). Los TB son unidades más
pequeñas que los propios CB, generado otro Quadtree llamado RQT (Residual QuadTree).
El transform tree especifica la posición y tamaño de los TB.
Todos los bloques en diferentes árboles (coding, prediction o tramsform trees) corresponden
a una matriz de muestras específicos con diferentes tamaños. Dependiendo de qué árbol
dependen estos bloques, se asocian con una determinada “sintaxis” especifica para cada
uno de ellos. Los datos conjuntamente con la sintaxis asociada forman “Units”.
Transform Unit (TS):
La matriz de TB de luminancia y el de crominancia junto con su sintaxis asociada (flags de
codificación o coeficientes de niveles de transformación) son agrupados en Transform Units,
TS.
Prediction Unit (PU):
Un Pediction Unit encapsula todo lo relativo a la predicción, esto es por tanto una matriz de
muestras de un bloque de predicción (PB) y sus elementos asociados (vectores de
movimiento o los modos de predicción intra utilizados)
35
36. Definiciones
Coding Unit (CU):
La matriz de muestras de luminancia de CB y los de cromas, conjuntamente con la
sintaxis asociada forman una unicdad de codificacaión, Unit Coding (CU). Cada CU
puede provenir de una predicción intra o interframe. En realidad el CU es la unidad
básica para compresión.
Coding Tree Units (CTU):
El CTB de luminancia y los dos CTB de crominancia , conjuntamente con las syntaxis
asociada, forman el árbol de unidades de codificación. Coding tree unit (CTU). El CTU es
la unidad básica de procesado, similar a los Macrobloques en codificaciones anteriores.
36
37. Resumen de funcionamiento
1. Cada imagen se divide en bloques.
2. Por cada bloque de la imagen, se genera una predicción, buscando dónde se encontraban estos bloques
en la imagen anterior (compensación de movimiento) o en la misma imagen.
3. Se resta la predicción al bloque de la imagen actual.
4. Se aplica una DCT a la diferencia entre la predicción y el bloque actual.
5. Se cuantifican los coeficientes DCT, eliminando las componentes de altas frecuencias y se codifican en un
código, generalmente no-uniforme.
6. En caso de que no hubiera fotograma previo o hubiera mucha diferencia, se codifica el bloque de nuevo
en lugar de la diferencia de la predicción.
37
38. Resumen de Filtros y Codificación
• Unidades de predicción
• Predicción Intraframe
• Predicción Interframe
Compensación del movimiento
• Codificación del Residuo
• Deblocking
• SAO
• Codificación de la Entropía
• Paralelismo
38
40. Mejoras obtenidas
IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, VOL. 22, NO. 12, DECEMBER 2012
HELLEet al.: BLOCK MERGING FOR QUADTREE-BASED PARTITIONING IN HEVC
40
41. Encabezado por Telestream, se trata de un codec de software libre para
la realización de un códec H.265
Es la misma idea que se utilizó para la generación del x.264, generado
una licencia de software libre bajo licencia GNU GPL 2 license y otra
comercial.
http://youtu.be/Ctjm1kxw-BM
VP9 | VP8 | H.265 | x264 encoder test
41