Qpel
El término Qpel (quarter pixel) significa cuarto de píxel y se establece como una unidad de subpixelación equivalente a un cuarto de un píxel estándar. Se ha utilizado y se utiliza en muchos estándares modernos de codificación como por ejemplo MPEG-4 ASP y H.264/AVC.
Descripción
[editar]Qpel es un concepto utilizado para definir la precisión con la que actúan los métodos de estimación y/o compensación de movimiento en la codificación de vídeo, es una unidad de precisión. La primera unidad de subpixelación que se utilizó es la denominada half pixel. Como su nombre indica, esta unidad de precisión equivale al valor de medio píxel. Fue utilizada por primera vez en el estándar de codificación MPEG-2.
La motivación principal para la creación y utilización de unidades de subpixelación es el aumento de la calidad en la definición del vídeo codificado. Mediante la creación de subpíxeles la búsqueda de los bloques (block matching) es más exhaustiva ya que los desplazamientos son más pequeños porque tenemos más posiciones de búsqueda y este hecho nos proporciona resultados más precisos porque obtenemos un decremento de los bits residuales.
Esta mejora en la definición de la imagen no es el único cambio. Debido a la creación de estos nuevos valores (inexistentes en la imagen original) se produce un incremento considerable en el coste de los bits necesarios para la codificación de los vectores de movimiento resultantes de realizar la búsqueda (block matching) durante el método de estimación o codificación de movimiento. Además el coste computacional también aumenta ya que se tiene un número más grande de bloques para evaluar. Inicialmente los vídeos codificados con vectores de movimiento de precisión de cuarto de píxel requieren casi el doble de la potencia de cálculo.
Proceso de obtención
[editar]La obtención de los nuevos valores de píxel se lleva a cabo, normalmente, a partir de interpolaciones. Con este método se obtienen submuestras de los píxeles originales.
La interpolación es el resultado de crear un nuevo valor que se situará entre dos ya existentes. El cálculo de este nuevo valor se puede hacer con cualquier proceso. En el caso de la subpixelación se buscan nuevos valores de píxeles que tengan relación espacial con sus vecinos, es decir, que sigan una progresión coherente con los valores de sus píxeles vecinos.
Los dos tipos de interpolaciones más utilizadas son la interpolación bilineal y la bicúbica. Partiendo de un píxel original la interpolación bilineal consiste en observar los 4 píxeles vecinos y realizar el promedio entre sus valores. La interpolación bicúbica comporta una mejora a la bilineal ya que esta tiene en cuenta los 16 píxeles adyacentes al píxel original.
En la siguiente imagen se muestran las diversas posiciones de búsqueda resultantes de la obtención genérica de nuevas muestras equivalentes a medio y un cuarto de píxel a partir de las muestras de los píxeles originales:
- Los rectángulos equivalentes a las posiciones de los píxeles originales.
- Las elipses equivalen a las posiciones de los half pixels.
- Los triángulos equivalentes a las posiciones de los quarter pixels.
Un ejemplo práctico es el estándar VC-1 (también SMPTE 421M) que utiliza la interpolación bicúbica para obtener los quarter píxels. El estándar H.264 fue el primero en definir una precisión de un cuarto de píxel por defecto, en este estándar se utiliza un filtro 6-tap para encontrar los valores equivalentes a medio píxel (half pixels) y una vez obtenidos se aplica una interpolación bilineal para conseguir las muestras que permitan aplicar la precisión de cuarto de píxel. Debido a la simplicidad de la filtración bilineal la interpolación con la que se obtienen los quarter pixels necesita un tiempo considerablemente pequeño para el cálculo que tiene que realizar la CPU.