ES2625821T3 - Simplificación de decisión de modo para predicción intra - Google Patents
Simplificación de decisión de modo para predicción intra Download PDFInfo
- Publication number
- ES2625821T3 ES2625821T3 ES14702664.5T ES14702664T ES2625821T3 ES 2625821 T3 ES2625821 T3 ES 2625821T3 ES 14702664 T ES14702664 T ES 14702664T ES 2625821 T3 ES2625821 T3 ES 2625821T3
- Authority
- ES
- Spain
- Prior art keywords
- intra prediction
- mode
- prediction modes
- modes
- current set
- 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
- 238000000034 method Methods 0.000 claims abstract description 147
- 238000004364 calculation method Methods 0.000 claims abstract description 45
- 238000004458 analytical method Methods 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims description 46
- 238000003860 storage Methods 0.000 claims description 18
- 238000003780 insertion Methods 0.000 claims 2
- 230000037431 insertion Effects 0.000 claims 2
- 230000033001 locomotion Effects 0.000 description 62
- 239000013598 vector Substances 0.000 description 26
- 238000012545 processing Methods 0.000 description 20
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 18
- 238000004891 communication Methods 0.000 description 17
- 238000011002 quantification Methods 0.000 description 12
- 238000005070 sampling Methods 0.000 description 12
- 238000013139 quantization Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 8
- 238000007906 compression Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000012805 post-processing Methods 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000007670 refining Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- 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
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- 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/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/19—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding using optimisation based on Lagrange multipliers
-
- 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/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Procedimiento de codificación de datos de vídeo, en el que el procedimiento comprende: obtención de una pluralidad de modos de predicción intra disponibles para codificar un bloque actual de datos de vídeo; cálculo de un coste aproximado para cada modo de predicción intra identificado en un conjunto actual de modos de predicción intra de la pluralidad de modos de predicción intra que incluye un conjunto predefinido de modos de predicción intra que presenta al menos un modo de predicción intra, en el que el conjunto actual de modos de predicción intra incluye menos modos de predicción intra que la pluralidad de modos de predicción intra disponibles para codificar el bloque actual de los datos de vídeo; cálculo de un coste aproximado para uno o más modos de predicción intra más probables para el bloque actual determinado basándose en unos modos de predicción intra usados para codificar uno o más bloques contiguos de datos de vídeo adyacentes al bloque actual; comparación de cada uno de los costes aproximados calculados para el uno o más modos de predicción intra más probables con un umbral; reemplazo de uno o más de los modos de predicción intra identificados en el conjunto actual de modos de predicción intra por el uno o más modos de predicción intra más probables si la comparación satisface el umbral; realización de un análisis tasa-distorsión con respecto a cada modo de predicción intra identificado en el conjunto actual de modos de predicción intra para determinar un coste tasa-distorsión para cada modo de predicción intra identificado en el conjunto actual de modos de predicción intra después de dicho reemplazo de uno o más de los modos de predicción intra identificados en el conjunto actual de modos de predicción intra por el uno o más modos de predicción intra más probables basándose en las comparaciones; y realización de codificación de predicción intra con respecto al bloque actual de acuerdo con uno de los modos de predicción intra identificados en el conjunto actual de modos de predicción intra basándose en los costes tasa-distorsión determinados para codificar el bloque actual.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Simplificacion de decision de modo para prediccion intra CAMPO TECNICO
Esta divulgacion se refiere a la codificacion de video y, mas particularmente, a aspectos de prediccion intra de codificacion de video.
ANTECEDENTES
Las capacidades de video digital pueden incorporarse a una amplia gama de dispositivos, incluidos televisores digitales, sistemas de difusion directa digital, sistemas de difusion inalambrica, asistentes digitales personales (PDA), ordenadores portatiles o de escritorio, camaras digitales, dispositivos de grabacion digitales, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, telefonos celulares o de radio por satelite, dispositivos de videoconferencia y similares. Los dispositivos de video digitales implementan tecnicas de compresion de video, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263 o ITU-T H.264/MPEG-4, parte 10, codificacion avanzada de video (AVC) y ampliaciones de dichas normas, para transmitir y recibir informacion de video digital de manera mas eficiente. El equipo "Joint Collaborative Team - Video Coding", que es una colaboracion entre MPEG e ITU-T esta elaborando nuevas normas de codificacion de video, tales como la norma de codificacion de video de alta eficiencia (HEVC). La norma HEVC emergente se denomina a veces H.265, aunque dicha designacion no se ha formalizado.
El documento de GOLAM SARWER M et al., titulado "Fast sum of absolute transformed difference based 4x4 intramode decision of H.264/AVC video coding standard", publicado en SIGNAL PROCESSING IMAGE COMMUNICATION, ELSEVIER SCIENCE PUBLISHERS, AMSTERDAM, NL, vol. 23, n.° 8, 1 de septiembre de 2008 (1-9-2008), paginas 571-580, ISSN: 0923-5965 describe un procedimiento para decision rapida de modo de prediccion intra para codificacion de video en el que se usan costes aproximados, comparaciones de umbral y calculos tasa-distorsion a fin de decidir el mejor modo de prediccion intra que se va a usar para un bloque actual.
Otro procedimiento para decision rapida de modo de -prediccion intra para codificacion de video se encuentra en el documento de ZHANg et al. titulado "Fast Intra Prediction for High Efficiency Video Coding" 4 de diciembre de 2012 (4/12/2012), ADVANCES IN MULTIMEDIA INFORMATION PROCESSING PCM 2012, SPRINGER, BERLIN, HEIDELBERG, BERLIN, HEIDELBERG, PAGINA(S) 568 - 577, ISBN: 978-3-642-34777-1 y usa costes aproximados calculados para un primer conjunto predeterminado que consiste en menos modos que el conjunto completo de posibles modos intra y se calculan costes aproximados calculados para otro conjunto que consiste en uno o mas "modos de prediccion intra mas probables" obtenidos a partir de unidades (bloques) de prediccion que son contiguos al bloque actual y en el que todos estos costes aproximados se comparan entre si para determinar un conjunto actual de mejores modos que se usa en un analisis tasa-distorsion.
SUMARIO
En general, esta divulgacion describe tecnicas para reducir la complejidad de la seleccion de modo al seleccionar a partir de varios modos de prediccion diferentes. En general, un codificador de video puede codificar bloques de una imagen mediante codificacion de modo intra (por ejemplo, codificarlos con respecto a otros bloques de la misma imagen) o codificacion de modo inter (por ejemplo, codificarlos con respecto a unos bloques de una imagen codificada previamente). En algunos ejemplos, un codificador de video puede seleccionar un modo para codificar un bloque dado a partir de un numero grande de modos diferentes . El codificador de video puede seleccionar el modo basandose en un valor de coste aproximado correspondiente que representa un valor aproximado de la tasa de distorsion para el modo seleccionado. En lugar de determinar valores de coste aproximados para cada posible modo de prediccion, el codificador de video puede reducir el numero de modos seleccionando inicialmente un subconjunto de modos que es mas probable que proporcionen una baja distorsion y subsiguientemente refinar el subconjunto seleccionado con una busqueda de modos adicionales que proporcionan baja distorsion.
En un modo de realizacion, un procedimiento de codificacion de datos de video incluye el calculo de un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra. El conjunto actual de modos de prediccion intra puede incluir menos modos de prediccion intra que un numero total de modos de prediccion intra disponibles para la codificacion de un bloque actual de los datos de video. El procedimiento tambien puede incluir el calculo de un coste aproximado para uno o mas modos de prediccion intra mas probables para el bloque actual determinados basandose en los modos de prediccion intra usados para codificar uno o mas bloques contiguos de datos de video adyacentes al bloque actual. El procedimiento puede incluir ademas la comparacion de cada uno de los costes aproximados calculados para el uno o mas modos de prediccion intra mas probables con un umbral. El procedimiento tambien puede incluir el reemplazo de uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones. El procedimiento puede incluir ademas la
5
10
15
20
25
30
35
40
45
50
55
60
65
realizacion de un analisis tasa-distorsion con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra para determinar un coste tasa-distorsion de para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra. El procedimiento tambien puede incluir la realizacion de una codificacion de prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes tasa-distorsion de determinados para codificar el bloque actual.
En un modo de realizacion, un dispositivo de codificacion de video puede configurarse para realizar un proceso de prediccion intra para codificar datos de video, el dispositivo de codificacion de video. El dispositivo de codificacion de video puede incluir un procesador configurado para calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra, en el que el conjunto actual de modos de prediccion intra incluye menos modos de prediccion intra que un numero total de modos de prediccion intra disponibles para la codificacion de un bloque actual de datos de video. El dispositivo de codificacion de video puede estar configurado ademas para calcular un coste aproximado para uno o mas modos de prediccion intra mas probables para el bloque actual determinados basandose en los modos de prediccion intra usados para codificar uno o mas bloques contiguos de datos de video adyacentes al bloque actual. El dispositivo de codificacion de video tambien puede estar configurado para comparar cada uno de los costes aproximados calculados para el uno o mas modos de prediccion intra mas probables con un umbral. El dispositivo de codificacion de video puede estar configurado ademas para reemplazar uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones. El dispositivo de codificacion de video tambien puede estar configurado para realizar un analisis tasa-distorsion con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra para determinar un coste tasa-distorsion para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra. El dispositivo de codificacion de video puede estar configurado ademas para realizar una codificacion de prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes de distorsion de tasa determinados para codificar el bloque actual.
En un modo de realizacion, un dispositivo de codificacion de video puede estar configurado para realizar un proceso de prediccion intra para codificar datos de video, incluyendo el dispositivo de codificacion de video medios para calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra, en el que el conjunto actual de modos de prediccion intra incluye menos modos de prediccion intra que un numero total de modos de prediccion intra disponibles para codificar un bloque actual de los datos de video. El dispositivo de codificacion de video puede incluir tambien medios para calcular un coste aproximado de uno o mas modos de prediccion intra mas probables para el bloque actual determinado basandose en los modos de prediccion intra usados para codificar uno o mas bloques contiguos de datos de video adyacentes al bloque actual. El dispositivo de codificacion de video puede incluir, ademas, medios para comparar cada uno de los costes aproximados calculados para el uno o mas modos de prediccion intra mas probables con un umbral. El dispositivo de codificacion de video puede incluir tambien medios para reemplazar uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones. El dispositivo de codificacion de video puede incluir ademas medios para realizar un analisis tasa-distorsion con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra para determinar un coste tasa-distorsion para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra. El dispositivo de codificacion de video puede incluir tambien medios para realizar una codificacion de prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes tasa-distorsion determinados para codificar el bloque actual.
En un modo de realizacion, unos medios de almacenamiento legibles por ordenador no transitorios incluyen instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores calculen un coste aproximado para cada modo de prediccion intra identificados en un conjunto actual de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra, en el que el conjunto actual de modos de prediccion intra incluye menos modos de prediccion intra que un numero total de modos de prediccion intra disponibles para codificar un bloque actual de los datos de video. Los medios de almacenamiento legibles por ordenador no transitorios tambien pueden incluir instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores calculen un coste aproximado para uno o mas modos de prediccion intra mas probables para el bloque actual, determinado basandose en unos modos de prediccion intra usados para codificar uno o mas bloques contiguos de datos de video adyacentes al bloque actual. Los medios de almacenamiento legibles por ordenador no transitorios tambien puede incluir instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores comparen cada uno de los costes aproximados calculados para el uno o mas modos de prediccion intra mas probables con un umbral. Los medios de almacenamiento legibles por ordenador no transitorios tambien pueden incluir instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores reemplacen uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose
5
10
15
20
25
30
35
40
45
50
55
60
65
en las comparaciones. Los medios de almacenamiento legibles por ordenador no transitorios tambien pueden incluir instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores realicen un analisis tasa-distorsion con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra para determinar un coste tasa-distorsion para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra. Los medios de almacenamiento legibles por ordenador no transitorios tambien puede incluir instrucciones almacenadas en el mismo que, al ejecutarse, hacen que uno o mas procesadores realicen una codificacion de prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes tasa-distorsion determinados para codificar el bloque actual.
Los detalles de uno o mas ejemplos se exponen en los dibujos adjuntos y en la siguiente descripcion. Otras caracteristicas, objetos y ventajas resultaran evidentes a partir de la descripcion y los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCION DE LOS DIBUJOS
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video que se puede configurar para usar las tecnicas descritas en esta divulgacion a fin de reducir la complejidad de la seleccion de un modo al seleccionar entre varios modos de prediccion diferentes.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video que puede implementar tecnicas para reducir la complejidad de la seleccion de un modo al seleccionar entre varios modos de prediccion diferentes.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de video que puede implementar las tecnicas descritas en esta divulgacion.
La FIG. 4A es un diagrama de bloques que ilustra una representacion conceptual de unos modos de prediccion intra que un codificador de video puede seleccionar, de acuerdo con unas tecnicas descritas en esta divulgacion.
La FIG. 4B es un diagrama de bloques que ilustra una representacion conceptual de un bloque actual que se va a codificar mediante prediccion intra y unos bloques contiguos, de acuerdo con unas tecnicas descritas en esta divulgacion.
La FIG. 5 es un diagrama de flujo que ilustra ejemplos de operaciones de un codificador de video, tal como un codificador de video como el representado en la FIG. 2, que reducen la complejidad de la seleccion de un modo al seleccionar entre varios modos de prediccion diferentes.
La FIG. 6 es un diagrama de flujo que ilustra ejemplos de operaciones de un codificador de video, tal como un codificador de video como el representado en la FIG. 2, para construir inicialmente un conjunto actual de modos de prediccion intra, de acuerdo con unas tecnicas de la divulgacion.
La FIG. 7A es un diagrama de flujo que ilustra ejemplos de operaciones de un codificador de video, tal como un codificador de video como el representado en la FIG. 2, para postprocesar el conjunto actual de modos de prediccion intra.
La FIG. 7B es un diagrama de flujo que ilustra ejemplos de operaciones de un codificador de video, tal como un codificador de video como el representado en la FIG. 2, para postprocesar el conjunto actual de modos de prediccion intra.
La FIG. 8 es un diagrama de flujo que ilustra ejemplos de operaciones de un codificador de video, tal como un codificador de video representado en la FIG. 2, para refinar un conjunto actual de modos de prediccion intra.
DESCRIPCION DETALLADA
En esta divulgacion se describen tecnicas que pueden permitir a un codificador de video, tal como un codificador de video, reducir la complejidad de la seleccion de un modo al seleccionar entre varios modos de prediccion diferentes. En general, los datos de video codificados pueden incluir datos de prediccion y datos residuales. Por ejemplo, un codificador de video puede generar datos de prediccion durante un modo de prediccion intra o un modo de prediccion inter. La prediccion intra, por ejemplo, en general implica predecir los valores de pfxeles de un bloque de una imagen en relacion con unas muestras de referencia de unos bloques contiguos previamente codificados de la misma imagen, donde el bloque codificado previamente seleccionado puede denominarse bloque de referencia. La prediccion intra tambien puede denominarse prediccion espacial debido a que el bloque de referencia seleccionado es de la misma imagen que el bloque que se va a predecir. La prediccion inter tfpicamente implica predecir los valores de pixel del bloque de una imagen en relacion con una o mas muestras de referencia de imagenes eliminadas temporalmente. Por esta razon, la prediccion inter puede denominarse prediccion temporal debido a que
5
10
15
20
25
30
35
40
45
50
55
60
65
los bloques de referencia seleccionados son de imagenes diferentes (y por tanto eliminadas temporalmente) a la imagen que presenta el bloque que se va a predecir.
Al realizar una prediccion intra, el codificador de video puede seleccionar entre varios modos diferentes de prediccion intra. Al realizar una prediccion intra, el codificador de video a menudo analiza un coste aproximado asociado con cada uno de los 35 modos de prediccion intra. Este coste aproximado puede aproximarse a un coste tasa-distorsion completo. El calculo de un coste tasa-distorsion completo requiere tfpicamente que el codificador de video calcule un bloque predicho usando cada uno de los modos de prediccion intra. El codificador de video determina a continuacion una diferencia entre cada uno de los bloques predichos y el bloque actual (que se denomina comunmente "bloque residual" y especifica los valores de pfxeles residuales a los que se ha hecho referencia anteriormente) y transforma cada uno de los bloques residuales del dominio espacial al dominio de la frecuencia. A continuacion, el codificador de video puede cuantificar cada uno de los bloques residuales transformados para generar un bloque de video codificado correspondiente. Por ultimo, el codificador de video puede decodificar el bloque de video codificado, comparando cada uno de los bloques de video decodificados con el bloque actual para determinar una metrica de distorsion. Ademas, este analisis tasa-distorsion completo implica el calculo, para cada uno de los modos de prediccion intra, de la cantidad de bits usados para indicar cada uno de los bloques de video codificados. Por tanto, el codificador de video puede calcular un coste aproximado en lugar de realizar este analisis tasa-distorsion para cada uno de los bloques predichos mediante uno correspondiente de los 35 modos de prediccion intra.
En algunos ejemplos, el codificador de video puede calcular un coste aproximado para cada uno de los bloques predichos para cada uno de los modos de prediccion intra. Por ejemplo, el codificador de video puede calcular inicialmente 35 costes aproximados correspondientes a cada uno de los 35 modos de prediccion intra. El codificador de video puede realizar a continuacion un analisis tasa-distorsion completo para algun subconjunto de modos de prediccion intra ya que el coste aproximado puede aproximarse de forma incorrecta a un coste tasa-distorsion en ciertas circunstancias.
Aunque la simplificacion anterior mediante un subconjunto puede reducir la cantidad de calculos requeridos en comparacion con la busqueda por fuerza bruta, dichas tecnicas en general todavfa pueden requerir 35 calculos de los costes aproximados correspondientes a cada uno de los 35 modos de prediccion intra. Si bien dichas tecnicas pueden reducir el numero de veces que el codificador de video realiza el analisis tasa-distorsion completo de alta carga computacional, este proceso puede no ser muy adecuado para la codificacion en tiempo real o codificacion casi en tiempo real de datos de video, dada la complejidad y el tiempo requerido para calcular los costes aproximados para cada uno de los 35 modos. En algunos entornos de codificacion de video en tiempo real, los requisitos de procesamiento para calcular costes aproximados para todos los modos posibles podran superar las limitaciones de diseno.
De acuerdo con las tecnicas descritas en esta divulgacion, un codificador de video puede reducir el numero de modos en que se realiza el analisis tasa-distorsion aproximado, y en algunos casos completo, reduciendo de ese modo potencialmente el tiempo y la complejidad asociados con la realizacion de un proceso de prediccion intra. Al reducir el tiempo y la complejidad asociados con la realizacion del proceso de prediccion intra, el codificador de video puede realizar una codificacion de video en tiempo real o codificacion de video casi en tiempo real.
En funcionamiento, el codificador de video puede calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto predefinido de modos de prediccion intra que incluye al menos un modo de prediccion intra, pero menos de un numero total de modos de prediccion intra disponibles para codificar un bloque actual de datos de video. A menudo, este conjunto predefinido incluye los modos que se observa que tienen mas probabilidades estadfsticas de ser utilizados cuando se realiza una prediccion intra. En algunos casos, este conjunto predefinido puede ser fijo. En un ejemplo, este conjunto predefinido incluye los modos 0, 1 y 26. Este conjunto predefinido puede, en este punto, comprender un conjunto actual de modos de prediccion intra para el bloque actual. En algunos casos, el conjunto predefinido puede estar formado por un modo plano, unos modos mas probables y unos modos angulares muestreados con un desplazamiento de muestreo.
El codificador de video puede a continuacion buscar modos de prediccion intra adicionales en un proceso de refinamiento, anadiendo modos de prediccion intra adicionales al conjunto actual de modos de prediccion intra. En algunos ejemplos, esta busqueda puede asemejarse a una busqueda binaria, que comienza por el modo del conjunto predefinido de modos de prediccion intra que presenta el coste aproximado calculado relativo mas bajo entre los costes aproximados calculados para cada modo identificado en el conjunto predefinido de modos de prediccion intra.
Para ilustrar, el modo 26 puede presentar el coste aproximado mas bajo en el ejemplo actual. En este supuesto, la busqueda binaria puede comenzar por el modo 26, en el que el valor del modo, es decir, 26, se reduce y aumenta en un cierto desplazamiento F para llegar a 26 + F y 26 - F. El codificador de video puede entonces calcular los costes aproximados para cada uno de los modos 26 + F y 26 - F y selecciona el modo con los costes aproximados mas bajos entre los modos 26, 26 + F y 26 - F. El codificador de video puede entonces reemplazar un modo del conjunto actual basandose en esta comparacion, por ejemplo, reemplazando el modo 26 del conjunto actual por el modo
5
10
15
20
25
30
35
40
45
50
55
60
65
seleccionado que presenta los costes aproximados mas bajos entre los modos 26, 26 + F y 26 - F.
A continuacion la busqueda se repite de esta manera, reduciendo a la mitad F hasta F/2, volviendo a centrar la busqueda en el modo 26 (si ni el modo 26 + F ni el modo 26 - F tuvieron un coste aproximado inferior al modo 26), el modo 26 + F (si el modo 26 + F se anadio al conjunto actual) o el modo 26 - F (si el modo 26 - F se anadio al conjunto actual). El proceso de busqueda continua hasta que F se divide en un numero fraccionario (suponiendo que F comienza como un valor que es una potencia de dos). Asf pues, si F se establece en 4, por ejemplo, el proceso se repite una vez con F = 4, una vez con F = 2, una vez con F = 1 y a continuacion termina cuando F = 0,5.
De esta manera, el codificador de video puede buscar modos de prediccion intra adicionales basandose en los costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra. El codificador de video puede a continuacion calcular los costes aproximados para cada uno de los modos de prediccion intra adicionales, anadiendo los modos de prediccion intra adicionales al conjunto actual de modos de prediccion intra basandose en una comparacion de los costes aproximados calculados para cada uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra y los costes aproximados calculados para los modos de prediccion intra adicionales. En consecuencia, las tecnicas de la presente divulgacion pueden simplificar la decision de un modo en la prediccion intra y al mismo tiempo permiten no reducir significativamente la precision de prediccion, y evitar la perdida significativa de la eficacia de codificacion. Las tecnicas propuestas pueden, en algunos ejemplos, reducir el numero de calculos de costes aproximados y el numero de calculos de costes tasa-distorsion completos en mas de la mitad.
La FIG. 1 es un diagrama de bloques que ilustra un ejemplo de sistema de codificacion y decodificacion de video 10 que se puede configurar para usar las tecnicas descritas en esta divulgacion a fin de reducir la complejidad de la seleccion de un modo al seleccionar entre varios modos de prediccion diferentes. Como se representa en el ejemplo de la FIG. 1, el sistema 10 incluye un dispositivo de origen 12 que genera video codificado para su decodificacion por un dispositivo de destino 14. El dispositivo de origen 12 puede transmitir el video codificado a un dispositivo de destino 14 a traves de un canal de comunicacion 16 o puede almacenar el video codificado en unos medios de almacenamiento 34 o un servidor de archivos 36, de forma que el dispositivo de destino 14 pueda acceder al video codificado como desee. El dispositivo de origen 12 y el dispositivo de destino 14 pueden comprender cualquiera de una amplia gama de dispositivos, incluidos ordenadores de sobremesa, ordenadores portatiles, tabletas, decodificadores, aparatos telefonicos (incluidos los telefonos celulares o telefonos moviles y los denominados telefonos inteligentes), televisores, camaras, dispositivos de visualizacion, reproductores de medios digitales, consolas de videojuegos o similares.
En muchos casos, dichos dispositivos pueden estar equipados para la comunicacion inalambrica. En consecuencia, el canal de comunicacion 16 puede comprender un canal inalambrico. De forma alternativa, el canal de comunicacion 16 puede comprender un canal alambrico, una combinacion de canales inalambricos y alambricos o cualquier otro tipo de canal de comunicacion o una combinacion de canales de comunicacion adecuados para la transmision de datos de video codificados, tal como un espectro de radiofrecuencia (RF) o una o mas lfneas de transmision ffsicas. En algunos ejemplos, el canal de comunicacion 16 puede formar parte de una red basada en paquetes, tal como una red de area local (LAN), una red de area extensa (WAN) o una red global tal como Internet. Por tanto, el canal de comunicacion 16 representa en general cualquier medio de comunicacion, o conjunto de diferentes medios de comunicacion, adecuado para transmitir datos de video desde el dispositivo de origen 12 hasta el dispositivo de destino 14, incluida cualquier combinacion adecuada de medios alambricos o inalambricos. El canal de comunicacion 16 puede incluir encaminadores, conmutadores, estaciones base o cualquier otro equipo que pueda ser util para facilitar la comunicacion desde el dispositivo de origen 12 al dispositivo de destino 14.
Como se ilustra ademas en el ejemplo de la FIG. 1, el dispositivo de origen 12 incluye una fuente de video 18, un codificador de video 20, un modulador/desmodulador 22 ("modem 22") y un transmisor 24. En el dispositivo de origen 12, la fuente de video 18 puede incluir una fuente tal como un dispositivo de captura de video. El dispositivo de captura de video, por ejemplo, puede incluir uno o mas de una videocamara, un archivo de video que contiene video previamente capturado, una interfaz de entrada de video para recibir video desde un proveedor de contenido de video y/o un sistema de graficos de ordenador para generar datos de graficos de ordenador como el video de origen. En un ejemplo, si el origen de video 18 es una videocamara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los denominados telefonos con camara o videotelefonos. Las tecnicas descritas en esta divulgacion, sin embargo, no se limitan a aplicaciones o configuraciones inalambricas, sino que pueden aplicarse a dispositivos no inalambricos que incluyen capacidades de codificacion y/o decodificacion de video. El dispositivo de fuente 12 y el dispositivo de destino 14 son, por tanto, simples ejemplos de dispositivos de codificacion que pueden admitir las tecnicas descritas en el presente documento.
El codificador de video 20 puede codificar el video capturado, precapturado o generado por ordenador. Una vez codificado, el codificador de video 20 puede transmitir este video codificado al modem 22. El modem 22 puede entonces modular el video codificado de acuerdo con una norma de comunicacion, tal como un protocolo de comunicacion inalambrica, despues de lo cual el transmisor 24 puede transmitir los datos de video codificados modulados al dispositivo de destino 14. El modem 22 puede incluir varios mezcladores, filtros, amplificadores u otros componentes disenados para la modulacion de senales. El transmisor 24 puede incluir circuitos disenados para
5
10
15
20
25
30
35
40
45
50
55
60
65
transmitir datos, incluidos amplificadores, filtros y una o mas antenas.
El video capturado, precapturado o generado por ordenador que se codifica mediante el codificador de video 20 tambien puede almacenarse en unos medios de almacenamiento 34 o un servidor de archivos 36 para una recuperacion, decodificacion o consumo posterior. Los medios de almacenamiento 34 pueden incluir discos Blu-ray, DVD, CD-ROM, memoria flash o cualquier otro medio de almacenamiento digital adecuado para el almacenamiento de video codificado. El dispositivo de destino 14 puede acceder al video codificado almacenado en los medios de almacenamiento 34 o el servidor de archivos 36, decodificar este video codificado para generar video decodificado y reproducir este video decodificado.
El servidor de archivos 36 puede ser cualquier tipo de servidor capaz de almacenar video codificado y transmitir ese video codificado al dispositivo de destino 14. Entre los ejemplos de servidores de archivos se incluyen un servidor web (por ejemplo, para un sitio web), un servidor FTP, unos dispositivos de almacenamiento en red (NAS), una unidad de disco local o cualquier otro tipo de dispositivo capaz de almacenar datos de video codificado y transmitirlo a un dispositivo de destino. La transmision de datos de video codificado desde el servidor de archivos 36 puede ser una transmision en continuo, una transmision de descarga o una combinacion de ambas. El dispositivo de destino 14 puede acceder al servidor de archivos 36 de acuerdo con cualquier conexion de datos estandar, incluida una conexion a Internet. Esta conexion puede incluir un canal inalambrico (por ejemplo, una conexion wifi o una conexion de datos celular inalambrica), una conexion alambrica (por ejemplo, dSl, modem de cable, etc.), o una combinacion de canales alambricos e inalambricos o cualquier otro tipo de canal de comunicacion adecuado para acceder a datos de video codificados almacenados en un servidor de archivos.
El dispositivo de destino 14, en el ejemplo de la FIG. 1 incluye un receptor 26, un modem 28, un decodificador de video 30 y un dispositivo de visualizacion 32. El receptor 26 del dispositivo de destino 14 recibe informacion a traves del canal 16, y el modem 28 desmodula la informacion, para producir un flujo de bits desmodulado para el decodificador de video 30. La informacion comunicada a traves del canal 16 puede incluir una variedad de informacion sintactica generada por el codificador de video 20 para su uso por el decodificador de video 30 en la decodificacion de los datos de video codificados asociados. Dicha sintaxis tambien puede incluirse con los datos de video codificado, almacenados en los medios de almacenamiento 34 o el servidor de archivos 36. Tanto el codificador de video 20 como el decodificador de video 30 pueden formar parte de un respectivo codificador- decodificador (CODEC) que es capaz de codificar o decodificar datos de video.
El dispositivo de visualizacion 32 del dispositivo de destino 14 representa cualquier tipo de pantalla capaz de presentar datos de video para el consumo por un espectador. Aunque se representa integrado con el dispositivo de destino 14, el dispositivo de visualizacion 32 puede estar integrado con, o ser externo a, el dispositivo de destino 14. En algunos ejemplos, el dispositivo de destino 14 puede incluir un dispositivo de visualizacion integrado y tambien estar configurado para interconectarse con un dispositivo de visualizacion externo. En otros ejemplos, el dispositivo de destino 14 puede ser un dispositivo de visualizacion. En general, el dispositivo de visualizacion 32 visualiza los datos de video decodificado a un usuario, y puede comprender cualquiera entre una variedad de dispositivos de visualizacion, tales como una pantalla de cristal lfquido (LCD), una pantalla de plasma, una pantalla de diodos organicos emisores de luz (OLED) u otro tipo de dispositivo de visualizacion.
El codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con una norma de compresion de video, tal como la norma de codificacion de video de alta eficacia (HEVC), actualmente en fase de elaboracion, y pueden ajustarse al modelo de prueba HEVC (HM). De forma alternativa, el codificador de video 20 y el decodificador de video 30 pueden funcionar de acuerdo con otras normas privadas o industriales, tales como la norma ITU-T H.264, tambien denominada MPEG 4, Parte 10, codificacion de video avanzada (AVC), o ampliaciones de dichas normas. Sin embargo, las tecnicas de esta divulgacion no estan limitadas a ninguna norma de codificacion particular. Otros ejemplos de normas de compresion de video incluyen MPEG-2 e ITU-T H.263.
Aunque no se representa en la FIG. 1, en algunos aspectos, el codificador de video 20 y el decodificador de video 30 pueden estar integrados con un codificador y decodificador de audio, y pueden incluir unidades adecuadas MUX- DEMUX, u otro tipo de hardware y software, para ocuparse de la codificacion, tanto de audio como de video, en un flujo de datos comun o en flujos de datos diferentes. Si procede, en algunos ejemplos, las unidades MUX-DEMUX pueden ajustarse al protocolo de multiplexado ITU H.223 o a otros protocolos, tales como el protocolo de datagramas de usuario (UDP).
El codificador de video 20 y el decodificador de video 30 pueden implementarse como cualquiera de entre una variedad de circuitos codificadores adecuados, tales como uno o mas microprocesadores, procesadores de senales digitales (DSP), circuitos integrados de aplicacion espedfica (ASIC), matrices de puertas programables in situ (FPGA), logica discreta, software, hardware, firmware o cualquier combinacion de estos. Cuando las tecnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en unos medios legibles por ordenador no transitorios adecuados , y ejecutar las instrucciones en hardware mediante uno o mas procesadores para realizar las tecnicas de esta divulgacion. Tanto el codificador de video 20 como el decodificador de video 30 pueden estar incluidos en uno o mas codificadores o decodificadores, donde cualquiera de ambos puede estar integrado como parte de un codificador/decodificador combinado (CODEC) en un dispositivo
5
10
15
20
25
30
35
40
45
50
55
60
65
respectivo.
El equipo JCT-VC esta trabajando en la elaboracion de la norma HEVC. Las actividades de normalizacion de la HEVC se basan en un modelo en evolucion de un dispositivo de codificacion de video denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificacion de video respecto a dispositivos existentes de acuerdo con, por ejemplo, la ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificacion de prediccion intra, el HM puede proporcionar hasta treinta y cinco modos de codificacion de prediccion intra.
En general, el modelo de funcionamiento del HM describe que una trama o imagen de video puede dividirse en una secuencia de bloques de arbol, o unidades de codificacion de mayor tamano (LCU), que incluyen muestras tanto de luma como de croma. Un bloque de arbol tiene un fin similar al de un macrobloque de la norma H.264. Un segmento incluye un numero de bloques de arbol consecutivos en orden de codificacion. Una trama o imagen de video puede dividirse en uno o mas segmentos. Cada bloque de arbol puede separarse en unidades de codificacion (CU) de acuerdo con un arbol cuaternario. Por ejemplo, un bloque de arbol, como un nodo rafz del arbol cuaternario, puede separarse en cuatro nodos hijo, y cada nodo hijo puede a su vez ser un nodo padre y dividirse en otros cuatro nodos hijo. Un nodo hijo final, no separado, como un nodo hoja del arbol cuaternario, comprende un nodo de codificacion, es decir, un bloque de video codificado. Los datos sintacticos asociados a un flujo de bits codificado pueden definir un numero maximo de veces que puede separarse un bloque de arbol, y tambien pueden definir un tamano mmimo de los nodos de codificacion.
Una CU incluye un nodo de codificacion y unas unidades de prediccion (PU) y unidades de transformada (TU) asociadas al nodo de codificacion. Un tamano de la CU corresponde a un tamano del nodo de codificacion, y debe ser de forma cuadrada. El tamano de la CU puede variar desde 8 x 8 pfxeles hasta el tamano del bloque de arbol, con un maximo de 64 x 64 pfxeles o mas. Cada CU puede contener una o mas PU y una o mas TU. Los datos sintacticos asociados a una Cu pueden describir, por ejemplo, la division de la CU en una o mas PU. Los modos de division pueden diferir dependiendo de si la CU esta codificada en modo de salto o directo, codificada en modo de prediccion intra o codificada en modo de prediccion inter. Las PU pueden dividirse para no tener forma cuadrada. Los datos sintacticos asociados a una CU tambien pueden describir, por ejemplo, la division de la CU en una o mas TU de acuerdo con un arbol cuaternario. Una TU puede tener forma cuadrada o no cuadrada.
La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamano de las TU tfpicamente se basa en el tamano de las PU de una CU dada definida para una LCU dividida, aunque puede que no siempre sea asL Las TU presentan tfpicamente el mismo tamano o un tamano mas pequeno que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades mas pequenas mediante una estructura de arbol cuaternario conocida como "arbol cuaternario residual" (RQT). Los nodos hoja del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencias de pfxeles asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantificarse.
En general, una PU incluye datos relacionados con el proceso de prediccion. Por ejemplo, cuando la PU esta codificada en modo intra, la PU puede incluir datos que describen un modo de prediccion intra para la PU. En otro ejemplo, cuando la PU esta codificada en modo inter, la PU puede incluir datos que definen uno o mas vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, un componente horizontal del vector de movimiento, un componente vertical del vector de movimiento, una resolucion para el vector de movimiento (por ejemplo, precision de un cuarto de pixel o precision de un octavo de pixel), una imagen de referencia a la que apunta el vector de movimiento, una direccion de prediccion (ya sea biprediccion o uniprediccion) y/o una lista de imagenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
En general, se usa una TU para los procesos de transformada y cuantificacion. Una CU dada que presenta una o mas PU tambien puede incluir una o mas unidades de transformada (TU). Tras la prediccion, el codificador de video 20 puede calcular valores residuales correspondientes a la PU. Los valores residuales comprenden valores de diferencias de pfxeles que se pueden transformar en coeficientes de transformada, cuantificar y explorar mediante las TU, para generar coeficientes de transformada en serie para la codificacion de entropfa. Esta divulgacion usa tipicamente el termino “bloque de video” para referirse a un nodo de codificacion de una CU. En algunos casos espedficos, esta divulgacion tambien puede usar el termino “bloque de video” para referirse a un bloque de arbol, es decir, una LCU o una CU, que incluye un nodo de codificacion y unas PU y TU.
Una secuencia de video incluye tfpicamente una serie de tramas o imagenes de video. Un grupo de imagenes (GOP) comprende en general una serie de una o mas de las imagenes de video. Un GOP puede incluir datos sintacticos en una cabecera del GOP, en una cabecera de una o mas de las imagenes o en otras ubicaciones, que describen un numero de imagenes incluidas en el GOP. Cada segmento de una imagen puede incluir datos sintacticos de segmento que describen un modo de codificacion para el segmento respectivo. Un codificador de video 20 actua tfpicamente sobre bloques de video de segmentos de video individuales, con el fin de codificar los datos de video. Un bloque de video puede corresponder a un nodo de codificacion de una CU. Los bloques de video
5
10
15
20
25
30
35
40
45
50
55
60
65
pueden presentar tamanos fijos o variables y pueden diferir en tamano de acuerdo con una norma de codificacion especificada.
En un ejemplo, el HM admite la prediccion en diversos tamanos de PU. Suponiendo que el tamano de una CU particular sea 2Nx2N, el HM admite la prediccion intra en tamanos de PU de 2Nx2N o NxN, y la prediccion intra en tamanos de PU simetricos de 2Nx2N, 2NxN, Nx2N o NxN. El HM tambien admite la division asimetrica para la prediccion inter en tamanos de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la division asimetrica, una direccion de una CU no esta dividida, mientras que la otra direccion esta dividida en 25 % y 75 %. La parte de la CU correspondiente a la division de 25 % esta indicada por una “n” seguida de una indicacion “arriba”, “abajo”, “izquierda” o “derecha”. Asf, por ejemplo, “2NxnU” se refiere a una CU 2Nx2N que esta dividida horizontalmente con una PU 2Nx0,5N encima y una pU 2Nx1,5N debajo.
En esta divulgacion, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de pixeles de un bloque video en terminos de dimensiones verticales y horizontales, por ejemplo, 16x16 pixeles o 16 por 16 pixeles. En general, un bloque 16x16 tendra 16 pfxeles en una direccion vertical (y = 16) y 16 pfxeles en una direccion horizontal (x = 16). Asimismo, un bloque de tamano NxN presenta en general N pfxeles en una direccion vertical y N pfxeles en una direccion horizontal, donde N representa un valor entero no negativo. Los pfxeles en un bloque pueden estar dispuestos en filas y columnas. Ademas, los bloques no necesitan presentar necesariamente el mismo numero de pfxeles en la direccion horizontal y en la direccion vertical. Por ejemplo, los bloques pueden comprender NxM pfxeles, donde M no es necesariamente igual a N.
Tras la codificacion de prediccion intra o prediccion inter mediante las PU de una CU, el codificador de video 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos de pfxeles en el dominio espacial (tambien denominado dominio de pfxeles) y las TU pueden comprender coeficientes en el dominio de transformada tras la aplicacion de una transformada, por ejemplo, una transformada de coseno discreta (DCT), una transformada entera, una transformada de wavelet o una transformada similar desde un punto de vista conceptual a los datos de video residuales. Los datos residuales pueden corresponder a diferencias de pfxeles entre pfxeles de la imagen no codificada y valores de prediccion correspondientes a las PU. El codificador de video 20 puede formar las TU incluyendo los datos residuales para la CU, y a continuacion transformar las TU para generar coeficientes de transformada para la CU.
Tras cualquier transformada para generar coeficientes de transformada, el codificador de video 20 puede realizar la cuantificacion de los coeficientes de transformada. La cuantificacion se refiere en general a un proceso en el que los coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando una compresion adicional. El proceso de cuantificacion puede reducir la profundidad de bits asociada a algunos o la totalidad de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificacion, donde n es mayor que m.
En algunos ejemplos, el codificador de video 20 puede usar un orden de exploracion predefinido para explorar los coeficientes de transformada cuantificados para generar un vector en serie que pueda someterse a codificacion de entropfa. En otros ejemplos, el codificador de video 20 puede realizar una exploracion adaptativa. Despues de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de video 20 puede realizar la codificacion de entropfa del vector unidimensional, por ejemplo, de acuerdo con la codificacion de longitud variable adaptativa segun el contexto (CAVLC), la codificacion aritmetica binaria adaptativa segun el contexto (CABAC), la codificacion aritmetica binaria adaptativa segun el contexto basada en la sintaxis (SBAC), la codificacion de entropfa por division de intervalos de probabilidad (PIPE) u otros procedimientos de codificacion de entropfa. El codificador de video 20 tambien puede realizar la codificacion de entropfa de elementos sintacticos asociados a los datos de video codificados para su uso por el decodificador de video 30 en la decodificacion de los datos de video.
Para realizar la CABAC, el codificador de video 20 puede asignar un contexto de un modelo contextual a un sfmbolo que se va a transmitir. El contexto puede referirse, por ejemplo, a si los valores contiguos del sfmbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de video 20 puede seleccionar un codigo de longitud variable para un sfmbolo que se va a transmitir. Las palabras de codigo en la VLC pueden construirse de forma que los codigos relativamente mas cortos correspondan a sfmbolos mas probables, mientras que los codigos mas largos correspondan a sfmbolos menos probables. De esta manera, el uso de la VLC puede permitir un ahorro en bits con respecto, por ejemplo, al uso de palabras de codigo de igual longitud para cada sfmbolo que se va a transmitir. La determinacion de la probabilidad puede basarse en un contexto asignado al sfmbolo.
Como se ha descrito previamente, cuando se selecciona un modo para prediccion intra, algunos procesos pueden requerir calculos de los costes aproximados correspondientes a cada modo de prediccion intra posible. Mientras que algunos procesos pueden reducir el numero de veces que el codificador de video realiza el analisis tasa-distorsion completo de alta carga computacional, este proceso puede no ser muy adecuado para la codificacion en tiempo real o casi en tiempo real de codificacion de datos de video, dada la complejidad y el tiempo requerido para calcular los costes aproximados para cada uno de los posibles modos de prediccion intra.
5
10
15
20
25
30
35
40
45
50
55
60
65
De acuerdo con las tecnicas de la divulgacion, el codificador de video 20 puede implementar tecnicas de decision rapida de modo para la prediccion intra. El codificador de video 20 puede construir inicialmente un conjunto actual de modos preliminares mediante un muestreo uniforme de todos los posibles modos de prediccion intra y el filtrado y la inclusion de uno o mas modos de prediccion en una lista de corte. El codificador de video 20 puede a continuacion realizar una busqueda refinada en los modos del conjunto actual. Por ultimo, el codificador de video 20 puede reemplazar el modo no mas probable del conjunto actual por el coste aproximado mas grande con un modo mas probable asociado con el coste aproximado mas bajo basandose en la relacion de los respectivos costes aproximados del modo mas probable y el modo no mas probable. Dichas tecnicas de la divulgacion pueden reducir el numero de calculos de costes aproximados, en algunos ejemplos, a menos de 17 y el numero de calculos de costes tasa-distorsion completos a 3 (para un tamano de PU de 4x4 y 8x8) y 2 (para un tamano de PU superior a 8x8).
En un ejemplo, el codificador de video 20 determina inicialmente un conjunto de modos de prediccion predefinidos que pueden tener mas probabilidades estadfsticas de usarse al realizar prediccion intra. El codificador de video 20 puede a continuacion refinar el subconjunto buscando modos de prediccion intra adicionales que proporcionan costes aproximados, por ejemplo, buscando modos de prediccion intra adicionales basandose en los costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra. Por ejemplo, el codificador de video 20 puede identificar un modo de prediccion intra en la busqueda que proporciona costes aproximados inferiores. Basandose en un coste de distorsion aproximado asociado con el modo de prediccion intra identificado, el codificador de video 20 puede anadir el modo identificado a un conjunto actual (que incluye los modos de prediccion predefinidos) y/o reemplazar un modo predefinido en el subconjunto por el modo identificado.
De esta manera, el codificador de video 20 puede refinar el conjunto actual de modos de prediccion para incluir modos que ofrecen bajos costes aproximados, al tiempo que genera costes aproximados para solo un subconjunto de todos los posibles modos de prediccion intra. En consecuencia, el codificador de video 20 puede realizar un analisis tasa-distorsion completo unicamente para los modos de prediccion intra identificados en el conjunto actual (por ejemplo, un subconjunto de modos de prediccion intra) en lugar de todos los posibles modos de prediccion intra. Dado que el numero de modos de prediccion intra del conjunto actual puede ser menor que el numero total de modos de prediccion intra y proporcionar costes aproximados inferiores, las tecnicas de la divulgacion pueden reducir los requisitos de complejidad y de procesamiento para realizar la seleccion de modo. En algunos ejemplos, la reduccion de dichos requisitos de procesamiento puede mejorar el rendimiento de codificacion de video en codificadores de video de procesamiento en paralelo y/o en serie.
El decodificador de video 30 puede recibir un flujo de bits que comprende datos codificados y decodificar los datos de acuerdo con unos elementos sintacticos correspondientes recibidos desde el codificador de video 20. El decodificador de video 30 en general puede realizar operaciones recfprocas a las descritas anteriormente con respecto al codificador de video 20. Es decir, el decodificador de video 30 puede realizar la decodificacion de entropfa de cada bloque de datos de video codificados, realizar la cuantificacion inversa para decuantificar el bloque de datos de video codificados y aplicar una transformada inversa para transformar el bloque decuantificado de datos de video codificados del dominio de la frecuencia al dominio espacial. Este bloque transformado de datos de video codificados puede representar una version reconstruida de los datos residuales. En el proceso de prediccion, el decodificador de video 30 puede seleccionar un modo de prediccion correspondiente para decodificar un bloque determinado basandose en unos elementos sintacticos que indican modos de prediccion. Es decir, el codificador de video 20 puede, de acuerdo con las tecnicas de la divulgacion, enviar uno o mas elementos sintacticos que indican un modo de prediccion para un bloque determinado, que el decodificador de video 30 puede usar subsiguientemente para decodificar el bloque determinado.
La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de codificador de video 20 que puede implementar tecnicas para reducir la complejidad de la seleccion de un modo al seleccionar entre varios modos de prediccion diferentes. El codificador de video 20 puede realizar una codificacion intra e inter- de bloques de video dentro de segmentos de video. La codificacion intra se basa en la prediccion espacial para reducir o eliminar la redundancia espacial en el video dentro de una trama o imagen de video dada. La codificacion inter se basa en la prediccion temporal para reducir o eliminar la redundancia temporal en el video dentro de tramas o imagenes adyacentes de una secuencia de video. El modo intra (modo I) puede referirse a cualquiera de varios modos de compresion espacial. Los modos inter, tales como la prediccion unidireccional (modo P) o la prediccion bidireccional (modo B), pueden referirse a cualquiera de varios modos de compresion temporal.
En el ejemplo de la FIG. 2, el codificador de video 20 incluye una unidad de division 40, una unidad de prediccion 41, una memoria de imagenes de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificacion 54 y una unidad de codificacion de entropfa 56. La unidad de prediccion 41 incluye una unidad de estimacion de movimiento 42, una unidad de compensacion de movimiento 44 y una unidad de prediccion intra 46. Para la reconstruccion de bloques de video, el codificador de video 20 incluye tambien una unidad de cuantificacion inversa 58, una unidad de procesamiento de transformada inversa 60 y un sumador 62. Tambien puede incluirse un filtro de desbloqueo (no representado en la FIG. 2) para filtrar lfmites de bloque a fin de eliminar artefactos de pixelado del video reconstruido. Si se desea, el filtro de desbloqueo filtrara tfpicamente la salida del
5
10
15
20
25
30
35
40
45
50
55
60
65
sumador 62. Tambien pueden usarse filtros de bucle adicionales (en bucle o tras el bucle), ademas del filtro de desbloqueo. El codificador de video 20 tambien incluye una unidad de seleccion de modo 43. La unidad de seleccion de modo 43 puede seleccionar uno de los modos de codificacion, intra o inter, por ejemplo, basandose en los resultados de error. Como se describe ademas en la FIG. 2, la unidad de seleccion de modo 43 puede implementar tecnicas para reducir el espacio necesario para almacenar valores de tasa-distorsion al seleccionar entre varios modos de prediccion diferentes.
Como se representa en la FIG. 2, el codificador de video 20 recibe datos de video, y la unidad de division 40 divide los datos en bloques de video. Esta division tambien puede incluir la division en segmentos, mosaicos u otras unidades mayores, asf como la division de bloques de video, por ejemplo, de acuerdo con una estructura de arbol cuaternario de unas LCU y CU. El codificador de video 20 ilustra en general los componentes que codifican bloques de video de un segmento de video que se va a codificar. En general, un segmento puede dividirse en varios bloques de video (y, posiblemente, en conjuntos de bloques de video denominados mosaicos).
La unidad de seleccion de modo 43 puede seleccionar una entre una pluralidad de posibles modos de codificacion, tal como uno de una pluralidad de modos de codificacion intra, o uno de una pluralidad de modos de codificacion inter, para el bloque de video actual, basandose en resultados de errores (por ejemplo, la tasa de codificacion y el nivel de distorsion). La unidad de prediccion 41 puede proporcionar el bloque sometido a codificacion intra o inter resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado para su uso como imagen de referencia. En algunos ejemplos, la unidad de seleccion de modo 43 puede analizar cada uno de los bloques de video reconstruidos para seleccionar una mejor proporcion de tasa-distorsion a traves de un proceso conocido comunmente como "optimizacion de tasa-distorsion", que puede abreviarse como "RDO." Mas detalles de la FIG. 2 descritos a continuacion ilustran unas tecnicas de seleccion de modo de acuerdo con uno o mas aspectos de la divulgacion.
Los aspectos de esta divulgacion se refieren en general a la codificacion intra. Asf pues, la unidad de seleccion de modo 43 puede realizar ciertas tecnicas de esta divulgacion. Es decir, por ejemplo, la unidad de seleccion de modo 43 puede realizar las tecnicas de esta divulgacion descritas con respecto a las FIGs. 2 -8 a continuacion. En otros ejemplos, otra una o mas unidades de codificador de video 20, por ejemplo, la unidad de prediccion intra 46, puede ademas, de forma colectiva o alternativa, ser responsable de la realizacion de las tecnicas de esta divulgacion.
La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 de la unidad de prediccion 41 realizan la codificacion de prediccion inter del bloque de video actual con respecto a uno o mas bloques predictivos en una o mas imagenes de referencia para proporcionar compresion temporal. La unidad de estimacion de movimiento 42 puede estar configurada para determinar el modo de prediccion inter para un segmento de video de acuerdo con un patron predeterminado para una secuencia de video. El patron predeterminado puede designar segmentos de video de la secuencia como segmentos P, segmentos B o segmentos GPB. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimacion de movimiento, realizada por la unidad de estimacion de movimiento 42, es el proceso de generacion de vectores de movimiento, que estiman el movimiento para los bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de video de una trama o imagen de video actual con respecto a un bloque predictivo de una imagen de referencia.
Un bloque predictivo es un bloque del que se descubre que se corresponde estrechamente con la PU del bloque de video que se va a codificar en terminos de diferencia de pfxeles, que puede determinarse mediante la suma de una diferencia absoluta (SAD), suma de diferencia al cuadrado (SSD) u otras metricas de diferencia. En algunos ejemplos, el codificador de video 20 puede calcular valores para posiciones de pixel de subentero de imagenes de referencia almacenadas en la memoria de imagenes de referencia 64. Por ejemplo, el codificador de video 20 puede interpolar valores de posiciones de un cuarto de pixel, posiciones de un octavo de pixel u otras posiciones de pixel fraccionarias de la imagen de referencia. Por tanto, la unidad de estimacion de movimiento 42 puede realizar una busqueda de movimiento con respecto a las posiciones de pixel completo y a las posiciones de pixel fraccionario, y emitir un vector de movimiento con una precision de pixel fraccionario.
La unidad de estimacion de movimiento 42 calcula un vector de movimiento para una PU de un bloque de video de un segmento sometido a codificacion inter, comparando la posicion de la PU con la posicion de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse entre una primera lista de imagenes de referencia (lista 0) o una segunda lista de imagenes de referencia (lista 1), cada una de las cuales identifica una o mas imagenes de referencia almacenadas en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 envfa el vector de movimiento calculado a la unidad de codificacion de entropfa 56 y a la unidad de compensacion de movimiento 44.
La compensacion de movimiento, realizada por la unidad de compensacion de movimiento 44, puede implicar extraer o generar el bloque predictivo basandose en el vector de movimiento determinado por la estimacion de movimiento, realizando posiblemente interpolaciones hasta la precision de subpfxel. Tras recibir el vector de movimiento para la PU del bloque de video actual, la unidad de compensacion de movimiento 44 puede localizar el
5
10
15
20
25
30
35
40
45
50
55
60
65
bloque predictivo al que apunta el vector de movimiento en una de las listas de imageries de referenda. El codificador de video 20 forma un bloque de video residual restando los valores de pfxeles del bloque predictivo a los valores de pfxeles del bloque de video actual que se esta codificando, generando valores de diferencia de pixel. Los valores de diferencia de pixel forman datos residuales para el bloque, y pueden incluir componentes de diferencia de luma y croma. El sumador 50 representa el componente o los componentes que realizan esta operacion de sustraccion. La unidad de compensacion de movimiento 44 tambien puede generar elementos sintacticos asociados a los bloques de video y al segmento de video para su uso por el decodificador de video 30 en la decodificacion de los bloques de video del segmento de video.
La unidad de prediccion intra 46,de la unidad de prediccion 41, puede realizar la codificacion de prediccion intra del bloque de video actual con respecto a uno o mas bloques contiguos de la misma imagen o segmento que el bloque que se va a codificar para proporcionar compresion espacial. La unidad de prediccion intra 46 puede realizar la prediccion intra de un bloque actual, como alternativa a la prediccion inter realizada por la unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44, descrita anteriormente.
En particular, la unidad de seleccion de modo 43 puede determinar un modo de prediccion intra para usar a fin de codificar un bloque actual basandose en cantidades de tasa-distorsion correspondientes a un modo y bloque dados. En algunos ejemplos, la unidad de prediccion intra 46 puede codificar un bloque actual mediante modos de prediccion intra recibidos de la unidad de seleccion de modo 43, por ejemplo, durante pases de codificacion independientes.
La unidad de seleccion de modo 43 puede calcular valores de tasa-distorsion mediante un analisis tasa-distorsion para los diversos modos de prediccion intra probados, y seleccionar el modo de prediccion intra que presente las mejores caracterfsticas de tasa-distorsion entre los modos probados. El analisis detasa-distorsion determina en general una cantidad de distorsion (o error) entre un bloque codificado y un bloque original no codificado que se codifico para generar el bloque codificado, asf como una tasa de bits (es decir, un numero de bits) usada para generar el bloque codificado. La unidad de seleccion de modo 43 puede calcular proporciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar que modo de prediccion intra presenta el mejor valor de tasa-distorsion para el bloque. Segun la norma HE VC propuesta, puede haber hasta 35 modos de prediccion intra, y cada modo de prediccion intra puede estar asociado con un fndice.
Al realizar prediccion intra, la unidad de seleccion de modo 43 puede analizar un coste aproximado asociado a cada posible modo de prediccion intra en lugar de realizar un analisis tasa-distorsion completo. Este coste aproximado puede aproximarse a un coste tasa-distorsion. El calculo de un coste tasa-distorsion completo requiere tfpicamente que el codificador de video calcule un bloque predicho mediante cada uno de los modos de prediccion intra, determine una diferencia entre cada uno de los bloques predichos y el bloque actual (que comunmente se denomina "bloque residual" que especifica los valores de pixel residuales a los que se ha hecho referencia anteriormente), transforme cada uno de los bloques residuales del dominio espacial al dominio de frecuencia, cuantifique los valores de coeficientes en cada uno de los bloques residuales transformados para generar un bloque de video codificado correspondiente de coeficientes y a continuacion decodifique el bloque de video codificado, comparando cada uno de los bloques de video decodificados con el bloque actual para determinar una metrica de distorsion. Ademas, este analisis tasa-distorsion completo puede implicar el calculo, para cada uno de los modos de prediccion intra, de la cantidad de bits usados para indicar cada uno de los bloques de video codificados, dado un nivel de cuantificacion.
Como se ha descrito anteriormente, en lugar de realizar un analisis tasa-distorsion completo para cada uno de los bloques predichos mediante uno correspondiente de los 35 modos de prediccion intra, la unidad de seleccion de modo 43 puede calcular un coste aproximado para uno o mas modos de prediccion intra. La unidad de seleccion de modo 43 puede calcular la aproximacion del coste tasa-distorsion completo mediante diversos procesos matematicos. Algunos ejemplos de procesos pueden denominarse en general aproximaciones de tasa-distorsion de Lagrange. Con el fin de determinar el mejor modo de un gran numero de posibles modos, se puede aplicar un multiplicador de Lagrange para medir el coste para cada modo diferente. Un multiplicador de Lagrange puede basarse en una medida de distorsion, D, y una medida de tasa, R.. La medida de distorsion podrfa definirse de forma diferente para una implementacion diferente, por ejemplo, suma de errores al cuadrado (SSE), suma de la diferencia absoluta (SAD), o la suma de diferencias de transformada absoluta (SATD) La medida de tasa representa cuantos bits se necesitan para codificar la informacion de modo actual. Por ejemplo, la medida de tasa puede incluir los bits que se usan para indicar el tipo de modo de prediccion, fndice de modo intra o vector de movimiento, etc. Una vez que se obtienen los valores de D y R, el coste, C, se puede calcular como se representa en la ecuacion (1), donde A es una constante predefinida:
C = D + A*R (1)
La unidad de seleccion de modo 43 puede seleccionar el mejor modo eligiendo el modo que genere el C mfnimo.
En un ejemplo, la unidad de seleccion de modo 43 puede calcular una suma de distorsion al cuadrado (SSD), una suma de diferencia absoluta (SAD) y una suma de las diferencias de transformada absoluta (SATD). La unidad de seleccion de modo 43 puede calcular la SATD como una manera de aproximar el coste tasa-distorsion. La unidad de
5
10
15
20
25
30
35
40
45
50
55
60
65
seleccion de modo 43 puede calcular la SATD de acuerdo con la siguiente ecuacion (2):
/(SATD) = Zw| W*(U) - *07))| + A ■ ffmode (2)
En la ecuacion (2), X representa el bloque predicho para el bloque actual X, Tnxn{-) es una transformada NxN (como la transformada de Hadamard), A es el multiplicador de Lagrange (que puede seleccionarse empmcamente) y Rmode es el numero de bits usados para codificar el modo. En consecuencia, el coste J (SATD) puede ser una aproximacion tasa-distorsion completa de menor complejidad.
Tfpicamente, cuando el bloque actual es de un tamano de 4x4 o 8x8, un codificador de video puede analizar de ocho a diez modos de prediccion intra que presentan un coste aproximado mas bajo en comparacion con los 27 a 25 modos de prediccion intra restantes. Cuando el bloque actual es mas grande que 8x8, el codificador de video puede analizar de tres a cinco modos de prediccion intra que presenten un coste aproximado mas bajo en comparacion con los 32 a 30 modos de prediccion intra restantes. En algunos ejemplos, un codificador de video tambien puede considerar los llamados modos de prediccion intra "mas probables" durante la codificacion de prediccion intra. Para identificar este modo mas probable, un codificador de video puede identificar un modo de prediccion intra de los bloques previamente codificados (que a menudo son bloques contiguos que son adyacentes al bloque actual). Los modos mas probables pueden tener una probabilidad relativamente alta de ser el mismo bloque o uno similar al bloque actual debido a una proximidad espacial de los bloques contiguos con el bloque actual.
En HEVC, hay tres modos mas probables. Los dos primeros son los modos de prediccion intra de las PU situadas arriba y a la izquierda si esas PU estan disponibles y estan codificadas mediante un modo de prediccion intra. Cualquier modo de prediccion no disponible se considera que es un modo DC intra. Cuando los dos modos mas probables no son iguales, el tercer modo mas probable se iguala a Intra_Plano, Intra_DC o Intra_Angular [ 26 ] (vertical), de acuerdo con cual de estos modos, en este orden, no es un duplicado de uno de los dos primeros modos. Cuando los dos primeros modos mas probables son iguales, si este primer modo presenta el valor Intra_Plano o Intra_DC, el segundo y tercer modos mas probables se asignan como Intra_Plano, Intra_DC, o Intra_Angular [ 26 ], de acuerdo con cuales de estos modos, en este orden, no son duplicados. Cuando los dos primeros modos mas probables son iguales y el primer modo presenta un valor Intra angular, el segundo y tercer modos mas probables se eligen como los dos modos angulares de prediccion que son los mas cercanos al angulo (es decir, el valor de k) del primero.
En algunos ejemplos, el codificador de video puede calcular un coste aproximado para cada uno de los bloques predichos y para cada uno de los modos de prediccion intra. Por ejemplo, el codificador de video puede calcular inicialmente 35 costes aproximados correspondientes a cada uno de los 35 modos de prediccion intra. El codificador de video puede realizar a continuacion un analisis tasa-distorsion completo para algun subconjunto de modos de prediccion intra ya que el coste aproximado puede aproximarse de forma incorrecta a un coste tasa-distorsion en ciertas circunstancias.
Si bien la simplificacion de la realizacion de un analisis tasa-distorsion completo de un subconjunto de modos puede reducir la cantidad de calculos requeridos en comparacion con la busqueda por fuerza bruta, dichas tecnicas todavfa requieren en total 35 calculos de los costes aproximados que corresponden a cada uno de los 35 modos de prediccion intra. Por tanto, aunque estas tecnicas pueden reducir el numero de veces que el codificador de video realiza el analisis tasa-distorsion completo de alta carga computacional, este proceso puede no ser muy adecuado para la codificacion en tiempo real o codificacion casi en tiempo real de datos de video dada la complejidad y el tiempo necesarios para calcular los costes aproximados para cada uno de los 35 modos.
Con el fin de reducir la complejidad de la seleccion de modo, esta divulgacion describe tecnicas para reducir el numero de modos que se aplican mediante un analisis tasa-distorsion completo seleccionando inicialmente un subconjunto de modos que tiene mas probabilidades de proporcionar un coste aproximado bajo y subsiguientemente refinar el subconjunto seleccionado con una busqueda de modos adicionales que proporcionen un coste aproximado mas bajo. Las tecnicas pueden permitir a un codificador de video, tal como el codificador de video 20, seleccionar un mejor modo, por ejemplo, un modo con una tasa-distorsion mas baja, para codificar un bloque actual. Al reducir el tiempo y la complejidad asociados con la realizacion del proceso de prediccion intra, las tecnicas pueden promover una codificacion de video en tiempo real y/o codificacion de video casi en tiempo real mejoradas.
Para ilustrar, la unidad de seleccion de modo 43 puede realizar inicialmente las tecnicas descritas en esta divulgacion para determinar un bloque actual a fin de codificar a partir de la unidad de division 40. La unidad de seleccion de modo 43 puede calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra. El conjunto actual de modos de prediccion intra puede incluir menos modos de prediccion intra que un numero total de modos de prediccion intra disponibles para la codificacion de un bloque actual de los datos de video. A menudo, el conjunto predefinido de modos de prediccion intra incluye los modos que se observa que tienen mas probabilidades estadfsticas de ser utilizados cuando se realiza una prediccion intra. Es decir, en algunos ejemplos, la unidad de seleccion de modo 43 puede determinar uno o mas datos estadfsticos que indican el numero de veces que se seleccionan uno o mas modos. Basandose al menos en
5
10
15
20
25
30
35
40
45
50
55
60
65
parte en los datos estadfsticos, la unidad de seleccion de modo 43 puede seleccionar los modos incluidos en el primer conjunto de modos de prediccion intra.
En algunos casos, el conjunto predefinido puede ser fijo. En un ejemplo, este conjunto predefinido incluye los modos 0, 1 y 26. Este conjunto predefinido puede, en este momento, comprender un conjunto actual de modos de prediccion intra para el bloque actual. En algunos casos, el conjunto predefinido puede estar formado por el modo plano, los modos mas probables y los modos angulares muestreados con un desplazamiento de muestreo, como se describe en mayor detalle mas adelante. Dado que el modo plano y los modos mas probables pueden aparecer a menudo como el modo seleccionado final, la unidad de seleccion de modo 43 puede determinar los costes aproximados de estos respectivos modos y los modos para el conjunto actual.
Para identificar los modos mas probables incluidos en el conjunto predefinido, la unidad de seleccion de modo 43 puede identificar uno o mas modos de prediccion intra de bloques codificados previamente, como se describe en mayor detalle mas adelante con respecto a las FIG. 4A-4B y 5. Los bloques codificados previamente pueden ser bloques contiguos que son adyacentes al bloque actual. Los modos de prediccion intra de estos llamados bloques contiguos pueden tener una probabilidad relativamente alta de ser iguales o similares a los modos de prediccion intra que proporcionan una tasa-distorsion baja para el bloque actual debido a una proximidad espacial de los bloques contiguos al bloque actual. En consecuencia, el codificador de video 20 puede identificar estos modos intra de los bloques contiguos como modos mas probables, calcular los costes aproximados de los modos mas probables e incluir los modos en el conjunto actual.
Para identificar uno o mas modos angulares mediante un desplazamiento de muestreo, la unidad de seleccion de modo 43 puede muestrear uno o mas modos angulares incluidos en un grupo de todos los posibles modos angulares de prediccion intra, como se describe en mayor detalle con respecto a la FIG. 6 de esta divulgacion. La unidad de seleccion de modo 43 puede no calcular los costes aproximados para todos los modos angulares de prediccion con el fin de reducir el numero de calculos de costes aproximados. En su lugar, la unidad de seleccion de modo 43 puede muestrear uno o mas modos angulares mediante un desplazamiento. Es decir, mediante un desplazamiento para seleccionar los modos para el calculo de costes aproximado, la unidad de seleccion de modo 43 puede muestrear de manera uniforme un subconjunto del total de posibles modos angulares de prediccion.
En el proceso de muestreo, la unidad de seleccion de modo 43 puede determinar, para un subconjunto muestreado de todos los posibles modos angulares, si cada modo angular muestreado respectivo se incluye en una lista de corte. Una lista de corte puede incluir uno o mas modos de prediccion intra que aparecen con una probabilidad baja o la mas baja. Por ejemplo, el uno o mas modos de prediccion intra pueden estar asociados con probabilidades y/o frecuencias respectivas que no satisfacen un valor de umbral (por ejemplo, son menores que un valor de umbral). Si un modo angular muestreado respectivo esta incluido en una lista de corte, la unidad de seleccion de modo 43 puede no calcular un coste aproximado para el modo y anadir el modo al conjunto actual. Ademas, en algunos ejemplos, si la unidad de seleccion de modo 43 ya ha calculado el coste aproximado para un modo angular muestreado respectivo, la unidad de seleccion de modo 43 puede no calcular un coste aproximado para el modo. A traves de este proceso de muestreo de uno o mas modos angulares, la unidad de seleccion de modo 43 puede incluir uno o mas modos angulares muestreados en el conjunto predefinido de modos de prediccion intra.
El conjunto actual, en algunos ejemplos, puede presentar una longitud N de modos predefinidos en orden ascendente de coste aproximado (por ejemplo, coste SATD). En HM, N se establece en 8 para un tamano de PU de 4x4 y 8x8, y en 3 para un tamano de PU superior a 8x8. Cuanto menor sea el valor de la variable N, menos calculos de coste tasa-distorsion completos puede realizar la unidad de seleccion de modo 43. Para conseguir un equilibrio entre la complejidad y la eficiencia de codificacion, la unidad de seleccion de modo 43 puede establecer N en 3 para un tamano de PU de 4x4 y 8x8, y puede establecer N en 2 para un tamano de PU de 16x16 y 32x32.
Tras construir inicialmente un conjunto actual que incluye un conjunto predefinido de modos y antes de postprocesar el conjunto actual como se describe en mayor detalle a continuacion, la unidad de seleccion de modo 43 puede realizar una busqueda para refinar el conjunto actual. En la FIG. 8 se ilustran en mayor detalle unos ejemplos de tecnicas para refinar el conjunto actual. En un ejemplo, la unidad de seleccion de modo 43 puede seleccionar un modo del conjunto predefinido de modos de prediccion intra que presenta el coste aproximado relativo mas bajo entre los costes aproximados calculados para cada modo identificado en el conjunto predefinido de modos de prediccion intra. Para ilustrar, el modo 26 puede presentar el coste aproximado mas bajo del conjunto predefinido de modos de prediccion intra. Por tanto, la unidad de seleccion de modo 43 puede comenzar la busqueda desde el modo 26, en la que el valor de modo, es decir, 26, se reduce e incrementa en un cierto desplazamiento F hasta llegar a 26 + F y 26 - F. La unidad de seleccion de modo 43 puede entonces calcular los costes aproximados para cada uno de los modos 26 + F y 26 - F y selecciona el modo con los costes aproximados mas bajos entre los modos 26, 26 + F y 26 - F. La unidad de seleccion de modo 43 puede entonces reemplazar un modo del conjunto actual basandose en esta comparacion, por ejemplo, reemplazando el modo 26 del conjunto actual por el modo seleccionado que presenta los costes aproximados mas bajos entre los modos 26, 26 + F y 26- F.
La unidad de seleccion de modo 43 puede repetir la busqueda de esta manera, reduciendo a la mitad F hasta F / 2, volviendo a centrar la busqueda en el modo 26 (si ni el modo 26 + F ni el modo 26 - F tenian un coste aproximado
5
10
15
20
25
30
35
40
45
50
55
60
inferior al modo 26), el modo 26 + F (si el modo 26 + F se habfa anadido al conjunto actual) o el modo 26 - F (si el modo 26 - F se habfa anadido al conjunto actual). En otros ejemplos, la unidad de seleccion de modo 43 puede dividir F por cualquier valor adecuado d, donde d es igual a 2 en el ejemplo actual. La unidad de seleccion de modo 43 puede continuar el proceso de busqueda hasta que F se divida en un numero fraccionario (suponiendo que F comience como un valor que es una potencia de dos). Asf pues, si F se establece en 4, por ejemplo, se repite el proceso una vez con F = 4, una vez con F = 2, una vez con F = 1 y termina cuando F = 0,5.
Tras generar inicialmente el conjunto actual que incluye los modos predefinidos de prediccion intra y/o los modos angulares de prediccion intra seleccionados mediante el proceso de refinamiento, la unidad de seleccion de modo 43 puede realizar el postprocesamiento de la lista actual, como se ilustra en mayor detalle en las figuras 7A, 7B. Mientras que los modos mas probables pueden aparecer con probabilidades mas altas que el modo para la prediccion intra de bloques, los modos mas probables pueden no presentar necesariamente costes aproximados pequenos. Por tanto, usar solo los modos mas probables del conjunto actual puede resultar en perdidas sustanciales de rendimiento. En consecuencia, la unidad de seleccion de modo 43 puede usar tanto los modos mas probables como el coste aproximado para postprocesar el conjunto actual y seleccionar un modo para la prediccion intra del bloque actual. Es decir, la unidad de seleccion de modo 43 puede realizar el postprocesamiento en el conjunto actual de tal forma que el conjunto actual incluye modos con los modos mas probables y un coste aproximado relativamente pequeno.
Para postprocesar el conjunto actual, la unidad de seleccion de modo 43 puede determinar un modo mas probable con el coste aproximado mas bajo de todos los posibles modos mas probables. La unidad de seleccion de modo 43 puede comparar este modo de prediccion intra mas probable que presenta el coste aproximado mas bajo con un umbral. En algunos ejemplos, la comparacion de umbral puede definirse de acuerdo con la siguiente ecuacion:
En la ecuacion anterior, la variable J puede ser el coste aproximado (por ejemplo, SATD) de un modo de prediccion intra no mas probable del conjunto actual, mientras que la variable Jm es el coste aproximado del modo de prediccion intra mas probable que presenta el coste aproximado mas bajo de todos los posibles modos mas probables. En la ecuacion anterior, la variable T se refiere a un umbral, que presenta tfpicamente un valor entre 0 y 1. La ecuacion establece que si el valor absoluto de la diferencia entre Jm y J dividido por J es menor que un valor de umbral T, la unidad de seleccion de modo 43 anade el modo mas probable en lugar del modo no mas probable con el cual se ha comparado el modo mas probable. De esta manera, la unidad de seleccion de modo 43 puede reemplazar uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones.
De acuerdo con las tecnicas expuestas en esta descripcion, la unidad de seleccion de modo 43 puede por tanto proporcionar un proceso de decision rapida de modo para prediccion intra. Estas tecnicas pueden reducir el numero de calculos de costes aproximados a menos de 17. En algunos ejemplos, estas tecnicas pueden reducir el numero de calculos de costes tasa-distorsion completos a 3 (para un tamano de PU de 4x4 y 8x8) y 2 (para un tamano de PU mayor que 8x8)
La unidad de seleccion de modo 43 puede a continuacion realizar un analisis tasa-distorsion completo con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra postprocesados para determinar un coste tasa-distorsion para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra. La unidad de prediccion intra 46 puede a continuacion realizar la prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes distorsion-tasa determinados para codificar el bloque actual. A menudo, la unidad de prediccion intra 46 realiza el modo que presenta el coste tasa-distorsion mas bajo.
Como se ha descrito anteriormente, en algunos ejemplos, la unidad de seleccion de modo 43 puede determinar si se va a realizar o no la busqueda refinada de modos de prediccion intra adicionales. En un ejemplo, el conjunto actual construido inicialmente con anterioridad a la busqueda refinada puede incluir los modos 0, 1 y el modo angular 26. La unidad de seleccion de modo 43 puede determinar si se va a realizar o no la busqueda refinada basandose en si el coste aproximado calculado para el modo 26 es el coste aproximado mas bajo con respecto a los costes aproximados calculados para el modo 0 y el modo 1. Es decir, la unidad de seleccion de modo 43 puede determinar si el coste aproximado mas bajo del conjunto actual esta asociado con un modo angular, en contraste con, por ejemplo, un modo plano o un modo mas probable. En este sentido, si el coste aproximado mas bajo esta asociado con un modo angular en el conjunto actual, la unidad de seleccion de modo 43 puede buscar modos de prediccion intra adicionales basandose en los costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra. Por el contrario, si los modos 0, 1 y 26 estan todos en el conjunto actual y el modo 26 no esta asociado con el coste aproximado mas bajo con respecto a los costes aproximados calculados para el modo 0 y el modo 1, la unidad de seleccion de modo 43 puede no realizar la busqueda refinada del conjunto actual. Asf, en algunos casos, la unidad de seleccion de modo 43 puede realizar la busqueda refinada
5
10
15
20
25
30
35
40
45
50
55
60
65
descrita anteriormente cuando el modo asociado con el coste aproximado mas bajo es un modo angular.
En algunos ejemplos, tras el postprocesamiento del conjunto actual, la unidad de prediccion intra 46 puede realizar una prediccion intra para codificar el bloque actual de acuerdo con uno de los modos de prediccion intra identificados por el conjunto actual postprocesado de modos de prediccion intra. Mediante un modo seleccionado, la unidad de prediccion intra 46 puede determinar un bloque predictivo para codificar el bloque actual. Por ejemplo, el modo de prediccion puede indicar que bloque o grupo de bloques evaluara el modo de prediccion intra para seleccionar el bloque predictivo.
Despues de que la unidad de prediccion intra 46 determine el bloque predictivo para el bloque de video actual, el sumador 50 forma un bloque de video residual restando el bloque predictivo del bloque de video actual. Los datos de video residuales del bloque residual pueden incluirse en una o mas TU y aplicarse a la unidad de procesamiento de transformada 52. La unidad de procesamiento de transformada 52 transforma los datos de video residuales en coeficientes de transformada residuales mediante una transformada, tal como una transformada de coseno discreta (DCT) o una transformada similar desde un punto de vista conceptual. La unidad de procesamiento de transformada 52 puede convertir los datos de video residuales de un dominio de pixel a un dominio de transformada, tal como un dominio de frecuencia.
La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificacion 54. La unidad de cuantificacion 54 cuantifica los coeficientes de transformada para reducir mas la tasa de bits. El proceso de cuantificacion puede reducir la profundidad de bits asociada con algunos o la totalidad de los coeficientes. El grado de cuantificacion puede modificarse ajustando un parametro de cuantificacion. En algunos ejemplos, la unidad de cuantificacion 54 puede realizar a continuacion una exploracion de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificacion de entropfa 56 puede realizar la exploracion.
Tras la cuantificacion, la unidad de codificacion de entropfa 56 realiza la codificacion de entropfa de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificacion de entropfa 56 puede realizar una codificacion de longitud variable adaptativa segun el contexto (CAVLC), una codificacion aritmetica binaria adaptativa segun el contexto (CABAC), una codificacion aritmetica binaria adaptativa segun el contexto basada en la sintaxis (SBAC), una codificacion de entropfa por division de intervalos de probabilidad (PIPE) u otros procedimientos o tecnicas de codificacion de entropfa. La unidad de codificacion de entropfa 56 tambien puede realizar la codificacion de entropfa de los vectores de movimiento y los otros elementos sintacticos para el segmento de video actual que se esta codificando. Tras la codificacion de entropfa realizada por la unidad de codificacion de entropfa 56, el flujo de bits codificado puede transmitirse al decodificador de video 30, o archivarse para su posterior transmision o recuperacion por el decodificador de video 30.
La unidad de codificacion de entropfa 56 puede codificar la informacion que indica el modo de prediccion intra seleccionado de acuerdo con las tecnicas de esta divulgacion. El codificador de video 20 puede incluir en los datos de configuracion de flujo de bits transmitidos, una o mas tablas de indices de modos de prediccion intra y una pluralidad de tablas de indices de modos de prediccion intra modificada (tambien denominadas tablas de asignacion de palabras de codigo), definiciones de contextos de codificacion para varios bloques, datos de video codificados, etc. Estos tipos de informacion que el codificador de video 20 puede incluir en el flujo de bits transmitidos se facilitan a tftulo de ejemplo, y tambien pueden incluirse muchos otros tipos de informacion en el flujo de bits.
La unidad de cuantificacion inversa 58 y la unidad de procesamiento de transformada inversa 60 aplican una cuantificacion inversa y una transformada inversa, respectivamente, para reconstruir el bloque residual en el dominio de pixel, para su posterior uso como un bloque de referencia de una imagen de referencia. La unidad de compensacion de movimiento 44 puede calcular un bloque de referencia anadiendo el bloque residual a un bloque predictivo de una de las imagenes de referencia de una de las listas de imagenes de referencia. La unidad de compensacion de movimiento 44 tambien puede aplicar uno o mas filtros de interpolacion al bloque residual reconstruido para calcular valores de pixel de subentero para su uso en la estimacion de movimiento. El sumador 62 anade el bloque residual reconstruido al bloque predictivo con compensacion de movimiento generado por la unidad de compensacion de movimiento 44 para generar un bloque de referencia para su almacenamiento en la memoria de imagenes de referencia 64. La unidad de estimacion de movimiento 42 y la unidad de compensacion de movimiento 44 pueden usar el bloque de referencia como un bloque de referencia para realizar la prediccion intra de un bloque en una trama o imagen de video subsiguiente.
La FIG. 3 es un diagrama de bloques que ilustra un ejemplo de decodificador de video 30 que puede implementar las tecnicas descritas en esta divulgacion. En el ejemplo de la FIG. 3, el decodificador de video 30 incluye una unidad de decodificacion de entropfa 70, una unidad de prediccion 73, una unidad de cuantificacion inversa 76, una unidad de procesamiento de transformada inversa 78, un sumador 80 y una memoria de imagenes de referencia 82. La unidad de prediccion 73 incluye la unidad de compensacion de movimiento 72 y la unidad de prediccion intra 74. En algunos ejemplos, el decodificador de video 30 puede realizar un pase de decodificacion que en general es recfproco del pase de codificacion descrito con respecto al codificador de video 20 de la FIG. 2.
5
10
15
20
25
30
35
40
45
50
55
60
65
Durante el proceso de decodificacion, el decodificador de video 30 recibe un flujo de bits de video codificado que representa bloques de video de un segmento de video codificado y elementos sintacticos asociados, desde el codificador de video 20. El flujo de bits codificado puede incluir, entre otro tipo de informacion, unos modos de prediccion que corresponden a los bloques y que han sido seleccionados por la unidad de seleccion de modo 43 como se ha descrito anteriormente con respecto a la FIG. 2, de acuerdo con unas tecnicas de la divulgacion. La unidad de decodificacion de entropfa 70 del decodificador de video 30 puede realizar la descodificacion de entropfa del flujo de bits para generar coeficientes cuantificados, vectores de movimiento y otros elementos sintacticos. La unidad de decodificacion de entropfa 70 puede enviar los vectores de movimiento y otros elementos sintacticos a la unidad de prediccion 73. El decodificador de video 30 puede recibir los elementos sintacticos del nivel del segmento de video y/o el nivel del bloque de video.
Cuando el segmento de video se codifica como un segmento de codificacion intra (I), la unidad de prediccion intra 74 de la unidad de prediccion 73 puede generar datos de prediccion para un bloque de video del segmento de video actual, basandose en un modo de prediccion intra indicado y unos datos de bloques previamente decodificados de la trama o imagen actual. La unidad de prediccion intra 74 puede determinar que el modo de prediccion intra apropiado para decodificar el bloque actual de datos de video basandose en un fndice corresponde al modo de prediccion intra para el bloque actual. La unidad de seleccion de modo 43 puede haber seleccionado previamente el modo de prediccion intra como se ha descrito previamente con respecto a la FIG. 2, y el fndice puede haberse incluido en el flujo de bits codificado enviado por el codificador de video 20 al decodificador de video 30. La unidad de prediccion intra 74 puede seleccionar un bloque predictivo basandose en el modo de prediccion intra correspondiente al fndice. El sumador 80 puede anadir los datos del bloque predictivo y los datos del bloque residual de la unidad de procesamiento de transformada inversa 78 para generar el bloque actual decodificado. La memoria 82 puede almacenar el bloque actual decodificado, que puede ser posteriormente enviado por un dispositivo de visualizacion o enviado a otro dispositivo de calculo.
Como se senalo anteriormente, los aspectos de esta divulgacion se refieren en general a intra-codificacion. Como tal, ciertas tecnicas de esta divulgacion pueden ser realizadas por la unidad de prediccion intra 74. Es decir, por ejemplo, la unidad de prediccion intra 74 puede llevar a cabo las tecnicas de esta divulgacion descritas con respecto a las FIGs. 4A-8 siguientes. En otros ejemplos, una o mas unidades de decodificador de video distintas 30 pueden de forma adicional o alternativa ser responsables de la realizacion de las tecnicas de esta divulgacion.
Cuando la imagen de video esta codificada como un segmento inter-codificado (por ejemplo, B, P o GPB), la unidad de compensacion de movimiento 72 de la unidad de prediccion 73 genera bloques predictivos para un bloque de video del segmento de video actual, basandose en los vectores de movimiento y otros elementos sintacticos recibidos desde la unidad de decodificacion de entropfa 70. Los bloques predictivos pueden ser generados a partir de una de las imagenes de referencia dentro de una de las listas de imagenes de referencia. El decodificador de video 30 puede construir las listas de imagenes de referencia, la Lista 0 y la Lista 1, usando tecnicas de construccion por defecto, basandose en las imagenes de referencia almacenadas en la memoria de imagenes de referencia 82.
La unidad de compensacion de movimiento 72 determina la informacion de prediccion para un bloque de video del segmento de video actual, analizando los vectores de movimiento y otros elementos sintacticos, y usa la informacion de prediccion para generar los bloques predictivos para el bloque de video actual que esta siendo decodificado. Por ejemplo, la unidad de compensacion de movimiento 72 usa algunos de los elementos sintacticos recibidos para determinar un modo de prediccion (por ejemplo, prediccion intra o prediccion inter), usada para codificar los bloques de video del segmento de video, un tipo de segmento de prediccion inter (por ejemplo, segmento B, segmento P o segmento GPB), informacion de construccion para una o mas de las listas de imagenes de referencia del segmento, vectores de movimiento para cada bloque de video inter-codificado del segmento, el estado de prediccion inter para cada bloque de video inter-codificado del segmento y otra informacion, para decodificar los bloques de video en el segmento de video actual.
La unidad de compensacion de movimiento 72 tambien puede realizar la interpolacion basandose en filtros de interpolacion. La unidad de compensacion de movimiento 72 puede usar filtros de interpolacion como los usados por el codificador de video 20 durante la codificacion de los bloques de video, para calcular valores interpolados para fracciones de pfxeles de bloques de referencia. En este caso, la unidad de compensacion de movimiento 72 puede determinar los filtros de interpolacion usados por el codificador de video 20 a partir de los elementos sintacticos recibidos y usar los filtros de interpolacion para generar bloques predictivos.
La unidad de cuantificacion inversa 76 cuantifica de manera inversa, por ejemplo, des-cuantifica, los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y decodificados por la unidad de decodificacion de entropfa 70. El proceso de cuantificacion inversa puede incluir el uso de un parametro de cuantificacion calculado por el codificador de video 20 para cada bloque de video en el segmento de video, para determinar un grado de cuantificacion y, asimismo, un grado de cuantificacion inversa que deberfa aplicarse. La unidad de procesamiento de transformada inversa 78 aplica una transformada inversa, por ejemplo una DCT inversa, una transformada inversa entera o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio de pfxeles.
5
10
15
20
25
30
35
40
45
50
55
60
65
Despues de que la unidad de compensacion de movimiento 72 genera el bloque predictivo para el bloque de video actual, basandose en los vectores de movimiento y otros elementos sintacticos, el decodificador de video 30 forma un bloque de video decodificado sumando los bloques residuales procedentes de la unidad de procesamiento de transformada inversa 78 con los correspondientes bloques predictivos generados por la unidad de compensacion de movimiento 72. El sumador 80 representa el componente o los componentes que llevan a cabo esta operacion de suma. Si se desea, tambien puede aplicarse un filtro de desbloqueo para filtrar los bloques decodificados, con el fin de eliminar distorsiones de efecto pixelado. Otros filtros de bucle (ya sea en el bucle de codificacion o despues del bucle de codificacion) tambien pueden ser usados para allanar las transiciones de pfxeles, o mejorar de otro modo la calidad del video. Los bloques de video decodificados en una trama o imagen dada son a continuacion almacenados en la memoria de imagenes de referencia 82, que almacena imagenes de referencia usadas para la posterior compensacion de movimiento. La memoria de imagenes de referencia 82 almacena tambien video decodificado para su presentacion posterior en un dispositivo de visualizacion, tal como el dispositivo de visualizacion 32 de la FIG. 1.
La FIG. 4A es un diagrama de bloques que ilustra una representacion conceptual de los modos de prediccion intra que un codificador de video puede seleccionar, de acuerdo con las tecnicas descritas en esta divulgacion. Las normas de codificacion de video, tales como H.264 / AVC, MPEG-2, y HEVC usan tramas de codificacion de video hfbridas basadas en bloques. En estas tramas, una imagen se divide en bloques de diferentes tamanos, que en HEVC se llama una (unidad de codificacion) CU. Como se ha descrito anteriormente, cada CU se puede dividir en bloques mas pequenos para la prediccion (PU) o transformada (TU). Cada PU se puede predecir ya sea dentro del segmento actual en el caso de modo de intra o de los segmentos temporalmente contiguos en el caso de modo de inter. El error de prediccion se transforma, cuantifica y codifica usando tecnicas de codificacion de longitud variable, como se describe en las FIGs. 1-3.
En los datos de video puede existir una correlacion relativamente alta entre las muestras en un area de rectangulo y las muestras que estan inmediatamente adyacentes a esa zona. En algunos ejemplos, las tecnicas de codificacion de video tales como HEVC usan prediccion intra para predecir las PU actuales a partir de muestras en las PU adyacentes, codificadas previamente. En HEVC, la prediccion intra ofrece 35 modos diferentes para diferentes UP. Los 35 modos incluyen el modo planar (modo 0), modo de DC (modo 1) y 33 modos de prediccion angulares que corresponden a 33 direcciones de prediccion de angulos +/- [0,2,5,9,13,17,21,26, 32] / 32.
La FIG. 4A ilustra las 35 direcciones de prediccion angulares para todos los modos definidos en HEVC. En el modo planar (indicada como "modo 0" o "0"), el codificador de video 20 puede predecir valores de pixel para el bloque actual de los valores de pixel en la columna adyacente a la columna de la izquierda del bloque actual y los valores de pixel en la fila adyacente a la fila de arriba del bloque actual. En el modo de DC (indicado como "modo 1" o "1"), el codificador de video 20 puede calcular un bloque predictivo a partir de la media de la suma de los valores de los pfxeles en la fila por encima de la fila superior del bloque actual y los valores de los pfxeles en la columna adyacente a la columna mas a la izquierda del bloque actual. En el modo de prediccion angular, el codificador de video 20 puede predecir pfxeles a lo largo de un angulo dado (que se representa mas arriba como los modos de prediccion intra 2-34) tfpicamente a partir de los valores de pfxeles de la fila por encima de la fila superior del bloque actual o los valores de pixel de la columna adyacente a la columna mas a la izquierda del bloque actual.
Al realizar una prediccion intra, el codificador de video puede seleccionar entre varios modos diferentes de prediccion intra. Al realizar una prediccion intra, el codificador de video a menudo analiza un coste aproximado asociado con cada uno de los 35 modos de prediccion intra. Este coste aproximado puede aproximarse a un coste de distorsion de frecuencia. El calculo de un coste de distorsion de frecuencia tfpicamente requiere que el codificador de video calcule un bloque predicho utilizando cada uno de los modos de prediccion intra, determine una diferencia entre cada uno de los bloques predichos y el bloque actual (que comunmente se conoce como un "bloque residual" que especifica los valores de pixel residuales indicados anteriormente), transforme cada uno de los bloques residuales desde el dominio espacial al dominio de la frecuencia, cuantice cada uno de los bloques residuales transformados para generar bloque de video codificado correspondiente y, a continuacion decodifique el bloque de video codificado, comparando cada uno de los bloques de video decodificados con el bloque actual para determinar una metrica de distorsion. Ademas, este analisis de la distorsion de frecuencia implica el calculo, para cada uno de los modos de prediccion intra, de la cantidad de bits usados para indicar cada uno de los bloques de video codificados. Por lo tanto, el codificador de video puede calcular un coste aproximado en lugar de llevar a cabo este analisis de la distorsion de frecuencia para cada uno de los bloques predichos utilizando uno correspondiente de los 35 modos de prediccion intra.
En algunos ejemplos, el codificador de video puede calcular un coste aproximado para cada uno de los bloques predichos usando cada uno de los modos de prediccion intra. Por ejemplo, el codificador de video puede calcular inicialmente 35 costes aproximados correspondientes a cada uno de los 35 modos de prediccion intra. El codificador de video puede realizar a continuacion un analisis tasa-distorsion completo para algun subconjunto de modos de prediccion intra ya que el coste aproximado puede aproximarse de forma incorrecta a un coste tasa-distorsion en ciertas circunstancias.
Aunque la simplificacion anterior usando un subconjunto puede reducir la cantidad de calculos requeridos en comparacion con la busqueda de fuerza bruta, tales tecnicas en general todavfa requieren 35 calculos de los costes
5
10
15
20
25
30
35
40
45
50
55
60
65
aproximados correspondientes a cada uno de los 35 modos de prediccion intra. Si bien tales tecnicas pueden reducir el numero de veces que el codificador de video lleva a cabo el analisis de la distorsion de frecuencia con calculos complejos, este proceso tal vez no sea muy adecuado para la codificacion en tiempo real o la codificacion casi en tiempo real de datos de video, dada la complejidad y el tiempo requerido para calcular los costes aproximados para cada uno de los 35 modos. En algunos entornos de codificacion de video en tiempo real, los requisitos de procesamiento para calcular los costes aproximados para todos los modos posibles podra superar las limitaciones de diseno.
De acuerdo con las tecnicas descritas en esta divulgacion, el codificador de video 20 puede reducir aun mas el numero de modos en que se realiza el analisis de la distorsion de frecuencia, potencialmente reduciendo de ese modo el tiempo y la complejidad asociados con la realizacion de un proceso de prediccion intra. Por ejemplo, el codificador de video 20 puede determinar inicialmente un subconjunto de modos de prediccion predefinidos que estadfsticamente es mas probable que se utilicen al realizar prediccion intra. El codificador de video 20 puede entonces refinar el subconjunto mediante la busqueda de modos de prediccion intra adicionales que proporcionan un coste mas bajo aproximado de distorsion de frecuencia. Por ejemplo, el codificador de video 20 puede identificar un modo de prediccion intra en la busqueda que ofrezca un coste aproximado de distorsion de frecuencia mas bajo.
Basandose en un coste de distorsion aproximado asociado con el modo de prediccion intra identificado, el codificador de video 20 puede anadir el modo identificado al subconjunto y/o sustituir un modo predefinido en el subconjunto por el modo identificado. De esta manera, el codificador de video 20 puede refinar el subconjunto de modos de prediccion para incluir modos que proporcionen un coste aproximado de distorsion de frecuencia mas bajo. En consecuencia, el codificador de video 20 puede llevar a cabo analisis de distorsion de frecuencia completo solo para los modos de prediccion intra identificados en el subconjunto de modos de prediccion intra en lugar de todos los posibles modos de prediccion intra. Dado que el numero de modos de prediccion intra en el conjunto actual puede ser menor que el numero total de modos de prediccion intra y proporcionar un coste aproximado distorsion de frecuencia mas bajo, las tecnicas de la divulgacion pueden reducir los requisitos de complejidad y de procesamiento para llevar a cabo la seleccion de modo. En algunos ejemplos, la reduccion de tales requisitos de procesamiento puede mejorar el rendimiento de codificacion de video en codificadores de video de procesamiento en paralelo y/o en serie. Al reducir el tiempo y la complejidad asociados con realizar el proceso de prediccion intra, el codificador de video 20 puede llevar a cabo la codificacion de video en tiempo real o la codificacion de video casi en tiempo real.
La FIG. 4B es un diagrama de bloques que ilustra una representacion conceptual de un bloque actual para ser codificada de forma intra-predictiva y los bloques contiguos, de acuerdo con las tecnicas descritas en esta divulgacion. La FIG. 4B ilustra un ejemplo de un bloque actual 100, que se puede denominar una unidad de codificacion actual ("CU actual") y dos bloques contiguos, el bloque 102 ("bloque A") y el bloque 104 ("bloque B"), que pueden considerarse durante la intra-codificacion. Por ejemplo, un codificador de video puede considerar los modos de prediccion intra usados para codificar el bloque contiguo 102 (situado a la izquierda del bloque actual) y el bloque contiguo 104 (situado por encima del bloque actual) como los modos de intra mas probables del bloque actual.
Como se ha descrito anteriormente en las FIGs. 2 y 4A, un codificador de video puede calcular un coste aproximado que puede aproximarse a un coste de distorsion de frecuencia, en lugar de calcular los costes totales de distorsion de frecuencia. En lugar de calcular el coste aproximado para cada uno de los posibles modos de prediccion intra, un codificador de video puede identificar uno o mas de los llamados modos de prediccion intra "mas probables" durante la codificacion de prediccion intra. Para identificar un modo mas probable, un codificador de video puede identificar un modo de prediccion intra de los bloques previamente codificados (que a menudo son bloques contiguos que son adyacentes al bloque actual). Los modos de intra de estos llamados bloques contiguos pueden tener una probabilidad relativamente alta de ser iguales o similares al bloque actual debido a una proximidad espacial de los bloques contiguos al bloque actual. Un codificador de video puede reducir el numero de calculos coste aproximados solo a estos modos mas probables o estos modos mas probables y otros modos probables (tales como los modos de DC y planar) que es estadfsticamente mas probable que se utilicen al realizar prediccion intra que otros modos.
Un codificador de video puede formar una lista de un tamano identificado arriba (de 8 a 10 para bloques de un 8x8 tamano o menos y de 3 a 5 para bloques de un tamano mayor que 8x8), ordenando a los modos de prediccion intra que tengan el coste aproximado mas bajo en la lista por sus respectivos costes. Es decir, el modo de coste mas bajo puede estar colocado primero en la lista, seguido por el segundo modo de coste mas bajo, etc. El codificador de video puede entonces identificar los modos mas probables basandose en los modos de prediccion intra usados para codificar los bloques contiguos y anadir estos modos a la lista, ya sea anadiendo estos modos a la lista. En algunos casos, estos modos mas probables pueden ya estar presentes en la lista, con lo cual el codificador de video no vuelve a anadir este modo mas probable a la lista. El codificador de video puede a continuacion realizar el analisis de distorsion de frecuencia completo con respecto a los modos de la lista, reduciendo asf el numero de bloques predichos para los cuales el codificador de video lleva a cabo el analisis de distorsion de frecuencia completo.
Si bien este proceso puede reducir el numero de veces que el codificador de video lleva a cabo el analisis de la distorsion de frecuencia con calculos complejos, este proceso todavfa tal vez no sea muy adecuado para la codificacion en tiempo real o la codificacion casi en tiempo real de datos de video, dada la complejidad y el tiempo
5
10
15
20
25
30
35
40
45
50
55
60
65
requerido para realizar calculos de costes aproximados para cada uno de los 35 modos. De acuerdo con las tecnicas descritas en esta divulgacion, un codificador de video en paralelo, tal como el codificador de video 20 en algunos ejemplos, (es decir, un codificador de video que codifica los bloques contiguos 102 y 104 simultaneamente con el bloque actual de codificacion 100) solamente puede calcular los costes aproximados para una subconjunto del total de 35 modos de prediccion intra ilustrados en la FIG. 4A, lo cual puede reducir de ese modo la complejidad de seleccion de modo y proporcionar ahorros de costes en terminos de produccion de codificador de video 20.
En funcionamiento, el codificador de video 20 puede calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto predefinido de modos de prediccion intra que incluye al menos un modo de prediccion intra, pero menos de un numero total de modos de prediccion intra disponibles para la codificacion de un bloque actual de los datos de video. A menudo, este conjunto predefinido incluye los modos que se observa que tienen mas probabilidades estadfsticas de ser utilizados cuando se realiza una prediccion intra. En algunos casos, este conjunto predefinido puede ser fijo. Este conjunto predefinido puede, en este momento, comprender un conjunto actual de modos de prediccion intra para el bloque actual. En algunos casos, el conjunto predefinido puede estar formado por el modo planar, los modos probables de modo y modos angulares muestreados con un desplazamiento de muestreo.
El codificador de video 20 puede entonces buscar modos de prediccion intra adicionales (por ejemplo, como se representa en la FIG. 4A), anadiendo los modos de prediccion intra adicionales al conjunto actual de modos de prediccion intra. En algunos ejemplos, esta busqueda puede ser similar a una busqueda binaria, en la que el codificador de video 20 empieza desde el modo en el conjunto predefinido de modos de prediccion intra que tiene el coste aproximado calculado relativo mas bajo entre los costes aproximados calculados para cada modo identificado en la conjunto predefinido de modos de prediccion intra.
Para ilustrar, el modo 26 puede tener el coste mas bajo aproximado. Bajo este supuesto, el codificador de video 20 puede comenzar la busqueda desde el modo 26, en el que el valor del modo, es decir, 26, se disminuye y aumenta un cierto desplazamiento F para llegar a 26 + F y 26 - F. El codificador de video 20 puede entonces calcular los costes aproximados para cada uno de los modos de 26 + F y 26 - F y selecciona el modo con los costes aproximados mas bajos entre los modos de 26, 26 + F y 26 - F. El codificador de video 20 puede a continuacion sustituir un modo en el conjunto actual basandose en esta comparacion, por ejemplo, sustituyendo el modo 26 en el conjunto actual con el modo seleccionado que tiene los costes aproximados mas bajos entre los modos de 26, 26, 26 + F y 26 - F.
El codificador de video 20 a continuacion repite la busqueda de esta manera, reducir a la mitad F a F / 2, volviendo a centrar la busqueda en el modo de 26 (si ninguno de los modos 26 + F o el modo 26 - F tenfan un coste aproximado inferior al modo 26), el modo 26 + F (si el modo 26 + F se anadio al conjunto actual) o el modo 26 - F (si el modo 26 - F se anadio al conjunto actual). El codificador de video 20 continua el proceso de busqueda hasta que F se divide en un numero fraccionario (suponiendo que F comienza como un valor que es una potencia de dos).
De esta manera, el codificador de video 20 puede buscar modos de prediccion intra adicionales basandose en los costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra y calcular los costes aproximados para cada uno de los modos de prediccion intra adicionales . El codificador de video 20 puede agregar los modos de prediccion intra adicionales al conjunto actual de modos de prediccion intra basandose en una comparacion de los costes aproximados calculados para cada uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra y los costes aproximados calculados para los modos de prediccion intra adicionales.
La FIG. 5 es un diagrama de flujo que ilustra operaciones a modo de ejemplo de un codificador de video, tal como el codificador de video 20 mostrado en la FIG. 2, que reducen la complejidad de la seleccion del modo a la hora de seleccionar a partir de multiples modos de prediccion diferentes. En concreto, el codificador de video 20 puede construir un conjunto de candidatos inicial que incluye los modos predefinidos, y postprocesar, el conjunto actual. Aunque no se representa en la FIG. 5, el codificador de video 20 puede, en algunos ejemplos, refinar el conjunto actual para identificar mejor los modos con costes aproximados bajos, que se ilustra con mas detalle en la FIG. 8. En la realizacion de estas tecnicas de la divulgacion, el codificador de video 20 puede reducir el numero de modos en el conjunto actual. El codificador de video 20 puede usar la lista de candidatos postprocesados en un proceso de optimizacion de distorsion de frecuencia y seleccionar un mejor modo (por ejemplo, la distorsion de frecuencia mas baja) para intra-predecir un bloque actual.
Inicialmente, el codificador de video 20 puede calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que tiene al menos un modo de prediccion intra (120). El conjunto actual de modos de prediccion intra puede incluir menos modos de prediccion intra que un numero total de modos de prediccion intra disponibles para la codificacion de un bloque actual de los datos de video. El conjunto predefinido de modos de prediccion intra puede incluir aquellos modos que se ha observado que es estadfsticamente mas probable que se utilicen al realizar prediccion intra. Es decir, en algunos ejemplos, el codificador de video 20 puede determinar una o varias estadfsticas que indican el numero de veces que uno o mas modos se seleccionan, y basandose, al menos en parte,
5
10
15
20
25
30
35
40
45
50
55
60
65
en las estadisticas, el codificador de video 20 puede seleccionar los modos incluidos en el primer conjunto de modos de prediccion intra.
Como se ha descrito anteriormente en la FIG. 2, el conjunto predefinido se puede formar mediante el modo planar, los modos probables de modo y los modos angulares muestreados con un desplazamiento de muestreo. Dado que el modo planar y los modos mas probables pueden aparecer a menudo como el modo seleccionado final, el codificador de video 20 puede determinar los costes aproximados de estos respectivos modos en el conjunto actual como se describe mas adelante.
Para identificar los modos mas probables incluidos en el conjunto predefinido, el codificador de video 20 puede identificar uno o mas modos de prediccion intra de bloques previamente codificados. Los bloques codificados anteriores pueden ser bloques contiguos que son adyacentes al bloque actual, como se ilustra en la FIG. 4B. Los modos mas probables pueden tener una probabilidad relativamente alta de ser el mismo o similar al bloque actual debido a una proximidad espacial de los bloques contiguos con el bloque actual. En consecuencia, el codificador de video 20 puede identificar los modos mas probables, calcular los costes aproximados de los modos mas probables e incluir los modos respectivos en el conjunto actual (122).
Para identificar uno o mas modos angulares utilizando un desplazamiento de muestreo, el codificador de video 20 puede muestrear uno o mas modos angulares incluidos en el grupo de todos los posibles modos de prediccion intra- angulares, como se describe adicionalmente con respecto a la FIG. 6. El codificador de video 20 tal vez no calcule los costes aproximados para todos los modos de prediccion angulares con el fin de reducir el numero de calculos de costes aproximados. En su lugar, el codificador de video 20 puede muestrear uno o mas modos angulares usando un desplazamiento. En algunos ejemplos, mediante el uso de un desplazamiento para seleccionar los modos para el calculo aproximado, el codificador de video 20 puede muestrear de manera uniforme un subconjunto del total de posibles modos de prediccion angulares. Usando una lista de corte como se describe en las FIGs. 2 y 6, el codificador de video 20 puede excluir uno o mas modos angulares muestreados del conjunto actual.
Al generar inicialmente el conjunto actual que incluye los modos de prediccion intra predefinidos y/o modos de prediccion intra angulares, el codificador de video 20 puede realizar postprocesamiento en la lista actual (que se ilustra tambien en las FIGs. 7A, 7B). Mientras que los modos mas probables pueden ocurrir con las probabilidades mas altas como el modo para intra-predecir bloques, los modos mas probables no necesariamente pueden tener pequenos costes aproximados.
Para postprocesar el conjunto actual, el codificador de video 20 puede determinar un modo mas probable con el coste aproximado mas bajo de todos los posibles modos mas probables. Por ejemplo, el codificador de video 20 puede seleccionar un modo asociado con un coste aproximado mas bajo de un grupo de todos los posibles modos mas probables (124). La unidad de seleccion de modo 43 puede comparar este modo de prediccion intra mas probable que presenta el coste aproximado mas bajo con un umbral.
El codificador de video 20 puede determinar si la comparacion satisface un umbral (126). Por ejemplo, si el codificador de video 20 determina que la diferencia entre el coste aproximado del modo de prediccion intra mas probable tiene el coste aproximado mas bajo y el coste aproximado de un modo de prediccion intra no mas probable en el conjunto actual es menor que una valor de umbral (130), el codificador de video 20 puede anadir el modo mas probable en lugar del modo de no mas probable al cual se comparo el modo mas probable (132). En algunos ejemplos, el codificador de video 20 puede dividir aun mas la diferencia por el coste aproximado del modo de no mas probable cuando se realiza la comparacion. En otros ejemplos, si el codificador de video 20 determina que la comparacion del coste aproximado no satisface un umbral (128), el codificador de video 20 puede determinar si se debe seleccionar otro modo mas probable.
El codificador de video 20 puede determinar si se debe seleccionar otro modo mas probable de todos los posibles modos mas probables (124). Por ejemplo, si el codificador de video 20 determina que existe otro modo mas probable no evaluado todavfa por el codificador de video 20 (por ejemplo, un modo mas probable con el siguiente coste aproximado mas bajo), el codificador de video 20 puede seleccionar el coste aproximado asociado con ese modo mas probable seleccionado hace poco (124) y repetir una o mas de las operaciones (124) - (134). De forma alternativa, si no existen modos mas probables no comprobados, y/o el codificador de video 20 no selecciona otro modo mas probable (138), el codificador de video 20 puede generar un coste total de distorsion de frecuencia para cada modo de prediccion intra identificado en el conjunto actual ( 140).
Tras la generacion de los costes totales de distorsion de frecuencia para los respectivos modos de prediccion intra del conjunto actual, el codificador de video 20 puede seleccionar un modo de prediccion intra del conjunto actual basado en los costes de distorsion de frecuencia completos (142). En un ejemplo alternativo, el codificador de video 20 no puede llevar a cabo un analisis de distorsion de frecuencia completo de uno o mas modos del conjunto actual y seleccionar un modo de prediccion intra a partir del conjunto actual establecido basandose en un coste aproximado. En cualquier caso, el codificador de video 20 puede seleccionar, por ejemplo, un modo de prediccion intra. En otros ejemplos, el codificador de video 20 puede seleccionar un modo de prediccion intra que no este asociado con el coste mas bajo aproximado.
5
10
15
20
25
30
35
40
45
50
55
60
65
Al seleccionar un modo de prediccion intra, el codificador de video 20 puede llevar a cabo prediccion intra para codificar el bloque actual usando el modo seleccionado (144). De esta manera, las tecnicas expuestas en esta descripcion pueden proporcionar un proceso de decision de modo rapido para la prediccion intra. Estas tecnicas pueden, en algunos casos, reducir el numero de calculos de coste aproximado a menos de 17. En algunos ejemplos, estas tecnicas pueden reducir el numero de calculos de costes totales de distorsion de frecuencia a 3 (para el tamano de PU de 4x4 y 8x8) y 2 (para tamano de PU mayor que 8x8)
La FIG. 6 es un diagrama de flujo que ilustra operaciones a modo de ejemplo de un codificador de video, tal como el codificador de video 20 mostrado en la FIG. 2, para construir inicialmente un conjunto actual de modos de prediccion intra, de acuerdo con tecnicas de la divulgacion. Especfficamente, en la FIG. 6, el codificador de video 20 puede construir el conjunto actual inicial que incluye uno o mas modos predefinidos y/o modos angulares.
Inicialmente, el codificador de video 20 puede determinar uno o mas modos de prediccion intra predefinidos y calcular un coste aproximado para cada modo (160). Ejemplos de tales modos de prediccion intra predefinidos pueden incluir el modo 0 (el modo planar) y el modo 1, ya que estos modos a menudo aparecen en el modo de prediccion intra seleccionado final. El codificador de video 20 puede determinar los costes aproximados de los modos e insertar los modos en el conjunto actual, que puede tener una longitud N. En algunos ejemplos, el codificador de video 20 inserta los modos en el conjunto actual en orden ascendente de coste aproximado. En HM, N se establece en 8 para el tamano de la PU de 4x4 y 8x8, 3 para el tamano de la PU superior a 8x8. Cuanto menor sea el numero N, menor es el numero de calculos de costes de distorsion de frecuencia que el codificador de video 20 puede llevar a cabo. Para obtener un equilibrio mejorado de la complejidad y la eficacia de la codificacion, el codificador de video 20 puede configurar N a 3 para el tamano de la PU de 4x4 y 8x8, 2 para el tamano de la PU de 16x16 y 32x32.
El codificador de video 20 puede a continuacion determinar uno o mas modos mas probables y calcular un coste aproximado para cada modo (162). Para identificar los modos mas probables, el codificador de video 20 puede identificar un modo de prediccion intra de bloques previamente codificados. Los bloques codificados anteriores pueden ser bloques contiguos que son adyacentes al bloque actual. En algunos casos, hay tres modos mas probables. Los dos primeros son los modos de prediccion intra de las PU situadas arriba y a la izquierda si esas PU estan disponibles y estan codificadas mediante un modo de prediccion intra. Cualquier modo de prediccion no disponible se considera que es el modo de DC intra. Cuando los dos modos mas probables no son iguales, el tercer modo mas probable se fija igual a Intra_Planar, Intra_DC o Intra_Angular [26] (vertical), de acuerdo con cual de estos modos, en este orden, no es un duplicado de uno la primeros dos modos. Cuando los dos primeros modos mas probables son los mismos, si este primer modo tiene el valor Intra planar o Intra DC, el segundo y tercer modos mas probables son asignados como Intra_Planar, Intra_DC, o Intra_Angular [26], de acuerdo con cual de estos modos, en este orden, no son duplicados. Cuando los dos primeros modos mas probables son los mismos y el primer modo tiene un valor angular Intra, el segundo y tercer modos mas probables son elegidos como los dos modos angulares de prediccion que son los mas cercanos al angulo (es decir, el valor de k) del primero.
Los modos mas probables pueden tener una probabilidad relativamente alta de ser el mismo o similar al bloque actual debido a una proximidad espacial de los bloques contiguos con el bloque actual. En consecuencia, el codificador de video 20 puede determinar los costes aproximados de los modos mas probables e insertar los modos en el conjunto actual. En algunos ejemplos, el codificador de video 20 inserta los modos en el conjunto actual en orden ascendente de coste aproximado.
El codificador de video 20 puede tambien anadir uno o mas modos angulares de prediccion intra al conjunto actual. Para reducir el numero de calculos de costes aproximados, el codificador de video 20 tal vez no calcule los costes aproximados para cada posible modo de prediccion intra-angular. En su lugar, el codificador de video 20 puede muestrear uniformemente los modos de prediccion intra angulares con un desplazamiento. En algunos ejemplos, el codificador de video 20 tampoco puede calcular los costes aproximados para uno o mas modos de prediccion intra incluidos en una lista de corte que se describe mas adelante.
Para muestrar uno o mas modos angulares, el codificador de video 20 puede seleccionar un modo angular inicial (164). En algunos ejemplos, el modo angular inicial puede ser un modo angular con un indice de modo de 2. En otros ejemplos, el codificador de video 20 puede determinar el angular inicial basado en el desplazamiento. Por ejemplo, el codificador de video 20 puede seleccionar como modo inicial el modo que tiene un indice igual al desplazamiento o un valor que se basa al menos en parte en el desplazamiento.
El codificador de video 20 puede a continuacion determinar si el indice del modo angular seleccionado es mayor que el numero total de posibles modos angulares (166). Por ejemplo, el numero total de modos angulares puede ser igual a 33 y codificador de video 20 puede determinar si el modo angular seleccionado (por ejemplo, el modo de prediccion intra 2) es inferior a 33. Tras la determinacion de que el indice del modo angular seleccionado es menor que el numero total de posibles modos angulares (168), el codificador de video 20 puede determinar si el modo angular seleccionado esta en una lista de corte. Una lista de corte puede incluir modos de prediccion intra que se seleccionan con bajas o las mfnimas probabilidades. En algunos ejemplos, el codificador de video 20 puede
5
10
15
20
25
30
35
40
45
50
55
60
65
determinar una lista de corte basandose en las estadfsticas recogidas. Por ejemplo, el codificador de video 20 puede determinar redundancias en los 33 modos angulares. Como un ejemplo, el codificador de video 20 puede usar el modo 2 y el modo de 34 para predecir la misma direccion de borde en una imagen. Dado que el codificador de video 20 puede comprobar primero el modo 2, cuando el codificador de video 20 selecciona los modos angulares en orden ascendente, el codificador de video 20 es poco probable que inserte el modo 34 en el conjunto actual. En algunos ejemplos, el modo 34 se puede producir con probabilidades muy bajas.
En algunos ejemplos, el codificador de video 20 puede obtener la lista de corte mediante la determinacion del numero de modos seleccionados por la optimizacion de distorsion de frecuencia completa. De esta manera, el codificador de video 20 puede obtener una distribucion de los modos de prediccion intra. Por ejemplo, las probabilidades de los modos de prediccion intra seleccionadas por el codificador de video 20 pueden depender de uno o mas modos mas probables, es decir, los modos de prediccion intra de las PU contiguas codificadas previamente, tales como las PU izquierda y por encima de la PU actual.
Como un ejemplo de las listas de corte que se basa en uno o mas modos mas probables, el codificador de video puede usar un valor de 4 como el desplazamiento. Para PU de 32x32, la lista de corte seleccionada por el codificador de video 20 puede depender del modo de prediccion de la PU de la izquierda, y una tabla de lista de corte que incluye multiples listas de corte puede definirse como:
UInt Modes2Cut[35][6] = {{34,14,18,22,2,30}, {34,14,18,30,22,2}, {14,22,18,34,30,10},
{22,14,18,34,30,2},
{22,18,34,2,14,30},
{34,30,2,18,22,6},
{34,14,2,30,10,22},
{14,18,34,2,6,30},
{14,18,34,22,2,6},
{22,14,18,30,10,6}}.
{22,18,14,30,34,2},
{34,18,22,2,14,30},
{34,2,22,30,10,18},
{14,34,30,2,10,6},
{34,14,18,2,30,22},
{18,14,22,34,6,2},
{22,34,18,30,14,2}, {18,22,34,2,30,14}, {34,2,22,30,10,14}, {34,14,30, 2,10,18},
{34,18,14,22,2,30}, {14,18,22,34,6,10},
{22,34,18,14,30,2},
{22,34,2,18,30,14},
{34,2,22,30,14,10},
{34,14,18,2,10,30},
{14,34,18,2,22,30},
{14,18,22,34,6,10},
{18,22,14,30,34,2},
{22,18,34,30,14,2},
{34,22,2,18,30,6},
{34,30,2,14,22,10},
{14,34,18,2,10,30},
{14,34,18,22,2,6},
{22,14,18,10,6,30},
En consecuencia, si el modo de prediccion intra de la PU contigua de la izquierda es 2, entonces la lista de corte seleccionada por el codificador de video 20 es {14,22,18,34,30,10}. En la tabla anterior, los modos {34, 14, 18, 22} aparecen el mayor numero de las veces. En consecuencia, en algunos ejemplos, una lista de corte independiente del bloque contiguo puede ser {34, 14, 18, 22}.
En algunos ejemplos, el codificador de video 20 puede construir una lista de corte basandose en los modos de prediccion de los modos de PU contiguos y modos mas probables. Por ejemplo, si los modos de prediccion de las PU contiguas de la izquierda y las PU contiguas de arriba son la misma, el codificador de video 20 puede determinar que esos modos se asocian con altas probabilidades, mientras que los modos que son ortogonales a (por ejemplo, angulos de 90 grados) los modos de alta probabilidad tienen menos probabilidades de ser seleccionados. Por lo tanto, el codificador de video 20 puede construir una lista de corte que incluye los modos que tienen menos probabilidades de ser seleccionados basandose en los modos de los bloques contiguos.
El codificador de video 20 tambien puede determinar, en algunos ejemplos, que la diferencia entre los indices de los modos menos probables y los indices de los modos contiguos o modos mas probables es de aproximadamente un valor entre o igual a 11 a 13. El codificador de video 20 puede incluir en la lista de corte esos modos cuyo indice de modo es diferente de un indice de modo mas probable en un valor aproximadamente entre o igual a 11 a 13. En consecuencia, si el codificador de video 20 determina que dos modos contiguos estan cerca pero no son iguales, a continuacion, el codificador de video 20 puede incluir en la lista de corte aquellos modos que hay en ambos lados, numericamente, de los modos con una diferencia de mas de V. En algunos ejemplos, V puede ser igual a un valor entre 8 y 12 (por ejemplo, 10). De forma alternativa, si el codificador de video 20 determina que los dos modos contiguos estan muy separados (por ejemplo, una gran diferencia entre los indices de modo de los dos modos), el codificador de video 20 puede incluir en la lista de corte uno o varios modos en el punto medio y/o en el modo que tiene un indice de modo entre los respectivos indices de modo de los dos modos contiguos.
En el ejemplo de la FIG. 5, el codificador de video 20 puede determinar si el modo angular seleccionado esta en una lista de corte (170). Si el modo angular seleccionado esta en la lista de corte (172), el codificador de video 20 tal vez no determine el coste aproximado del modo e inserte el modo angular seleccionado en el conjunto actual. El codificador de video 20 puede determinar entonces el siguiente indice angular basandose en el desplazamiento seleccionado por el codificador de video 20. Por ejemplo, el codificador de video 20 puede incrementar el indice del modo angular seleccionado en el desplazamiento en un ejemplo. En otro ejemplo, el codificador de video 20 puede aplicar una funcion para el indice del angular seleccionado utilizando el desplazamiento para determinar el siguiente indice de modo angular.
Si el codificador de video 20 determina que el modo angular seleccionado no esta en la lista de corte (174), el codificador de video puede a continuacion determinar si se ha calculado previamente un coste aproximado para el modo angular seleccionado (176). Si se ha calculado previamente el coste aproximado para el modo angular seleccionado (178), el codificador de video 20 puede a continuacion determinar el siguiente indice de modo angular
5
10
15
20
25
30
35
40
45
50
55
60
65
basandose en el desplazamiento seleccionado por el codificador de video 20, como se ha descrito anteriormente. Si, sin embargo, el coste aproximado no se ha calculado para el modo angular seleccionado (180), el codificador de video 20 puede calcular el coste aproximado para el modo seleccionado (182). El codificador de video 20 puede a continuacion insertar el modo angular en el conjunto actual (184). En algunos ejemplos, el codificador de video 20 a continuacion determina el siguiente indice angular basandose en el desplazamiento seleccionado por el codificador de video 20, como se ha descrito anteriormente. Como se ilustra en la FIG. 6, el codificador de video 20 solo puede calcular el coste aproximado de un modo angular si el modo no esta en la lista de corte y no se ha comprobado antes. En consecuencia, el numero de calculos de costes aproximados N 1 puede ser:
JVj.(SATD) - 1 (planar)+3(MPMs)+ f^~] - K
donde el desplazamiento es el desplazamiento de muestreo para los modos angulares y K es la longitud de la lista de corte.
En algunos ejemplos, si el siguiente indice de modo angular generado es mayor que el numero total de posibles modos angulares (167), el codificador de video 20 puede determinar si el coste aproximado mas bajo en el conjunto actual se asocia con un modo angular (188). Si el coste aproximado mas bajo en el conjunto actual se asocia con un modo angular (190), el codificador de video 20 puede refinar los modos de prediccion intra en el conjunto actual. Otros detalles de las operaciones de refinamiento se describen en la FIG. 8. De forma alternativa, si el codificador de video 20 determina que el coste aproximado mas bajo en el conjunto actual no esta asociado con un modo angular (por ejemplo, el coste aproximado mas bajo esta asociado con uno de los modos predefinidos, tales como modo planar o modo de DC, incluido en conjunto actual), el codificador de video 20 puede procesar posteriormente el conjunto actual como se describe adicionalmente en las figuras. 7A y 7B (194) sin refinar aun mas el conjunto actual.
La FIG. 7A es un diagrama de flujo que ilustra operaciones a modo de ejemplo de un codificador de video, tales como el codificador de video 20 mostrado en la FIG. 2, para al postprocesar un conjunto actual de modos de prediccion intra. Especfficamente, en la FIG. 5, el codificador de video 20 puede realizar el postprocesamiento del conjunto (por ejemplo, un conjunto actual) de los modos de prediccion intra previamente generados por el codificador de video 20.
En algunos ejemplos, el codificador de video 20 puede identificar los modos mas probables que se seleccionan con probabilidades altas y/o numero de veces que ocurren. Dado que un coste aproximado es solo un valor aproximado del coste de distorsion de frecuencia completo, los modos mas probables tal vez no tengan unos costes aproximados pequenos. Por otro lado, utilizando solo los modos mas probables como los modos de candidatos para llevar a cabo el analisis de la distorsion de frecuencia completo puede resultar en una reduccion del rendimiento en algunos ejemplos. Por lo tanto, las tecnicas de la divulgacion implementadas por el codificador de video 20 pueden emplear ambos modos mas probables y costes aproximados cuando se selecciona uno o mas modos de prediccion intra como se ilustra adicionalmente en las FIGs. 7A y 7B. Es decir, en algunos ejemplos, el conjunto actual de modos de prediccion intra puede incluir los modos mas probables y los modos que tienen unos costes aproximados pequenos. Las FIGs. 7A y 7B ilustran postprocesamiento de un conjunto actual basandose en el coste aproximado y los modos mas probables. En algunos ejemplos, el conjunto actual puede ser un conjunto actual de modos de prediccion intra que se genera de acuerdo con las tecnicas ilustradas en la FIG. 6. En algunos ejemplos, el conjunto actual puede ser un conjunto actual de modos de prediccion intra que se refina de acuerdo con las tecnicas ilustradas en la FIG. 8.
Como se ha descrito previamente en el ejemplo de la FIG. 6, el codificador de video 20 puede determinar si uno o mas modos mas probables no incluidos en la lista actual tienen valores de costes aproximados inferiores a uno o mas modos en el conjunto actual. Si el codificador de video 20 determina que una diferencia en coste aproximado entre un modo mas probable no incluido en el conjunto actual y un modo de no mas probable en el conjunto actual es menor que un valor de umbral, el codificador de video 20 puede incluir el modo mas probable en el conjunto actual, por ejemplo, mediante la sustitucion del modo no mas probable.
Inicialmente, el codificador de video 20 puede determinar un modo mas probable que tiene el coste aproximado mas bajo de todos los posibles modos mas probables. Por ejemplo, el codificador de video 20 puede inicialmente seleccionar un modo de una lista de modos mas probables (210). El primer modo mas probable seleccionado por el codificador de video 20 puede ser el modo mas probable asociado con el indice de modo mas probable. Al seleccionar el modo mas probable, el codificador de video 20 puede determinar si el modo mas probable seleccionado esta en el conjunto actual (212) (por ejemplo, el conjunto actual generado usando tecnicas ilustradas en la FIG. 6 y la FIG. 8).
Si el codificador de video 20 determina que el modo mas probable seleccionado se incluye en el conjunto actual (214), el codificador de video 20 puede determinar si aun no se ha evaluado ningun modo mas probables adicional en el grupo de todos los posibles modos mas probables (226 ). Si los modos mas probables adicionales aun no se han evaluado (228), el codificador de video 20 puede seleccionar el siguiente modo mas probable sin evaluar incluido en el grupo de todos los posibles modos mas probables (210).
5
10
15
20
25
30
35
40
45
50
55
60
65
Si el codificador de video 20 determina que el modo mas probable seleccionado no esta incluido en el conjunto actual (216), el codificador de video 20 puede determinar el coste aproximado asociado con el modo mas probable seleccionado. El codificador de video 20 puede determinar si el coste aproximado asociado con el modo mas probable seleccionado es el coste aproximado mas bajo de los modos mas probables previamente comprobados por el codificador de video 20 (218). Es decir, el codificador de video 20 puede retener el indice del modo con el coste aproximado mas bajo (y el coste aproximado correspondiente del modo, en algunos ejemplos), mientras realiza las operaciones de la FIG. 7A. Si el codificador de video 20 determina que el coste aproximado asociado con el modo mas probable seleccionado no es menor que el coste aproximado de cualquier modo mas probable comprobado previamente (222), el codificador de video 20 puede determinar si cualquiera de los modos mas probables adicionales en el grupo de todos los posibles modos mas probables aun no ha sido comprobado (226). Es decir, el codificador de video 20 tal vez no retenga el modo mas probable seleccionado como el modo que tiene el coste aproximado mas bajo de todos los posibles modos mas probables.
Si, sin embargo, el codificador de video 20 determina que el coste aproximado del modo mas probable seleccionado es menor que el coste aproximado de todos los modos mas probables previamente comprobados (220), el codificador de video 20 puede establecer el modo mas probable seleccionado como el modo con el coste aproximado mas bajo (224). Por ejemplo, el codificador de video 20 puede almacenar el indice del modo mas probable seleccionado como el modo con el coste aproximado mas bajo de todos modos mas probables evaluados. De esta manera, el codificador de video 20 puede actualizar el modo mas probable asociado con el coste aproximado mas bajo cuando se repite a traves de cada modo mas probable en el grupo de todos los modos posibles, modos probables. En consecuencia, el codificador de video 20 puede usar estas tecnicas para buscar el grupo de todos los modos posibles, modos probables para seleccionar el modo mas probable con el coste mas bajo aproximado.
Como se describio anteriormente, el codificador de video 20 puede a continuacion determinar si cualquiera de los modos mas probables adicionales en el grupo de todos los posibles modos mas probables todavfa no han sido evaluado (226). Si todavfa no han sido evaluados los modos mas probables adicionales (228), el codificador de video 20 puede seleccionar el siguiente modo mas probable no comprobado (210). Si, sin embargo, el codificador de video 20 determina que todos los modos mas probables han sido evaluados (230), el codificador de video 20 puede a continuacion determinar el modo asociado con el mayor coste aproximado incluido el conjunto actual (232).
En la FIG. 7B, el codificador de video 20 puede seleccionar este modo (por ejemplo, el modo asociado con el mayor coste aproximado incluye el conjunto actual) del conjunto actual (234). Al seleccionar el modo, el codificador de video 20 puede determinar si el modo seleccionado del conjunto actual es un modo mas probable (234). Si el modo seleccionado es un modo mas probable (240), el codificador de video 20 puede seleccionar un modo siguiente en el conjunto actual. Por ejemplo, si el conjunto actual de modos se ordena en orden descendente en funcion del coste aproximado y el codificador de video 20 inicialmente selecciono el modo asociado con el coste aproximado mas alto, el codificador de video 20 puede seleccionar el siguiente modo no evaluado en el conjunto actual asociado con el siguiente coste aproximado mas alto (234).
Si el codificador de video 20 determina que el modo seleccionado no es un modo mas probable (238), el codificador de video 20 puede determinar la diferencia entre el coste aproximado del modo seleccionado en el conjunto actual (es decir, un modo no mas probable) y el coste aproximado del modo mas probable, previamente seleccionado por el codificador de video 20 al (224) como teniendo el coste aproximado mas bajo (242). El codificador de video 20 puede determinar si la diferencia satisface un umbral (244). Por ejemplo, el codificador de video puede determinar si la diferencia satisface un umbral de la siguiente forma:
donde J es el coste aproximado del modo no mas probable, J m es el coste aproximado del modo mas probable previamente seleccionado por el codificador de video 20 en (224) como que tiene el coste aproximado mas bajo, y T es un umbral. Por ejemplo, la diferencia puede satisfacer un umbral cuando el cociente (por ejemplo, valor) es menor que el umbral. En un ejemplo diferente, la diferencia puede satisfacer un umbral cuando el cociente es mayor o igual a un umbral.
Si el codificador de video 20 determina que la diferencia satisface un umbral (246), el codificador de video 20 puede reemplazar el modo seleccionado del conjunto actual por el modo mas probable previamente seleccionado por el codificador de video 20 en (224) como que tiene el coste aproximado mas bajo (250). Si el codificador de video 20 determina que la diferencia no satisface un umbral (248), el codificador de video 20 tal vez no pueda sustituir el modo seleccionado por el modo mas probable previamente seleccionado por el codificador de video 20 en (224) como que tiene el coste aproximado mas bajo.
El codificador de video 20 puede entonces seleccionar un modo del conjunto actual para intra-predecir el bloque actual (252). Es decir, el codificador de video 20 puede llevar a cabo analisis de la distorsion de frecuencia para el
5
10
15
20
25
30
35
40
45
50
55
60
65
bloque actual usando los modos incluidos en el conjunto actual que ha sido postprocesado de acuerdo con las operaciones ilustradas en las FIGs. 7A y 7B. Por ejemplo, el codificador de video 20 puede seleccionar un modo del conjunto actual postprocesado para intra-codificar el bloque actual. En algunos ejemplos, el codificador de video 20 puede seleccionar un mejor modo que esta asociado con el coste aproximado mas bajo del conjunto actual. Al seleccionar el modo, el codificador de video 20 puede llevar a cabo prediccion intra para codificar el bloque actual de acuerdo con el modo seleccionado, como se describe adicionalmente en el ejemplo de la FIG. 2. De esta manera, la prediccion intra se basa en el coste aproximado calculado para cada modo de prediccion intra identificado en el conjunto actual postprocesado de los modos de los cuales el mejor modo es seleccionado por el codificador de video 20.
En algunos ejemplos, tambien podnan usarse los costes aproximados distintos del coste SATD, tales como el SSD, SAD o frecuencias de bits estimadas. En algunos ejemplos, el codificador de video 20 puede realizar varias iteraciones de las tecnicas anteriores hasta que el conjunto actual ya no cambie. En otros ejemplos, el codificador de video 20 evalua menos de la totalidad de los modos mas probables, como limitando la evaluacion a uno (cuando el modo de intra la PU de la izquierda es igual al modo de intra de la PU anterior) o dos modulos de multiprocesamiento (cuando el modo de intra de la PU de la izquierda no es igual al modo de intra de la PU anterior) para reducir la complejidad del proceso de busqueda.
La FIG. 8 es un diagrama de flujo que ilustra operaciones a modo de ejemplo de un codificador de video, tal como el codificador de video 20 mostrado en la FIG. 2, que reducen la complejidad de la seleccion del modo a la hora de seleccionar a partir de multiples modos de prediccion diferentes. Espedficamente, en la FIG. 8, el codificador de video 20 puede afinar un conjunto (por ejemplo, un conjunto actual) de modos de prediccion intra previamente generados por el codificador de video 20. Como se ha ilustrado previamente en la FIG. 6, el codificador de video genera inicialmente un conjunto actual de modos de prediccion intra predefinidos. Sin embargo, los modos en el conjunto actual no necesariamente tienen los costes aproximados mas pequenos de todos los posibles modos de prediccion intra, en parte, debido al muestreo aproximado de los modos angulares. En el ejemplo de la FIG. 8, el codificador de video 20 puede implementar un proceso de refinamiento para recuperar uno o mas modos con menores costes aproximados que esos modos incluidos en el conjunto actual construido inicialmente.
Inicialmente, el codificador de video 20 puede seleccionar un modo inicial que es el modo M angular con el coste aproximado mas bajo del conjunto actual. Por ejemplo, el codificador de video 20 puede determinar inicialmente un valor de paso para seleccionar modos en el proceso de refinamiento (270). En algunos ejemplos, el valor del paso puede ser igual al valor de desplazamiento usado por el codificador de video 20 para probar los modos angulares en la FIG. 6. El codificador de video 20 puede a continuacion seleccionar un modo del conjunto actual (272). Si el codificador de video 20 determina que el modo seleccionado no es un modo angular (276), el codificador de video 20 puede seleccionar el siguiente modo en el conjunto actual (272). Si el codificador de video 20 determina que el modo seleccionado es un modo angular y tiene el coste aproximado mas bajo de los modos angulares actualmente incluidos en el conjunto actual (278), el codificador de video 20 puede proceder a actualizar el valor del paso. Por ejemplo, el valor de paso actualizado puede ser igual al presente valor de paso dividido por un numero. Por ejemplo, el valor de paso actualizado puede ser igual a la presente valor de paso dividido por 2, es decir, el valor conjunto actualizado = (valor de paso actual / 2).
El codificador de video 20 puede a continuacion determinar si el valor de paso actualizado satisface un umbral. Por ejemplo, el video 20 puede determinar que un valor de umbral sea 0. Cuando el valor del paso actualizado es menor que el umbral, el codificador de video 20 puede proceder a postprocesar el conjunto actual para realizar prediccion intra (296) como se ilustra con mas detalle en las FIGs. 7A y 7B.
Si el valor del paso satisface un umbral (por ejemplo, el valor de paso es mayor que 0) (284), el codificador de video 20 puede determinar los costes aproximados de los dos modos contiguos M - paso y M + paso donde Mpuede referirse a un mdice del modo seleccionado anteriormente en (274). Por ejemplo, el codificador de video 20 puede determinar un coste aproximado para un modo que tiene un mdice de modo igual a la diferencia del valor de paso y el mdice de modo del modo seleccionado actualmente (es decir, el modo angular seleccionado previamente asociado con el coste aproximado mas bajo en el conjunto actual generado inicialmente) (288). Por ejemplo, si el mdice del modo angular seleccionado previamente asociado con el coste aproximado mas bajo en el conjunto actual generado inicialmente es M, el codificador de video 20 puede determinar un coste aproximado para un modo que tiene un mdice M - paso (es decir, la diferencia entre el mdice de modo de M y el valor de paso paso).
El codificador de video 20 tambien puede determinar un coste aproximado para un modo que tiene un mdice de modo igual a una suma del valor de paso y el mdice de modo del modo seleccionado actualmente (es decir, el modo angular seleccionado previamente asociado con el coste aproximado mas bajo del conjunto actual generado inicialmente) (290). Por ejemplo, si el mdice del angulo previamente seleccionado mas asociado con el coste aproximado mas bajo en el conjunto actual generado inicialmente es M, el codificador de video 20 puede determinar un coste aproximado para un modo que tiene un mdice M + paso (es decir, la suma entre el mdice de modo M y el valor de pasopaso).
Cuando el mdice de modo M es un modo de lfmite tal como 2, o 34, el codificador de video 20 puede acortar (es
5
10
15
20
25
30
35
40
45
50
55
60
decir, no seleccionar) uno o mas de los modos contiguos, y en lugar de eso seleccionar el propio modo M. De forma alternativa, el codificador de video 20 puede seleccionar modos en una direccion numerica opuesta. Por ejemplo, si el modo M =2, el codificador de video 20 puede obtener el modo contiguo M - paso recortando a 2, o seleccionado un modo adyacente en la direccion opuesta que lleva a modo de 34. En estos ejemplos, el codificador de video 20 puede insertar los dos modos contiguos, 2 y 34, en el conjunto actual en el orden de coste aproximado ascendente dependiendo de si sus costes aproximados son mas pequenos que los del conjunto actual.
Al determinar el coste aproximado para los modos M + paso y M - paso, el codificador de video 20 puede almacenar cada uno de los dos modos respectivos en el conjunto actual. En algunos ejemplos, el codificador de video 20 puede almacenar aun mas el coste aproximado asociado con cada modo respectivo en el conjunto actual. En cualquier caso, el codificador de video 20 puede seleccionar el modo que tiene el coste aproximado mas bajo entre los modos M, M + paso, y M - paso como el siguiente modo seleccionado a ser evaluado por el codificador de video 20 (294). Es decir, el codificador de video 20 puede determinar el siguiente modo seleccionado utilizando la siguiente expresion:
Mode = arg( min /(ApproximateCost(m)) )
m£{M — step, M, M + step}
En algunas implementaciones, para reducir aun mas el numero de calculos en la obtencion coste aproximado, si el coste aproximado de M - paso (M paso) se calcula primero y se descubre que el coste aproximado de M - paso (M + paso) es mas pequeno que el del modo M, el calculo adicional del coste aproximado de M + paso (M - paso) puede ser omitido y el modo M se sustituye con M - paso ( M + paso). En algunas implementaciones, el conjunto actual inicialmente construido con anterioridad a la busqueda precisa puede incluir los modos 0, 1, y el modo angular 26, y el modo 26 no esta asociado con el coste aproximado mas bajo en relacion con los costes aproximados calculados para el modo planar 0 y el modo de CC 1, entonces la busqueda precisa de mas arriba se pueden saltar.
Al seleccionar el modo que tiene el coste aproximado mas bajo entre los modos M, M + paso, y M - paso, el codificador de video 20 puede actualizar el valor del paso (280). Por ejemplo, el valor de paso de actualizado puede ser igual a (valor de paso actual / 2). Como se ha descrito anteriormente, si el codificador de video 20 determina que el valor de paso actualizado no satisface un umbral (por ejemplo, es menor que cero) (286), el codificador de video 20 puede proceder a postprocesar el conjunto actual para realizar prediccion intra en el bloque actual (296). Si el codificador de video 20 determina que el valor de paso actualizado satisface un umbral (por ejemplo, es mayor que cero) (284), el codificador de video 20 puede llevar a cabo el proceso ilustrado en la FIG. 8 de nuevo, usando el modo que tiene el coste mas bajo aproximado entre los modos M, M + paso, y M - paso, como el modo seleccionado.
Las tecnicas a modo de ejemplo de la FIG. 8 pueden dar lugar a un numero de calculos de costes aproximados N 2 (SATD) igual a 2log 2 (desplazamiento). El codificador de video 20 puede por consiguiente iterar a traves de uno o mas modos angulares, refinando el conjunto actual con los modos angulares que tienen costes aproximados mas bajos, hasta que el umbral ya no se cumple. En un caso de ejemplo donde el desplazamiento de muestreo es 4 en la FlG. 6, puede haber 4 calculos de costes aproximados en las operaciones (280) - (294) de la FIG. 8 cuando se repite a traves de los modos de prediccion intra angulares del conjunto actual. En consecuencia, el numero total de calculos aproximados N (SATD) puede expresarse como:
AT (SATD) = A/^SATD) + JV2(SATD) = 4 +
33
offset
- K + 21og2(step)
En un ejemplo donde el desplazamiento = 4, para el tamano de la PU de 32x32, la longitud de la lista de corte puede ser 4, por lo que las tecnicas de la divulgacion pueden reducir el numero total de calculos de coste aproximado (por ejemplo, SATD) a 13. De esta manera, las tecnicas de la divulgacion pueden proporcionar una reduccion de la complejidad en comparacion con la realizacion de 35 calculos de costes aproximados en otras implementaciones (por ejemplo, HM).
En algunos ejemplos, para generar un conjunto actual de modos con menores costes aproximados de promedio, el codificador video 20 puede repetir las tecnicas de la FIG. 8. Por ejemplo, si los modos delante del modo evaluado inicial se actualizan en el paso anterior, el codificador de video 20 puede repetir las operaciones (280) - (294) para este modo de actualizacion (que ahora es el modo angular con el coste aproximado mas pequeno) en la lista de candidatos. Si los modos en la parte delantera del modo evaluado inicial no se actualizan en el paso anterior al (294), el video codificado 20 puede repetir las operaciones (280) - (294) para el modo angular con el siguiente coste aproximado mas pequeno.
En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de los mismos. Si se implementan en software, las funciones, como una o mas instrucciones o codigo, pueden almacenarse en, o transmitirse por, un medio legible por ordenador. Los medios legibles por ordenador pueden incluir tanto medios de almacenamiento de datos informaticos como medios de comunicacion, incluyendo cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro. Los medios de
5
10
15
20
25
30
35
almacenamiento de datos pueden ser medios disponibles cualesquiera, a los que se pueda acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para la implementacion de las tecnicas descritas en esta divulgacion. A modo de ejemplo, y no de manera limitativa, tales medios legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda usarse para transportar o almacenar codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion puede denominarse debidamente un medio legible por ordenador. Por ejemplo, si el software se transmite desde una sede de la Red, un servidor u otra fuente remota, usando un cable coaxial, un cable de fibra optica, un par trenzado, una lfnea de abonado digital (DSL) o tecnologfas inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologfas inalambricas tales como infrarrojos, radio y microondas, se incluyen en la definicion de medio. Los discos, como se usan en el presente documento, incluyen el disco compacto (CD), el disco de laser, el disco optico, el disco versatil digital (DVD), el disco flexible y el disco Blu-ray, donde algunos discos normalmente reproducen datos de manera magnetica, mientras que otros discos reproducen los datos de manera optica con laser. Las combinaciones de lo anterior tambien deberfan incluirse dentro del alcance de los medios legibles por ordenador.
El codigo puede ser ejecutado por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados de aplicacion especffica (ASIC), matrices logicas de campo programable (FPGA), u otro circuito logico integrado o discreto equivalente. Por consiguiente, el termino "procesador", como se usa en el presente documento, puede referirse a cualquier estructura anterior o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de hardware especializado y/o modulos de software configurados para la codificacion y la decodificacion, o incorporarse en un codec combinado. Ademas, las tecnicas podrfan implementarse completamente en uno o mas circuitos o elementos logicos.
Las tecnicas de esta divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos, incluyendo un equipo de mano inalambrico, un circuito integrado (IC) o un conjunto de IC (por ejemplo, un conjunto de chips). Varios componentes, modulos o unidades se describen en esta divulgacion para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, pero no requieren necesariamente la realizacion mediante diferentes unidades de hardware. Mas bien, como se ha descrito anteriormente, pueden combinarse diversas unidades en una unidad de hardware de codec, o ser proporcionadas por una coleccion de unidades de hardware inter-operativas, incluyendo uno o mas procesadores, como se ha descrito anteriormente, conjuntamente con el software y/o firmware adecuado.
Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes reivindicaciones.
Claims (10)
- 5101520253035404550556065REIVINDICACIONESProcedimiento de codificacion de datos de video, en el que el procedimiento comprende:obtencion de una pluralidad de modos de prediccion intra disponibles para codificar un bloque actual de datos de video;calculo de un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra de la pluralidad de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra, en el que el conjunto actual de modos de prediccion intra incluye menos modos de prediccion intra que la pluralidad de modos de prediccion intra disponibles para codificar el bloque actual de los datos de video;calculo de un coste aproximado para uno o mas modos de prediccion intra mas probables para el bloque actual determinado basandose en unos modos de prediccion intra usados para codificar uno o mas bloques contiguos de datos de video adyacentes al bloque actual;comparacion de cada uno de los costes aproximados calculados para el uno o mas modos de prediccion intra mas probables con un umbral;reemplazo de uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables si la comparacion satisface el umbral;realizacion de un analisis tasa-distorsion con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra para determinar un coste tasa-distorsion para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra despues de dicho reemplazo de uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones; yrealizacion de codificacion de prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes tasa-distorsion determinados para codificar el bloque actual.El procedimiento segun la reivindicacion 1, que comprende ademas:busqueda de modos de prediccion intra adicionales basandose en unos costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra;calculo de unos costes aproximados para cada uno de los modos de prediccion intra adicionales; yadicion de los modos de prediccion intra adicionales al conjunto actual de modos de prediccion intra basandose en una comparacion de los costes aproximados calculados para al menos uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra y al menos uno de los costes aproximados calculados para los modos de prediccion intra adicionales.El procedimiento segun la reivindicacion 1, que comprende ademas:determinacion de si un modo asociado con un coste aproximado mas bajo que esta incluido en el conjunto actual es un modo angular; yen respuesta a la determinacion de que el modo asociado con el coste aproximado mas bajo que esta incluido en el conjunto actual es un modo angular, busqueda de modos de prediccion intra adicionales basandose en los costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra.El procedimiento segun la reivindicacion 1, que comprende ademas:seleccion de un modo angular entre una pluralidad de modos angulares;determinacion de si el modo angular esta incluido en una lista de corte, en el que la lista de corte comprende al menos un modo de prediccion intra que aparece con una probabilidad que no satisface un umbral; yen respuesta a la determinacion de que el modo angular esta incluido en la lista de corte, no51015 6.2025
- 7.3035
- 8.4045
- 9.505560determinacion de un coste aproximado para el modo angular.El procedimiento segun la reivindicacion 4, en el que el modo angular es un primer modo angular, comprendiendo ademas el procedimiento:determinacion de un segundo modo angular basandose al menos en parte en un desplazamiento respecto al primer modo angular;en respuesta a la determinacion de que el segundo modo angular no esta incluido en una lista de corte:calculo de un coste aproximado asociado con el segundo modo angular; einsercion del segundo modo angular en el conjunto actual.El procedimiento segun la reivindicacion 1, que comprende ademas:determinacion de un modo mas probable asociado con un coste aproximado mas bajo entre una pluralidad de modos mas probables;determinacion de un valor basandose al menos en parte en una diferencia entre el modo mas probable y al menos un modo del conjunto actual; yen respuesta a la determinacion de que el valor satisface un umbral, insercion del modo mas probable en el conjunto actual para reemplazar el al menos un modo del conjunto actual.El procedimiento segun la reivindicacion 1, que comprende ademas:determinacion de un primer modo angular asociado con un coste aproximado mas bajo del conjunto actual, en el que el primer modo angular esta asociado con un primer fndice de modo;determinacion de un segundo modo angular asociado con un segundo fndice de modo que comprende una suma del primer fndice de modo angular y un valor de paso; ydeterminacion de un tercer modo angular asociado con un tercer fndice de modo que comprende una diferencia del primer fndice de modo angular y el valor de paso.El procedimiento segun la reivindicacion 7, en el que el coste aproximado mas bajo asociado con el primer modo angular es un primer coste aproximado, comprendiendo ademas el procedimiento:determinacion de un segundo coste aproximado asociado con el segundo modo angular;determinacion de un tercer coste aproximado asociado con el tercer modo angular; yen respuesta a la determinacion de que al menos uno del segundo o tercer coste aproximado es menor que el primer coste aproximado, insercion del segundo o tercer modo asociado respectivamente con el al menos uno del segundo o tercer coste aproximado que es menor que el primer coste aproximado en el conjunto actual para reemplazar un primer modo.Dispositivo de codificacion de video configurado para realizar un proceso de prediccion intra para codificar datos de video, comprendiendo el dispositivo de codificacion de video:medios para obtener una pluralidad de modos de prediccion intra disponibles para codificar un bloque actual de datos de video;medios para calcular un coste aproximado para cada modo de prediccion intra identificado en un conjunto actual de modos de prediccion intra de la pluralidad de modos de prediccion intra que incluye un conjunto predefinido de modos de prediccion intra que presenta al menos un modo de prediccion intra, en el que el conjunto actual de modos de prediccion intra incluye menos modos de prediccion intra que la pluralidad de modos de prediccion intra disponible para codificar el bloque actual de datos de video;medios para calcular un coste aproximado para uno o mas modos de prediccion intra mas probables para el bloque actual determinados basandose en unos modos de prediccion intra usados para codificar uno o mas bloques contiguos de datos de video adyacentes al bloque actual;medios para comparar cada uno de los costes aproximados calculados para el uno o mas modos de prediccion intra mas probables con un umbral;5101520253035404550556065medios para reemplazar uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones si la comparacion satisface el umbral;medios para realizar un analisis tasa-distorsion con respecto a cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra para determinar un coste tasa-distorsion para cada modo de prediccion intra identificado en el conjunto actual de modos de prediccion intra despues de dicho reemplazo de uno o mas de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra por el uno o mas modos de prediccion intra mas probables basandose en las comparaciones; ymedios para realizar una codificacion de prediccion intra con respecto al bloque actual de acuerdo con uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra basandose en los costes tasa-distorsion determinados para codificar el bloque actual.
- 10. Dispositivo de codificacion de video segun la reivindicacion 9, que comprende ademas:medios para buscar modos de prediccion intra adicionales basandose en unos costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra;medios para calcular unos costes aproximados para cada uno de los modos de prediccion intra adicionales; ymedios para anadir los modos de prediccion intra adicionales al conjunto actual de modos de prediccion intra basandose en una comparacion de los costes aproximados calculados para al menos uno de los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra y al menos uno de los costes aproximados calculados para los modos de prediccion intra adicionales.
- 11. Dispositivo de codificacion de video segun la reivindicacion 9, que comprende ademas:medios para determinar si un modo asociado con un coste aproximado mas bajo que esta incluido en el conjunto actual es un modo angular; ymedios para buscar modos de prediccion intra adicionales basandoseen los costes aproximados calculados para los modos de prediccion intra identificados en el conjunto actual de modos de prediccion intra, en respuesta a la determinacion de que el modo asociado con el coste aproximado mas bajo que esta incluido en el conjunto actual es un modo angular.
- 12. Dispositivo de codificacion de video segun la reivindicacion 9, que comprende ademas:medios para seleccionar un modo angular entre una pluralidad de modos angulares;medios para determinar si el modo angular esta incluido en una lista de corte, en el que la lista de corte comprende al menos un modo de prediccion intra que aparece con una probabilidad que no satisface un umbral; ymedios para no determinar un coste aproximado para el modo angular, en respuesta a la determinacion de que el modo angular esta incluido en la lista de corte.
- 13. Dispositivo de codificacion de video segun la reivindicacion 12, en el que el modo angular es un primer modo angular, comprendiendo ademas el dispositivo de codificacion de video:medios para determinar un segundo modo angular basandose al menos en parte en un desplazamiento respecto al primer modo angular;en respuesta a la determinacion de que el segundo modo angular no esta incluido en una lista de corte: medios para calcular un coste aproximado asociado con el segundo modo angular; y medios para insertar el segundo modo angular en el conjunto actual.
- 14. Dispositivo de codificacion de video segun la reivindicacion 9, que comprende ademas:medios para determinar un modo mas probable asociado con un coste aproximado mas bajo entre una510pluralidad de modos mas probables;medios para determinar un valor basandose al menos en parte en una diferencia entre el modo mas probable y al menos un modo del conjunto actual; ymedios para insertar el modo mas probable en el conjunto actual para reemplazar el al menos un modo del conjunto actual, en respuesta a la determinacion de que el valor satisface un umbral.
- 15. Medios de almacenamiento legibles por ordenador no transitorios que presentan instrucciones almacenadas en los mismos que, al ejecutarse, hacen que uno o mas procesadores emprendan el procedimiento segun cualquiera de las reivindicaciones 1 a 8.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/756,659 US9426473B2 (en) | 2013-02-01 | 2013-02-01 | Mode decision simplification for intra prediction |
| US201313756659 | 2013-02-01 | ||
| PCT/US2014/010231 WO2014120389A1 (en) | 2013-02-01 | 2014-01-03 | Mode decision simplification for intra prediction |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2625821T3 true ES2625821T3 (es) | 2017-07-20 |
Family
ID=50033784
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES14702664.5T Active ES2625821T3 (es) | 2013-02-01 | 2014-01-03 | Simplificación de decisión de modo para predicción intra |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US9426473B2 (es) |
| EP (1) | EP2951996B1 (es) |
| JP (1) | JP6284954B2 (es) |
| KR (1) | KR101752989B1 (es) |
| CN (1) | CN104937936B (es) |
| ES (1) | ES2625821T3 (es) |
| HU (1) | HUE032054T2 (es) |
| WO (1) | WO2014120389A1 (es) |
Families Citing this family (53)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN108848379A (zh) * | 2010-12-07 | 2018-11-20 | 韩国电子通信研究院 | 视频编解码方法、生成比特流的方法和存储比特流的介质 |
| US9148667B2 (en) | 2013-02-06 | 2015-09-29 | Qualcomm Incorporated | Intra prediction mode decision with reduced storage |
| US10003792B2 (en) | 2013-05-27 | 2018-06-19 | Microsoft Technology Licensing, Llc | Video encoder for images |
| US10136140B2 (en) | 2014-03-17 | 2018-11-20 | Microsoft Technology Licensing, Llc | Encoder-side decisions for screen content encoding |
| US20150271491A1 (en) * | 2014-03-24 | 2015-09-24 | Ati Technologies Ulc | Enhanced intra prediction mode selection for use in video transcoding |
| JP6308449B2 (ja) * | 2014-06-26 | 2018-04-11 | ホアウェイ・テクノロジーズ・カンパニー・リミテッド | 高効率ビデオ符号化における演算負荷を低減するための方法および装置 |
| US20170264904A1 (en) * | 2014-09-23 | 2017-09-14 | Intel Corporation | Intra-prediction complexity reduction using limited angular modes and refinement |
| US9807398B2 (en) * | 2014-09-30 | 2017-10-31 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Mode complexity based coding strategy selection |
| US10142626B2 (en) | 2014-10-31 | 2018-11-27 | Ecole De Technologie Superieure | Method and system for fast mode decision for high efficiency video coding |
| GB2534606A (en) * | 2015-01-29 | 2016-08-03 | Canon Kk | Method and device for encoding or decoding an image comprising encoding of decoding information representing prediction modes |
| EP3254463A4 (en) | 2015-02-06 | 2018-02-21 | Microsoft Technology Licensing, LLC | Skipping evaluation stages during media encoding |
| US10085027B2 (en) * | 2015-03-06 | 2018-09-25 | Qualcomm Incorporated | Adaptive mode checking order for video encoding |
| CN105100799B (zh) * | 2015-04-25 | 2018-07-31 | 芯原微电子(北京)有限公司 | 一种减少hevc编码器中帧内编码时延的方法 |
| US10038917B2 (en) | 2015-06-12 | 2018-07-31 | Microsoft Technology Licensing, Llc | Search strategies for intra-picture prediction modes |
| US10136132B2 (en) | 2015-07-21 | 2018-11-20 | Microsoft Technology Licensing, Llc | Adaptive skip or zero block detection combined with transform size decision |
| US9432668B1 (en) * | 2016-03-15 | 2016-08-30 | NGCodec Inc. | Apparatus and method for inter and intra mode selection and block partitioning |
| EP3453174B1 (en) | 2016-05-06 | 2024-11-27 | InterDigital Madison Patent Holdings, SAS | Method and system for decoder-side intra mode derivation for block-based video coding |
| FR3051309A1 (fr) * | 2016-05-10 | 2017-11-17 | Bcom | Procedes et dispositifs de codage et de decodage d'un flux de donnees representatif d'au moins une image |
| CN115118970B (zh) | 2016-05-13 | 2025-09-23 | 交互数字Vc控股公司 | 用于视频编码的通用式多假设预测的系统及方法 |
| US20170347094A1 (en) * | 2016-05-31 | 2017-11-30 | Google Inc. | Block size adaptive directional intra prediction |
| US10958903B2 (en) * | 2016-10-04 | 2021-03-23 | Electronics And Telecommunications Research Institute | Method and apparatus for encoding/decoding image and recording medium storing bit stream |
| CN109845261B (zh) | 2016-10-07 | 2021-11-09 | 联发科技股份有限公司 | 图像和视频编解码中帧内色度编解码的方法及装置 |
| KR20180041833A (ko) * | 2016-10-17 | 2018-04-25 | 디지털인사이트 주식회사 | 화면 내 예측에 대한 참조 모드 리스트를 사용하는 비디오 코딩 방법 및 장치 |
| US20180146191A1 (en) * | 2016-11-22 | 2018-05-24 | Futurewei Technologies, Inc. | System and Method for Coding Intra Prediction Mode using a Second Set of Most Probable Modes |
| US10511853B2 (en) * | 2016-11-24 | 2019-12-17 | Ecole De Technologie Superieure | Method and system for parallel rate-constrained motion estimation in video coding |
| US10609367B2 (en) * | 2016-12-21 | 2020-03-31 | Qualcomm Incorporated | Low-complexity sign prediction for video coding |
| KR101967028B1 (ko) * | 2016-12-21 | 2019-04-09 | 전자부품연구원 | 고효율 비디오 부호화 모드 결정방법 및 결정장치 |
| KR102539354B1 (ko) * | 2016-12-28 | 2023-06-02 | 엘지전자 주식회사 | 인트라 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
| CN116828172A (zh) * | 2017-01-02 | 2023-09-29 | Lx 半导体科技有限公司 | 图像编码/解码方法、图像数据的发送方法以及存储介质 |
| US10469877B1 (en) * | 2017-04-28 | 2019-11-05 | Mozilla Corporation | Systems and methods for reduced complexity entropy coding |
| US10630974B2 (en) * | 2017-05-30 | 2020-04-21 | Google Llc | Coding of intra-prediction modes |
| CN107222743B (zh) * | 2017-07-04 | 2020-02-04 | 西安万像电子科技有限公司 | 一种图像处理方法、装置和系统 |
| CN115174913B (zh) * | 2017-07-24 | 2025-05-09 | 艾锐势有限责任公司 | 帧内模式jvet编译方法 |
| CN109587491B (zh) | 2017-09-28 | 2022-09-23 | 腾讯科技(深圳)有限公司 | 一种帧内预测方法、装置及存储介质 |
| US11178405B2 (en) * | 2017-10-18 | 2021-11-16 | Samsung Electronics Co., Ltd. | Method and apparatus for video decoding, and method and apparatus for video encoding |
| US11284108B2 (en) * | 2017-10-24 | 2022-03-22 | Wilus Institute Of Standards And Technology Inc. | Video signal processing method and apparatus |
| WO2019096221A1 (en) * | 2017-11-17 | 2019-05-23 | Fg Innovation Ip Company Limited | Device and method for coding video data based on adjusted intra mode list |
| WO2019129166A1 (en) * | 2017-12-29 | 2019-07-04 | Fg Innovation Ip Company Limited | Device and method for coding video data based on mode list including different mode groups |
| EP3744102B1 (en) | 2018-01-24 | 2026-03-04 | InterDigital VC Holdings, Inc. | Generalized bi-prediction for video coding with reduced coding complexity |
| CN108881905B (zh) * | 2018-08-04 | 2021-08-31 | 福州大学 | 基于概率的帧内编码器优化方法 |
| US10771778B2 (en) * | 2018-09-14 | 2020-09-08 | Tencent America LLC | Method and device for MPM list generation for multi-line intra prediction |
| US11265544B2 (en) | 2018-09-18 | 2022-03-01 | Sony Corporation | Apparatus and method for image compression based on optimal sequential encoding scheme |
| KR20250099458A (ko) | 2019-01-02 | 2025-07-01 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 예측 방향 결정 방법, 디코더 및 컴퓨터 저장 매체 |
| EP3939313A4 (en) * | 2019-03-12 | 2022-12-21 | Sharp Kabushiki Kaisha | SYSTEMS AND METHODS FOR PERFORMING INTRA PREDICTION CODING IN VIDEO CODING |
| CN110139098B (zh) * | 2019-04-09 | 2023-01-06 | 中南大学 | 基于决策树的高效率视频编码器帧内快速算法选择方法 |
| CN110611819B (zh) * | 2019-08-01 | 2021-07-27 | 杭州当虹科技股份有限公司 | 一种提升h.264中b帧质量的编码方法 |
| CN114287131B (zh) | 2019-08-19 | 2025-05-23 | 北京字节跳动网络技术有限公司 | 基于计数器的帧内预测模式的更新 |
| CN110868391A (zh) * | 2019-09-06 | 2020-03-06 | 深圳市朗强科技有限公司 | 一种远距离传输方法、系统及设备 |
| CN110868426A (zh) * | 2019-11-28 | 2020-03-06 | 深圳市朗强科技有限公司 | 一种数据传输方法、系统及设备 |
| JP6849781B2 (ja) * | 2019-12-20 | 2021-03-31 | 日本電信電話株式会社 | 画像符号化装置、画像符号化方法及びコンピュータプログラム |
| CN111277824B (zh) * | 2020-02-12 | 2023-07-25 | 腾讯科技(深圳)有限公司 | 图像预测处理方法、装置、终端及计算机可读存储介质 |
| WO2022108421A1 (ko) * | 2020-11-23 | 2022-05-27 | 현대자동차주식회사 | 적응적 대체 모드를 이용한 영상 부호화 및 복호화 방법 |
| WO2023014164A1 (ko) * | 2021-08-05 | 2023-02-09 | 현대자동차주식회사 | 비디오 부호화/복호화 방법 및 장치 |
Family Cites Families (26)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2003304404A (ja) * | 2002-04-09 | 2003-10-24 | Canon Inc | 画像符号化装置 |
| KR101029762B1 (ko) | 2003-03-03 | 2011-04-19 | 에이전시 포 사이언스, 테크놀로지 앤드 리서치 | 고급 비디오 코딩에 대한 인트라 프레딕션을 위한 신속모드 결정 알고리즘 |
| JP2005184241A (ja) * | 2003-12-17 | 2005-07-07 | Kddi Corp | 動画像フレーム内モード判定方式 |
| JP4501631B2 (ja) * | 2004-10-26 | 2010-07-14 | 日本電気株式会社 | 画像符号化装置及び方法、画像符号化装置のコンピュータ・プログラム、並びに携帯端末 |
| WO2006052399A1 (en) | 2004-11-04 | 2006-05-18 | Thomson Licensing | Fast intra mode prediction for a video encoder |
| JP2007251865A (ja) | 2006-03-20 | 2007-09-27 | Sony Corp | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 |
| JP4921240B2 (ja) * | 2007-05-10 | 2012-04-25 | キヤノン株式会社 | 画像処理装置およびその方法 |
| JP2007267414A (ja) * | 2007-05-24 | 2007-10-11 | Toshiba Corp | フレーム内画像符号化方法及びその装置 |
| JP2009055542A (ja) | 2007-08-29 | 2009-03-12 | Toshiba Corp | 動画像符号化装置および動画像符号化方法 |
| KR101835342B1 (ko) | 2007-10-16 | 2018-03-07 | 엘지전자 주식회사 | 비디오 신호 처리 방법 및 장치 |
| EP2223527A1 (en) * | 2007-12-21 | 2010-09-01 | Telefonaktiebolaget LM Ericsson (publ) | Adaptive intra mode selection |
| US20090161757A1 (en) | 2007-12-21 | 2009-06-25 | General Instrument Corporation | Method and Apparatus for Selecting a Coding Mode for a Block |
| JP2009177357A (ja) * | 2008-01-22 | 2009-08-06 | Canon Inc | 符号化装置及び符号化方法 |
| KR101353301B1 (ko) | 2008-04-11 | 2014-01-21 | 에스케이 텔레콤주식회사 | 인트라 예측 모드 결정 방법 및 그 장치와 이를 이용한영상 부호화/복호화 방법 및 그 장치 |
| US8665964B2 (en) * | 2009-06-30 | 2014-03-04 | Qualcomm Incorporated | Video coding based on first order prediction and pre-defined second order prediction mode |
| KR101702553B1 (ko) | 2009-07-04 | 2017-02-03 | 에스케이 텔레콤주식회사 | 영상 부호화/복호화 방법 및 장치 |
| US20110002386A1 (en) | 2009-07-06 | 2011-01-06 | Mediatek Singapore Pte. Ltd. | Video encoder and method for performing intra-prediction and video data compression |
| KR101507344B1 (ko) | 2009-08-21 | 2015-03-31 | 에스케이 텔레콤주식회사 | 가변 길이 부호를 이용한 인트라 예측모드 부호화 방법과 장치, 및 이를 위한기록 매체 |
| WO2011031332A1 (en) | 2009-09-14 | 2011-03-17 | Thomson Licensing | Methods and apparatus for efficient video encoding and decoding of intra prediction mode |
| US9467705B2 (en) | 2009-12-30 | 2016-10-11 | Ariscale Inc. | Video encoding apparatus, video decoding apparatus, and video decoding method for performing intra-prediction based on directionality of neighboring block |
| KR101432771B1 (ko) * | 2010-03-05 | 2014-08-26 | 에스케이텔레콤 주식회사 | 영상 부호화 장치, 그 영상 부호화 방법, 영상 복호화 장치 및 그 영상 복호화 방법 |
| PL3125555T3 (pl) * | 2010-08-17 | 2018-09-28 | M&K Holdings Inc. | Sposób kodowania trybu intra-predykcji |
| US9008175B2 (en) * | 2010-10-01 | 2015-04-14 | Qualcomm Incorporated | Intra smoothing filter for video coding |
| US8913662B2 (en) | 2011-01-06 | 2014-12-16 | Qualcomm Incorporated | Indicating intra-prediction mode selection for video coding using CABAC |
| US8811760B2 (en) * | 2011-10-25 | 2014-08-19 | Mitsubishi Electric Research Laboratories, Inc. | Coding images using intra prediction modes |
| US9148667B2 (en) | 2013-02-06 | 2015-09-29 | Qualcomm Incorporated | Intra prediction mode decision with reduced storage |
-
2013
- 2013-02-01 US US13/756,659 patent/US9426473B2/en active Active
-
2014
- 2014-01-03 WO PCT/US2014/010231 patent/WO2014120389A1/en not_active Ceased
- 2014-01-03 HU HUE14702664A patent/HUE032054T2/en unknown
- 2014-01-03 EP EP14702664.5A patent/EP2951996B1/en active Active
- 2014-01-03 KR KR1020157023224A patent/KR101752989B1/ko active Active
- 2014-01-03 CN CN201480005928.7A patent/CN104937936B/zh active Active
- 2014-01-03 JP JP2015556022A patent/JP6284954B2/ja active Active
- 2014-01-03 ES ES14702664.5T patent/ES2625821T3/es active Active
Also Published As
| Publication number | Publication date |
|---|---|
| KR101752989B1 (ko) | 2017-07-03 |
| CN104937936B (zh) | 2018-05-08 |
| CN104937936A (zh) | 2015-09-23 |
| US20140219342A1 (en) | 2014-08-07 |
| KR20150115833A (ko) | 2015-10-14 |
| US9426473B2 (en) | 2016-08-23 |
| JP2016511975A (ja) | 2016-04-21 |
| JP6284954B2 (ja) | 2018-02-28 |
| WO2014120389A1 (en) | 2014-08-07 |
| EP2951996A1 (en) | 2015-12-09 |
| EP2951996B1 (en) | 2017-02-22 |
| HUE032054T2 (en) | 2017-08-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2625821T3 (es) | Simplificación de decisión de modo para predicción intra | |
| ES2779461T3 (es) | Intrapredicción de vídeo mejorada que usa una combinación de predicción dependiente de la posición para codificación de vídeo | |
| ES2611349T3 (es) | Codificación de Indicador de bloque codificado (CBF) para el formato de muestra 4:2:2 en codificación de vídeo | |
| ES2763443T3 (es) | Codificación de vídeo en modo intra | |
| US10652571B2 (en) | Advanced motion vector prediction speedups for video coding | |
| ES2656494T3 (es) | Filtro intra-suavizante para codificación de vídeo | |
| ES2975180T3 (es) | Modificación de las profundidades de bits en la codificación de transformación de espacio de color | |
| ES3022200T3 (en) | Tree-type coding for video coding | |
| ES2715555T3 (es) | Predicción residual de componentes cruzadas adaptativa | |
| ES2657546T3 (es) | Indicación de modo de intra-predicción mejorada para codificación de vídeo utilizando el modo contiguo | |
| ES3047693T3 (en) | Video coding using mapped transforms and scanning modes | |
| ES2633150T3 (es) | Predicción de vectores de movimiento en codificación de vídeo | |
| ES2901503T3 (es) | Decodificación de datos de vídeo usando una estructura de árbol de múltiples tipos de dos niveles | |
| ES2884375T3 (es) | Intra predicción de croma de modelo lineal para codificación de vídeo | |
| ES2705746T3 (es) | Inicialización de estados y probabilidades de contexto para codificación de entropía adaptativa al contexto | |
| ES2742026T3 (es) | Determinación de vector de movimiento para codificación de vídeo | |
| ES2869854T3 (es) | Unificar copia intrabloque e interpredicción | |
| ES2856051T3 (es) | Candidatos de fusión favorables a la paralelización para codificación de vídeo | |
| ES2648312T3 (es) | Relleno de píxeles de borde para intra-predicción en codificación de vídeo | |
| ES2908241T3 (es) | Selección de candidatos de modo de fusión unificado y modo de predicción de vector de movimiento adaptable | |
| ES2700523T3 (es) | Optimización de contexto para la codificación de la posición del último coeficiente significativo | |
| ES2673069T3 (es) | Procesamiento paralelo de frente de onda para codificación de vídeo | |
| ES2810253T3 (es) | Reposicionamiento de bloques residuales de predicción en codificación de vídeo | |
| ES2700296T3 (es) | Indicación de selección de modo de intrapredicción para codificación de vídeo | |
| ES2977203T3 (es) | Restricción de unidades de predicción en segmentos B a interpredicción unidireccional |