ES2637166T3 - Filtrado adaptativo de muestra con corrimientos - Google Patents
Filtrado adaptativo de muestra con corrimientos Download PDFInfo
- Publication number
- ES2637166T3 ES2637166T3 ES13762601.6T ES13762601T ES2637166T3 ES 2637166 T3 ES2637166 T3 ES 2637166T3 ES 13762601 T ES13762601 T ES 13762601T ES 2637166 T3 ES2637166 T3 ES 2637166T3
- Authority
- ES
- Spain
- Prior art keywords
- run
- adaptive
- sample
- shift
- sao
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Picture Signal Circuits (AREA)
Abstract
Un método, realizado por un dispositivo (150) de control de filtrado, para procesar, en un procedimiento de filtrado adaptativo de muestra utilizado en codificación de vídeo de alta eficiencia, HEVC, una primera imagen, en el que la primera imagen es reconstruida a partir de datos de vídeo, comprendiendo el método: - obtener (201) una magnitud de corrimiento a partir de los datos de vídeo, en el que la magnitud de corrimiento indica una magnitud de un corrimiento adaptativo de muestra sao_offset; - obtener (204) un signo de corrimiento a partir de los datos de vídeo, en el que el signo de corrimiento indica un signo del corrimiento adaptativo de muestra sao_offset, en el que el corrimiento adaptativo de muestra sao_offset es un corrimiento de banda y/o un corrimiento de borde; en el que el corrimiento adaptativo de muestra sao_offset es codificado por código de longitud variable o código de longitud fija o codificación aritmética binaria adaptativa por contexto, CABAC, y el signo de corrimiento y la magnitud de corrimiento se codifican de forma separada en los datos de vídeo; en el que un mapeo (203) existe entre el corrimiento adaptativo de muestra sao_offset y un valor adicional de corrimiento adaptativo de muestra SaoOffsetVal, siendo el mapeo: - determinar (205) el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal basándose en la magnitud de corrimiento y el signo de corrimiento; y - procesar (207), en el procedimiento de filtrado adaptativo de muestra, al menos una porción de la primera imagen aplicando el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Filtrado adaptativo de muestra con corrimientos Campo tecnico
Las realizaciones del presente documento se refieren al procesamiento de datos de video. En particular, se divulgan un metodo, un dispositivo de control de filtrado, un programa informatico y un producto de programa informatico para procesar una primera imagen en un procedimiento de filtrado adaptativo de muestra.
Antecedentes
Los datos de video necesitan ser procesados en muchas situaciones y aplicaciones diferentes. Un tipo muy comun de procesamiento de datos de video es la codificacion y decodificacion de datos de video, normalmente con el proposito de comprimir los datos de video en el lado de origen/codificador mediante codificacion de video, y descomprimir los datos de video codificados en el lado de destino/decodificador mediante decodificacion de video.
La codificacion de video de alta eficiencia (HEVC), tambien conocida como H.265, es un estandar de compresion de video. La HEVC es desarrollada conjuntamente por el grupo de expertos en imagenes en movimiento (MPEG) de ISO/IEC y el grupo de expertos en codificacion de video (VCEG) del sector de normalizacion de las telecomunicaciones (ITU-T) como ISO/IEC 23008-2 MPEG-H Parte 2 e ITU-T H.265. MPEG y VCEG han establecido un equipo de colaboracion conjunta en codificacion de video (JCT-VC) para desarrollar el estandar HEVC.
En un sistema de codificacion o compresion de video compatible con, por ejemplo, el estandar HEVC, los datos de video se someten a diversos pasos de procesamiento, incluyendo por ejemplo prediccion, residual, transformacion, cuantificacion, desbloqueo y filtrado adaptativo de bucles. A lo largo de la trayectoria de procesamiento en el sistema de codificacion o compresion de video, ciertas caracteristicas de los datos de video pueden ser alteradas a partir de los datos de video originales debido a los accionamientos en los pasos de procesamiento al que se someten los datos de video. Por ejemplo, pueden producirse artefactos en forma de cambios en la intensidad de la imagen (por ejemplo, crominancia o luminancia) para los pixeles en una trama de video y/o entre tramas de video sucesivas. Dichos artefactos pueden ser visualmente notorios; por lo tanto, se pueden tomar medidas para compensar los artefactos en un intento de eliminar o al menos aliviarlos.
En HEVC, se utiliza [2] un esquema de compensacion de intensidad conocido como corrimiento (o desfase) adaptativo de muestras (SAO). El esquema SAO [1] clasifica cada pixel en los datos de video en una de varias categorias SAO de acuerdo con un contexto dado. El contexto puede ser, por ejemplo, la intensidad de pixel de los datos de video, que a menudo se denomina "corrimientos de banda SAO". Alternativamente o adicionalmente, el contexto puede ser una relacion de valor de pixel entre el pixel actual y sus pixeles vecinos, que a menudo se denomina "corrimientos de borde SAO". En este ultimo caso, las categorias SAO representan artefactos de borde tipicos y estan asociadas con respectivos valores de corrimiento correspondientes para ser aplicados a los pixeles en la respectiva categoria SAO para compensar el artefacto de borde en cuestion. Dependiendo de donde se aplique el corrimiento adaptativo, los datos de video pueden representar datos de video reconstruidos, datos de video que han sufrido un desbloqueo, datos de video filtrados en bucle adaptativo u otros datos de video en una etapa intermedia durante el proceso de codificacion o decodificacion. Por lo tanto, SAO se puede utilizar en HEVC despues del proceso de filtro de desbloqueo si se utiliza un filtro de desbloqueo, de lo contrario directamente despues de la reconstruccion de la prediccion y residual. SAO modifica la imagen que se va a mostrar o almacenar en un bufer de imagen de referencia. El bufer de imagen de referencia mantiene las imagenes para su uso posterior para la inter-prediccion de otras imagenes. Si se utiliza el filtrado adaptativo de bucle normalmente se realiza despues de SAO.
Mas especificamente, la compensacion SAO en HEVC involucra cuatro categorias de corrimiento de borde SAO [1]- [3]. La primera categoria representa un caso en el que el pixel actual (o mas especificamente su valor de intensidad) esta en un minimo local comparado con sus dos pixeles vecinos en una direccion seleccionada -horizontal (0 grados), vertical (90 grados) o diagonal (135 o 45 grados)-. La segunda categoria representa un caso en el que el pixel actual es igual a uno de sus vecinos pero inferior al otro vecino en la direccion seleccionada. La tercera categoria representa un caso en el que el pixel actual es igual a uno de sus vecinos pero mas alto que el otro vecino en la direccion seleccionada. La cuarta categoria representa un caso en el que el pixel actual esta en un maximo local en comparacion con sus dos pixeles vecinos en la direccion seleccionada.
Los filtros de desbloqueo se utilizan en los estandares de codificacion de video para combatir los artefactos de bloqueo. Los artefactos de bloqueo surgen porque las tramas de video originales se dividen en bloques que se procesan de forma relativamente independiente. Los artefactos de bloqueo pueden, por ejemplo, surgir debido a diferentes intra-predicciones de los bloques, efectos de cuantificacion y compensacion de movimiento.
En HEVC hay un filtro de desbloqueo, tambien denominado filtro de bucle, despues de la prediccion y la reconstruccion residual, pero antes del almacenamiento de la reconstruccion para referencia posterior cuando se
5
10
15
20
25
30
35
40
45
50
55
60
65
codifican o decodifican las tramas subsiguientes. El filtrado de desbloqueo consta de varios pasos como decisiones de filtro, accionamientos de filtrado, una funcion de recorte y cambio de valores de pixeles.
Actualmente el corrimiento de banda y de borde SAO en HEVC tiene cuatro corrimientos por unidad mayor de codificacion (LCU). La codificacion de estos corrimientos es una sobrecarga que hace que muchas LCU eviten el uso de corrimientos de borde o de banda SAO. La codificacion de varios corrimientos tambien consume memoria. Un problema es por lo tanto que varios corrimientos consumen demasiada memoria.
Otro problema es que cuesta muchos bits utilizar corrimiento de banda o de borde con grandes magnitudes para SAO en HEVC. Para velocidades de bits bajas donde el corrimiento con grandes magnitudes es mas probable causa gastos innecesarios o menos uso de corrimientos con grandes magnitudes
Otro problema con el corrimiento de banda es que requiere una busqueda de tabla basada en pixeles para realizar el accionamiento de corrimiento de banda. La tabla tiene un tamano de 32 y necesita actualizarse antes de procesar cada LCU.
Otro problema adicional con el corrimiento de borde y banda es que requiere accionamientos de recorte para permitir que una modificacion con corrimiento de banda permanezca dentro de la profundidad de bits de la senal de video. Para el corrimiento de banda en el equipo logico de referencia HEVC, esto se hace teniendo una tabla mas grande 32 + maxoffset/8-minoffset/8 donde los extremos de la tabla van al valor minimo, respectivamente, maximo de acuerdo con la profundidad de bit. Para el corrimiento de borde, esto se hace teniendo una tabla tan grande como el intervalo de valores de pixeles + maxoffset - minoffset. Esto no se menciona en el borrador de trabajo de HEVC.
Sumario
Un objeto es mejorar un procedimiento SAO del tipo mencionado anteriormente con el fin de aliviar o al menos reducir uno o mas de los problemas antes mencionados.
Esto se consigue mediante el metodo, el aparato, el programa informatico y el producto de programa informatico de las reivindicaciones adjuntas 1-13.
Gracias a ello, el signo de corrimiento y la magnitud de corrimiento se codifican por separado en los datos de video, el dispositivo de control de filtrado es capaz de procesar al menos una porcion de la primera imagen en el procedimiento de filtrado adaptativo de muestra mientras se aplica el corrimiento adaptativo de muestra, que ha sido determinado basandose en la magnitud de corrimiento y el signo de corrimiento. La codificacion separada de la magnitud de corrimiento y del signo de corrimiento permite que la magnitud de corrimiento tanto para el corrimiento de borde como para el corrimiento de banda pueda codificarse y/o decodificarse mientras se utilizan las mismas capacidades de equipo fisico/equipo logico del dispositivo de control de filtrado. Por lo tanto, las descripciones, en terminos de especificaciones estandar y los elementos de diseno de equipo fisico/equipo logico de la magnitud de corrimiento y del signo de corrimiento pueden ser menos complejas cuando se considera tanto el corrimiento de borde como el corrimiento de banda. Por lo tanto, se consigue un manejo mas eficiente del corrimiento adaptativo de muestra. Como consecuencia, se obtiene una mejora del procedimiento de filtrado adaptativo de muestra en terminos de eficiencia de codificacion del corrimiento adaptativo de muestra.
Breve descripcion de los dibujos
Los diversos aspectos de las realizaciones divulgadas en el presente documento, incluyendo particularidades y ventajas de la misma, se entenderan facilmente a partir de la siguiente descripcion detallada y los dibujos adjuntos, en los que:
la figura 1 es un diagrama de bloques esquematico de un sistema de comunicacion de radio de ejemplo, en el que se pueden implementar realizaciones de ejemplo,
la figura 2 es un diagrama de flujo esquematico que ilustra los metodos de ejemplo de acuerdo con las realizaciones del presente documento,
la figura 3 es otro diagrama de flujo esquematico que ilustra los metodos de ejemplo de acuerdo con las realizaciones del presente documento,
la figura 4 es un diagrama de bloques esquematico que ilustra un codificador de ejemplo que comprende un dispositivo de control de filtrado de acuerdo con las realizaciones del presente documento,
la figura 5 es un diagrama de bloques esquematico que ilustra un decodificador de ejemplo que comprende un dispositivo de control de filtrado de acuerdo con las realizaciones del presente documento,
la figura 6 es un diagrama de bloques esquematico que ilustra un equipo de usuario de ejemplo,
5
10
15
20
25
30
35
40
45
50
55
la figura 7 es otro diagrama de bloques esquematico que ilustra otro equipo de usuario de ejemplo,
la figura 8 es un diagrama de bloques esquematico adicional que ilustra un dispositivo de control de filtrado de ejemplo de acuerdo con las realizaciones del presente documento, y
la figura 9 es un diagrama de bloques esquematico adicional que ilustra un ordenador de ejemplo configurado de acuerdo con las realizaciones del presente documento.
Descripcion detallada
A lo largo de la siguiente descripcion se han utilizado numeros de referencia similares para designar elementos, nodos de red, dispositivos, partes, elementos o caracteristicas similares, cuando sea aplicable. En las figuras, las caracteristicas que aparecen en algunas realizaciones se indican mediante lineas de trazos.
Con el fin de facilitar la comprension de HEVC una descripcion detallada de SAO en HVEC, de acuerdo con "WD6: Version de trabajo 6 de codificacion de video de alta eficiencia ", JCTVC-H1003_dk, pp 29-31, 34-35, 43-44, 70-72, 76, 83, 154-156, 170-171, 177, 186, Estados Unidos, febrero de 2012, se proporciona a continuacion.
Corrimientos adaptativos de muestra en version HEVC
En HEVC SAO puede ser de dos tipos, ya sea corrimientos de borde o corrimientos de banda. Los corrimientos de borde pueden utilizarse en una de 4 direcciones, por ejemplo horizontal, vertical, diagonal desde la parte superior izquierda a la inferior derecha o diagonal desde la parte inferior izquierda hasta la parte superior derecha. Los cuatro tipos diferentes se muestran en la figura 1. La direccion especifica esta determinada por sao_type_idx = 1..4. sao_type_idx = 5 se utiliza para corrimientos de banda.
Cuando se selecciona el corrimiento de banda (por ejemplo, sao_type_idx es 5) se utilizan cuatro corrimientos para cuatro bandas consecutivas. La posicion de banda para la primera banda esta indicada por sao_band_position. Se aplican los siguientes pasos ordenados:
Si cldx es igual a 0, la variable bandShift se establece igual a BitDepthY - 5
De lo contrario (cldx no es igual a 0), bandShift se establece igual a BitDepthC - 5. cldx corresponde al componente de color (YUV), por ejemplo luma o uno de los componentes de croma.
La variable saoLeftClass se establece igual a sao_band_position [cldx] [rx] [ry]. rx y ry identifican la posicion actual de bloque de arbol de codificacion.
El vector bandTable se define con 32 elementos y todos los elementos se establecen inicialmente en 0. A continuacion, se modifican 4 de sus elementos (que indican la posicion de las bandas para las que se transmite de forma explicita un corrimiento) de la siguiente manera:
for(i =0; i < 4; i++)
{
bandTable[(i + saoLeftClass) & OxlF] = i + 1
}
El bufer de imagen reconstruido recSaoPicture se modifica de la siguiente manera.
bandldx = (recPicture[ xC + i, yC + j ] » bandShift)
recSaoPicture[ xC + i, yC + j ] = recPicture[ xC + i, yC + j ] + saoValueArray[ bandTable[ bandldx] ]
con i = 0..nS-1 y j = 0..nS-1
Nota: para hacer que el valor filtrado de la banda SAO permanezca dentro del intervalo permitido de acuerdo con la profundidad de bit se necesita un accionamiento de recorte. Esto no se especifica en el borrador de trabajo HEVC, pero existe un recorte basado en la busqueda de tablas en el equipo logico de referencia HEVC.
Cuando se seleccionan corrimientos de borde (por ejemplo, sao_type_idx es 1 o 2 o 3 o 4) se utilizan cuatro corrimientos para tipos de borde especificos. Estos cuatro tipos se ilustran en la figura siguiente. Los tipos de borde se derivan para cada pixel por:
edgeldx = 2 + Sign( recPicture[ x, y ] -
recPicture[ x + hPos[ k ], y + vPos[ k ] ]) con K = 0... 1
donde recPicture es la imagen despues de desbloquear el proceso de filtro, hPos y vPos se definen a continuacion:
Tabla I: Especificacion de hPos y vPos de acuerdo con el tipo de proceso de corrimiento adaptativo de muestra
- sao_type_idx [cldx] [rx] [ry]
- 11 22 33 44
- hPos[0]
- 1 00 1 11
- hPos[1]
- 11 10 11 1
- vPos[0]
- 00 1 1 1
- vPos[1]
- 00 11 11 11
10
El bufer de imagen reconstruido se modifica como:
recSaoPicture[ xC + i, yC + j ] =
recPicture[ xC + i, yC + j ] + saoValueArray[ edgeTable[ edgeldx ] ]
15 con i = 0..nS-1 y j = 0..nS-1 donde edgeTable [5] = {1,2, 0, 3,4}.
Nota: para hacer que el valor filtrado de borde SAO se mantenga dentro del intervalo permitido de acuerdo con la profundidad de bit, se necesita un accionamiento de recorte. Esto no se especifica en el borrador de trabajo HEVC pero existe recorte en equipo logico.
20
25 sao_type_idx [cldx] [rx] [ry] indica el tipo de corrimiento como se especifica en la Tabla 7-6 del bloque de arbol actual de codificacion en la posicion rx y ry para el componente de color cldx.
Cuando sao_type_idx [cldx] [rx] [ry] no esta presente, se deduce de la siguiente manera.
30 Si sao_merge_up_flag es igual a 1, sao_type_idx [cldx] [rx] [ry] se establece igual a sao_type_idx [cldx] [rx] [ry - 1].
De lo contrario, sao_type_idx [cldx] [rx] [ry] se establece igual a sao_type_idx [cldx] [rx - 1] [ry].
5
10
15
20
25
30
35
40
Tabla III: Especificacion del tipo de borde para SAO
- sao_type_idx [cldx] [rx] [ry]
- Tipo de borde (informativo)
- 0
- No aplicado
- 1
- Borde de 0 grados 1D
- 2
- Borde de 90 grados 1D
- 3
- Borde de 135 grados 1D
- 4
- Borde de 45 grados 1D
- 5
- Banda
sao_band_position [cldx] [rx] [ry] indica el desplazamiento del corrimiento de banda del intervalo de pixeles cuando sao_type_idx [cldx] [rx] [ry] es igual a 5.
Cuando sao_band_position [cldx] [rx] [ry] no esta presente se deduce lo siguiente.
Si sao_merge_up_flag es igual a 1, sao_band_position [cldx] [rx] [ry] se establece igual a sao_band_position [cldx] [rx] [ry - 1].
De lo contrario, sao_band_position [cldx] [rx] [ry] se establece igual a sao_band_position [cldx] [rx - 1] [ry].
sao_offset [cidx] [rx] [ry] [i] indica el valor de corrimiento de la i-esima categoria de bloque de arbol de codificacion actual en la posicion rx y ry para el componente de color cidx.
La variable bitDepth se deriva de la siguiente manera.
Si cidx es igual a 0, bitDepth se establece igual a BitDepthY..
De lo contrario (cidx es igual a 1 o 2), bitDepth se establece igual a BitDepthC.
Es un requisito de la conformidad de flujo de bits que cuando sao_type_idx [cldx] [rx] [ry] no es igual a 5, los valores de sao_offset [cidx] [rx] [ry] [i] estaran en el intervalo de 0 a (1<<(Min(bitDepth, 10) - 5)) - 1, inclusive y de lo contrario, los valores de sao_offset [cidx] [rx] [ry] [i] estaran en el intervalo de - (1<<(Min(bitDepth, 10)-5)) a (1<<(Min (bitDepth, 10) - 5)) - 1, inclusive.
Cuando sao_offset [cidx] [rx] [ry] [i] no esta presente, se deduce lo siguiente.
Si sao_merge_up_flag es igual a 1, sao_offset [cidx] [rx] [ry] [i] se establece igual a sao_offset [cidx] [rx] [ry - 1] [i].
De lo contrario, sao_offset [cidx] [rx] [ry] [i] se establece igual a sao_offset [cidx] [rx - 1] [ry] [i].
La variable offsetSign se deriva de la siguiente manera.
Si sao_type_idx [cidx] [rx] [ry] es menor que 5 e i es mayor que 1, offsetSign se establece en -1.
De lo contrario (sao_type_idx [cidx] [rx] [ry] es igual a 5 o i es menor que 2), offsetSign se establece en 1.
La matriz SaoOffsetVal se deriva de la siguiente manera.
SaoOffsetVal[ cldx ][ rx ][ ry ][ 0 ] = 0
SaoOffsetVal[ cldx ][ rx ][ ry ][ i + 1 ] =
offsetSign*sao_offset[ cldx ][ rx ][ ry ][ i ] «(bitDepth - Min( bitDepth, 10))
Donde rx y ry declaran una posicion dentro del corte/imagen y cldx es el componente de color respectivo.
5
10
15
20
25
30
35
40
45
50
55
60
65
La figura 1 representa un sistema 100 de comunicaciones por radio de ejemplo en el que se pueden implementar realizaciones del presente documento. En este ejemplo, el sistema 100 de comunicaciones por radio es un sistema LTE (evolucion a largo plazo). En otros ejemplos, el sistema de comunicacion por radio puede ser cualquier red basada en radio o cualquier sistema de comunicacion celular 3GPP, tal como una red de acceso multiple por division de codigo de banda ancha (WCDMA), un sistema global para comunicaciones moviles (red GSM) o similares.
El sistema 100 de comunicacion por radio comprende un dispositivo 110 de red. El dispositivo 110 de red puede tener forma o estar compuesto de una estacion base de radio, un Nodo-B, un nodo de red de radio, un controlador de red de radio, un controlador de estacion base o cualquier otro nodo de red en el sistema 100 de comunicacion por radio.
El dispositivo 110 de red puede convertir video de acuerdo con un estandar de codificacion de video a otro estandar de codificacion de video, por ejemplo, si se ha establecido que un equipo 120 de usuario receptor solo es capaz de o prefiere otro estandar de codificacion de video que el enviado desde una unidad 130 de envio. El equipo 120 de usuario receptor y la unidad 130 de envio estan comprendidos en el sistema 100 de comunicacion por radio. Tal como se utiliza en el presente documento, el termino "equipo de usuario" y "unidad de envio" pueden referirse a un telefono movil, un telefono celular, un asistente personal digital (PDA) equipado con capacidades de comunicacion por radio, un telefono inteligente, un portatil u ordenador personal (PC) equipado con un modem de banda ancha movil interno o externo, una tableta PC con capacidades de comunicacion por radio, un dispositivo electronico portatil de comunicacion por radio, un dispositivo de sensor equipado con capacidades de comunicacion por radio o similar. El sensor puede ser cualquier tipo de sensor meteorologico, como viento, temperatura, presion de aire, humedad, etc. Como ejemplos adicionales, el sensor puede ser un sensor de luz, un interruptor electronico, un microfono, un altavoz, un sensor de camara, etc.
Ademas, el dispositivo 110 de red puede comprender un codificador y/o decodificador 140. Con mas detalle, el codificador y/o decodificador 140 pueden comprender un dispositivo 150 de control de filtrado, en el que pueden realizarse realizaciones del metodo ilustrado en la figura 2, como se describe a continuacion.
La figura 2 ilustra un metodo de ejemplo, realizado por el dispositivo 150 de control de filtrado, para procesar una primera imagen en un procedimiento de filtrado adaptativo de muestra. Esto significa que la primera imagen es procesada por el dispositivo 150 de control de filtrado de acuerdo con el procedimiento de filtrado adaptativo de muestra. La primera imagen se reconstruye a partir de datos de video, por ejemplo en una accion previa de acuerdo con metodos de reconstruccion conocidos.
Como se utiliza en el presente documento, el termino "una segunda imagen" se puede utilizar para expresar que la primera imagen, o al menos una porcion de la misma, se ha procesado en el procedimiento de filtrado adaptativo de muestra. La segunda imagen se puede obtener como una imagen de tamano completo que es una version modificada de la primera imagen. La segunda imagen se puede obtener como una version modificada de la primera imagen reemplazando valores de imagen en la primera imagen directamente si se mantiene una copia de la porcion de la primera imagen. La copia de la porcion de la primera imagen no modificada se puede utilizar para determinar la categoria de borde en caso de corrimientos de borde. Alternativamente o adicionalmente, la segunda imagen se puede obtener almacenando los valores de pixel modificados en una matriz adicional y, a continuacion, cuando se completa el procesamiento de la primera imagen, los valores de pixel modificados de la matriz adicional pueden ser copiados en un bufer de la primera imagen. Por lo tanto, convirtiendo la primera imagen en la segunda imagen.
Las siguientes acciones se pueden realizar en cualquier orden adecuado.
Accion 201
Con el fin de poder procesar la primera imagen en la accion 207 de acuerdo con el procedimiento de filtrado adaptativo de muestra mientras se aplica un corrimiento adaptativo de muestra, el dispositivo 150 de control de filtrado obtiene una magnitud de corrimiento de los datos de video. La magnitud de corrimiento indica una magnitud del corrimiento adaptativo de muestra a aplicar en el procedimiento de filtrado adaptativo de muestra, por ejemplo durante el procesamiento de la primera imagen en la accion 207.
De acuerdo con algunas primeras realizaciones, el dispositivo 150 de control de filtrado puede obtener la magnitud de corrimiento estableciendo, por ejemplo comprendiendo la accion de ajuste, la magnitud de corrimiento basada en la profundidad de bits obtenida a partir de los datos de video. Otras acciones con referencia a las primeras realizaciones se describen a continuacion.
De acuerdo con algunas segundas realizaciones, el dispositivo 150 de control de filtrado puede obtener la magnitud de corrimiento obteniendo, por ejemplo comprendiendo la accion de obtener, un valor booleano a partir de los datos de video. A continuacion, el dispositivo 150 de control de filtrado puede derivar la magnitud de corrimiento basada en la profundidad de bits obtenida a partir de los datos de video cuando el valor booleano es verdadero.
5
10
15
20
25
30
35
40
45
50
55
60
65
Accion 202
El dispositivo 150 de control de filtrado puede obtener un valor de los datos de video. El valor se puede utilizar en la accion 203 directamente debajo.
Accion 203
De acuerdo con algunas terceras realizaciones, el dispositivo 150 de control de filtrado puede mapear el valor, obtenido en la accion 202, con la magnitud de corrimiento de una manera no lineal. El mapeo puede ser cada vez mas escaso, en terminos de resolucion para la magnitud de corrimiento obtenida, cuanto mayor sea la magnitud de corrimiento.
Accion 204
El dispositivo de control de filtrado 150 obtiene un signo de corrimiento de los datos de video. El signo de corrimiento indica un signo del corrimiento adaptativo de muestra.
De acuerdo con las primeras realizaciones, el dispositivo 150 de control de filtrado puede obtener el signo de corrimiento estableciendo el signo de corrimiento basandose en la profundidad de bits. De esta manera, un valor de pixel de la segunda imagen, por ejemplo despues del procesamiento en el procedimiento de filtrado adaptativo de muestra, esta entre 0 y un valor maximo de acuerdo con la profundidad de bits obtenida despues del procesamiento 207 de al menos dicha porcion de la primera imagen.
Accion 205
El dispositivo 150 de control de filtrado determina el corrimiento adaptativo de muestra basado en la magnitud de corrimiento y el signo de corrimiento.
De acuerdo con algunas cuartas realizaciones, el dispositivo 150 de control de filtrado determina el corrimiento adaptativo de muestra calculando directamente, por ejemplo comprendiendo la accion de calcular directamente el corrimiento adaptativo de muestra por medio de accionamientos de signo y accionamientos de cambio en la magnitud de corrimiento y el signo de corrimiento.
Se puede obtener una magnitud de cambio del accionamiento de cambio a partir de los datos de video. Alternativamente o adicionalmente, la magnitud de cambio del accionamiento de cambio puede estar predefinida. Por ejemplo, una magnitud de cambio predefinida puede ser anulada por una magnitud de cambio obtenida a partir de los datos de video. La magnitud de cambio indica un numero de bits a desplazar en el accionamiento de cambio. Como ejemplo, 1<<x, donde x es la magnitud de cambio significa que los bits se desplazan x pasos hacia la izquierda. Esto corresponde a una multiplicacion por 2X. Por lo tanto, si la magnitud de cambio es 1, el accionamiento de cambio corresponde a una multiplicacion por 2. De manera similar, si la magnitud de cambio es 2, el accionamiento de cambio corresponde a una multiplicacion por 4 y asi sucesivamente.
Accion 206
El dispositivo 150 de control de filtrado puede obtener, a partir de los datos de video, una posicion de banda que indica una primera banda de un conjunto de bandas consecutivas. La magnitud de corrimiento y el signo de corrimiento pueden aplicarse a una o mas del conjunto de bandas consecutivas.
Accion 207
El dispositivo 150 de control de filtrado procesa, en el procedimiento de filtrado adaptativo de muestra, al menos una porcion de la primera imagen mientras se aplica el corrimiento adaptativo de muestra. De esta manera, tal como se ha explicado anteriormente, se puede obtener la segunda imagen. La segunda imagen puede mejorarse gracias al procesamiento de acuerdo con el procedimiento de filtrado adaptativo de muestra.
De acuerdo con las primeras realizaciones, el dispositivo 150 de control de filtrado procesa al menos una porcion de la primera imagen aplicando, por ejemplo comprendiendo la accion de aplicar, el corrimiento adaptativo de muestra a una de las bandas consecutivas. El signo de corrimiento puede ser positivo, por ejemplo restringido a ser positivo: cuando la posicion de banda indica una banda inicial entre bandas que cubren valores de pixeles posibles de acuerdo con la profundidad de bits obtenida a partir de los datos de video para la segunda imagen. Ademas, el signo de corrimiento puede ser negativo, por ejemplo restringido a ser negativo: cuando la posicion de banda indica una banda para la cual el corrimiento adaptativo de muestra cubre una ultima banda entre bandas que cubren valores de pixeles posibles de acuerdo con la profundidad de bits obtenida a partir de los datos de video para la segunda imagen.
De acuerdo con algunas realizaciones, el numero de corrimientos de banda para SAO, cuando se aplica en la
5
10
15
20
25
30
35
40
45
50
codificacion de imagen o video, se reduce. Por lo tanto, la memoria consumida para almacenar el corrimiento de banda puede reducirse tambien y tambien mejorar la eficiencia de codificacion.
Gracias al uso de un ancho diferente de la banda, el corrimiento puede aplicarse a mas de la precision de la posicion de la banda. En otras palabras, cuando un ancho de la banda es diferente, es decir, mas ancha, que la resolucion, o exactitud, de la posicion de banda, el corrimiento adaptativo de muestra puede aplicarse a muchos valores de pixeles mientras que todavia tiene una alta precision con respecto a una posicion de arranque, por ejemplo la posicion de banda, donde puede aplicarse el corrimiento adaptativo de muestra.
El metodo puede realizarse en el dispositivo 150 de filtrado que puede estar localizado en un codificador o un decodificador como se ilustra esquematicamente en las figuras 4 y 5. Las figuras 4 y 5 ilustran el ejemplo cuando el metodo se realiza dentro del bucle de codificacion.
Una ventaja con algunas realizaciones es que se puede utilizar un corrimiento de banda al mismo tiempo que se obtiene una eficiencia de codificacion similar a la de 4 corrimientos de banda.
En esta realizacion se supone que cada banda tiene 8 valores de pixeles de ancho (0..7, 8..15, ...) igual que HEVC y para una profundidad de 8 bits esto corresponde a 32 bandas. Otros anchos de bandas son posibles, por ejemplo para una profundidad de 10 bits cada banda tiene normalmente 32 valores de pixeles de ancho.
La posicion de banda sao_band_position determina la posicion de la primera banda a la que se debe aplicar un corrimiento.
Se aplica el mismo corrimiento tanto para la banda senalada por la posicion de la primera banda como tambien para una o mas bandas vecinas.
Se decodifica una posicion de banda sao_band_position, saoLeftClass. Se decodifica al menos un corrimiento. El corrimiento se establece para el indice correspondiente de una tabla, por ejemplo bandTable abajo, incluyendo todas las bandas. Otro indice de la tabla tiene un corrimiento cero.
En el ejemplo que se muestra a continuacion solo se utiliza un corrimiento (n = 1) y dos bandas tienen el mismo corrimiento, la banda senalada por la posicion de banda (saoLeftClass) y la banda senalada por saoLeftClass-1. Sin embargo, podria especificarse como la banda senalada por la posicion de banda saoLeftClass y la banda senalada por saoLeftClass + 1.
for(i = 0; i < n; i++)
■:
bandTable[(i + saoLeftClass) & OxlF] = i + 1 if(3aoleftClass >0) l
bandTable[(i + saoLeftClass - 1) & OxlF ] = i + 1
1
:■
El bufer de imagen reconstruido recSaoPicture se modifica de la siguiente manera.
bandldx = (recPicture[ xC + i, yC + j ] » bandShift)
recSaoPicture[ xC + i, yC + j ] = recPicture[ xC + i, yC + j ] + saoValueArray[ bandTable[ bandldx ] j
con i = 0..nS-1 y j = 0..nS-1
La variable offsetSign se deriva de la siguiente manera.
Si sao_type_idx [cldx] [rx] [ry] es menor que 5 e i es mayor que 1, offsetSign se establece en -1.
De lo contrario (sao_type_idx [cldx] [rx] [ry] es igual a 5 o i es menor que 2), offsetSign se establece en 1.
La matriz SaoOffsetVal se deriva de la siguiente manera cuando sao_type_idx [cldx] [rx] [ry] es igual a 5.
SaoOffsetVal[ cldx ][ rx ][ ry ][ 0 ] = 0
SaoOffsetValf cldx If rx If ry U 1 1 = sao offset sianr cldx If rx IT rv 1*(1 « $ao offsetf cldx If rx If rv 1)
Tabla V: Sintaxis VLC de corrimiento adaptativo de muestra
- sao_offsel_vlc( rx, ry, cld\ ) {
- Descriptor
- sao_type_idx| cldx J[ rx ][ ry ]
- ue(v)
- if( sao type idxf cldx J[ rx ][ ry ] = =5 ) {
- sao band positionf cldx ][ rx ][ ry' ]
- u(5)
- sao offset sisnt cldx 11 rxlf rv 1
- sao_offset| cldx || rx][ ry ]|
- ue(v)
- } else if( sao_type_idx[ cldx ][ rx ][ ry ] != 0 )
- for( i = 0; i < 4; i++)
- sao_offsct[ cldx ]| rx]f ry If i ]
- ue(v)
- }
5
Tabla VI: Sintaxis CABAC de corrimiento adaptativo de muestra
- sao_offset _cabac( rx. ry, cldx ) {
- Descriptor
- sao_type_idx[ cldx ][ rx ]f ry ]
- ae(v)
- if( sao_ty pe_idxf cldx ]f rx ]f ry j = =5 ){
- sao_band_positionf cldx ][ rx ][ ry ]
- ac(v)
- sao offset siirnl cldx If rxll rv 1
- ac(v)
- sao offset 1 cldx If rxll rv 1
- ae(v’j
- } else if( sao_type_idx[ cldx ][ rx ][ ry ] != 0 )
- for( i = 0; i < 4; i++)
- sao_offset| cldx ]( rx]f ry ][ i ]
- ae(v)
- J
El subrayado indica cambios en comparacion con versiones anteriores de la presente especificacion estandar.
10
sao_offset_sign [cidx] [rx] [ry] indica el signo del valor de corrimiento de banda de la i-esima categoria de bloque de arbol de codificacion actual en la posicion rx y ry para el componente de color cidx
Una extension de este algoritmo es variar el numero de bandas al que se aplica un corrimiento. El numero de
5
10
15
20
25
30
35
40
45
50
55
60
65
bandas puede ser 1, 2, 3 6 4. El numero de bandas puede ser senalado con codigo de longitud variable o codigo de longitud fija o codificado por CABAC.
Con referencia a la figura 2, se ha descrito un conjunto de realizaciones. El conjunto de realizaciones incluye las primeras realizaciones, las segundas realizaciones, las terceras realizaciones y las cuartas realizaciones. Las realizaciones primera a cuarta se pueden utilizar por separado o pueden combinarse. Se observara, de hecho, que estas realizaciones tambien pueden realizarse sin las acciones 201, 204 y 205 en las que se utiliza el signo de corrimiento y la magnitud de corrimiento separadas para la determinacion del corrimiento adaptativo de muestra.
Las realizaciones pueden utilizarse en un codificador y/o un decodificador o completamente fuera del bucle de codificacion como un filtro de poste. En las aplicaciones tipicas, las realizaciones se aplican despues del desbloqueo de filtrado si se utiliza dicho filtrado. Sin embargo, en alguna aplicacion puede ser de interes aplicarlo antes del desbloqueo.
Con referencia a la figura 3, se describen las realizaciones primera a cuarta.
Empezando por las primeras realizaciones, se evitan los accionamientos de recorte en los corrimientos de borde o banda gracias a una limitacion del corrimiento adaptativo de muestra, de manera que no es necesario el recorte. Ventajosamente, se puede reducir la complejidad del codificador y del decodificador.
Los corrimientos de banda, por ejemplo un corrimiento adaptativo de muestra para una banda en particular, se pueden restringir solo permitiendo corrimientos positivos para la primera banda y evitar tener mayores corrimientos negativos para otras bandas que pueden causar la necesidad de accionamiento de recorte. De forma similar para la banda mas alta solo permiten los corrimientos negativos y para las otras bandas se requiere que los corrimientos positivos no provoquen que el valor de pixel filtrado por SAO exceda el valor maximo de acuerdo con la profundidad de bits.
Tanto los corrimientos de banda como de borde pueden estar restringidos para la LCU actual, de modo que un corrimiento seleccionado no puede causar que el valor de pixel filtrado por SAO descienda por debajo de 0 o exceda el valor maximo de acuerdo con la profundidad de bits.
El metodo se realiza en un dispositivo de control de filtrado que puede estar situado en un codificador o un decodificador como se ilustra esquematicamente en las figuras 4 y 5. Las figuras 4 y 5 ilustran el ejemplo cuando el metodo se realiza dentro del bucle de codificacion.
Una ventaja adicional con las primeras realizaciones es que un decodificador no necesita hacer accionamiento de recorte basado en pixeles. Como resultado, como se menciono anteriormente, la complejidad del decodificador se reduce.
Ahora, se presentan algunos detalles adicionales con respecto a las primeras realizaciones. Las primeras realizaciones consiguen una limitacion de corrimientos de borde o banda para evitar los accionamientos de recorte.
Una restriccion que puede aplicarse tanto al corrimiento del borde como al corrimiento de banda es especificar que un flujo de bits sea conforme al estandar que ningun corrimiento transmitido puede hacer que el pixel filtrado por SAO exceda el valor maximo o el valor minimo de acuerdo con la profundidad de bits. Por lo tanto, no se debe especificar ningun accionamiento de recorte para los pixeles filtrados por SAO en el estandar y el decodificador se ahorrara de tales accionamientos para el filtrado SAO.
Ejemplo: supongamos que se utiliza video de 8 bits. En ese caso, el valor minimo es 0 y el valor maximo es 255. Siguiendo esta restriccion, el valor de pixel filtrado por SAO estara en el intervalo de 0 a 255.
Una restriccion para el corrimiento de banda es solo permitir el corrimiento positivo para la primera banda y el corrimiento negativo para la ultima banda. Otras bandas pueden estar restringidas para tener un corrimiento maximo y minimo para que el filtrado SAO con corrimiento de banda permanezca dentro del intervalo de profundidad de bits.
Ejemplo: supongamos que el bandldx es 0 para que el pixel actual sea filtrado por corrimiento de banda. En ese caso, el corrimiento sera siempre positivo para que el valor de pixel filtrado por SAO este dentro del intervalo de 0 hasta el valor maximo de acuerdo con la profundidad de bit.
Una extension adicional de esta restriccion de solo corrimiento de banda es omitir la senalizacion de cualquier signo para la primera y ultima banda y, por tanto, eliminar algunos gastos generales al mismo tiempo que evita el accionamiento de recorte despues del filtrado SAO para asegurar que esta dentro del intervalo de profundidad de bits.
TABLA VII: Ejemplo:
5
10
15
20
25
- sao_offset_vlc( rx, ry, cldx) {
- Descriptor
- sao_type_idx[ cldx JI rx ][ ry ]
- uc(v)
- if( sao_type_idx[ cldx )[ rx ][ ry ] - -5) {
- sao hand position| cldx ][ rx ][ ry ]
- . u<5)
- for( i = 0; i < 4; i++){
- lf((sao_band_position==0 && i==0) || Sao_band_position+i=31))
- sao_offset[ cldx ][ rx]| ry ][ i ]
- ue(v)
- Else
- sao_offset[ cldx ][ rx]| ry ][ i ]
- se(v)
- }
- } else if( sao_type_idx[ cldx ][ rx ][ ry ] != 0 )
- for( i = 0; i < 4; i++ )
- sao_offset[ cldx ][ rx][ ry ][ i ]
- ue(v)
- }
An array SaoOffsetVal is specified as
SaoOffsetVal[cldx][rx][ry][0] = 0 if((sao_type_idx[cldx][rx][ry]==5)&&(i==3) &&( sao_band_position[cldx][rx][ry]+i==31)
SaoOffsetVal[cldx][rx][ry][i+1] =
-(sao offset[cldx][rx][ry][i]<<(bitDepth - Min(bitDepth, 10))) else
SaoOffsetVal[cldx][rx][ry][i + 1] = sao_offset[cldx][rx][ry][i]<<(bitDepth- Min (bitDepth, 10))
with i = 0..3
Con referenda de nuevo a las segundas realizaciones, de acuerdo con las cuales se activa/desactiva un corrimiento fijo para un corrimiento de borde respectivo. El corrimiento fijo se ajusta de acuerdo con la profundidad de bits. Por lo tanto, esta realizacion se refiere a la restriccion del corrimiento del borde a ser 0 o tener un valor predefinido de acuerdo con la profundidad de bit. Ventajosamente, se reduce una sobrecarga para codificar corrimientos de borde y consumo de memoria para almacenarlos. Otra ventaja es que el decodificador no necesita realizar ningun accionamiento de recorte basado en pixeles despues de filtrar con corrimientos de borde.
Estas realizaciones se refieren a la restriccion del corrimiento del borde a ser 0 o tener un valor predefinido de acuerdo con la profundidad de bit.
En este caso solo se senala si se utiliza un corrimiento de borde o no se utiliza como se indica por un indicador sao_offset [cldx] [rx] [ry] [i] para el corrimiento de borde respectivo. La bandera es 1 o 0.
edgeldx igual a 0 tienen SaoOffsetVal igual a sao_offset [cldx] [rx] [ry] [i]<<(bitDepth-8)
edgeldx igual a 1 tienen SaoOffsetVal igual a sao_offset [cldx] [rx] Ry] [i]<<(bitDepth-8)
edgeldx igual a 2 tienen SaoOffsetVal igual a 0
edgeldx igual a 3 tienen SaoOffsetVal igual a -(
Sao_offset [cldx] [rx] [ry] [i]<<(bitDepth-8))
edgeldx igual a 4 tienen SaoOffsetVal igual a -(
5
10
15
20
25
30
35
40
45
50
Sao_offset [cldx] [rx] [ry] [i]<<(bitDepth-8))
Un beneficio adicional de estas realizaciones es que no se necesitara recorte en el proceso de filtrado SAO para video de 8 bits (bitDepth igual a 8) puesto que el valor de pixel filtrado por SAO no excedera el valor de pixel vecino.
La matriz SaoOffsetVal se deriva de la siguiente manera cuando
sao_type_idx [cldx] [rx] [ry] esta en el intervalo de 1 a 4:
SaoOffsetVal[ cldx ][ rx ][ ry ][ 0 J = 0
SaoOffsetVal[ cldx ][ rx ][ ry ][ i + 1 ] =
offsetSigrT{sao_offset[ cldx ][ rx ][ ry ][ i ] « (bitDepth-8)) (7-37)
Donde offsetSign es definido anteriormente.
Para permitir el filtrado SAO con corrimientos de borde para una profundidad de bits mayor que 8 sin recorte, la clasificacion del tipo de borde se puede modificar de la siguiente manera:
Los tipos de borde se derivan para cada pixel mediante:
edgeldx = 2 + Sign( (recPicture[ x, y ]» bitDepthlncr -
recPicturef x + hPos[ k ], y + vPos[ k ] ]» bitDepthlncr)) con k = o... 1
donde recPicture es la imagen despues del proceso de filtro de desbloqueo, hPos y vPos se definen anteriormente. BitDepthlncr es igual a bitDepth-8.
Para permitir el filtrado SAO con corrimientos de borde con corrimientos de borde mayores y el trabajo sin recorte de un corrimiento (rightShift) que se determina por el corrimiento de borde se puede utilizar de la siguiente manera:
Los tipos de borde se derivan para cada pixel por:
edgeldx = 2 + ]Tk Sign( (recPicturef x, y ]» rightShift -
recPicturef x + hPosf k ], y + vPosf k ] ] » rightShift)) con k = 0... 1
Si el corrimiento de borde es 3 rightShift es igual a 2. Normalmente, rightShift puede ajustarse a la potencia de 2 que este mas cerca de la magnitud de corrimiento maxima.
Con referencia de nuevo a las terceras realizaciones, de acuerdo con las cuales una sobrecarga para codificar corrimientos con grandes magnitudes para SAO, cuando se aplica en codificacion de imagen o video, puede reducirse. Por lo tanto, se pueden conseguir mejoras con respecto a la eficiencia de codificacion.
Estas realizaciones pueden aplicarse tanto a los corrimientos de borde como a los corrimientos de banda
Despues de que los valores de pixeles reconstruidos hayan sido filtrados por desbloqueo. Esto se hace tanto en el lado del codificador como en el lado del decodificador. Tambien es posible aplicarlo solamente para el corrimiento de banda o el corrimiento de borde.
De acuerdo con los corrimientos decodificados de terceras realizaciones, que normalmente son distribuidos linealmente con respecto a la magnitud de corrimiento, son mapeados con un orden no lineal de magnitudes de corrimiento. De este modo, los corrimientos de gran magnitud son mas escasamente representados que los corrimientos con magnitudes menores, por ejemplo con base 2, por ejemplo,..., -8, -4, -2, -1, 0, 1, 2, 4, 8, ..., etc. despues del mapeado. De manera similar en el codificador, los corrimientos estan restringidos a magnitudes de corrimiento no uniformemente distribuidas y son mapeados a una distribucion lineal de magnitudes de corrimiento, por ejemplo, ..., - 3, -2, -1, 0, 1, 2, 3, ..., etc., antes de la codificacion. La codificacion/decodificacion de corrimiento
5
10
15
20
25
30
35
40
45
50
55
60
puede codificarse por codificacion de longitud variable VLC, codificacion de longitud fija FLC o CABAC. El metodo se realiza en un dispositivo de control de filtrado que puede estar localizado en un codificador o un decodificador como se ilustra esquematicamente en las figuras 4 y 5. Las figuras 4 y 5 ilustran el ejemplo cuando el metodo se realiza dentro del bucle de codificacion.
Una ventaja con las terceras realizaciones es que se pueden utilizar grandes corrimientos utilizando menos bits. Por lo tanto, la eficiencia de codificacion se mejora.
Ahora, se presentan algunos detalles adicionales con respecto a las terceras realizaciones. Las terceras realizaciones consiguen una codificacion y/o decodificacion mas eficiente de los corrimientos de banda y/o corrimientos de borde.
Estas realizaciones se pueden aplicar para codificar/decodificar corrimientos de banda y/o borde. Los corrimientos son mapeados entre magnitudes lineales y no lineales.
En esta descripcion se supone que los corrimientos son codificados con una base dos pero pueden utilizarse otras bases o la busqueda de tabla para encontrar la correspondencia entre el corrimiento codificado/decodificado y el corrimiento real que se va a utilizar en el proceso de filtrado SAO.
En el codificador un corrimiento SaoOffsetVal esta restringido a... - 8, -4, -2, -1,0, 1,2, 4, 8...
El corrimiento a codificar se determina como:
sao_offset = table(abs(SaoOffsetVal))*sign{SaoOffsetVal)
donde la tabla corresponde a log2 (abs (SaoOffsetVal)) o la funcion aritmetica real log2 en este ejemplo y donde
Sign(x) - cuando x> 0 es igual a 1, cuando x = 0 es igual a 0, de lo contrario -1
Un ejemplo de computacion de signo rapido es desde HEVC donde
Sign (x) = ((x »31) I ((int) (((unsigned int) -
x>>n- corresponde a x/2n por ejemplo si n = 1 es igual a x/2
x<<n- corresponde a x*2n por ejemplo, si n = 1 es igual a x*2
x|y - OR logico, cuando al menos uno de x o y es 1 es igual a 1
log2 (x) - es el logaritmo con base 2 de x
bit depth - bit depth define el intervalo de valores de pixeles permitidos. El contenido de 8 bits solo tiene valores entre 0 y 255 (28 -1).
El corrimiento se codifica a continuacion mediante codigo de longitud variable o codigo de longitud fija o CABAC. La magnitud y el signo pueden ser codificados por separado o juntos.
El decodificador decodifica la palabra de codigo para obtener el corrimiento y luego determina SaoOffsetVal:
SaoOffsetVal = (1 << abs(sao_off$et))*sign(sao_offset)
En el caso de que solo se codifique un corrimiento, se puede prohibir que SaoOffsetVal sea igual a 0 y asi reducir el numero de bits para codificar los corrimientos no nulos.
SaoOffsetVal se utiliza entonces para actualizar el valor de pixel actual cuando se ha seleccionado SAO para ser utilizado para ese pixel:
recSaoPicture[ xC + i, yC + j ] = recPicture[ xC + i, yC + j ] + SaoOffsetVal
Con referencia de nuevo a las cuartas realizaciones, en las que el corrimiento de banda se deriva mediante calculo directo utilizando operaciones de signo. De esta manera, se omite una necesidad de busqueda de tabla basada en pixeles, cuando se aplican corrimientos de banda. Por lo tanto, estas realizaciones pueden reducir ventajosamente
5
10
15
20
25
30
35
40
45
50
55
60
la memoria consumida para almacenar corrimientos de banda.
El metodo se realiza en un dispositivo de control de filtrado que puede estar localizado en un codificador o un decodificador como se ilustra esquematicamente en las figuras 4 y 5. Las figuras 4 y 5 ilustran el ejemplo cuando el metodo se realiza dentro del bucle de codificacion.
Una ventaja con las cuartas realizaciones es que los corrimientos de banda pueden ser implementados sin mirar la tabla.
Ahora, se presentan algunos detalles adicionales con respecto a las cuartas realizaciones.
En este ejemplo, se supone que solo se transmite un corrimiento de banda.
Determine bandldx para el pixel respectivo como:
bandldx = (recPicture[ xC + i, yC + j ]» bandShift )-saoLeftClass
Modifique el pixel como:
recSaoPicture[ xC + i, yC + j ] = recPicture[ xC + i, yC + j ] + (sign(bandldx +R1)+sign(-bandldx+R2)) « C
donde C puede tener un valor fijo determinado por el estandar o una longitud variable o longitud fija codificada y proporcionada en el flujo de bits (correspondiente a 0,1,2,3 ...). Cuando se utiliza una profundidad de bit superior a 8 se puede aumentar C con log2(bit depth - 8).
R1 = 1 y R2 = 0 cuando el corrimiento es positivo, y R1 = 0 y R2 = -1 cuando el corrimiento es negativo.
La indicacion de que un corrimiento es positivo o negativo se puede proporcionar en el flujo de bits o ser fija.
Como se ha mencionado anteriormente, todavia se pueden obtener realizaciones adicionales combinando una o mas de las realizaciones descritas anteriormente. Ventajosamente, se puede reducir una sobrecarga para codificar corrimientos de borde y banda. Ademas, la memoria para almacenar los corrimientos de borde y banda puede reducirse utilizando menos corrimientos y con restriccion en los valores de corrimiento. Las ventajas con estas realizaciones son el consumo de memoria reducido para almacenar los corrimientos de borde y banda. Ademas, el decodificador no necesita realizar ningun accionamiento de recorte basado en pixeles despues de filtrar con corrimientos de borde o banda.
Los metodos de las realizaciones se realizan en un dispositivo de filtrado que puede estar situado en un codificador o un decodificador como se ilustra esquematicamente en las figuras 4 y 5. Las figuras 4 y 5 ilustran el ejemplo cuando el metodo se realiza dentro del bucle de codificacion. Es decir, todas las realizaciones del presente documento pueden implementarse en el dispositivo 150 de control de filtrado, designado como 100 en las figuras 4 y 5.
La figura 4 es un diagrama de bloques esquematico de un codificador 40 para codificar un bloque de pixeles en una trama de video de una secuencia de video de acuerdo con una realizacion.
Se predice un bloque actual de pixeles realizando una estimacion de movimiento mediante un estimador 50 de movimiento desde un bloque de pixeles ya proporcionado en la misma trama o en una trama previa. El resultado de la estimacion de movimiento es un vector de movimiento o desplazamiento asociado con el bloque de referencia, en el caso de inter-prediccion. El vector de movimiento es utilizado por un compensador 50 de movimiento, que esta co- localizado con el estimador 50 de movimiento, para emitir una inter-prediccion del bloque de pixeles. En otros ejemplos, el compensador de movimiento y el estimador de movimiento pueden ser entidades separadas.
Un intra-predictor 49 calcula una intra-prediccion del bloque actual de pixeles. Las salidas del estimador/compensador 50 de movimiento y el intra-predictor 49 se introducen en un selector 51 que selecciona la intra-prediccion o la inter-prediccion para el bloque actual de pixeles. La salida desde el selector 51 se introduce en un calculador de errores en forma de un sumador 41 que tambien recibe los valores de pixeles del bloque actual de pixeles. El sumador 41 calcula y emite un error residual como la diferencia de valores de pixeles entre el bloque de pixeles y su prediccion.
El error se transforma en un transformador 42, tal como por una transformada de coseno discreta, y se cuantifica por un cuantificador 43 seguido de codificacion en un codificador 44, tal como por codificador de entropia. En inter-
5
10
15
20
25
30
35
40
45
50
55
60
65
codificacion, tambien el vector de movimiento estimado es llevado al codificador 44 para generar la representacion codificada del bloque actual de pixeles.
El error residual transformado y cuantificado para el bloque actual de pixeles se proporciona tambien a un cuantificador inverso 45 y al transformador inverso 46 para recuperar el error residual original. Este error es anadido por un sumador 47 a la salida de prediccion de bloque desde el compensador 50 de movimiento o el intra-predictor 49 para crear un bloque de referencia de pixeles que puede utilizarse en la prediccion y codificacion de un siguiente bloque de pixeles. Este nuevo bloque de referencia es procesado en primer lugar por un dispositivo 100 de control de filtrado, como ejemplo del dispositivo 150 de control de filtrado mencionado anteriormente, con el fin de controlar cualquier filtrado que se aplique al bloque de referencia para combatir cualquier artefacto. El nuevo bloque de referencia procesado se almacena entonces temporalmente en un bufer 48 de trama, donde esta disponible para el intra-predictor y el estimador/compensador 50 de movimiento.
La figura 5 es un diagrama de bloques esquematico correspondiente de un decodificador 60 que comprende un dispositivo 100 de control de filtrado de acuerdo con las realizaciones del presente documento. El decodificador 60 comprende una unidad 61 de decodificador, tal como un decodificador de entropia, para decodificar una representacion codificada de un bloque de pixeles para obtener un conjunto de errores residuales cuantificados y transformados. Estos errores residuales se descuantifican en un cuantificador inverso 62 y se transforman a la inversa mediante un transformador inverso 63 para obtener un conjunto de errores residuales.
Estos errores residuales se anaden en un sumador 64 a los valores de pixeles de un bloque de referencia de pixeles. El bloque de referencia esta determinado por un estimador/compensador 67 de movimiento o un intrapredictor 66, dependiendo de si se realiza inter o intra prediccion. En la mayoria de los ejemplos, el estimador/compensador 67 de movimiento solo realiza la compensacion de movimiento. De este modo, un selector 68 esta interconectado al sumador 64 y al estimador/compensador 67 de movimiento y al intra-predictor 66. El bloque decodificado de pixeles resultante emitido desde el sumador 64 es introducido en un dispositivo 100 de control de filtrado para controlar cualquier filtro que se aplique para combatir cualquier artefacto. El bloque filtrado de pixeles es emitido desde el decodificador 60 y, ademas, preferentemente se proporciona temporalmente a un bufer 65 de trama y puede utilizarse como un bloque de referencia de pixeles para un siguiente bloque de pixeles a decodificar. El bufer 65 de trama se conecta de este modo al estimador/compensador 67 de movimiento para hacer disponibles los bloques almacenados de pixeles al estimador/compensador 67 de movimiento.
La salida del sumador 64 se introduce preferentemente tambien en el intra-predictor 66 para ser utilizado como un bloque de referencia no filtrado de pixeles.
En las realizaciones divulgadas en las figuras 4 y 5, el dispositivo 100 de control de filtrado controla el filtrado en forma del llamado filtrado en bucle. En una implementacion alternativa en el decodificador 60, el dispositivo 100 de control de filtrado esta dispuesto para realizar el llamado filtrado de post-procesado. En este caso, el dispositivo 100 de control de filtrado funciona sobre las tramas de salida fuera del bucle formado por el sumador 64, el bufer 65 de tramas, el predictor 66, el estimador/compensador 67 de movimiento y el selector 68. Por lo general, no se hace filtrado y control de filtro en el codificador.
La figura 6 es un diagrama de bloques esquematico de un equipo 80 de usuario o terminal de medios que aloja un decodificador 60 con un dispositivo de control de filtrado. El equipo 80 de usuario, como ejemplo del equipo 120 de usuario receptor, puede ser cualquier dispositivo que tenga funciones de decodificacion de medios que actuan sobre un flujo de video codificado de tramas de video codificadas para decodificar de este modo las tramas de video y hacer disponibles los datos de video. Ejemplos no limitativos de tales dispositivos incluyen telefonos moviles y otros reproductores multimedia portatiles, tabletas, ordenador de sobremesa, notebook, grabadoras de video personales, reproductores multimedia, servidores de transmision de video, receptores de television, televisores, ordenadores, decodificadores, consolas de juegos, etc. El equipo 80 de usuario comprende una memoria 84 configurada para almacenar tramas de video codificadas. Estas tramas de video codificadas pueden haber sido generadas por el propio equipo 80 de usuario. Alternativamente, las tramas de video codificadas son generadas por algun otro dispositivo y transmitidas de forma inalambrica o transmitidas por cable al equipo 80 de usuario. El equipo 80 de usuario comprende entonces un transceptor (transmisor y receptor) o un puerto 82 de entrada y salida para conseguir la transferencia de datos.
Las tramas de video codificadas son llevadas de la memoria 84 a un decodificador 60, tal como el decodificador ilustrado en la figura 5. El decodificador 60 comprende un dispositivo 100 de control de filtrado de acuerdo con las realizaciones. El decodificador 60 decodifica entonces las tramas de video codificadas en tramas de video decodificadas. Las tramas de video decodificadas se proporcionan a un reproductor 86 de medios que esta configurado para renderizar las tramas de video decodificadas en datos de video que pueden ser visualizados en un dispositivo de visualizacion o pantalla 88 del, o conectados al, equipo 80 de usuario.
La figura 6 ilustra otra realizacion de un equipo 80 de usuario, como un ejemplo de la unidad 130 de envio, que comprende en codificador, tal como el codificador de la figura 4, que comprende un dispositivo de control de filtrado de acuerdo con las realizaciones. El codificador 40 se configura entonces para codificar tramas de video recibidas
5
10
15
20
25
30
35
40
45
50
55
60
65
por la unidad 82 de I/O y/o generadas por el propio equipo 80 de usuario. En este ultimo caso, el equipo 80 de usuario preferentemente comprende un motor o grabador de medios, tal como en forma de o conectado a una camara (de video). El equipo 80 de usuario opcionalmente puede comprender tambien un reproductor 86 de medios, tal como un reproductor 86 de medios con un decodificador y un dispositivo de control de filtrado de acuerdo con las realizaciones, y una pantalla 88.
La figura 7 es un diagrama de bloques esquematico de un equipo 80 de usuario o terminal de medios que aloja un decodificador 60 con un dispositivo de control de filtrado. El equipo 80 de usuario puede ser cualquier dispositivo que tenga funciones de decodificacion de medios que funcionan sobre un flujo de video codificado de tramas de video codificadas para decodificar de este modo las tramas de video y hacer disponibles los datos de video. Ejemplos no limitativos de tales dispositivos incluyen telefonos moviles y otros reproductores multimedia portatiles, tabletas, ordenador de sobremesa, notebook, grabadoras de video personales, reproductores multimedia, servidores de transmision de video, receptores de television, televisores, ordenadores, decodificadores, consolas de juegos, etc. El equipo 80 de usuario comprende una memoria 84 configurada para almacenar tramas de video codificadas. Estas tramas de video codificadas pueden haber sido generadas por el propio equipo 80 de usuario. Alternativamente, las tramas de video codificadas son generadas por algun otro dispositivo y transmitidas de forma inalambrica o transmitidas por cable al equipo 80 de usuario. El equipo 80 de usuario comprende entonces un transceptor (transmisor y receptor) o un puerto 82 de entrada y salida para conseguir la transferencia de datos.
Las tramas de video codificadas son llevadas de la memoria 84 a un decodificador 60, tal como el decodificador ilustrado en la figura 5. El decodificador 60 comprende un dispositivo 100 de control de filtrado de acuerdo con las realizaciones del presente documento. El decodificador 60 decodifica entonces las tramas de video codificadas en tramas de video decodificadas. Las tramas de video decodificadas se proporcionan a un reproductor 86 de medios que esta configurado para renderizar las tramas de video decodificadas en datos de video que pueden visualizarse en un dispositivo de visualizacion o pantalla 88 o conectados al equipo 80 de usuario.
En la figura 7, se ha ilustrado el equipo 80 de usuario que comprende tanto el decodificador 60 como el reproductor 86 de medios, con el decodificador 60 implementado como parte del reproductor 86 de medios. Sin embargo, esto debe ser visto simplemente como un ejemplo ilustrativo, pero no limitativo, de una realizacion de implementacion para el equipo 80 de usuario. Tambien son posibles implementaciones distribuidas donde el decodificador 60 y el reproductor 86 de medios se proporcionan en dos dispositivos fisicamente separados y dentro del alcance del equipo 80 de usuario como se utiliza en el presente documento. La pantalla 88 tambien podria proporcionarse como un dispositivo separado conectado al equipo 80 de usuario, en el que tiene lugar el procesamiento de datos real.
Por consiguiente, como se ilustra en la figura 8, el dispositivo de control de filtrado implementa las funciones de las realizaciones del presente documento.
Con referencia a la figura 8, se muestra un diagrama de bloques esquematico de un dispositivo 800 de control de filtrado de ejemplo configurado para procesar una primera imagen en un procedimiento de filtrado adaptativo de muestra. El dispositivo de control de filtrado puede ser el dispositivo 150 de control de filtrado de la figura 1. Como se menciono, la primera imagen se reconstruye a partir de datos de video.
El dispositivo 800 de control de filtrado puede estar comprendido en un dispositivo 110 de red, un decodificador 140 o un codificador 140.
El dispositivo 800 de control de filtrado comprende un circuito 810 de procesamiento configurado para obtener una magnitud de corrimiento de los datos de video. La magnitud de corrimiento indica una magnitud de un corrimiento adaptativo de muestra que se aplicara en el procedimiento de filtrado adaptativo de muestra.
El circuito 810 de procesamiento esta configurado ademas para obtener un signo de corrimiento a partir de los datos de video. El signo de corrimiento indica un signo del corrimiento adaptativo de muestra.
Ademas, el circuito 810 de procesamiento esta configurado para determinar el corrimiento adaptativo de muestra basado en la magnitud de corrimiento y el signo de corrimiento.
Ademas, el circuito 810 de procesamiento esta configurado para procesar, en el procedimiento de filtrado adaptativo de muestra, al menos una porcion de la primera imagen mientras se aplica el corrimiento adaptativo de muestra. De esta manera, se puede obtener una segunda imagen.
El circuito 810 de procesamiento puede configurarse adicionalmente para obtener, a partir de los datos de video, una posicion de banda que indica una primera banda de un conjunto de bandas consecutivas.
El circuito 810 de procesamiento puede ademas configurarse para aplicar la magnitud de corrimiento y el signo de corrimiento a una o mas de las bandas consecutivas.
El circuito 810 de procesamiento puede ademas configurarse para obtener un valor a partir de los datos de video,
5
10
15
20
25
30
35
40
45
50
55
60
65
para mapear el valor a la magnitud de corrimiento de una manera no lineal. El mapeo puede ser cada vez mas escaso, en terminos de resolucion para la magnitud de corrimiento obtenida, mayor sera la magnitud de corrimiento.
El circuito 810 de procesamiento puede configurarse adicionalmente para establecer la magnitud de corrimiento basada en la profundidad de bits obtenida a partir de los datos de video para la segunda imagen y para establecer el signo de corrimiento basado en la profundidad de bits, con lo que un valor de pixel de la segunda imagen esta entre 0 y un valor maximo de acuerdo con la profundidad de bits.
El circuito 810 de procesamiento puede configurarse adicionalmente para aplicar el corrimiento adaptativo de muestra a una de las bandas consecutivas, en el que el signo de corrimiento es positivo cuando la posicion de banda indica una banda inicial entre bandas que cubren valores de pixeles posibles de acuerdo con la profundidad de bits obtenida de los datos de video y el signo de corrimiento es negativo cuando la posicion de banda indica una banda para la cual el corrimiento adaptativo de muestra cubre una ultima banda entre bandas que cubre valores de pixeles posibles de acuerdo con la profundidad de bits obtenida a partir de los datos de video para la segunda imagen.
El circuito 810 de procesamiento puede configurarse adicionalmente para calcular directamente el corrimiento adaptativo de muestra por medio de accionamientos de signo y accionamientos de corrimiento sobre la magnitud de corrimiento y el signo de corrimiento.
Se obtiene una magnitud de cambio del accionamiento de cambio a partir de los datos de video. Adicionalmente o alternativamente, la magnitud de cambio de la operacion de cambio esta predefinida.
El circuito 810 de procesamiento puede ademas configurarse para obtener un valor booleano a partir de los datos de video; y derivar la magnitud de corrimiento basada en la profundidad de bits obtenida a partir de los datos de video cuando el valor booleano es verdadero.
El circuito 810 de procesamiento puede ser una unidad de procesamiento, un procesador, un circuito integrado especifico de aplicacion (ASIC), una matriz de pasarela programable por campo (FPGA) o similar. Como ejemplo, un procesador, un ASIC, una FPGA o similar puede comprender uno o mas nucleos de procesador.
El dispositivo 800 de control de filtrado puede comprender ademas una unidad 820 de determinacion configurada para determinar el corrimiento adaptativo de muestra. Por lo tanto, en algunos ejemplos, el circuito 810 de procesamiento puede comprender la unidad 820 de determinacion. En otros ejemplos, como se ilustra en la figura 8, la unidad 820 de determinacion esta separada del circuito 810 de procesamiento.
Adicionalmente, el dispositivo 800 de control de filtrado puede comprender una unidad de obtencion configurada para obtener la magnitud de corrimiento, el signo de corrimiento, el valor, la posicion de banda y/u otros valores, parametros o similares descritos en el presente documento.
Ademas, el dispositivo 800 de control de filtrado puede comprender una unidad de mapeo configurada para mapear el valor a la magnitud de corrimiento.
El dispositivo 800 de control de filtrado comprende ademas una memoria 830 para almacenar el equipo logico que se va a ejecutar por, por ejemplo, el circuito de procesamiento. El equipo logico puede comprender instrucciones para permitir que el circuito de procesamiento realice el metodo en el dispositivo 150 de control de filtrado como se ha descrito anteriormente junto con la figura 2. La memoria puede ser un disco duro, un medio de almacenamiento magnetico, un disquete o disco de ordenador portatil, memoria flash, memoria de acceso aleatorio (RAM) o similar. Ademas, la memoria puede ser una memoria de registro interna de un procesador.
La figura 9 ilustra esquematicamente una realizacion de un ordenador 70 que tiene una unidad 72 de procesamiento, tal como un DSP (procesador de senal digital) o CPU (unidad central de procesamiento). La unidad 72 de procesamiento, como ejemplo del circuito 810 de procesamiento anterior, puede ser una unidad unica o una pluralidad de unidades para realizar diferentes pasos del metodo descrito en el presente documento. El ordenador 70 tambien comprende una unidad 71 de entrada/salida (I/O) para recibir tramas de video grabadas o generadas o tramas de video codificadas y emitir tramas de video codificadas o datos de video decodificados. La unidad 71 de I/O se ha ilustrado como una unidad unica en la figura 9, pero tambien puede estar en forma de una unidad de entrada separada y una unidad de salida separada.
Ademas, el ordenador 70 comprende al menos un producto 73 de programa informatico en forma de una memoria no volatil, por ejemplo una EEPROM (memoria de solo lectura programable borrable electricamente), una memoria flash o una unidad de disco. El producto de programa informatico puede comprender un medio legible por ordenador y un programa informatico 74 como se explica a continuacion. El programa informatico se almacena en el medio legible por ordenador.
Como se ha mencionado, el producto 73 de programa informatico comprende el programa informatico 74, que
5
10
15
20
25
30
35
comprende medios de codigo que cuando se ejecutan o ejecutan por el ordenador 70, tal como por la unidad 72 de procesamiento, hacen que el ordenador 70 realice los pasos del metodo descrito en lo anterior en relacion con la figura 1. Con mas detalle, el programa 74 de ordenador es capaz de procesar, en un procedimiento de filtrado adaptativo de muestra, una primera imagen. Como se menciono, la primera imagen se reconstruye a partir de datos de video. El programa informatico 74 comprende unidades de codigo legibles por ordenador que cuando se ejecutan en el ordenador 70 hacen que el ordenador 70 obtenga una magnitud de corrimiento de los datos de video. La magnitud de corrimiento indica una magnitud de un corrimiento adaptativo de muestra a aplicar en el procedimiento de filtrado adaptativo de muestra y para obtener un signo de corrimiento a partir de los datos de video. El signo de corrimiento indica un signo del corrimiento adaptativo de muestra. Ademas, se hace que el ordenador determine el corrimiento adaptativo de muestra basado en la magnitud de corrimiento y el signo de corrimiento, y para procesar, en el procedimiento de filtrado adaptativo de muestra, al menos una parte de la primera imagen mientras se aplica el corrimiento adaptativo de muestra. Por lo tanto, en una realizacion, los medios de codigo, o las unidades de codigo, en el programa informatico 74 comprenden un modulo 310 que corresponde a cualquier realizacion descrita en el presente documento. El modulo 310 realiza esencialmente los pasos de los diagramas de flujo en las figuras 2 y 3 cuando se ejecutan en la unidad 72 de procesamiento. De este modo, cuando el modulo 310 se ejecuta en la unidad 72 de procesamiento, corresponden a las correspondientes unidades 810-820 de la figura 8. En tal caso, el equipo 80 de usuario puede comprender adicionalmente o estar conectado a una pantalla para mostrar datos de video.
En la descripcion anterior junto con las figuras 8 y 9, la memoria 830, el producto 74 de programa informatico y el medio legible por ordenador tienen la misma funcion o funcion similar. En algunos ejemplos, una o mas de estas entidades pueden combinarse en una entidad. Las realizaciones de la solucion se refieren al procesamiento y codificacion de imagen y video. Las realizaciones pueden utilizarse en television de difusion, television por Internet, videoconferencia, almacenamiento de contenido de video/imagen, etc. Las realizaciones pueden ser parte del codificador y/o decodificador en dispositivos moviles asi como dispositivos inmoviles, etc.
Referencias
[1] C.-M. Fu et al: “Sample adaptive offset for HEVC”, 2011 IEEE 13° Taller internacional en procesamiento de senal multimedia (MMSP), pp. 1-5, 17 de octubre de 2011.
[2] T. Yamakage et al: “Description of Core Experiment 8 (CE8): Non-deblocking loop filtering”, Equipo colaborativo conjunto en codificacion de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 7° Encuentro: Ginebra, CH.
[3] T.Yamazaki et al: “Improvement of Sample Adaptive Offset with modified bit accuracy and restricted offsets”, Equipo colaborativo conjunto en codificacion de video (JCT-VC) de ITU-T SG16 WP3 e ISO/IEC JTC1/SC29/WG11, 6° Encuentro: Turin, IT, 14-22 de julio de 2011, JCTVC-F396.
Claims (13)
- 5101520253035404550556065REIVINDICACIONES1.- Un metodo, realizado por un dispositivo (150) de control de filtrado, para procesar, en un procedimiento de filtrado adaptativo de muestra utilizado en codificacion de video de alta eficiencia, HEVC, una primera imagen, en el que la primera imagen es reconstruida a partir de datos de video, comprendiendo el metodo:- obtener (201) una magnitud de corrimiento a partir de los datos de video, en el que la magnitud de corrimiento indica una magnitud de un corrimiento adaptativo de muestra sao_offset;- obtener (204) un signo de corrimiento a partir de los datos de video, en el que el signo de corrimiento indica un signo del corrimiento adaptativo de muestra sao_offset,en el que el corrimiento adaptativo de muestra sao_offset es un corrimiento de banda y/o un corrimiento de borde;en el que el corrimiento adaptativo de muestra sao_offset es codificado por codigo de longitud variable o codigo de longitud fija o codificacion aritmetica binaria adaptativa por contexto, CABAC, y el signo de corrimiento y la magnitud de corrimiento se codifican de forma separada en los datos de video;en el que un mapeo (203) existe entre el corrimiento adaptativo de muestra sao_offset y un valor adicional de corrimiento adaptativo de muestra SaoOffsetVal, siendo el mapeo:sao_offset = log2(abs(SaoOffsetVal))*sign(SaoOffsetVal)- determinar (205) el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal basandose en la magnitud de corrimiento y el signo de corrimiento; y- procesar (207), en el procedimiento de filtrado adaptativo de muestra, al menos una porcion de la primera imagen aplicando el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal.
- 2. - El metodo de acuerdo con la reivindicacion 1, que comprende ademas:obtener (206), de los datos de video, una posicion de banda que indica una banda primera e un conjunto de bandas consecutivas, en el que la posicion de banda determina una posicion de la banda primera a la que el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal deberia aplicarse.
- 3. - El metodo de acuerdo con la reivindicacion 2, en el que la magnitud de corrimiento y el signo de corrimiento se aplican a uno o mas de los conjuntos de bandas consecutivas.
- 4. - El metodo de acuerdo con cualquiera de las reivindicaciones precedentes, en el que la determinacion (205) del valor adicional de corrimiento adaptativo de muestra SaoOffsetVal comprende directamente calcular el valor adicional de corrimiento adaptativo por medio de accionamientos de signo y accionamientos de cambio sobre la magnitud de corrimiento y el signo de corrimiento, en el que la magnitud de corrimiento se codifica con una base dos.
- 5. - El metodo de acuerdo con la reivindicacion 4, en el que una magnitud de cambio del accionamiento de cambio se obtiene de los datos de video, o en el que una magnitud de cambio del accionamiento de cambio es predefinida.
- 6. - Un dispositivo (150) de control de filtrado, configurado para procesar, en un procedimiento de filtrado adaptativo de muestra utilizado en codificacion de video de alta eficiencia, HEVC, una primera imagen, en el que la primera imagen es reconstruida a partir de datos de video, comprendiendo el dispositivo (150) de control de filtrado un circuito (810) de procesamiento configurado para:- obtener una magnitud de corrimiento a partir de los datos de video, en el que la magnitud de corrimiento indica una magnitud de un corrimiento adaptativo de muestra sao_offset;- obtener un signo de corrimiento a partir de los datos de video, en el que el signo de corrimiento indica un signo del corrimiento adaptativo de muestra sao_offset,en el que el corrimiento adaptativo de muestra sao_offset es un corrimiento de banda y/o un corrimiento de borde;en el que el corrimiento adaptativo de muestra sao_offset es codificado por codigo de longitud variable o codigo de longitud fija o codificacion aritmetica binaria adaptativa por contexto, CABAC y el signo de corrimiento y la magnitud de corrimiento esta codificados de forma separada en los datos de video;en el que un mapeo (203) existe entre el corrimiento adaptativo de muestra sao_offset y un valor adicional de5101520253035corrimiento adaptativo de muestra SaoOffsetVal, siendo el mapeo:sao_offset = log2(abs(SaqOffsetVal))*sign(SaoOffsetVal)- determinar (205) el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal basandose en la magnitud de corrimiento y el signo de corrimiento; y- procesar (207), en el procedimiento de filtrado adaptativo de muestra, al menos una porcion de la primera imagen aplicando el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal.
- 7. - El dispositivo (150) de control de filtrado de acuerdo con la reivindicacion 6, en el que el circuito (810) de procesamiento se configura ademas para obtener, de los datos de video, una posicion de banda que indica una banda primera de un conjunto de bandas consecutivas, en el que la posicion de banda determina una posicion de la banda primera a la que el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal deberia aplicarse.
- 8. - El dispositivo (150) de control de filtrado de acuerdo con la reivindicacion 7, en el que el circuito (810) de procesamiento se configura ademas para aplicar la magnitud de corrimiento y el signo de corrimiento a una o mas de las bandas consecutivas.
- 9. - El dispositivo (150) de control de filtrado de acuerdo con cualquiera de las reivindicaciones 6-8, en el que el circuito (810) de procesamiento se configura ademas para calcular el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal calculando directamente el valor adicional de corrimiento adaptativo de muestra SaoOffsetVal por medio de accionamientos de signo y accionamientos de cambio sobre la magnitud de corrimiento y el signo de corrimiento, en el que la magnitud de corrimiento es codificado con una base dos.
- 10. - El dispositivo (150) de control de filtrado de acuerdo con la reivindicacion 9, en el que una magnitud de cambio del accionamiento de cambio se obtiene a partir de los datos de video, o en el que una magnitud del accionamiento es predefinida.
- 11. - El dispositivo (150) de control de filtrado de acuerdo con cualquiera de las reivindicaciones 6-10, estando comprendido en un dispositivo (110) de red, un decodificador (140) o un codificador (140).
- 12. - Un programa informatico (74) para procesar, en un procedimiento de filtrado adaptativo de muestra, una primera imagen, en el que la primera imagen es reconstruida a partir de datos de video, en el que el programa informatico (74) comprende unidades de codigo legibles por ordenador que cuando se ejecutan en un ordenador (70) hacen que el ordenador (70) realice un metodo de acuerdo con cualquiera de las reivindicaciones 1-5.
- 13. - Un producto (73) de programa informatico, que comprende un medio legible por ordenador y un programa informatico (74) de acuerdo con la reivindicacion 12 almacenado en el medio legible por ordenador.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261620639P | 2012-04-05 | 2012-04-05 | |
US201261620639P | 2012-04-05 | ||
US201261624726P | 2012-04-16 | 2012-04-16 | |
US201261624726P | 2012-04-16 | ||
PCT/SE2013/050270 WO2013151481A2 (en) | 2012-04-05 | 2013-03-15 | Sample adaptive filtering with offsets |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2637166T3 true ES2637166T3 (es) | 2017-10-11 |
Family
ID=49170839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES13762601.6T Active ES2637166T3 (es) | 2012-04-05 | 2013-03-15 | Filtrado adaptativo de muestra con corrimientos |
Country Status (5)
Country | Link |
---|---|
US (1) | US10085020B2 (es) |
EP (1) | EP2834980B1 (es) |
DK (1) | DK2834980T3 (es) |
ES (1) | ES2637166T3 (es) |
WO (1) | WO2013151481A2 (es) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107707922A (zh) * | 2012-04-16 | 2018-02-16 | 寰发股份有限公司 | 具有分隔的符号和幅值的采样自适应偏移编码的方法和装置 |
US9031137B2 (en) | 2012-05-03 | 2015-05-12 | Texas Instruments Incorporated | Signaling signed band offset values for sample adaptive offset (SAO) filtering in video coding |
GB2509563A (en) * | 2013-01-04 | 2014-07-09 | Canon Kk | Encoding or decoding a scalable video sequence using inferred SAO parameters |
EP3005696B1 (en) | 2013-05-30 | 2023-06-28 | Huawei Technologies Co., Ltd. | Offset dynamic range constraints for edge offset sao filtering |
US10032262B2 (en) * | 2016-02-02 | 2018-07-24 | Dolby Laboratories Licensing Corporation | Block-based content-adaptive reshaping for high dynamic range images |
US10223774B2 (en) * | 2016-02-02 | 2019-03-05 | Dolby Laboratories Licensing Corporation | Single-pass and multi-pass-based polynomial approximations for reshaping functions |
CN109738008B (zh) * | 2019-01-15 | 2021-01-08 | 深圳市对接平台科技发展有限公司 | 现场解析度分析平台 |
US11153563B2 (en) * | 2019-03-12 | 2021-10-19 | Qualcomm Incorporated | Combined in-loop filters for video coding |
KR102448226B1 (ko) * | 2020-04-02 | 2022-09-27 | 닛폰 호소 교카이 | 디블로킹 필터 제어 장치 및 프로그램 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011000947A1 (en) | 2009-07-02 | 2011-01-06 | Telefonaktiebolaget L L Ericsson (Publ) | Multicarrier radio receiver and method for receiving multiple carriers |
EP2777259A2 (en) * | 2011-11-08 | 2014-09-17 | Motorola Mobility LLC | Devices and methods for sample adaptive offset coding and/or signaling |
US9253482B2 (en) * | 2011-11-08 | 2016-02-02 | Texas Insturments Incorporated | Method and apparatus for sample adaptive offset without sign coding |
EP2801195B1 (en) * | 2012-01-05 | 2018-03-07 | Google Technology Holdings LLC | Devices and methods for sample adaptive offset coding and selection of edge offset parameters |
WO2013103893A1 (en) * | 2012-01-05 | 2013-07-11 | General Instrument Corporation | Devices and methods for multipass sample adaptive offset coding |
US9282328B2 (en) * | 2012-02-10 | 2016-03-08 | Broadcom Corporation | Sample adaptive offset (SAO) in accordance with video coding |
-
2013
- 2013-03-15 WO PCT/SE2013/050270 patent/WO2013151481A2/en active Application Filing
- 2013-03-15 DK DK13762601.6T patent/DK2834980T3/en active
- 2013-03-15 ES ES13762601.6T patent/ES2637166T3/es active Active
- 2013-03-15 US US14/389,671 patent/US10085020B2/en active Active
- 2013-03-15 EP EP13762601.6A patent/EP2834980B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP2834980B1 (en) | 2017-05-10 |
WO2013151481A3 (en) | 2013-12-12 |
DK2834980T3 (en) | 2017-07-03 |
EP2834980A2 (en) | 2015-02-11 |
US20150071340A1 (en) | 2015-03-12 |
WO2013151481A2 (en) | 2013-10-10 |
US10085020B2 (en) | 2018-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2637166T3 (es) | Filtrado adaptativo de muestra con corrimientos | |
EP3932076B1 (en) | An encoder, a decoder and corresponding methods for intra prediction | |
ES2845673T3 (es) | Copia intrabloque a nivel de fragmento | |
ES2807216T3 (es) | Sistemas y procedimientos para copia intrabloque | |
ES2702950T3 (es) | Transformación inversa de color-espacio para vídeo codificado con pérdidas y sin pérdidas | |
ES2804515T3 (es) | Derivación de Qp y desviación para la transformada de color adaptativa en la codificación de vídeo | |
JP2020065284A (ja) | 無損失ビデオコーディングのシグナリングのための方法および装置 | |
ES2970034T3 (es) | Suavizado e interpolación de intrapredicción de gran angular | |
JP2017515339A5 (es) | ||
CN113785577B (zh) | 用于指示色度量化参数映射函数的方法和装置 | |
ES2754056T3 (es) | Sistemas y procedimientos para la derivación de RPS entre capas basada en la dependencia de predicción de referencia de subcapa | |
EP3907988A1 (en) | Image prediction method, device, apparatus and system and storage medium | |
CN111327904A (zh) | 图像重建方法和装置 | |
US20230308652A1 (en) | Chroma coding enhancement in cross-component sample adaptive offset with virtual boundary | |
AU2022271494A1 (en) | An encoder, a decoder and corresponding methods using compact mv storage | |
BR112020024373A2 (pt) | elementos de sintaxe para codificação ou decodificação de vídeo | |
CN111416977B (zh) | 视频编码器、视频解码器及相应方法 | |
KR20220024116A (ko) | 비디오 코딩에서의 크로마 델타 양자화 파라미터 | |
ES2749747T3 (es) | Sistemas y procedimientos para definir por separado las dependencias para la predicción entre capas basada en subcapas | |
CN113366850B (zh) | 视频编码器、视频解码器及相应方法 | |
WO2021201739A1 (en) | Video processing using syntax elements | |
CN113170147B (zh) | 视频编码器、视频解码器、及对应方法 | |
EP3890322A1 (en) | Video coder-decoder and corresponding method | |
WO2022117036A1 (zh) | 量化参数的解码方法和装置 | |
EP3886438A1 (en) | Flag bit context modeling method and device |