ES2909309T3 - Partición de bloques de luminancia y de crominancia - Google Patents

Partición de bloques de luminancia y de crominancia Download PDF

Info

Publication number
ES2909309T3
ES2909309T3 ES19712649T ES19712649T ES2909309T3 ES 2909309 T3 ES2909309 T3 ES 2909309T3 ES 19712649 T ES19712649 T ES 19712649T ES 19712649 T ES19712649 T ES 19712649T ES 2909309 T3 ES2909309 T3 ES 2909309T3
Authority
ES
Spain
Prior art keywords
encoding
chrominance
coding
luminance
subtree
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
Application number
ES19712649T
Other languages
English (en)
Inventor
Yin Zhao
Haitao Yang
Jianle Chen
Jiali Fu
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Application granted granted Critical
Publication of ES2909309T3 publication Critical patent/ES2909309T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods 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/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods 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/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/1883Methods 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 relating to sub-band structure, e.g. hierarchical level, directional tree, e.g. low-high [LH], high-low [HL], high-high [HH]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Color Television Systems (AREA)

Abstract

Un método implementado en un dispositivo de codificación de video, el método que comprende: obtener (803), mediante un procesador del dispositivo de codificación de video, una unidad de árbol de codificación que incluye un nodo de árbol de codificación; caracterizado por que el método comprende además: dividir (805), por el procesador, muestras de luminancia y muestras de crominancia en un primer nodo de árbol de codificación de la unidad de árbol de codificación según un árbol de codificación común cuando el tamaño del primer nodo de árbol de codificación supera un umbral; dividir (807), por el procesador, las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral; y dividir (809), por el procesador, las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral, en donde cuando el dispositivo de codificación de video es un codificador, el método comprende además codificar las muestras de crominancia y las muestras de luminancia en un flujo de bits en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia; y en donde cuando el dispositivo de codificación de video es un decodificador, el método comprende además la reconstrucción de los datos de crominancia y los datos de luminancia recibidos de un flujo de bits en un segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia.

Description

DESCRIPCIÓN
Partición de bloques de luminancia y de crominancia
Campo técnico
La presente descripción se relaciona generalmente con la codificación de video, y se relaciona específicamente con la generación de árboles de codificación para dividir bloques de codificación de luminancia y crominancia en codificación de video.
Antecedentes
La cantidad de datos de video necesarios para representar incluso un video relativamente corto puede ser sustancial, lo que puede dar como resultado dificultades cuando los datos se han de difundir de forma continua o se comunican de otro modo a través de una red de comunicaciones con capacidad de ancho de banda limitada. De este modo, los datos de video generalmente se comprimen antes de ser comunicados a través de las redes de telecomunicaciones modernas. El tamaño de un video también podría ser un problema cuando el video se almacena en un dispositivo de almacenamiento porque los recursos de memoria pueden ser limitados. Los dispositivos de compresión de video a menudo usan software y/o hardware en la fuente para codificar los datos de video antes de la transmisión o el almacenamiento, disminuyendo por ello la cantidad de datos necesarios para representar imágenes de video digital. Luego, los datos comprimidos se reciben en el destino por un dispositivo de descompresión de video que decodifica los datos de video. Con recursos de red limitados y demandas cada vez mayores de mayor calidad de video, son deseables técnicas mejoradas de compresión y descompresión que mejoren la relación de compresión con poco o ningún sacrificio en la calidad de imagen.
Los siguientes documentos enumerados en la presente memoria también están relacionados con la partición de bloques de codificación de luminancia y crominancia en la codificación de video:
• CHEN J ET Al: "JVET-G1001-Algorithm description of Joint Exploration Test Model 7 (JEM7)", EQUIPO CONJUNTO DE EXPLORACIÓN DE VIDEO (JEVT) DEL WP 3 DE SG 16 DE LA ITU-T Y JTC 1/SC 29/WG 11 DE LA ISO/IEC, 7a REUNIÓN, 13-7-2017; TURÍN, 19 de agosto de 2017 (2017-08-19), páginas i-iv, 1, XP030150980, recuperado de internet: URL: https://jvet-experts.org/;
• NEXTSOFTWARE: UNA IMPLEMENTACIÓN ALTERNATIVA DEL MODELO DE EXPLORACIÓN CONJUNTA (JEM): "Nextsoftware: An alternative implementation of the Joint Exploration Model (JEM)", 8. REUNIÓN DEL JVET; 18-10-2017 -25-10-2017; MACAO; (EL EQUIPO CONJUNTO DE EXPLORACIÓN DE VÍDEO DE JTC1/SC29/WG11 DE LA ISO/IEC Y SG.16 DE LA ITU-T); URL: https://jvet-experts.org/, n° JVET-H0084-V4, diciembre de 2017 (2017-12-06), XP030151086;
• URBAN F ET AL: "Decoupled Luma/Chroma Transform Trees for Intra", 3, Reunión de JVET; 26-5-2016 - 1-6­ 2016; GINEBRA; (EL EQUIPO CONJUNTO DE EXPLORACIÓN DE VÍDEO DE JTC1/SC29/WG11 DE LA ISO/IEC Y SG.16 DE LA ITU-T); https://jvet-experts.org/, n° JVET-C0039, 17 de mayo de 2016 (2016-05-17), XP030150129;
• WO 2017/137311 A1.
Compendio
La invención se define en las reivindicaciones independientes. Las características adicionales de la invención se proporcionan en las reivindicaciones dependientes. A continuación, las partes de la descripción y los dibujos que se refieren a realizaciones que no están cubiertas por las reivindicaciones no se presentan como realizaciones de la invención, sino como ejemplos útiles para comprender la invención.
En una realización, la descripción incluye un método implementado en un dispositivo de codificación de video. El método comprende obtener, mediante un procesador del dispositivo de codificación de video, una unidad de árbol de codificación que incluye un nodo de árbol de codificación. El método comprende además dividir, por el procesador, muestras de luminancia y muestras de crominancia en un primer nodo de árbol de codificación de la unidad de árbol de codificación según un árbol de codificación común cuando el tamaño del primer nodo de árbol de codificación supera un umbral. El método comprende además dividir, por el procesador, las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral. El método comprende además dividir, por el procesador, las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral. Cuando el dispositivo de codificación de video es un codificador, el método comprende además codificar las muestras de crominancia y las muestras de luminancia en un flujo de bits en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. Cuando el dispositivo de codificación de video es un decodificador, el método comprende además la reconstrucción de los datos de crominancia y los datos de luminancia recibidos de un flujo de bits en un segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia.
En esta realización, se usa el mismo árbol de codificación para muestras tanto de luminancia como de crominancia para bloques más grandes (por ejemplo, por encima de un umbral) mientras que se divide en diferentes árboles de codificación (por ejemplo, subárboles) para bloques más pequeños (por ejemplo, menores o iguales que el umbral). Los árboles separados permiten diferentes particiones para las muestras de luminancia y crominancia y, por lo tanto, se pueden adaptar para aumentar la eficiencia general de la codificación. Sin embargo, el uso de árboles separados en lugar de un solo árbol requiere más recursos de procesamiento y da como resultado el uso de más espacio de memoria en la codificación final. Dividir un árbol de codificación común en diferentes subárboles por debajo de un umbral permite que el árbol general del bloque de luminancia sea reutilizado para la mayor parte del bloque de crominancia (por ejemplo, reduciendo la complejidad y el uso de memoria) mientras que se adaptan los subárboles para los bloques de luminancia y crominancia más pequeños (por ejemplo, aumentando la eficiencia de codificación).
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el umbral es de cuatro mil noventa y seis píxeles o seis en el dominio logarítmico con 2 como base.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde la unidad de árbol de codificación está en un cuadro de Intra-predicción (I).
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde las muestras de crominancia incluyen muestras de crominancia de diferencia de azul (Cb) y muestras de crominancia de diferencia de rojo (Cr), y donde las muestras de Cb y las muestras de Cr se dividen por un subárbol de codificación de crominancia común.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el dispositivo de codificación de video es un codificador. El método comprende además codificar en un flujo de bits una bandera luma_chroma_separate para indicar una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. La bandera luma_chroma_separate proporciona un mecanismo de indicación al decodificador de que están en uso diferentes subárboles de codificación de luminancia y de crominancia.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el dispositivo de codificación de video es un decodificador. El método comprende además recibir una bandera luma_chroma_separate de un flujo de bits. La bandera luma_chroma_separate indica una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. Las muestras de luminancia y las muestras de crominancia se dividen mediante subárboles de codificación separados en base a un valor de la bandera luma_chroma_separate. La bandera luma_chroma_separate proporciona un mecanismo de indicación al decodificador que están en uso diferentes subárboles de codificación de luminancia y crominancia.
En una realización, la descripción incluye un codificador de video que comprende un procesador configurado para obtener una unidad de árbol de codificación que incluye un nodo de árbol de codificación. El procesador también está configurado para dividir las muestras de luminancia y las muestras de crominancia en un primer nodo de árbol de codificación de la unidad de árbol de codificación según un árbol de codificación común cuando el tamaño del primer nodo de árbol de codificación supera un umbral. El procesador también está configurado para dividir las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral. El procesador también está configurado para dividir las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral. El procesador también está configurado para codificar las muestras de crominancia y las muestras de luminancia en un flujo de bits en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. El codificador de video también incluye un transmisor acoplado al procesador. El transmisor está configurado para transmitir el flujo de bits para soportar la reconstrucción de las muestras de crominancia y las muestras de luminancia para su visualización por un decodificador de video. En esta realización, se usa el mismo árbol de codificación para muestras tanto de luminancia como de crominancia para bloques más grandes (por ejemplo, por encima de un umbral) mientras que se divide en diferentes árboles de codificación (por ejemplo, subárboles) para bloques más pequeños (por ejemplo, menores o iguales que el umbral). Los árboles separados permiten diferentes particiones para las muestras de luminancia y de crominancia y, por lo tanto, se pueden adaptar para aumentar la eficiencia general de la codificación. Sin embargo, el uso de árboles separados en lugar de un solo árbol requiere más recursos de procesamiento y da como resultado el uso de más espacio de memoria en la codificación final. Dividir un árbol de codificación común en diferentes subárboles por debajo de un umbral permite que el árbol general de la luminancia sea reutilizado para la mayor parte de la crominancia (por ejemplo, reduciendo la complejidad y el uso de memoria) mientras que se adaptan los subárboles para bloques de luminancia y de crominancia más pequeños (por ejemplo, aumentando la eficiencia de codificación).
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el umbral es de cuatro mil noventa y seis píxeles o seis en el dominio logarítmico con 2 como base.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde la unidad de árbol de codificación está en un cuadro I.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde las muestras de crominancia incluyen muestras de Cb y muestras de Cr, y en donde las muestras de Cb y las muestras de Cr están divididas por un subárbol de codificación de crominancia común.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el procesador está configurado además para codificar una bandera luma_chroma_separate en el flujo de bits para indicar una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. La bandera luma_chroma_separate proporciona un mecanismo de indicación al decodificador de que están en uso diferentes subárboles de codificación de luminancia y de crominancia.
En una realización, la descripción incluye un decodificador de video que comprende un receptor a un receptor para recibir un flujo de bits que incluye una unidad de árbol de codificación que incluye datos de luminancia y datos de crominancia. El decodificador de video comprende además un procesador acoplado al receptor. El procesador está configurado para dividir los datos de luminancia y los datos de crominancia con un árbol de codificación común cuando el tamaño de un primer nodo de árbol de codificación supera un umbral. El procesador está configurado además para dividir los datos de luminancia con un subárbol de codificación de luminancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral. El procesador está configurado además para dividir los datos de crominancia con un subárbol de codificación de crominancia cuando el tamaño de un tercer nodo de árbol de codificación es igual o menor que el umbral, en donde el subárbol de codificación de luminancia contiene un conjunto diferente de modos de división que el subárbol de codificación de crominancia. El procesador está configurado además para reconstruir los datos de crominancia y los datos de luminancia en un segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. El procesador está configurado además para reenviar el cuadro de video hacia una pantalla. En esta realización, se usa el mismo árbol de codificación para muestras tanto de luminancia como de crominancia para bloques más grandes (por ejemplo, por encima de un umbral) mientras que se divide en diferentes árboles de codificación (por ejemplo, subárboles) para bloques más pequeños (por ejemplo, menores o iguales que el umbral). Los árboles separados permiten diferentes particiones para las muestras de luminancia y de crominancia y, por lo tanto, se pueden adaptar para aumentar la eficiencia general de la codificación. Sin embargo, el uso de árboles separados en lugar de un solo árbol requiere más recursos de procesamiento y da como resultado el uso de más espacio de memoria en la codificación final. Dividir un árbol de codificación común en diferentes subárboles por debajo de un umbral permite que el árbol general de la luminancia sea reutilizado para la mayor parte de la crominancia (por ejemplo, reduciendo la complejidad y el uso de memoria) mientras que se adaptan los subárboles para bloques de luminancia y crominancia más pequeños (por ejemplo, aumentando la eficiencia de codificación).
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el umbral es de cuatro mil noventa y seis píxeles o seis en el dominio logarítmico con 2 como base.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde los datos de luminancia y de crominancia se dividen mediante diferentes subárboles de codificación cuando la unidad de árbol de codificación se incluye en un segmento de tipo I en un cuadro de video.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde los datos de crominancia incluyen datos de Cb y datos de Cr, y donde los datos de Cb y los datos de Cr están divididos por un subárbol de codificación de crominancia común.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el procesador está configurado además para obtener una bandera luma_chroma_separate del flujo de bits, la bandera luma_chroma_separate que indica una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia, y en donde los datos de luminancia y los datos de crominancia están divididos por diferentes subárboles de codificación en base a un valor de la bandera luma_chroma_separate. La bandera luma_chroma_separate proporciona un mecanismo de indicación al decodificador de que están en uso diferentes subárboles de codificación de luminancia y de crominancia.
En una realización, la descripción incluye un medio legible por ordenador no transitorio que comprende un producto de programa informático para uso por un dispositivo de codificación de video, el producto de programa de informático que comprende instrucciones ejecutables por ordenador almacenadas en el medio legible por ordenador no transitorio de manera que cuando se ejecuta por un procesador hacen que el decodificador de video realice el método de cualquiera de los aspectos anteriores.
En una realización, la descripción incluye un dispositivo de codificación de video que comprende un medio de búsqueda para obtener una unidad de árbol de codificación que incluye un nodo de árbol de codificación. El dispositivo de codificación de video también incluye un medio de partición de árbol común para dividir muestras de luminancia y muestras de crominancia en un primer nodo de árbol de codificación de la unidad de árbol de codificación según un árbol de codificación común cuando el tamaño del primer nodo de árbol de codificación supera un umbral. El dispositivo de codificación de video también incluye un medio de partición de subárbol de codificación de luminancia para dividir las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral. El dispositivo de codificación de video también incluye un medio de partición de subárbol de codificación de crominancia para dividir las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral. En esta realización, se usa el mismo árbol de codificación para muestras tanto de luminancia como de crominancia para bloques más grandes (por ejemplo, por encima de un umbral) mientras que se divide en diferentes árboles de codificación (por ejemplo, subárboles) para bloques más pequeños (por ejemplo, menores o iguales que el umbral). Los árboles separados permiten diferentes particiones para las muestras de luminancia y de crominancia y, por lo tanto, se pueden adaptar para aumentar la eficiencia general de la codificación. Sin embargo, el uso de árboles separados en lugar de un solo árbol requiere más recursos de procesamiento y da como resultado el uso de más espacio de memoria en la codificación final. Dividir un árbol de codificación común en diferentes subárboles por debajo de un umbral permite que el árbol general de la luminancia sea reutilizado para la mayor parte de la crominancia (por ejemplo, reduciendo la complejidad y el uso de memoria) mientras que se adaptan los subárboles para bloques de luminancia y de crominancia más pequeños (por ejemplo, aumentando la eficiencia de codificación).
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto en donde los medios de búsqueda, los medios de partición de árbol común, los medios de partición de subárbol de luminancia y los medios de partición de subárbol de crominancia son además para realizar el método de cualquier de los aspectos anteriores.
En una realización, la descripción incluye un método que comprende determinar que una unidad de árbol de codificación está en un cuadro I. Cuando un primer nodo de árbol de codificación de un árbol de codificación correspondiente a la unidad de árbol de codificación tiene un tamaño mayor que un umbral, dividir un bloque de codificación de muestras de luminancia y un bloque de codificación de muestras de crominancia asociados con el primer nodo de árbol de codificación con un árbol de codificación común. Cuando un segundo nodo de árbol de codificación del árbol de codificación tiene un tamaño igual o menor que el umbral, dividir un bloque de codificación de muestras de luminancia asociado con el segundo nodo de árbol de codificación con un árbol de codificación de luminancia, y dividir un bloque de codificación de muestras de crominancia asociadas con el segundo nodo de árbol de codificación con un árbol de codificación de crominancia.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el umbral es 4096 muestras de luminancia o 2048 muestras de luminancia.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el árbol de codificación común está dividido en cuatro árboles.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde se implica un modo de división del primer nodo de árbol de codificación cuando el nodo de árbol de codificación tiene un tamaño mayor que un umbral.
Opcionalmente, en cualquiera de los aspectos anteriores, se proporciona otra implementación del aspecto, en donde el tamaño está representado por log2CbSize, y el umbral es igual a 6.
En una realización, la descripción incluye un dispositivo de codificación de video que comprende un procesador configurado para realizar cualquiera de los aspectos anteriores.
Estas y otras características se entenderán más claramente a partir de la siguiente descripción detallada tomada junto con los dibujos que se acompañan y las reivindicaciones.
Breve descripción de los dibujos
Para una comprensión más completa de esta descripción, ahora se hace referencia a la siguiente breve descripción, tomada en conexión con los dibujos que se acompañan y la descripción detallada, en donde los mismos números de referencia representan partes similares.
La FIG. 1 es un diagrama de flujo de un método de ejemplo para codificar una señal de video.
La FIG. 2 es un diagrama esquemático de un sistema de codificación y decodificación (códec) de ejemplo para la codificación de video.
La FIG. 3 es un diagrama esquemático que ilustra un codificador de vídeo de ejemplo que puede dividir bloques de luminancia y de crominancia.
La FIG. 4 es un diagrama esquemático que ilustra un decodificador de video de ejemplo que puede dividir bloques de luminancia y de crominancia.
La FIG. 5 es un diagrama esquemático que ilustra un mecanismo de ejemplo de partición de una unidad de árbol de codificación (CTU) en unidades de codificación (CU) que contienen bloques de codificación de luminancia (CB) y CB de crominancia.
La FIG. 6 ilustra un árbol de codificación de ejemplo que se aplica a una CTU.
La FIG. 7 es un diagrama esquemático que ilustra un conjunto de ejemplos de modos divididos empleados en árboles de codificación.
La FIG. 8 es un diagrama de flujo de un método de ejemplo de división de una CTU con un árbol de codificación común para CB por encima de un tamaño umbral y con subárboles divididos para los CB con un tamaño igual o menor que un tamaño umbral.
La FIG. 9 es un diagrama esquemático de un dispositivo de codificación de video de ejemplo.
La FIG. 10 es un diagrama esquemático de un sistema de ejemplo para dividir una CTU con un árbol de codificación común para los CB por encima de un tamaño umbral y con subárboles divididos para los CB con un tamaño igual o menor que un tamaño umbral.
La FIG. 11 es un diagrama de flujo de un método de ejemplo de división de una CTU con un árbol de codificación común para los CB por encima de un tamaño umbral y con subárboles divididos para los CB con un tamaño igual o menor que un tamaño umbral.
Descripción detallada
Se debería entender desde el principio que aunque a continuación se proporciona una implementación ilustrativa de una o más realizaciones, los sistemas y/o métodos descritos se pueden implementar utilizando cualquier número de técnicas, ya sean actualmente conocidas o existentes. La descripción no se debería limitar de ninguna manera a las implementaciones ilustrativas, los dibujos y las técnicas ilustradas a continuación, incluyendo los diseños e implementaciones ejemplares ilustrados y descritos en la presente memoria, pero se puede modificar dentro del alcance de las reivindicaciones adjuntas.
La codificación de video incluye la partición de cuadros de video en bloques y la codificación de los bloques a través de intrapredicción e interpredicción para comprimir el tamaño de un archivo de video. La presente descripción se refiere a mejoras en el proceso de partición. Un cuadro de video se divide primero en unidades de árbol de codificación (CTU). Las CTU contienen datos de píxeles expresados como muestras de luminancia (por ejemplo, valores claros frente a oscuros) y valores cromáticos (por ejemplo, color). La CTU está dividida por uno o más árboles de codificación para crear bloques de codificación (CB) que luego se pueden codificar (por ejemplo, codificar cuando están en un codificador o decodificar cuando están en un decodificador). En algunos sistemas, se emplea un solo árbol de codificación para dividir las muestras de luminancia y de crominancia. El problema con tal sistema es que las muestras de luminancia en la CTU y las muestras de crominancia en la CTU pueden contener patrones significativamente diferentes. Como tal, un árbol de codificación que soporte una codificación eficiente para los componentes de luminancia puede dar como resultado una codificación ineficiente para los componentes de crominancia, y viceversa. Por lo tanto, tal sistema puede crear archivos de video comprimidos con una eficiencia de codificación subóptima (por ejemplo, compresión reducida y tamaño de archivo más grande).
En un sistema alternativo, se utilizan diferentes árboles de codificación para muestras de luminancia y muestras de crominancia. Tal sistema da como resultado una mayor eficiencia de codificación para la codificación de bloques. Sin embargo, determinar un árbol de codificación de luminancia y un árbol de codificación de crominancia separados para cada CTU aumenta sustancialmente la complejidad del proceso de codificación. Por ejemplo, tal enfoque puede duplicar la cantidad de recursos de procesamiento empleados durante la parte de partición de la codificación ya que se selecciona dos veces el número de árboles de codificación. Además, los árboles de codificación seleccionados se codifican en el flujo de bits como datos de partición. Por lo tanto, el empleo de árboles de codificación de luminancia y árboles de codificación de crominancia separados para cada CTU puede aumentar la cantidad de datos de partición almacenados en la codificación (por ejemplo, duplicar el número de árboles codificados), lo que compensa parte de la eficiencia de codificación obtenida por la codificación de bloques.
En la presente memoria se describen mecanismos para mejorar la partición de CTU. Se utiliza un árbol de codificación común para codificar tanto las muestras de luminancia como las muestras de crominancia siempre que los CB correspondientes sean mayores que un umbral predefinido (por ejemplo, cuatro mil noventa y seis píxeles). Los CB de luminancia y los CB de crominancia que son iguales o menores que el tamaño umbral se dividen mediante un subárbol de codificación de luminancia y un subárbol de codificación de crominancia, respectivamente. El subárbol de codificación de luminancia y el subárbol de codificación de crominancia pueden ser diferentes. Por lo tanto, los subárboles se pueden seleccionar para aumentar la eficiencia de codificación en base a las variaciones entre las muestras de luminancia y las muestras de crominancia. Además, el árbol de codificación común con subárboles de codificación de luminancia y subárboles de codificación de crominancia divididos emplea menos datos que dos árboles de codificación completamente separados. Por lo tanto, un árbol de codificación con subárboles divididos aumenta la eficiencia de codificación sobre árboles de codificación separados. Además, seleccionar un árbol de codificación con subárboles divididos es menos complejo que seleccionar dos árboles de codificación separados y, por lo tanto, emplea menos recursos de procesamiento. Por ejemplo, un proceso de selección de un árbol de codificación con subárboles divididos puede ocurrir más rápidamente que un proceso de selección de un par de árboles de codificación para una CTU. El mecanismo de subárbol dividido descrito en la presente memoria se puede aplicar a segmentos de intrapredicción (I) (por ejemplo, segmentos de un tipo I) en un cuadro de video. El mecanismo de subárbol dividido también se puede aplicar a segmentos de predicción (P) y predicción bidireccional (B) (por ejemplo, segmentos en un tipo P y un tipo B, respectivamente). En un ejemplo, se puede inferir el mecanismo de subárbol dividido y, por lo tanto, emplear de manera general (por ejemplo, en segmentos I). En otro ejemplo, se puede establecer una bandera luma_chroma_separate en la sintaxis relacionada con la CTU en el flujo de bits con el fin de indicar si se emplean subárboles divididos para la CTU correspondiente. En consecuencia, el mecanismo de subárbol dividido descrito en la presente memoria se puede emplear por un codificador cuando se dividen las CTU para la codificación y por un decodificador correspondiente cuando se dividen las CTU para la decodificación.
La FIG. 1 es un diagrama de flujo de un método operativo 100 de ejemplo de codificación de una señal de video. Específicamente, una señal de video se codifica en un codificador. El proceso de codificación comprime la señal de video empleando varios mecanismos para reducir el tamaño del archivo de video. Un tamaño de archivo más pequeño permite que el archivo de video comprimido se transmita hacia un usuario, mientras que reduce la sobrecarga de ancho de banda asociada. Luego, el decodificador decodifica el archivo de video comprimido para reconstruir la señal de video original para mostrarla a un usuario final. El proceso de decodificación generalmente refleja el proceso de codificación para permitir que el decodificador reconstruya consistentemente la señal de video.
En el paso 101, la señal de vídeo se introduce en el codificador. Por ejemplo, la señal de video puede ser un archivo de video sin comprimir almacenado en la memoria. Como otro ejemplo, el archivo de video se puede capturar por un dispositivo de captura de video, tal como una cámara de video, y codificar para soportar difusión de forma continua del video. El archivo de video puede incluir tanto un componente de audio como un componente de video. El componente de video contiene una serie de cuadros de imagen que, cuando se ven en una secuencia, dan la impresión visual de movimiento. Los cuadros contienen píxeles que se expresan en términos de luz, a los que se hace referencia en la presente memoria como componentes de luminancia (o muestras de luminancia), y color, a los que se hace referencia como componentes de crominancia (o muestras de color). En algunos ejemplos, los cuadros también pueden contener valores de profundidad para soportar visualización tridimensional.
En el paso 103, el vídeo se divide en bloques. La partición incluye la subdivisión de los píxeles de cada cuadro en bloques cuadrados y/o rectangulares para la compresión. Por ejemplo, en la Codificación de Video de Alta Eficiencia (HEVC) (también conocida como H.265 y MPEG-H Parte 2), el cuadro se puede dividir primero en unidades de árbol de codificación (CTU), que son bloques de un tamaño predefinido (por ejemplo, sesenta cuatro píxeles por sesenta y cuatro píxeles). Las CTU contienen muestras tanto de luminancia como de crominancia. Se pueden emplear árboles de codificación para dividir las CTU en bloques y luego subdividir recursivamente los bloques hasta que se logren configuraciones que soporten una codificación adicional. Por ejemplo, los componentes de luminancia de un cuadro se pueden subdividir hasta que los bloques individuales contengan valores de iluminación relativamente homogéneos. Además, los componentes cromáticos de un cuadro se pueden subdividir hasta que los bloques individuales contengan valores de color relativamente homogéneos. En consecuencia, los mecanismos de partición varían dependiendo del contenido de los cuadros de video.
En el paso 105, se emplean varios mecanismos de compresión para comprimir los bloques de imagen divididos en el paso 103. Por ejemplo, se pueden emplear interpredicción y/o intrapredicción. La interpredicción está diseñada para aprovechar el hecho de que los objetos en una escena común tienden a aparecer en cuadros sucesivos. En consecuencia, un bloque que represente un objeto en un cuadro de referencia no necesita ser descrito repetidamente en cuadros adyacentes. Específicamente, un objeto, tal como una mesa, puede permanecer en una posición constante en múltiples cuadros. Por lo tanto, la tabla se describe una vez y los cuadros adyacentes pueden hacer referencia de nuevo al cuadro de referencia. Se pueden emplear mecanismos de coincidencia de patrones para hacer coincidir objetos en múltiples cuadros. Además, los objetos en movimiento se pueden representar a lo largo de múltiples cuadros, por ejemplo, debido al movimiento del objeto o del movimiento de la cámara. Como ejemplo particular, un video puede mostrar un automóvil que se mueve por la pantalla en múltiples cuadros. Los vectores de movimiento se pueden emplear para describir tal movimiento. Un vector de movimiento es un vector bidimensional que proporciona un desplazamiento desde las coordenadas de un objeto en un cuadro hasta las coordenadas del objeto en un cuadro de referencia. Como tal, la interpredicción puede codificar un bloque de imagen en un cuadro actual como un conjunto de vectores de movimiento que indican un desplazamiento de un bloque correspondiente en un cuadro de referencia.
La intrapredicción codifica bloques en un cuadro común. La intrapredicción aprovecha el hecho de que los componentes de luminancia y de crominancia tienden a agruparse en un cuadro. Por ejemplo, un parche de verde en una parte de un árbol tiende a ser colocado adyacente a parches de verde similares. La intrapredicción emplea múltiples modos de predicción direccional (por ejemplo, treinta y tres en HEVC), un modo plano y un modo de corriente continua (DC). Los modos direccionales indican que un bloque actual es similar/igual que las muestras de un bloque vecino en una dirección correspondiente. El modo planar indica que una serie de bloques a lo largo de una fila/columna (por ejemplo, un plano) se puede interpolar en base a los bloques vecinos en los bordes de la fila. El modo planar, en efecto, indica una transición suave de luz/color a través de una fila/columna empleando una pendiente relativamente constante en los valores cambiantes. El modo de DC se emplea para suavizar los límites e indica que un bloque es similar/igual que un valor promedio asociado con muestras de todos los bloques vecinos asociados con las direcciones angulares de los modos de predicción direccional. En consecuencia, los bloques de intrapredicción pueden representar bloques de imagen como varios valores de modo de predicción relacional en lugar de los valores reales. Además, los bloques interpredicción pueden representar bloques de imágenes como valores de vectores de movimiento en lugar de los valores reales. En cualquier caso, los bloques de predicción pueden no representar exactamente los bloques de imagen en algunos casos. Cualquier diferencia se almacena en bloques residuales. Se pueden aplicar transformaciones a los bloques residuales para comprimir aún más el archivo.
En el paso 107, se pueden aplicar diversas técnicas de filtrado. En HEVC, los filtros se aplican según un esquema de filtrado en bucle. La predicción basada en bloques discutida anteriormente puede dar como resultado la creación de imágenes en bloques en el decodificador. Además, el esquema de predicción basado en bloques puede codificar un bloque y luego reconstruir el bloque codificado para su uso posterior como bloque de referencia. El esquema de filtrado en bucle aplica de forma iterativa filtros de supresión de ruido, filtros de desbloqueo, filtros de bucle adaptativos y filtros de desplazamiento adaptativo de muestra (SAO) a los bloques/cuadros. Estos filtros mitigan tales artefactos de bloqueo de modo que el archivo codificado se pueda reconstruir con precisión. Además, estos filtros mitigan los artefactos en los bloques de referencia reconstruidos, de modo que sea menos probable que los artefactos creen artefactos adicionales en bloques posteriores que se codifican en base a los bloques de referencia reconstruidos.
Una vez que la señal de video ha sido dividida, comprimida y filtrada, los datos resultantes se codifican en un flujo de bits en el paso 109. El flujo de bits incluye los datos discutidos anteriormente, así como cualquier dato de señalización deseado para soportar la reconstrucción adecuada de la señal de video en el decodificador. Por ejemplo, tales datos pueden incluir datos de partición, datos de predicción, bloques residuales y varias banderas que proporcionan instrucciones de codificación al decodificador. El flujo de bits se puede almacenar en la memoria para su transmisión hacia un decodificador bajo petición. El flujo de bits también se puede difundir y/o multidifundir hacia una pluralidad de decodificadores. La creación del flujo de bits es un proceso iterativo. En consecuencia, los pasos 101, 103, 105, 107 y 109 pueden ocurrir de forma continua y/o simultánea en muchos cuadros y bloques. El orden mostrado en la FIG. 1 se presenta por claridad y facilidad de discusión, y no pretende limitar el proceso de codificación de video a un orden particular.
El decodificador recibe el flujo de bits y comienza el proceso de decodificación en el paso 111. Específicamente, el decodificador emplea un esquema de decodificación de entropía para convertir el flujo de bits en datos de video y sintaxis correspondientes. El decodificador emplea los datos de sintaxis del flujo de bits para determinar las particiones de las tramas en el paso 111. La partición debería coincidir con los resultados de la partición en bloques en el paso 103. Ahora se describe la codificación/decodificación de entropía que se emplea en el paso 111. El codificador toma muchas decisiones durante el proceso de compresión, tales como seleccionar esquemas de partición de bloques de varias opciones posibles en base al posicionamiento espacial de los valores en la imagen o imágenes de entrada. La señalización de las opciones exactas puede emplear un gran número de contenedores. Como se usa en la presente memoria, un contenedor es un valor binario que se trata como una variable (por ejemplo, un valor de bit que puede variar dependiendo del contexto). La codificación de entropía permite que el codificador descarte cualquier opción que claramente no sea viable para un caso particular, dejando un conjunto de opciones permisibles. A cada opción permisible se le asigna entonces una palabra de código. La longitud de las palabras de código se basa en la cantidad de opciones permisibles (por ejemplo, un contenedor para dos opciones, dos contenedores para tres o cuatro opciones, etc.). Luego, el codificador codifica la palabra de código para la opción seleccionada. Este esquema reduce el tamaño de las palabras de código, ya que las palabras de código son tan grandes como se desee para indicar de manera única una selección de un pequeño subconjunto de opciones permisibles en lugar de indicar únicamente la selección de un conjunto potencialmente grande de todas las opciones posibles. Luego, el decodificador decodifica la selección determinando el conjunto de opciones permisibles de una manera similar al codificador. Determinando el conjunto de opciones permisibles, el decodificador puede leer la palabra de código y determinar la selección realizada por el codificador.
En el paso 113, el decodificador realiza la decodificación de bloques. Específicamente, el decodificador emplea transformadas inversas para generar bloques residuales. Luego, el decodificador emplea los bloques residuales y los bloques de predicción correspondientes para reconstruir los bloques de imagen según la partición. Los bloques de predicción pueden incluir tanto bloques de intrapredicción como bloques de interpredicción generados en el codificador en el paso 105. Los bloques de imagen reconstruidos se colocan luego en cuadros de una señal de video reconstruida según los datos de partición determinados en el paso 111. La sintaxis para el paso 113 también se puede señalizar en el flujo de bits a través de codificación de entropía como se discutió anteriormente.
En el paso 115, el filtrado se realiza en los cuadros de la señal de video reconstruida de una manera similar al paso 107 en el codificador. Por ejemplo, se pueden aplicar a los cuadros filtros de supresión de ruido, filtros de desbloqueo, filtros de bucle adaptativo y filtros de SAO para eliminar los artefactos de bloqueo. Una vez que se filtran los cuadros, la señal de video se puede emitir a una pantalla en el paso 117 para que véase vea por un usuario final.
La presente descripción se refiere a modificaciones para proporcionar una mayor eficiencia de codificación (por ejemplo, reducción del tamaño de archivo) y/o una menor complejidad de codificación (por ejemplo, uso reducido de recursos del procesador) cuando se dividen las CTU. Por lo tanto, la presente descripción mejora la funcionalidad de la partición de bloques en el paso 103 en el codificador y la determinación de particiones en el paso 111 en el codificador. Específicamente, en los pasos 103 y 111, se usa un árbol de codificación común para dividir tanto las muestras de luminancia como las muestras de crominancia en una CTU siempre que los CB correspondientes sean de un tamaño mayor que un umbral. Para los CB que son iguales o menores que el umbral, el árbol de codificación se divide en un subárbol o subárboles de codificación de luminancia y un subárbol o subárboles de codificación de crominancia que pueden realizar diferentes particiones en los CB de luminancia y los CB de crominancia por debajo del umbral, respectivamente.
La FIG. 2 es un diagrama esquemático de un sistema de codificación y decodificación (códec) 200 de ejemplo para codificación de video. Específicamente, el sistema de códec 200 proporciona funcionalidad para soportar la implementación del método operativo 100. El sistema de códec 200 se generaliza para representar los componentes empleados tanto en un codificador como en un decodificador. El sistema de códec 200 recibe y divide una señal de video como se describe con respecto a los pasos 101 y 103 en el método operativo 100, lo que da como resultado una señal de video dividida 201. El sistema de códec 200 luego comprime la señal de video dividida 201 en un flujo de bits codificado cuando actúa como un codificador como se discutió con respecto a los pasos 105, 107 y 109 en el método 100. Cuando actúa como un sistema de códec 200 decodificador genera una señal de video de salida del flujo de bits como se discutió con respecto a los pasos 111, 113, 115 y 117 en el método operativo 100. El sistema de códec 200 incluye un componente de control de codificador general 211, un componente de cuantificación y escalado de transformación 213, un componente de estimación intraimagen 215, un componente de predicción intraimagen 217, un componente de compensación de movimiento 219, un componente de estimación de movimiento 221, un componente de escala y transformación inversa 229, un componente de análisis de control de filtro 227, un componente de filtros en bucle 225, un componente de memoria intermedia de imágenes decodificadas 223 y un componente de formateo de cabecera y codificación aritmética binaria adaptativa al contexto (CABAC) 231. Tales componentes se acoplan como se muestra. En la FIG. 2, las líneas negras indican el movimiento de los datos a ser codificados/decodificados, mientras que las líneas discontinuas indican el movimiento de los datos de control que controlan el funcionamiento de otros componentes. Los componentes del sistema de códec 200 pueden estar todos presentes en el codificador. El decodificador puede incluir un subconjunto de los componentes del sistema de códec 200. Por ejemplo, el decodificador puede incluir el componente de predicción intraimagen 217, el componente de compensación de movimiento 219, el componente de transformación inversa y escala 229, el componente de filtros en bucle 225 y el componente de memoria intermedia de imágenes decodificadas 223. Estos componentes se describen ahora.
La señal de video dividida 201 es una secuencia de video capturada que ha sido dividida en bloques de píxeles por un árbol de codificación. Un árbol de codificación emplea varios modos de división para subdividir un bloque de píxeles en bloques de píxeles más pequeños. Estos bloques se pueden subdividir además en bloques más pequeños. Se puede hacer referencia a los bloques como nodos en el árbol de codificación. Los nodos principales más grandes se dividen en nodos secundarios más pequeños. Se hace referencia al número de veces que se subdivide un nodo como la profundidad del nodo/árbol de codificación. Los bloques divididos se pueden incluir en unidades de codificación (CU) en algunos casos. Por ejemplo, una CU puede ser una subparte de una CTU que contiene un bloque de luminancia, bloque o bloques de crominancia de diferencia de rojo (Cr) y bloque o bloques de crominancia de diferencia de azul (Cb) junto con las instrucciones de sintaxis correspondientes para la CU. Los modos divididos pueden incluir un árbol binario (BT), un árbol triple (TT) y un árbol cuádruple (QT) empleados para dividir un nodo en dos, tres o cuatro nodos secundarios, respectivamente, de formas variables dependiendo de los modos divididos empleados. La señal de video dividida 201 se reenvía al componente de control de codificador general 211, el componente de escalado de transformación y cuantificación 213, el componente de estimación intraimagen 215, el componente de análisis de control de filtro 227 y el componente de estimación de movimiento 221 para la compresión.
El componente de control de codificador general 211 está configurado para tomar decisiones relacionadas con la codificación de las imágenes de la secuencia de video en el flujo de bits según las restricciones de la aplicación. Por ejemplo, el componente de control de codificador general 211 gestiona la optimización de la tasa de bits/tamaño del flujo de bits frente a la calidad de la reconstrucción. Tales decisiones se pueden tomar en base a la disponibilidad de espacio de almacenamiento/ancho de banda y las solicitudes de resolución de imagen. El componente de control de codificador general 211 también gestiona la utilización de la memoria intermedia a la luz de la velocidad de transmisión para mitigar los problemas de insuficiencia y desbordamiento de la memoria intermedia. Para gestionar estos problemas, el componente de control de codificador general 211 gestiona la partición, la predicción y el filtrado mediante los otros componentes. Por ejemplo, el componente de control de codificador general 211 puede aumentar dinámicamente la complejidad de la compresión para aumentar la resolución y aumentar el uso del ancho de banda o disminuir la complejidad de la compresión para disminuir la resolución y el uso del ancho de banda. Por lo tanto, el componente de control de codificador general 211 controla los otros componentes del sistema de códec 200 para equilibrar la calidad de reconstrucción de la señal de video con las preocupaciones sobre la tasa de bits. El componente de control de codificador general 211 crea datos de control, que controlan el funcionamiento de los otros componentes. Los datos de control también se reenvían al componente de formateo de cabecera y CABAC 231 para ser codificados en el flujo de bits para señalizar parámetros para decodificar en el decodificador.
La señal de video dividida 201 también se envía al componente de estimación de movimiento 221 y al componente de compensación de movimiento 219 para la interpredicción. Un cuadro o segmento de la señal de video dividida 201 se puede dividir en múltiples bloques de video. El componente de estimación de movimiento 221 y el componente de compensación de movimiento 219 realizan una codificación interpredictiva del bloque de video recibido con relación a uno o más bloques en uno o más cuadros de referencia para proporcionar una predicción temporal. El sistema de códec 200 puede realizar múltiples pases de codificación, por ejemplo, para seleccionar un modo de codificación apropiado para cada bloque de datos de video.
El componente de estimación de movimiento 221 y el componente de compensación de movimiento 219 pueden estar altamente integrados, pero se ilustran por separado con propósitos conceptuales. La estimación de movimiento, realizada por el componente de estimación de movimiento 221, es el proceso de generación de vectores de movimiento, que estiman el movimiento para bloques de video. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de un objeto codificado con relación a un bloque predictivo. Un bloque predictivo es un bloque que se encuentra para coincidir estrechamente con el bloque a ser codificado, en términos de diferencia de píxeles. También se puede hacer referencia a un bloque predictivo como bloque de referencia. Tal diferencia de píxeles se puede determinar mediante la suma de la diferencia absoluta (SAD), la suma de la diferencia cuadrática (SSD) u otras métricas de diferencia. HEVC emplea varios objetos codificados que incluyen una CTU, bloques de árbol de codificación (CTB) y CU. Por ejemplo, una CTU se puede dividir en los CTB, que luego se pueden dividir en los CB para su inclusión en las CU. Una CU se puede codificar como una unidad de predicción (PU) que contiene datos de predicción y/o una unidad de transformación (TU) que contiene datos residuales transformados para la CU. El componente de estimación de movimiento 221 genera vectores de movimiento, PU y TU utilizando un análisis de distorsión de tasa como parte de un proceso de optimización de distorsión de tasa. Por ejemplo, el componente de estimación de movimiento 221 puede determinar múltiples bloques de referencia, múltiples vectores de movimiento, etc. para un bloque/cuadro actual, y puede seleccionar los bloques de referencia, vectores de movimiento, etc. que tienen las mejores características de distorsión de tasa. Las mejores características de tasa de distorsión equilibran la calidad de la reconstrucción de video (por ejemplo, la cantidad de pérdida de datos por compresión) con la eficiencia de codificación (por ejemplo, el tamaño de la codificación final).
En algunos ejemplos, el sistema de códec 200 puede calcular valores para posiciones de píxeles de subenteros de imágenes de referencia almacenadas en el componente de memoria intermedia de imágenes decodificadas 223. Por ejemplo, el sistema de códec de video 200 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel, u otras posiciones fraccionarias de píxeles de la imagen de referencia. Por lo tanto, el componente de estimación de movimiento 221 puede realizar una búsqueda de movimiento relativa a las posiciones de píxeles completos y posiciones de píxeles fraccionarios y emitir un vector de movimiento con precisión de píxeles fraccionarios. El componente de estimación de movimiento 221 calcula un vector de movimiento para una PU de un bloque de video en un segmento intercodificado comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. El componente de estimación de movimiento 221 emite el vector de movimiento calculado como datos de movimiento al componente de formateo de cabecera y CABAC 231 para la codificación y el movimiento al componente de compensación de movimiento 219.
La compensación de movimiento, realizada por el componente de compensación de movimiento 219, puede implicar buscar o generar el bloque predictivo en base al vector de movimiento determinado por el componente de estimación de movimiento 221. De nuevo, el componente de estimación de movimiento 221 y el componente de compensación de movimiento 219 se pueden integrar funcionalmente, en algunos ejemplos. Al recibir el vector de movimiento para la PU del bloque de video actual, el componente de compensación de movimiento 219 puede ubicar el bloque predictivo al que apunta el vector de movimiento. Luego, se forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo de los valores de píxel del bloque de vídeo actual que se está codificando, formando valores de diferencia de píxel. En general, el componente de estimación de movimiento 221 realiza la estimación de movimiento con relación a los componentes de luminancia, y el componente de compensación de movimiento 219 usa vectores de movimiento calculados en base a los componentes de luminancia tanto para los componentes de crominancia como para los componentes de luminancia. El bloque predictivo y el bloque residual se reenvían para transformar el componente de escalado de transformada y cuantificación 213.
La señal de video dividida 201 también se envía al componente de estimación intraimagen 215 y al componente de predicción intraimagen 217. Como con el componente de estimación de movimiento 221 y el componente de compensación de movimiento 219, el componente de estimación intraimagen 215 y el componente de predicción intraimagen 217 pueden estar altamente integrados, pero se ilustran por separado con propósitos conceptuales. El componente de estimación intraimagen 215 y el componente de predicción intraimagen 217 intrapredicen un bloque actual con relación a los bloques en un cuadro actual, como alternativa a la interpredicción realizada por el componente de estimación de movimiento 221 y el componente de compensación de movimiento 219 entre cuadros, como se describió anteriormente. En particular, el componente de estimación intraimagen 215 determina un modo intrapredicción a utilizar para codificar un bloque actual. En algunos ejemplos, el componente de estimación intraimagen 215 selecciona un modo intrapredicción apropiado para codificar un bloque actual de múltiples modos de intrapredicción probados. Los modos de intrapredicción seleccionados se reenvían luego al componente de formato de cabecera y CABAC 231 para la codificación.
Por ejemplo, el componente de estimación intraimagen 215 calcula los valores de distorsión de tasa usando un análisis de distorsión de tasa para los diversos modos de intrapredicción probados, y selecciona el modo de intrapredicción que tiene las mejores características de distorsión de tasa entre los modos probados. El análisis de distorsión de tasa generalmente determina una cantidad de distorsión (o error) entre un bloque codificado y un bloque original no codificado que fue codificado para producir el bloque codificado, así como una tasa de bits (por ejemplo, un número de bits) utilizada para producir el bloque codificado. El componente de estimación intraimagen 215 calcula relaciones a partir de las distorsiones y tasas para los diversos bloques codificados para determinar qué modo de intrapredicción exhibe el mejor valor de distorsión de tasa para el bloque. Además, el componente de estimación intraimagen 215 se puede configurar para codificar bloques de profundidad de un mapa de profundidad utilizando un modo de modelado de profundidad (DMM) en base a la optimización de distorsión de tasa (RDO).
El componente de predicción intraimagen 217 puede generar un bloque residual a partir del bloque predictivo en base a los modos de intrapredicción seleccionados determinados por el componente de estimación intraimagen 215 cuando se implementa en un codificador o leer el bloque residual del flujo de bits cuando se implementa en un decodificador. El bloque residual incluye la diferencia de valores entre el bloque predictivo y el bloque original, representado como una matriz. Luego, el bloque residual se reenvía al componente de escalado y cuantificación de transformación 213. El componente de estimación intraimagen 215 y el componente de predicción intraimagen 217 pueden operar tanto en componentes de luminancia como de crominancia.
El componente de escalado y cuantificación de transformación 213 está configurado para comprimir además el bloque residual. El componente de escalado y cuantificación de transformación 213 aplica una transformación, como una transformada de coseno discreta (DCT), una transformada de seno discreta (DST), o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de video que comprende valores de coeficiente de transformada residual. También se podrían usar transformadas de ondas pequeñas, transformadas de enteros, transformadas de subbanda u otros tipos de transformadas. La transformación puede convertir la información residual de un dominio de valor de píxel a un dominio de transformación, tal como un dominio de frecuencia. El componente de escalado y cuantificación de transformación 213 también está configurado para escalar la información residual transformada, por ejemplo, en base a la frecuencia. Tal escalado implica aplicar un factor de escala a la información residual de modo que la información de frecuencia diferente se cuantifique en diferentes granularidades, lo que puede afectar la calidad visual final del video reconstruido. El componente de escalado y cuantificación de transformación 213 también está configurado para cuantificar los coeficientes de transformación para reducir aún más la tasa de bits. El proceso de cuantificación puede reducir la profundidad de bit asociada con algunos o todos los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, el componente de escalado y cuantificación de transformada 213 puede realizar entonces una exploración de la matriz que incluye los coeficientes de transformación cuantificados. Los coeficientes de transformación cuantificados se reenvían al componente de formateo de cabecera y CABAC 231 para ser codificados en el flujo de bits.
El componente de escalado y transformación inversa 229 aplica una operación inversa del componente de escalado y cuantificación de transformada 213 para soportar la estimación de movimiento. El componente de escalado y transformación inversa 229 aplica escalado inverso, transformación y/o cuantificación para reconstruir el bloque residual en el dominio de píxeles, por ejemplo, para su uso posterior como bloque de referencia que puede llegar a ser un bloque predictivo para otro bloque actual. El componente de estimación de movimiento 221 y/o el componente de compensación de movimiento 219 pueden calcular un bloque de referencia sumando el bloque residual de nuevo a un bloque predictivo correspondiente para su uso en la estimación de movimiento de un bloque/cuadro posterior. Los filtros se aplican a los bloques de referencia reconstruidos para mitigar los artefactos creados durante el escalado, la cuantificación y la transformación. De lo contrario, dichos artefactos podrían causar una predicción inexacta (y crear artefactos adicionales) cuando se predicen bloques posteriores.
El componente de análisis de control de filtro 227 y el componente de filtros en bucle 225 aplican los filtros a los bloques residuales y/o a los bloques de imágenes reconstruidas. Por ejemplo, el bloque residual transformado del componente de escalado y transformación inversa 229 se puede combinar con un bloque de predicción correspondiente del componente de predicción intraimagen 217 y/o componente de compensación de movimiento 219 para reconstruir el bloque de imagen original. Luego, los filtros se pueden aplicar al bloque de imagen reconstruido. En algunos ejemplos, los filtros se pueden aplicar a los bloques residuales. Como con otros componentes en la FIG. 2, el componente de análisis de control de filtro 227 y el componente de filtros en bucle 225 están altamente integrados y se pueden implementar juntos, pero se representan por separado con propósitos conceptuales. Los filtros aplicados a los bloques de referencia reconstruidos se aplican a regiones espaciales particulares e incluyen múltiples parámetros para ajustar cómo se aplican tales filtros. El componente de análisis de control de filtro 227 analiza los bloques de referencia reconstruidos para determinar dónde se deberían aplicar tales filtros y establece los parámetros correspondientes. Tales datos se reenvían al componente de formateo de cabecera y CABAC 231 como datos de control de filtro para la codificación. El componente de filtros en bucle 225 aplica tales filtros en base a los datos de control de filtro. Los filtros pueden incluir un filtro de desbloqueo, un filtro de supresión de ruido, un filtro de SAO y un filtro de bucle adaptativo. Tales filtros se pueden aplicar en el dominio espacial/de píxeles (por ejemplo, en un bloque de píxeles reconstruido) o en el dominio de frecuencia, dependiendo del ejemplo.
Cuando funciona como codificador, el bloque de imagen reconstruida filtrada, el bloque residual y/o el bloque de predicción se almacenan en el componente de memoria intermedia de imágenes decodificadas 223 para su uso posterior en la estimación de movimiento como se discutió anteriormente. Cuando funciona como decodificador, el componente de memoria intermedia de imágenes decodificadas 223 almacena y reenvía los bloques reconstruidos y filtrados hacia una pantalla como parte de una señal de vídeo de salida. El componente de memoria intermedia de imágenes decodificadas 223 puede ser cualquier dispositivo de memoria capaz de almacenar bloques de predicción, bloques residuales y/o bloques de imágenes reconstruidas.
El componente de formateo de cabecera y CABAC 231 recibe los datos de los diversos componentes del sistema de códec 200 y codifica tales datos en un flujo de bits codificado para su transmisión hacia un decodificador. Específicamente, el componente de formateo de cabecera y CABAC 231 genera varias cabeceras para codificar datos de control, tales como datos de control generales y datos de control de filtrado. Además, los datos de predicción, incluyendo los datos de intrapredicción y de movimiento, así como los datos residuales en forma de datos de coeficiente de transformación cuantificados, se codifican todos en el flujo de bits. El flujo de bits final incluye toda la información deseada por el decodificador para reconstruir la señal de video dividida original 201. Tal información también puede incluir tablas de índice de modo de intrapredicción (a las que también se hace referencia como tablas de mapeo de palabras de código), definiciones de contextos de codificación para varios bloques, indicaciones de modos de intrapredicción más probables, una indicación de información de partición, etc. Tales datos se pueden codificar empleando codificación de entropía. Por ejemplo, la información se puede codificar empleando codificación de longitud variable adaptativa al contexto (CAVLC), CABAC, codificación aritmética binaria adaptativa al contexto basada en sintaxis (SBAC), codificación de entropía de partición de intervalo de probabilidad (PIPE) u otra técnica de codificación de entropía. Después de la codificación de entropía, el flujo de bits codificado se puede transmitir a otro dispositivo (por ejemplo, un decodificador de video) o archivar para su posterior transmisión o recuperación.
La presente descripción incluye modificaciones para proporcionar una mayor eficiencia de codificación (por ejemplo, reducción del tamaño de archivo) y/o una menor complejidad de codificación (por ejemplo, uso reducido de recursos del procesador) cuando se dividen las CTU. Por lo tanto, la presente descripción mejora la funcionalidad del sistema de códec 200 cuando se genera la señal de video dividida 201 para codificar y/o decodificar por el resto del sistema de códec 200, dependiendo del ejemplo. Específicamente, cuando se genera la señal de video dividida 201, se usa un árbol de codificación común para dividir tanto las muestras de luminancia como las muestras de crominancia en una CTU siempre que los CB correspondientes sean de un tamaño mayor que un umbral. Para los CB que son iguales o menores que el umbral, el árbol de codificación se divide en un subárbol o subárboles de codificación de luminancia y un subárbol o subárboles de codificación de crominancia que pueden realizar diferentes particiones en los CB de luminancia y los CB de crominancia por debajo del umbral, respectivamente.
La FIG. 3 es un diagrama de bloques que ilustra un codificador de video 300 de ejemplo que puede dividir bloques de luminancia y de crominancia. El codificador de video 300 se puede emplear para implementar las funciones de codificación del sistema de códec 200 y/o implementar los pasos 101, 103, 105, 107 y/o 109 del método operativo 100. El codificador 300 divide una señal de video de entrada, dando como resultado una señal de video dividida 301, que es sustancialmente similar a la señal de video dividida 201. La señal de video dividida 301 luego se comprime y codifica en un flujo de bits por componentes del codificador 300.
Específicamente, la señal de video dividida 301 se reenvía a un componente de predicción intraimagen 317 para la intrapredicción. El componente de predicción intraimagen 317 puede ser sustancialmente similar al componente de estimación intraimagen 215 y al componente de predicción intraimagen 217. La señal de video dividida 301 también se reenvía a un componente de compensación de movimiento 321 para la interpredicción en base a los bloques de referencia en un componente de memoria intermedia de imágenes decodificadas 323. El componente de compensación de movimiento 321 puede ser sustancialmente similar al componente de estimación de movimiento 221 y al componente de compensación de movimiento 219. Los bloques de predicción y los bloques residuales del componente de predicción intraimagen 317 y el componente de compensación de movimiento 321 se reenvían a un componente de transformación y cuantificación 313 para transformación y cuantificación de los bloques residuales. El componente de transformación y cuantificación 313 puede ser sustancialmente similar al componente de escalado y cuantificación de transformación 213. Los bloques residuales transformados y cuantificados y los bloques de predicción correspondientes (junto con los datos de control asociados) se reenvían a un componente de codificación de entropía 331 para codificar en un flujo de bits. El componente de codificación de entropía 331 puede ser sustancialmente similar al componente de formateo de cabecera y CABAC 231.
Los bloques residuales transformados y cuantificados y/o los bloques de predicción correspondientes también se reenvían desde el componente de transformación y cuantificación 313 a un componente de transformación y cuantificación inversa 329 para la reconstrucción en bloques de referencia para su uso por el componente de compensación de movimiento 321. El componente de transformación y cuantificación inversa 329 puede ser sustancialmente similar al componente de escalado y transformación inversa 229. Los filtros en bucle en un componente de filtros en bucle 325 también se aplican a los bloques residuales y/o bloques de referencia reconstruidos, dependiendo del ejemplo. El componente de filtros en bucle 325 puede ser sustancialmente similar al componente de análisis de control de filtro 227 y al componente de filtros en bucle 225. El componente de filtros en bucle 325 puede incluir múltiples filtros como se discutió con respecto al componente de filtros en bucle 225. Los bloques filtrados luego se almacenan en un componente de memoria intermedia de imágenes decodificadas 323 para su uso como bloques de referencia por el componente de compensación de movimiento 321. El componente de memoria intermedia de imágenes decodificadas 323 puede ser sustancialmente similar al componente de memoria intermedia de imágenes decodificadas 223.
El codificador de video 300 recibe y divide una serie de cuadros de video en una señal de video dividida 301 para una mayor compresión a través de otros componentes como se discutió anteriormente. Los cuadros de video se dividen en segmentos. Específicamente, las partes del cuadro se seleccionan para la interpredicción unidireccional mediante el componente de compensación de movimiento 321 y se incluyen en uno o más segmentos P. Otras partes del cuadro se seleccionan para la interpredicción bidireccional mediante el componente de compensación de movimiento 321 y se incluyen en uno o más segmentos B. Todavía otras partes del cuadro se seleccionan para la intrapredicción mediante el componente de predicción intraimagen 317 y se incluyen en uno o más segmentos I. Mientras que los mecanismos descritos son operables para segmentos P y B, la eficiencia de codificación se incrementa más significativamente para segmentos I en muchos ejemplos. Por lo tanto, los mecanismos descritos se describen principalmente con referencia a los segmentos I.
Los segmentos en un cuadro de video se subdividen en las CTU. Una CTU contiene muestras tanto de luminancia como de crominancia. Luego, se selecciona un árbol de codificación y se aplica a cada CTU. Se puede hacer referencia a una CTU como CTB con propósitos de partición. El árbol de codificación de un CTB aplica modos de división seleccionados para dividir el CTB en CB de luminancia. El árbol de codificación para el CTB luego aplica modos de división seleccionados para dividir el CTB en CB de crominancia. Los CB de luminancia y los CB de crominancia correspondientes (por ejemplo, tanto Cr como Cb) se incluyen cada uno en una CU con la información de sintaxis correspondiente. Las CU constituyen la señal de video dividida 301, que se reenvía al componente de compensación de movimiento 321, al componente de predicción intraimagen 317 y/o al componente de transformación y cuantificación 313 para la compresión.
Los mecanismos descritos aplican el mismo árbol de codificación (al que también se hace referencia en la presente memoria como árbol de codificación común) a todas las muestras en una CTU. Sin embargo, el sistema codificador 300 emplea un umbral para la aplicación del árbol de codificación a la CTU. Los bloques de codificación de luminancia y los bloques de codificación de crominancia de un tamaño que supera el umbral se dividen por el mismo árbol de codificación y, por lo tanto, se dividen por los mismos modos de división que dan como resultado la misma partición. El árbol de codificación se divide en un subárbol de codificación de luminancia y un subárbol de codificación de crominancia para bloques de codificación de luminancia y de crominancia, respectivamente, que son de un tamaño igual o menor que el umbral. En consecuencia, la partición final para los bloques de luminancia es la misma que para los bloques de crominancia hasta que se alcanza el umbral. Luego, las particiones divergen, lo que permite que los subárboles de codificación seleccionen modos divididos para optimizar la eficiencia de la codificación teniendo en cuenta las diferencias entre las muestras de luminancia y las muestras de crominancia. De esta manera, la eficiencia de codificación general aumenta por encima del uso de un solo árbol de codificación para todas las muestras en una CTU. Además, el árbol de codificación compartido solo se calcula una vez para una CTU y solo se almacena una vez (por ejemplo, en sintaxis en el flujo de bits). Los subárboles se calculan por separado y se almacenan por separado (por ejemplo, como una diferencia entre los subárboles). Sin embargo, el aumento en la complejidad computacional y el tamaño de codificación para los diferentes subárboles es significativamente menor que la complejidad y el tamaño de codificación para árboles de codificación separados. Por lo tanto, el mecanismo descrito aumenta la eficiencia de codificación general reduciendo el tamaño de archivo del flujo de bits final así como que también reduce la complejidad y, por lo tanto, el uso de recursos de procesador con relación a otros mecanismos de partición.
La FIG. 4 es un diagrama de bloques que ilustra un decodificador de video 400 de ejemplo que puede dividir bloques de luminancia y de crominancia. El decodificador de video 400 se puede emplear para implementar las funciones de decodificación del sistema de códec 200 y/o implementar los pasos 111, 113, 115 y/o 117 del método operativo 100. El decodificador 400 recibe un flujo de bits, por ejemplo, de un codificador 300 y genera una señal de video de salida reconstruida en base al flujo de bits para mostrar a un usuario final.
El flujo de bits se recibe por un componente de decodificación de entropía 433. El componente de decodificación de entropía 433 está configurado para implementar un esquema de decodificación de entropía, tal como CAVLC, CABAC, SBAC, codificación PIPE u otras técnicas de codificación de entropía. Por ejemplo, el componente de decodificación de entropía 433 puede emplear información de cabecera para proporcionar un contexto para interpretar datos adicionales codificados como palabras de código en el flujo de bits. La información decodificada incluye cualquier información deseada para decodificar la señal de video, tal como datos de control general, datos de control de filtro, información de partición, datos de movimiento, datos de predicción y coeficientes de transformación cuantificados de bloques residuales. Los coeficientes de transformación cuantificados se reenvían a un componente de transformación y cuantificación inversa 429 para la reconstrucción en bloques residuales. El componente de transformación y cuantificación inversa 429 puede ser similar al componente de inversa y cuantificación inversa 329.
Los bloques residuales reconstruidos y/o los bloques de predicción se reenvían al componente de predicción intraimagen 417 para la reconstrucción en bloques de imagen basados en operaciones de intrapredicción. El componente de predicción intraimagen 417 puede ser similar al componente de estimación intraimagen 215 y un componente de predicción intraimagen 217. Específicamente, el componente de predicción intraimagen 417 emplea modos de predicción para ubicar un bloque de referencia en el cuadro y aplica un bloque residual al resultado para reconstruir bloques de imagen intrapredichos. Los bloques de imagen intrapredichos reconstruidos y/o los bloques residuales y los datos de interpredicción correspondientes se reenvían a un componente de memoria intermedia de imágenes decodificadas 423 a través de un componente de filtros en bucle 425, que puede ser sustancialmente similar al componente de memoria intermedia de imágenes decodificadas 223 y -e l componente de filtros en bucle 225, respectivamente. El componente de filtros en bucle 425 filtra los bloques de imágenes reconstruidos, los bloques residuales y/o los bloques de predicción, y tal información se almacena en el componente de memoria intermedia de imágenes decodificadas 423. Los bloques de imágenes reconstruidas del componente de memoria intermedia de imágenes decodificadas 423 se reenvían a un componente de compensación de movimiento. 421 para interpredicción. El componente de compensación de movimiento 421 puede ser sustancialmente similar al componente de estimación de movimiento 221 y/o al componente de compensación de movimiento 219. Específicamente, el componente de compensación de movimiento 421 emplea vectores de movimiento de un bloque de referencia para generar un bloque de predicción y aplica un bloque residual al resultado para reconstruir un bloque de imagen. Los bloques reconstruidos resultantes también se pueden reenviar a través del componente de filtros en bucle 425 al componente de memoria intermedia de imágenes decodificadas 423. El componente de memoria intermedia de imágenes decodificadas 423 continúa almacenando bloques de imágenes reconstruidas adicionales, que se pueden reconstruir en cuadros a través de la información de partición. Tales cuadros también se pueden colocar en una secuencia. La secuencia se emite hacia una pantalla como una señal de vídeo de salida reconstruida.
Como el codificador de video 300, el decodificador de video 400 realiza la partición aplicando un árbol de codificación común para bloques de luminancia y bloques de crominancia con tamaños por encima de un umbral, y aplicando subárboles de codificación dividida para bloques de luminancia y bloques de crominancia con tamaños iguales a o por debajo del umbral. Específicamente, el componente de decodificación de entropía 433 del decodificador 400 obtiene el árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia a partir de la sintaxis de las CTU. Para cada CTU, se aplica el árbol de codificación común para dividir las muestras de luminancia en bloques de codificación de luminancia en la unidad en que se alcanza el umbral. Luego se aplica el subárbol de codificación de luminancia para subdividir los bloques de codificación de luminancia en tamaños que son iguales a/menores que el umbral. Además, el árbol de codificación común se aplica para dividir las muestras de crominancia en bloques de codificación de crominancia en la unidad de codificación de crominancia en que se alcanza el umbral. Luego se aplica el subárbol de codificación de crominancia para subdividir los bloques de codificación de crominancia en tamaños que son iguales a/menores que el umbral. El mismo árbol de codificación y el mismo subárbol de codificación de crominancia se pueden aplicar tanto a las muestras de Cr como a las de Cb. Los bloques de codificación resultantes se pueden combinar en CU y reenviar al componente de compensación de movimiento 421, el componente de predicción intraimagen 417 y/o el componente de transformación inversa y cuantificación 429 para decodificar en un cuadro de video final para mostrar a un usuario como parte de la señal de vídeo de salida.
El uso del árbol de codificación común y los subárboles divididos reduce el tamaño de archivo del flujo de bits y, por lo tanto, aumenta la eficiencia de codificación en el sistema decodificador 400 como en el sistema codificador 300. Además, también se puede lograr una reducción de la complejidad a medida que se aplica el árbol de codificación común a tanto las muestras de luminancia como las muestras de crominancia hasta que se alcanza el umbral, lo que puede requerir menos recursos de procesamiento que aplicar árboles de codificación separados. El mecanismo de partición que emplea el árbol de codificación común y los subárboles divididos, como se usa en el método 100, el sistema de códec 200, el sistema codificador 300 y el sistema decodificador 400, se discute con más detalle con respecto a las figuras a continuación.
La FIG. 5 es un diagrama esquemático que ilustra un mecanismo 500 de ejemplo de partición de una CTU en unidades de codificación (CU) que contienen CB de luminancia y CB de crominancia. El mecanismo 500 se puede emplear por el método 100, el sistema de códec 200, el sistema codificador 300 y/o el sistema decodificador 400 cuando se dividen cuadros de vídeo.
Se recibe un cuadro de video y se divide en uno o más segmentos 540. Un segmento 540 es una región espacialmente distinta de un cuadro que se codifica por separado de otras regiones en el mismo cuadro. Las regiones del cuadro se asignan a los segmentos 540 en base a un mecanismo de codificación asignado para la región correspondiente. Las regiones de un cuadro que están designadas para interpredicción unidireccional e interpredicción bidireccional se asignan a los segmentos 540 P y B, respectivamente. Las regiones del cuadro que están designadas para la intrapredicción se asignan a los segmentos 540 I.
Los segmentos 540 se dividen en las CTU 541. Una CTU 541 es un bloque de píxeles más grande que puede aceptar la aplicación de un árbol de codificación completo 547 (por ejemplo, un árbol de codificación 547 generalmente no se extiende a través de los límites de la CTU 541). El tamaño de una CTU 541 se define por sintaxis y puede ser, por ejemplo, sesenta y cuatro píxeles por sesenta y cuatro píxeles, treinta y dos píxeles por treinta y dos píxeles, dieciséis píxeles por dieciséis píxeles, etc. Una CTU 541 también puede ser un rectángulo en algunos ejemplos. Una CTU 541 contiene tanto muestras de luminancia 542 como muestras de crominancia 544. Una muestra de luminancia 542 es un valor de luz y una muestra de crominancia 544 es un valor de color. Las muestras de crominancia 544 pueden incluir tanto valores de Cb como valores de Cr. Se debería observar que también se puede hacer referencia a la muestra de luminancia 542 y la muestra de crominancia 544 como datos de luminancia y datos de crominancia, respectivamente, en algunos contextos.
Un árbol de codificación 547, un subárbol de codificación de luminancia 548 y un subárbol de codificación de crominancia 550 se aplican a las muestras de luminancia 542 y las muestras de crominancia 544 en base al umbral 549. Un árbol de codificación 547 es una lista de nodos de decisión relacionados por relaciones secundarias y/o principales. Cada nodo está asociado con un modo de división que divide las muestras correspondientes. El primer nodo (por ejemplo, el nodo raíz) del árbol de codificación 547 aplica un modo de división para dividir las muestras de luminancia 542 o las muestras de crominancia 544 en bloques correspondientes. Los nodos secundarios aplican recursivamente modos de división adicionales para subdividir las partes correspondientes de los bloques en bloques más pequeños hasta que se alcanzan las ramas del árbol de codificación 547.
Como se indicó anteriormente, el árbol de codificación 547 se aplica tanto a las muestras de luminancia 542 como a las muestras de crominancia 544 hasta que los bloques correspondientes se dividen en un tamaño indicado por el umbral 549. El umbral 549 es un valor de tamaño numérico definido. Por ejemplo, el umbral 549 puede ser cuatro mil noventa y seis píxeles, dos mil cuarenta y ocho píxeles, mil veinticuatro píxeles, etc. El umbral 549 también se puede expresar como un valor basado en logaritmo en algunos casos, tal como log2Cbsize, donde log2Cbsize es el log2 multiplicado por el tamaño del bloque de codificación (por ejemplo, seis píxeles) que equivale a cuatro mil noventa y seis píxeles.
El subárbol de codificación de luminancia 548 y el subárbol de codificación de crominancia 550 se aplican a bloques de codificación que se dividen en un tamaño que es igual o menor que el umbral 549. Específicamente, los bloques de codificación de luminancia 543 y los bloques de codificación de crominancia 545 contienen un subconjunto de muestras de luminancia 542 y muestras de crominancia 544, respectivamente para la CTU 541. En consecuencia, el subárbol de codificación de luminancia 548 y el subárbol de codificación de crominancia 550 se aplican a los bloques de codificación de luminancia 543 y a los bloques de codificación de crominancia 545 para dividir además las muestras de luminancia 542 y las muestras de crominancia 544, respectivamente, cuando el tamaño de tales bloques está por debajo del umbral. Un subárbol de codificación es un árbol de codificación con un nodo raíz que es secundario del árbol de codificación 547. Los subárboles de codificación incluyen un subárbol de codificación de luminancia 548 para aplicación a las muestras de luminancia 542 y un subárbol de codificación de crominancia 550 para la aplicación a las muestras de crominancia 544. El subárbol de codificación de luminancia 548 y el subárbol de codificación de crominancia 550 pueden ser diferentes, lo que permite diferentes subparticiones para las muestras de luminancia 542 y las muestras de crominancia 544 incluso aunque las particiones más grandes se compartan tanto por las muestras de luminancia 542 como por las muestras de crominancia 544. Por lo tanto, las muestras de luminancia 542 y las muestras de crominancia 544 se dividen por los mismos modos de división según el árbol de codificación 547 hasta que se alcanza el umbral 549. Luego, los bloques de luminancia y los bloques de crominancia, que se crean por el árbol de codificación 547, se someten a diferentes modos de división en base a los diferentes subárboles de codificación de luminancia 548 y subárboles de codificación de crominancia 550.
El árbol de codificación 547 y el subárbol de codificación de luminancia 548 dividen las muestras de luminancia 542 en bloques de codificación de luminancia 543. El árbol de codificación 547 y el subárbol de codificación de crominancia 550 dividen las muestras de crominancia 544 en bloques de codificación de crominancia 545. Un bloque de codificación de luminancia 543 es un grupo dividido de muestras de luminancia 542 designadas para compresión adicional. Un bloque de codificación de crominancia 545 es un grupo dividido de muestras de crominancia 544 designado para compresión adicional. El bloque de codificación de luminancia 543 y los bloques de codificación de crominancia 545 relacionados se pueden asignar a una unidad de codificación 546. Una unidad de codificación 546 es un grupo de valores de muestras de píxeles relacionados que se reenvían para la compresión de video a través de la interpredicción y/o la intrapredicción. Cuando el segmento 540 es un segmento 540 I, la unidad de codificación 546 se reenvía para la intrapredicción. Cuando el segmento 540 es un segmento 540 P o un segmento 540 B, la unidad de codificación 546 se envía para interpredicción. La unidad de codificación 546 puede contener un solo bloque de codificación de luminancia 543 y bloques de codificación de crominancia 545 que incluyen un bloque de codificación de crominancia Cr 551 con valores de muestra de Cr, y un bloque de codificación de crominancia Cb 552 con valores de muestra de Cb.
La FIG. 6 ilustra un ejemplo de árbol de codificación 600 que se aplica a una CTU, que puede ser sustancialmente similar al árbol de codificación 547 y la CTU 541, respectivamente. En consecuencia, el árbol de codificación 600 se puede emplear por el método 100, el sistema de códec 200, el sistema codificador 300, el sistema decodificador 400 y/o el mecanismo 500 cuando se dividen cuadros de vídeo. Por ejemplo, un árbol de codificación 600 puede incluir un árbol de codificación común 613 con subárboles de codificación de luminancia y/o crominancia 614, que pueden implementar un árbol de codificación 547, un subárbol de codificación de luminancia 548 y/o un subárbol de codificación de crominancia 550.
Se emplea un árbol de codificación 600 para dividir una CTU en los CB que componen una CU. El árbol de codificación 600 incluye una pluralidad de nodos, que incluyen, por ejemplo, un nodo raíz 611, nodos de segunda capa 615, nodos de tercera capa 617 y nodos de cuarta capa 619 en el ejemplo ilustrado. Se debería observar que, aunque se representan cuatro capas de nodos, se puede emplear cualquier número de capas dependiendo del tamaño de la CTU y el tamaño de bloque mínimo. En la FIG. 6 se representa como un punto negro un nodo 611, 615, 617 y 619. Un nodo de árbol de codificación 600, tal como se usa en la presente memoria, es un bloque de píxeles de un tamaño correspondiente sobre el que se puede aplicar un modo de división para dividir el bloque en una pluralidad de bloques de píxeles más pequeños. En el ejemplo mostrado, los nodos emplean un modo de división de árbol cuádruple que divide el bloque correspondiente en cuatro bloques más pequeños. Este proceso puede continuar hasta que se alcance una condición predefinida. Tales condiciones predefinidas pueden incluir un tamaño de bloque mínimo y/o características de señal del bloque (por ejemplo, coeficientes de los datos en el bloque en el dominio de la frecuencia). Por ejemplo, en un nodo raíz 611, se puede aplicar un modo de división para dividir el bloque, en este caso la CTU, en bloques más pequeños. Se selecciona un modo de división con una partición correspondiente para separar píxeles con diferentes valores en diferentes bloques y agrupar píxeles con valores similares en bloques comunes. Los bloques divididos en el nodo raíz 611 dan como resultado nodos de segunda capa 615. En cada nodo, se comprueban las características de la señal y el tamaño del bloque en el bloque. Cuando las características de la señal indican que el bloque contiene píxeles de valores relativamente similares, el bloque no se puede dividir más. Además, cuando los bloques alcanzan un tamaño mínimo, los bloques no se pueden dividir más. En el ejemplo mostrado, tres de los nodos de segunda capa 615 se dividen aún más mediante la aplicación de modos de división adicionales con las particiones correspondientes que dan como resultado nodos de tercera capa 617. En este ejemplo, uno de los nodos de segunda capa 615 no se divide más, por ejemplo porque las características de señal relacionadas con las muestras en el bloque (por ejemplo, los coeficientes en el dominio de la frecuencia) indican que el bloque contiene píxeles de valores relativamente similares. Asimismo, los nodos de tercera capa 617 se pueden dividir en nodos de cuarta capa 619 en este ejemplo.
En consecuencia, cuando se aplica un árbol de codificación 600 a una CTU, el árbol de codificación 600 aplica un nodo raíz 611 con un modo de división correspondiente a toda la CTU para dividir la CTU en bloques. El árbol de codificación 600 luego aplica nodos 615, 617 y/o 619 de tamaños progresivamente más pequeños para dividir recursivamente cada capa de bloques en bloques más pequeños, sujetos a tamaños de bloque mínimos y restricciones características de señal. Mientras que los modos de división de árbol cuádruple se muestran en la FIG.
6, se pueden emplear muchos modos de división como se explica a continuación.
Como se indicó anteriormente, las características de señal de los componentes de luminancia y los componentes de crominancia pueden ser significativamente diferentes. En consecuencia, un modo de división eficiente para un bloque de luminancia puede ser diferente de un modo de división eficiente para un bloque de crominancia en la misma ubicación. Como tal, se puede emplear un árbol de codificación común 613 para los nodos 611 y 615 y los bloques correspondientes que son más grandes que un umbral. Se pueden emplear subárboles de codificación de luminancia y de crominancia 614 separados para dividir nodos y bloques correspondientes que sean iguales o más pequeños que el umbral, en estos casos para dividir nodos de tercera capa 617 en nodos de cuarta capa 619. Un subárbol de codificación 614 es un árbol de codificación con un nodo raíz que es secundario del árbol de codificación común 613. El árbol de codificación común 613 se representa en líneas continuas y los subárboles de codificación 614 se representan en líneas discontinuas. Específicamente, cuando un nodo 611 y 615 está asociado con un que es tamaño mayor que el umbral, entonces el nodo 611 y 615 se coloca en el árbol de codificación común 613. Cuando un nodo 617 y 619 es igual o menor que el umbral, el nodo 617 y 619 se coloca en un subárbol de codificación 614. Los nodos y los modos de división correspondientes seleccionados para un subárbol de codificación de luminancia 614 se pueden reemplazar con diferentes nodos y/o modos de división cuando se determina un subárbol de codificación de crominancia 614. En este caso, los nodos 617 en un subárbol de codificación de luminancia pueden emplear diferentes modos de división que los nodos 617 en un subárbol de codificación de crominancia, dando como resultado diferentes nodos 619 para diferentes subárboles de codificación 614. Esto permite que los bloques de codificación de luminancia y los bloques de codificación de crominancia mantengan una partición general similar mientras que se emplean diferentes particiones de grano pequeño.
La FIG. 7 es un diagrama esquemático que ilustra un conjunto de ejemplo de modos de división 700 empleados en árboles de codificación, tales como el árbol de codificación 547, el subárbol de codificación de luminancia 548, el subárbol de codificación de crominancia 550, el árbol de codificación 600, el árbol de codificación común 613 y el subárbol de codificación 614. Como tal, el conjunto de modos de división 700 se puede emplear en el mecanismo 500 cuando el método operativo 100, el sistema de códec 200, el sistema codificador 300 y/o el sistema decodificador 400 para dividir cuadros de vídeo. El conjunto de modos de división 700 incluye un árbol cuádruple (QT) 701, un árbol binario vertical (VBT) 703, un árbol binario horizontal (HBT) 705, un árbol triple vertical (VTT) 707 y un árbol triple horizontal (HTT) 709. Cada nodo de un árbol de codificación (y cada nodo en un subárbol de codificación) aplica uno del conjunto de modos de división 700 a un bloque de muestras. Por lo tanto, un nodo principal en un árbol/subárbol de codificación aplica un modo de división a un grupo de muestras para crear dos, tres o cuatro bloques (dependiendo del modo de división). Luego, los nodos secundarios aplican más modos de división para dividir aún más los bloques creados por el nodo principal. Los nodos secundarios de los nodos secundarios pueden subdividir aún más tales bloques hasta que se alcance el final del árbol/subárbol de codificación. El modo de división para un nodo particular se selecciona del conjunto de modos de división 700 (por ejemplo, mediante un proceso de RDO en un codificador) para agrupar muestras con valores similares con el fin de soportar una compresión eficiente por intrapredicción y/o interpredicción. En un decodificador, el árbol de codificación, los subárboles y los modos de división se pueden determinar a partir del flujo de bits, por ejemplo, que se almacena en la sintaxis en un conjunto de parámetros para el segmento, la CTU y/o las unidades de codificación correspondientes.
Un QT 701 es un modo de división que divide un bloque de codificación en cuatro subbloques iguales. Por lo tanto, un QT 701 divide un bloque de muestras de luminancia en cuatro bloques de muestras de luminancia de igual tamaño. Además, un QT 701 divide un bloque de muestras de crominancia en cuatro bloques más pequeños de muestras de crominancia de igual tamaño.
Un VBT 703 es un modo de división que divide un bloque de codificación en dos subbloques de igual tamaño. Tales subbloques tienen la misma altura y la mitad del ancho del bloque de codificación original. Por lo tanto, un VBT 703 divide un bloque principal de muestras de luminancia en dos bloques secundarios de muestras de luminancia de igual tamaño con la misma altura y la mitad del ancho del bloque principal de muestras de luminancia. Además, un VBT 703 divide un bloque principal de muestras de crominancia en dos bloques secundarios de muestras de crominancia de igual tamaño con la misma altura y la mitad del ancho del bloque principal de muestras de crominancia.
Un HBT 705 es un modo de división que divide un bloque de codificación en dos subbloques de igual tamaño. Tales subbloques tienen el mismo ancho y la mitad de la altura del bloque de codificación original. Por lo tanto, un HBT 705 divide un bloque principal de muestras de luminancia en dos bloques secundarios de muestras de luminancia de igual tamaño con el mismo ancho y la mitad de la altura que el bloque principal de muestras de luminancia. Además, un HBT 705 divide un bloque principal de muestras de crominancia en dos bloques secundarios de muestras de crominancia de igual tamaño con el mismo ancho y la mitad de la altura del bloque principal de muestras de crominancia.
Un VTT 707 es un modo de división que divide un bloque de codificación en tres subbloques. Tales subbloques tienen la misma altura que el bloque de codificación original. Uno de los subbloques tiene la mitad del ancho del bloque de codificación original y dos de los subbloques tienen un ancho de un cuarto del bloque de codificación original. Por lo tanto, un VTT 707 divide un bloque principal de muestras de luminancia en tres bloques secundarios de muestras de luminancia con la misma altura que el bloque principal de muestras de luminancia y con un cuarto, la mitad y un cuarto del ancho del bloque principal de muestras de luminancia, respectivamente. Además, un VTT 707 divide un bloque principal de muestras de crominancia en tres bloques secundarios de muestras de crominancia con la misma altura que el bloque principal de muestras de crominancia y con un cuarto, la mitad y un cuarto del ancho del bloque principal de muestras de crominancia, respectivamente.
Un HTT 709 es un modo de división que divide un bloque de codificación en tres subbloques. Tales subbloques tienen el mismo ancho que el bloque de codificación original. Uno de los subbloques tiene la mitad de la altura del bloque de codificación original y dos de los subbloques tienen una altura de un cuarto del bloque de codificación original. Por lo tanto, un HTT 709 divide un bloque principal de muestras de luminancia en tres bloques secundarios de muestras de luminancia con el mismo ancho que el bloque principal de muestras de luminancia y con un cuarto, la mitad y un cuarto de la altura del bloque principal de muestras de luminancia, respectivamente. Además, un HTT 709 divide un bloque principal de muestras de crominancia en tres bloques secundarios de muestras de crominancia con el mismo ancho que el bloque principal de muestras de crominancia y con un cuarto, la mitad y un cuarto de la altura del bloque principal de muestras de crominancia, respectivamente.
La FIG. 8 es un diagrama de flujo de un método 800 de ejemplo de partición de una CTU, tal como la CTU 541, con un árbol de codificación común, tal como el árbol de codificación 547 y/o 613, para codificar nodos de árbol por encima de un tamaño umbral, tal como el umbral 549, y con subárboles divididos, tales como el subárbol de codificación de luminancia 548, el subárbol de codificación de crominancia 550 y/o los subárboles de codificación 614, para codificar nodos de árbol con un tamaño igual o menor que el tamaño umbral. El método 800 se puede emplear para implementar el mecanismo 500 empleando el conjunto de modos de división 700. El método 800 se puede emplear en el método 100, el sistema de códec 200, el sistema de codificador 300 y/o el sistema de decodificador 400 para dividir muestras de cuadros de video en bloques de codificación.
El paso opcional 801 puede ocurrir cuando se emplea el método 800 en un decodificador. En algunos ejemplos, la partición por un árbol de codificación común y subárboles de codificación de luminancia/crominancia divididos es opcional. En tales ejemplos, un codificador puede codificar una bandera luma_chroma_separate. La bandera luma_chroma_separate se puede establecer (por ejemplo, en uno) para indicar que se emplean subárboles de codificación separados para bloques de codificación de luminancia y bloques de codificación de crominancia. La bandera luma_chroma_separate se puede desactivar (por ejemplo, establecer en cero) para indicar que los bloques de luminancia y de crominancia no usan subárboles de codificación separados. En consecuencia, en algunos ejemplos, el decodificador puede obtener/recibir el indicador de luma_chroma_separate del flujo de bits con el fin de determinar si se deberían usar subárboles de codificación separados para la partición. Cuando la bandera luma_chroma_separate indica una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia, el decodificador puede prepararse para dividir las muestras de luminancia y las muestras de crominancia en diferentes subárboles de codificación en base al valor de la bandera luma_chroma_separate. En otros ejemplos, el método 800 se aplica a todas las CTU en los segmentos I. En tal ejemplo, las muestras de luminancia y las muestras de crominancia se dividen en diferentes subárboles de codificación cuando la unidad de árbol de codificación se incluye en un segmento I en un cuadro de video. En tal caso, el paso 801 se puede omitir ya que el uso de subárboles divididos está implícito en tales ejemplos.
En el paso 803, se obtiene una unidad de árbol de codificación. Como se discutió, la unidad de árbol de codificación incluye tanto muestras de luminancia como muestras de crominancia. Cuando se opera en un codificador, la unidad de árbol de codificación se obtiene de la memoria y/o se obtiene de un segmento de un cuadro de video. Cuando se opera en un decodificador, la unidad de árbol de codificación se obtiene a partir de un flujo de bits recibido de un codificador.
En el paso 805, las muestras de luminancia y las muestras de crominancia se dividen según un árbol de codificación común para nodos de árbol de codificación (por ejemplo, un primer nodo de árbol de codificación) con un tamaño que supera un umbral. El tamaño del nodo de árbol de codificación es el tamaño del bloque de codificación actual que se subdivide en el nodo de árbol de codificación correspondiente. El umbral se puede almacenar en sintaxis o puede estar predefinido. Por ejemplo, el umbral puede ser cuatro mil noventa y seis píxeles, dos mil cuarenta y ocho píxeles, mil veinticuatro píxeles, etc. Se debería observar que el paso 805 se divide a partir de los pasos 807 y 809 por claridad de la discusión. En una implementación de ejemplo, el paso 805 y el paso 807 se realizan en muestras de luminancia y luego el paso 805 y el paso 809 se realizan en muestras de crominancia. Por lo tanto, el orden de los pasos se incluye por claridad de la discusión y no se debería considerar una limitación.
En el paso 807, las muestras de luminancia asociadas con los nodos de árbol de codificación (por ejemplo, un segundo nodo de árbol de codificación) con un tamaño igual o menor que el umbral se dividen con un subárbol de codificación de luminancia. En el paso 809, las muestras de crominancia asociadas con los nodos de árbol de codificación (por ejemplo, un tercer nodo de árbol de codificación) con un tamaño igual o menor que el umbral se dividen con un subárbol de codificación de crominancia. El subárbol de codificación de luminancia del paso 807 contiene una partición diferente que el subárbol de codificación de crominancia del paso 809. Por lo tanto, las particiones generales (por ejemplo, particiones más grandes/principales) para los bloques de luminancia y los bloques de crominancia son similares debido al uso del árbol de codificación común en el paso 805. Sin embargo, las particiones más pequeñas/secundarias para los bloques de codificación de luminancia y los bloques de crominancia pueden ser diferentes y los bloques de crominancia se pueden adaptar a las diferencias en la señal de luminancia y la señal de crominancia para aumentar la eficiencia de codificación. Esto se debe a las diferencias entre el subárbol de codificación de luminancia del paso 807 y el subárbol de codificación de crominancia del paso 809. Se debería observar que las muestras de crominancia pueden incluir tanto muestras de Cb como muestras de Cr. Las muestras de Cb y las muestras de Cr se dividen mediante un subárbol de codificación de crominancia común en el paso 809.
El paso 811 opcional se puede emplear en un codificador o decodificador. Cuando el método 800 opera en un codificador, los bloques de codificación de luminancia y los bloques de codificación de crominancia resultantes de la partición se comprimen, por ejemplo, como unidades de codificación, y se codifican en un flujo de bits. El árbol de codificación, el subárbol de codificación de luminancia y los subárboles de codificación de crominancia también se codifican en el flujo de bits. Por ejemplo, el árbol de codificación común se puede codificar en el flujo de bits como TREE_L_C, el subárbol de codificación de luminancia se puede codificar en el flujo de bits como TREE_ L y el subárbol de codificación de crominancia se puede codificar en el flujo de bits como TREE_C. Luego, el flujo de bits se transmite hacia un decodificador para soportar la reconstrucción de los bloques de codificación de crominancia y los bloques de codificación de luminancia para su visualización en un decodificador de video.
Además, en los ejemplos en los que se seleccionan subárboles de codificación de luminancia y subárboles de codificación de crominancia separados a discreción del codificador, el codificador puede codificar una bandera luma_chroma_separate en el flujo de bits (como sintaxis) para indicar una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia al decodificador en el paso 811. En los casos en los que se utilizan subárboles divididos para todas las CTU de los segmentos I, se puede omitir la bandera luma_chroma_separate.
Cuando se emplea el método 800 en un decodificador, el decodificador reconstruye los bloques de luminancia y los bloques de crominancia (por ejemplo, a través de intrapredicción de interpredicción) en el paso 811. Los bloques decodificados se pueden disponer entonces en segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. El segmento se puede disponer en el cuadro de video, que luego se puede incluir en una secuencia de video. El cuadro de video/secuencia de video luego se reenvía hacia una pantalla para mostrarla a un usuario final.
La Tabla 1 a continuación es un ejemplo de sintaxis que implementa el método 800 cuando el uso de subárboles de codificación dividida está implícito para las CTU de segmento I.
Tabla 1
Figure imgf000018_0001
Figure imgf000019_0001
Coding_tree_unit indica que el código restante es específico de una unidad de árbol de codificación. Cuando el tipo de segmento (type_slice) es un segmento I y se establece la qtbtt_dual_tree_intra_flag, la unidad de árbol de codificación utiliza implícitamente árboles de codificación divididos como se indica por una función dual_tree_implicit_qt_split. La qtbtt_dual_tree_intra_flag se establece para especificar que para los segmentos I, cada CTU se divide en unidades de codificación con sesenta y cuatro por sesenta y cuatro muestras de luminancia utilizando una división implícita de quadtree y que estas unidades de codificación son la raíz de dos estructuras de sintaxis coding_quadtree separadas para luminancia y crominancia. La función dual_tree_implicit_qt_split utiliza una función para crear un árbol de codificación de luminancia/crominancia común (denotado como estado TREE_L_C) cuando log2Cbsize es mayor que seis (por ejemplo, cuatro mil noventa y seis píxeles). Específicamente, un bloque de codificación X se divide en bloques de codificación secundarios. El bloque de codificación X se divide en base a la ubicación de una muestra superior izquierda (x0, y0) y una muestra inferior derecha (x1, y1) posicionadas en base al tamaño del bloque de codificación X, denotado como log2CbSize. Los bloques de codificación secundarios pueden ser de un tamaño log2CbSize - 1, que es la mitad del tamaño del bloque de codificación X. Esto se debe a que el tamaño del bloque de codificación se expresa en log2 y, por lo tanto, log2CbSize -1 es la mitad del tamaño de log2CbSize. La función dual_tree_implicit_qt_split es una función recursiva que se puede llamar de una a cuatro veces, dependiendo las comprobaciones de condición, dando como resultado de uno a cuatro bloques de codificación secundarios. Primero se llama a la función dual_tree_implicit_qt_split en base al tamaño del bloque secundario log2CbSize -1 y la muestra superior izquierda (x0, y0) para crear un bloque de codificación secundario superior izquierdo. Si la posición horizontal de la muestra inferior derecha x1 está dentro de la imagen, como se denota por pic_width_in_luma_samples, entonces se llama a la función dual_tree_implicit_qt_split en base al tamaño del bloque secundario log2CbSize -1 y la muestra superior derecha (x1, y0) para crear un bloque de codificación secundario superior derecho. Si la posición vertical de la muestra inferior izquierda y1 está dentro de la imagen, como se denota por pic_height_in_luma_samples, entonces se llama a la función dual_tree_implicit_qt_split en base al tamaño del bloque secundario log2CbSize -1 y la muestra inferior izquierda (x0, y1) para crear un bloque de codificación secundario inferior izquierdo. Si la posición horizontal de la muestra inferior derecha x1 y la posición vertical de la muestra inferior izquierda y1 están dentro de la imagen, como se denota por pic_width_in_luma_samples y pic_height_in_luma_samples, entonces se llama a la función dual_tree_implicit_qt_split en base al tamaño del bloque secundario log2CbSize -1 y la muestra inferior derecha (x1, y1) para crear un bloque de codificación secundario inferior derecho. Por ejemplo, cuando la muestra inferior derecha (x1, y1) se selecciona fuera de la imagen debido a la posición del bloque de codificación X cerca del borde derecho o borde inferior de la imagen, se crean entonces menos de cuatro bloques de codificación secundarios (por ejemplo, dos bloques de codificación secundarios). De lo contrario, se crean cuatro bloques de codificación secundarios. La función dual_tree_implicit_qt_split realiza un seguimiento de la profundidad actual del árbol de codificación incrementando una profundidad de árbol cuádruple (cqtDepth) para cada bloque de codificación secundario creado en base a la cqtDepth del bloque de codificación principal.
Cuando log2Cbsize (el tamaño del bloque de codificación X) no es mayor que seis (por ejemplo, de otro modo), se utiliza un subárbol de codificación de luminancia (DUAL_TREE_LUMA) para bloques de luminancia y un subárbol de codificación de crominancia (DUAL_TREE_CHROMA) para bloques de crominancia. Específicamente, se llama a una función coding_quadtree, que divide el bloque de codificación X en base a la muestra superior izquierda (x0, y0), el tamaño del bloque de codificación log2CbSize y el subárbol de codificación de luminancia o el subárbol de codificación de crominancia correspondiente, DUAL_TREE_LUMA o DUAL_TREE_CHROMA, respectivamente. La función coding_quadtree también realiza un seguimiento de la profundidad del bloque de codificación con el valor cqtDepth como se discutió anteriormente.
La Tabla 2 a continuación es un ejemplo de sintaxis que implementa el método 800 cuando el uso de subárboles de codificación dividida es discrecional para el codificador.
Tabla 2
Figure imgf000020_0001
En la Tabla 2, coding_tree_node(x, y, w, h, tree_status) es una estructura de sintaxis que describe la información de partición de un nodo actual, donde x e y son las coordenadas de la esquina superior izquierda del nodo actual, respectivamente, w y h son el ancho y el alto del nodo actual, respectivamente, y tree_status es el estado del árbol del nodo actual. Tenga en cuenta que w y h también se pueden reemplazar por log2(w) y log2(h) como otro ejemplo. De manera similar, coding_unit(x, y, w, h, tree_status) es una estructura de sintaxis que describe una información de unidad de codificación, tal como información de predicción, información de transformación, etc. En la columna de derecha, ae(v) indica que el elemento de sintaxis está codificado por Codificación Aritmética Binaria Adaptativa al Contexto (CABAC).
Cuando el tree_status del nodo actual es TREE_L_C y el nodo es más grande que el umbral T, el nodo usa el estado TREE L C. En este caso, la bandera luma_chroma_separate no se presenta en el flujo de bits y su valor se deriva como cero. Cuando el tree_status del nodo actual es TREE_L_C y el nodo es más grande que el umbral T, la bandera luma_chroma_separate se señaliza en el flujo de bits. Cuando tree_status no es TREE_L_C, la bandera luma_chroma_separate se deriva como cero.
Cuando luma_chroma_separate es cero, solo se analiza un modo de división (como se indica por el elemento de sintaxis split_mode). Según el modo de división, el nodo se determina como una CU o se divide en N nodos secundarios, donde derive_child_node (split_mode, N, x_c, y_c, w_c, h_c) denota el procesamiento de derivar la coordenada, el ancho y la altura de los N nodos secundarios en base al modo de división. Los nodos secundarios heredan el estado de árbol del nodo actual.
Cuando luma_chroma_separate es uno, la partición para el bloque de luminancia y los bloques de crominancia en el nodo actual se desacopla, y se analizan dos modos de división (como se indica por el elemento de sintaxis split_mode y split_mode _2nd). Un modo de división se usa para dividir el bloque de luminancia y el otro se usa para dividir los dos bloques de crominancia. El estado del árbol de los nodos secundarios del bloque de luminancia se modifica a TREE_L, mientras que el estado de árbol de los nodos secundarios de los bloques de crominancia se modifica a TREE_C. El estado de árbol también se pasa a la unidad de codificación para indicar si un bloque de luminancia y/o dos bloques de crominancia están contenidos en la unidad de codificación.
La FIG. 9 es un diagrama esquemático de un dispositivo de codificación de video 900 de ejemplo. El dispositivo de codificación de video 900 es adecuado para implementar los ejemplos/realizaciones descritos como se describe en la presente memoria. El dispositivo de codificación de video 900 comprende puertos aguas abajo 920, puertos aguas arriba 950 y/o unidades transceptoras (Tx/Rx) 910, incluyendo transmisores y/o receptores para comunicar datos aguas arriba y/o aguas abajo a través de una red. El dispositivo de codificación de video 900 también incluye un procesador 930 que incluye una unidad lógica y/o una unidad central de procesamiento (CPU) para procesar los datos y una memoria 932 para almacenar los datos. El dispositivo de codificación de video 900 también puede comprender componentes de óptico a eléctrico (OE), componentes de eléctrico a óptico (EO) y/o componentes de comunicación inalámbrica acoplados a los puertos aguas arriba 950 y/o puertos aguas abajo 920 para la comunicación de datos a través de redes de comunicación ópticas o inalámbricas. El dispositivo de codificación de video 900 también puede incluir dispositivos de entrada y/o salida (I/O) 960 para comunicar datos hacia y desde un usuario. Los dispositivos de I/O 960 pueden incluir dispositivos de salida, tales como una pantalla para mostrar datos de video, altavoces para emitir datos de audio, etc. Los dispositivos de I/O 960 también pueden incluir dispositivos de entrada, tales como un teclado, un ratón, una bola de apuntamiento, etc., y/o interfaces correspondientes para interactuar con tales dispositivos de salida.
El procesador 930 está implementado por hardware y software. El procesador 930 se puede implementar como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), agrupaciones de puertas programables en campo (FPGA), circuitos integrados de aplicaciones específicas (ASIC) y procesadores de señales digitales (DSP). El procesador 930 está en comunicación con los puertos aguas abajo 920, Tx/Rx 910, los puertos aguas arriba 950 y la memoria 932. El procesador 930 comprende un módulo de codificación 914. El módulo de codificación 914 implementa las realizaciones descritas, descritas anteriormente, tales como los métodos 100 y 800 y el mecanismo 500, que emplean un árbol de codificación 600, un conjunto de modos divididos 700 y/o cualquier otro método/mecanismo descrito en la presente memoria. Además, el módulo de codificación 914 puede implementar un sistema de códec 200, un codificador 300 y/o un decodificador 400. Por ejemplo, el módulo de codificación 914 se puede emplear para dividir una unidad de árbol de codificación. Específicamente, el módulo de codificación 914 puede aplicar un árbol de codificación común a muestras de luminancia y muestras de crominancia en bloques que son más grandes que un umbral. El módulo de codificación 914 también puede aplicar diferentes subárboles de codificación de luminancia y subárboles de codificación de crominancia a bloques de luminancia y bloques de crominancia, respectivamente, que tienen un tamaño igual o menor que el umbral. Por lo tanto, el módulo de codificación 914 hace que el dispositivo de codificación de video 900 funcione con una mayor eficiencia de codificación y/o divida las unidades de árbol de codificación utilizando menos recursos de procesamiento. Como tal, el módulo de codificación 914 mejora la funcionalidad del dispositivo de codificación de video 900 así como que aborda problemas que son específicos de las técnicas de codificación de video. Además, el módulo de codificación 914 efectúa una transformación del dispositivo de codificación de video 900 a un estado diferente. Alternativamente, el módulo de codificación 914 se puede implementar como instrucciones almacenadas en la memoria 932 y ejecutadas por el procesador 930 (por ejemplo, como un producto de programa informático almacenado en un medio no transitorio).
La memoria 932 comprende uno o más tipos de memoria tales como discos, unidades de cinta, unidades de estado sólido, memoria de solo lectura (ROM), memoria de acceso aleatorio (RAM), memoria rápida, memoria ternaria de contenido direccionable (TCAM), memoria de acceso aleatorio estática (SRAM), etc. La memoria 932 se puede usar como un dispositivo de almacenamiento de datos de desbordamiento, para almacenar programas cuando tales programas se seleccionan para su ejecución, y para almacenar instrucciones y datos que se leen durante la ejecución del programa.
La FIG. 10 es un diagrama esquemático de un sistema de ejemplo 1000 para dividir una CTU con un árbol de codificación común para codificar bloques por encima de un tamaño umbral y con subárboles divididos para codificar bloques con un tamaño igual o menor que un tamaño umbral. El sistema 1000 incluye un codificador de video 1002 y un decodificador de video 1010, que pueden implementar el método operativo 100, el mecanismo 500, el método 800, el sistema de códec 200, el codificador 300, el decodificador 400 y/o el dispositivo de codificación de video 900. Además, el codificador de video 1002 y el decodificador de video 1010 pueden realizar particiones con árboles de codificación 613 y subárboles de codificación 614 empleando el conjunto de modos de división 700.
El codificador de video 1002 incluye un módulo de búsqueda 1001 para obtener una unidad de árbol de codificación que incluye un nodo de árbol de codificación. El dispositivo de codificación de video también comprende un módulo de partición de árbol común 1003 para dividir muestras de luminancia y muestras de crominancia con un árbol de codificación común cuando un primer nodo de árbol de codificación excede un umbral. El dispositivo de codificación de video también comprende un módulo de partición de subárbol de codificación de luminancia 1005 para dividir las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral. El dispositivo de codificación de video también comprende un módulo de partición de subárbol de codificación de crominancia 1007 para dividir las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral. Como se indicó anteriormente, el subárbol de codificación de luminancia puede contener una partición diferente y, por lo tanto, diferentes modos de división que el subárbol de codificación de crominancia. Las muestras de crominancia y las muestras de luminancia se codifican en un flujo de bits en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. El codificador de video 1002 también incluye un transmisor 1009 para transmitir el flujo de bits para soportar la reconstrucción de las muestras de crominancia y las muestras de luminancia para su visualización en un decodificador de video 1010.
El decodificador de video 1010 incluye un receptor 1017 para recibir el flujo de bits que incluye una unidad de árbol de codificación que incluye datos de luminancia y datos de crominancia. El decodificador de video 1010 también incluye un módulo de búsqueda 1011 para obtener una unidad de árbol de codificación que incluye un nodo de árbol de codificación. El decodificador de video 1010 también incluye un módulo de partición de árbol común 1013 para dividir los datos de luminancia y los datos de crominancia con un árbol de codificación común cuando un primer nodo de árbol de codificación supera un umbral. El decodificador de video 1010 también incluye un módulo de partición de subárbol de luminancia 1015 para dividir los datos luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral. El decodificador de video 1010 también incluye un módulo de partición de subárbol de crominancia 1019 para dividir los datos de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral. Como se indicó anteriormente, el subárbol de codificación de luminancia contiene una partición diferente y, por lo tanto, diferentes modos de división, que el subárbol de codificación de crominancia. El decodificador de video 1010 puede reconstruir entonces los datos de crominancia y los datos de luminancia en un segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia. El decodificador de video 1010 también puede reenviar el cuadro de video hacia una pantalla.
La FIG. 11 es un diagrama de flujo de un método 1100 de ejemplo de división de una CTU, tal como la CTU 541, con un árbol de codificación común, tal como el árbol de codificación 547 y/o 613, para los CB por encima de un tamaño umbral, tal como el umbral 549, y con subárboles divididos, tales como el subárbol de codificación de luminancia 548, el subárbol de codificación de crominancia 550 y/o los subárboles de codificación 614, para los CB con un tamaño igual o menor que un tamaño umbral. El método 1100 se puede emplear para implementar el mecanismo 500 empleando el conjunto de modos de división 700. El método 1100 se puede emplear en el método 100, el sistema de códec 200, el sistema de codificador 300 y/o el sistema de decodificador 400 para dividir muestras de cuadros de video en bloques de codificación.
El método 1100 incluye determinar que una unidad de árbol de codificación está en un segmento I en el paso 1101. Por ejemplo, un decodificador puede analizar un árbol de codificación, un subárbol de codificación de luminancia y/o un subárbol de codificación de crominancia para los modos de división a ser aplicados para dividir una unidad de árbol de codificación que incluye muestras de luminancia y muestras de crominancia en bloques de luminancia y bloques de crominancia, respectivamente. Entonces se puede aplicar el método 1100 si/cuando la unidad de árbol de codificación está contenida en un segmento I de un cuadro de video.
En el paso 1103, cuando un primer nodo de árbol de codificación del árbol de codificación tiene un tamaño mayor que un umbral, los bloques de codificación de muestras de luminancia y los bloques de codificación de muestras de crominancia asociados con el primer nodo de árbol de codificación se dividen por un árbol de codificación común. Por ejemplo, el umbral puede ser cuatro mil noventa y seis muestras de luminancia o dos mil cuarenta y ocho muestras de luminancia. El modo de división puede ser una división de árbol cuádruple cuando el nodo de árbol de codificación tiene un tamaño mayor que el umbral. En algunos ejemplos, el modo de división se puede señalar implícitamente cuando el nodo de árbol de codificación tiene un tamaño mayor que el umbral.
En el paso 1107, cuando un segundo nodo de árbol de codificación del árbol de codificación tiene un tamaño igual o menor que el umbral, los bloques de codificación de muestras de luminancia de la unidad de árbol de codificación y asociados con el segundo nodo de árbol de codificación se pueden dividir según un árbol de codificación de luminancia. También se puede hacer referencia a un subárbol de codificación de luminancia como árbol de codificación de luminancia en algunos contextos. Además, cuando el segundo nodo de árbol de codificación del árbol de codificación tiene un tamaño igual o menor que el umbral, los bloques de codificación de muestras de crominancia de la unidad de árbol de codificación y asociados con el segundo nodo de árbol de codificación se pueden dividir según un árbol de codificación de crominancia. Se debería observar que para los datos YUV4:2:0, un bloque de codificación de luminancia de sesenta y cuatro por sesenta y cuatro corresponde a un bloque de codificación de crominancia de Cb de treinta y dos por treinta y dos y un bloque de codificación de crominancia de Cr de treinta y dos por treinta y dos. Sin embargo, cuando se denota el tamaño de un nodo de árbol de codificación, el nodo de árbol de codificación se puede medir utilizando muestras de luminancia. Por ejemplo, el nodo de árbol de codificación que contiene solo dos bloques de crominancia de treinta y dos por treinta y dos se puede medir como un nodo de árbol de codificación de tamaño sesenta y cuatro por sesenta y cuatro.
El método 1100 se puede implementar según la siguiente sintaxis:
dual_tree_implicit_qt_split( xO, yO, log2CbSize, cqtDepth ) {
if( log2CbSize > 6 ) {
xl = xO (1 « ( log2CbSize - 1 ) )
yl = yO ( 1 « ( log2CbSize - 1 ) )
dual_tree_implicit_qt_split( xO, yO, log2CbSize - 1, cqtDepth 1 )
if(x l < pic_width_in_luma_samples )
dual_tree_implicit_qt_split(xl, yO, log2CbSize - 1, cqtDepth 1 )
if(y l < p iche igh tin lum asam ples)
dual_tree_implicit_qt_split( xO, yl, log2CbSize - 1, cqtDepth 1)
if(x l < pic_width_in_luma_samples && yl <
p iche igh tin lum asam ples)
dual_tree_implicit_qt_split(xl, yl, log2CbSize - 1, cqtDepth 1 )
} else {
coding_quadtree( xO, yO, log2CbSize, cqtDepth, DUALTREELUM A )
coding_quadtree( xO, yO, log2CbSize, cqtDepth, DUAL TREE CHROMA)
}
}
Donde el umbral está representado por log2CbSize > 6, DUAL_TREE_LUMA indica el árbol de codificación de luminancia y DUAL_TREE _CHROMA indica el árbol de codificación de crominancia.
Un primer componente se acopla directamente a un segundo componente cuando no hay componentes intermedios, a excepción de una línea, un trazo u otro medio entre el primer componente y el segundo componente. El primer componente está indirectamente acoplado al segundo componente cuando hay componentes intermedios distintos de una línea, un trazo u otro medio entre el primer componente y el segundo componente. El término "acoplado" y sus variantes incluyen tanto acoplado directamente como acoplado indirectamente. El uso del término "aproximadamente" significa un intervalo que incluye ±10% del número posterior a menos que se exprese de otro modo.
Los ejemplos presentes se han de considerar como ilustrativos y no restrictivos, y la intención no es estar limitado a los detalles dados en la presente memoria. Por ejemplo, los diversos elementos o componentes se pueden combinar o integrar en otro sistema o ciertas características se pueden omitir o no implementar.

Claims (16)

REIVINDICACIONES
1. Un método implementado en un dispositivo de codificación de video, el método que comprende:
obtener (803), mediante un procesador del dispositivo de codificación de video, una unidad de árbol de codificación que incluye un nodo de árbol de codificación;
caracterizado por que el método comprende además:
dividir (805), por el procesador, muestras de luminancia y muestras de crominancia en un primer nodo de árbol de codificación de la unidad de árbol de codificación según un árbol de codificación común cuando el tamaño del primer nodo de árbol de codificación supera un umbral;
dividir (807), por el procesador, las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral; y
dividir (809), por el procesador, las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral,
en donde cuando el dispositivo de codificación de video es un codificador, el método comprende además codificar las muestras de crominancia y las muestras de luminancia en un flujo de bits en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia; y
en donde cuando el dispositivo de codificación de video es un decodificador, el método comprende además la reconstrucción de los datos de crominancia y los datos de luminancia recibidos de un flujo de bits en un segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia.
2. El método de la reivindicación 1, en donde el umbral es cuatro mil noventa y seis píxeles o seis en el dominio logarítmico con dos como base.
3. El método de cualquiera de las reivindicaciones 1-2, en donde la unidad de árbol de codificación está en una imagen/cuadro de Intrapredicción (I).
4. El método de cualquiera de las reivindicaciones 1-3, en donde las muestras de crominancia incluyen muestras de crominancia de diferencia de azul (Cb) y muestras de crominancia de diferencia de rojo (Cr), y en el que las muestras de Cb y las muestras de Cr se dividen mediante un subárbol de codificación de crominancia común.
5. El método de cualquiera de las reivindicaciones 1-4, en donde el dispositivo de codificación de video es un codificador, y que comprende además codificar en un flujo de bits una bandera luma_chroma_separate para indicar una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia.
6. El método de cualquiera de las reivindicaciones 1-4, en donde el dispositivo de codificación de video es un decodificador, que comprende además recibir una bandera luma_chroma_separate de un flujo de bits, la bandera luma_chroma_separate que indica una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia, y en donde las muestras de luminancia y las muestras de crominancia se dividen mediante subárboles de codificación separados en base a un valor de la bandera luma_chroma_separate.
7. Un codificador de video (1002) que comprende:
un procesador configurado para:
obtener una unidad de árbol de codificación que incluya un nodo de árbol de codificación;
caracterizado por que el procesador está además configurado para:
dividir las muestras de luminancia y muestras de crominancia en un primer nodo de árbol de codificación de la unidad de árbol de codificación según un árbol de codificación común cuando el tamaño del primer nodo de árbol de codificación supera un umbral;
dividir las muestras de luminancia en un segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de luminancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral;
dividir las muestras de crominancia en el segundo nodo de árbol de codificación de la unidad de árbol de codificación con un subárbol de codificación de crominancia cuando el tamaño del segundo nodo de árbol de codificación es igual o menor que el umbral; y
codificar las muestras de crominancia y las muestras de luminancia en un flujo de bits en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia; y el codificador de video (1002) comprende además:
un transmisor (1009) acoplado al procesador, el transmisor configurado para transmitir el flujo de bits para soportar la reconstrucción de las muestras de crominancia y las muestras de luminancia para su visualización por un decodificador de video.
8. El codificador de vídeo de la reivindicación 7, en donde el umbral es cuatro mil noventa y seis píxeles o seis en el dominio logarítmico con dos como base.
9. El codificador de vídeo de cualquiera de las reivindicaciones 7-8, en donde la unidad de árbol de codificación está en una imagen/cuadro de Intrapredicción (I).
10. El codificador de video de cualquiera de las reivindicaciones 7-9, en donde las muestras de crominancia incluyen muestras de crominancia de diferencia de azul (Cb) y muestras de crominancia de diferencia de rojo (Cr), y en donde las muestras de Cb y las muestras de Cr están divididas por un subárbol de codificación de crominancia común.
11. El codificador de vídeo de cualquiera de las reivindicaciones 7-10, en donde el procesador está configurado además para codificar una bandera luma_chroma_separate en el flujo de bits, la bandera luma_chroma_separate que indica una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia, y en donde las muestras de luminancia y las muestras de crominancia se dividen mediante subárboles de codificación separados en base a un valor de la bandera luma_chroma_separate.
12. Un decodificador de video (1010) que comprende:
un receptor (1017) para recibir un flujo de bits que incluye una unidad de árbol de codificación que incluye datos de luminancia y datos de crominancia;
caracterizado por que el decodificador de video comprende además:
un procesador acoplado al receptor, el procesador configurado para:
dividir los datos de luminancia y los datos de crominancia con un árbol de codificación común cuando el tamaño de un primer nodo de árbol de codificación supera un umbral;
dividir los datos luminancia con un subárbol de codificación de luminancia cuando el tamaño de un segundo nodo de árbol de codificación es igual o menor que el umbral;
dividir los datos de crominancia con un subárbol de codificación de crominancia cuando el tamaño de un tercer nodo de árbol de codificación es igual o menor que el umbral, en donde el subárbol de codificación de luminancia contiene un conjunto diferente de modos de división que el subárbol de codificación de crominancia;
reconstruir los datos de crominancia y los datos de luminancia en un segmento de un cuadro de video en base al árbol de codificación común, el subárbol de codificación de luminancia y el subárbol de codificación de crominancia; y
reenviar el cuadro de video hacia una pantalla.
13. El decodificador de vídeo de la reivindicación 12, en donde el umbral es de cuatro mil noventa y seis píxeles.
14. El decodificador de video de cualquiera de las reivindicaciones 12-13, en donde los datos de luminancia y los datos de crominancia se dividen mediante diferentes subárboles de codificación cuando la unidad de árbol de codificación se incluye en un segmento/imagen de tipo Intrapredicción (I) en un cuadro de video.
15. El decodificador de video de cualquiera de las reivindicaciones 12-14, en donde los datos de crominancia incluyen datos de crominancia de diferencia de azul (Cb) y datos de crominancia de diferencia de rojo (Cr), y en donde los datos de Cb y los datos de Cr están divididos por un subárbol de codificación de crominancia común.
16. El decodificador de video de cualquiera de las reivindicaciones 12-15, en donde el procesador está configurado además para obtener una bandera luma_chroma_separate del flujo de bits, la bandera luma_chroma_separate que indica una división entre el subárbol de codificación de luminancia y el subárbol de codificación de crominancia, y en donde los datos de luminancia y los datos de crominancia se dividen mediante diferentes subárboles de codificación en base a un valor de la bandera luma_chroma_separate.
ES19712649T 2018-04-19 2019-03-05 Partición de bloques de luminancia y de crominancia Active ES2909309T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862660121P 2018-04-19 2018-04-19
US201862732675P 2018-09-18 2018-09-18
PCT/US2019/020740 WO2019203940A1 (en) 2018-04-19 2019-03-05 Luma and chroma block partitioning

Publications (1)

Publication Number Publication Date
ES2909309T3 true ES2909309T3 (es) 2022-05-06

Family

ID=65861713

Family Applications (1)

Application Number Title Priority Date Filing Date
ES19712649T Active ES2909309T3 (es) 2018-04-19 2019-03-05 Partición de bloques de luminancia y de crominancia

Country Status (13)

Country Link
US (2) US11109026B2 (es)
EP (2) EP4072146A1 (es)
JP (2) JP7279074B2 (es)
KR (1) KR102410200B1 (es)
CN (1) CN112385239A (es)
CY (1) CY1125341T1 (es)
DK (1) DK3738315T3 (es)
ES (1) ES2909309T3 (es)
HU (1) HUE057767T2 (es)
PL (1) PL3738315T3 (es)
PT (1) PT3738315T (es)
RS (1) RS63025B1 (es)
WO (1) WO2019203940A1 (es)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11290716B2 (en) * 2017-08-03 2022-03-29 Sharp Kabushiki Kaisha Systems and methods for partitioning video blocks in an inter prediction slice of video data
KR102247664B1 (ko) 2018-05-10 2021-05-03 삼성전자주식회사 영상의 부호화 및 복호화를 위한 영상의 분할 방법 및 장치
SG11202010696UA (en) * 2018-05-29 2020-11-27 Interdigital Vc Holdings Inc Method and apparatus for video encoding and decoding with partially shared luma and chroma coding trees
CN110719470B (zh) * 2018-07-15 2023-10-03 北京字节跳动网络技术有限公司 视频编码的块尺寸限制
US11509931B2 (en) * 2019-06-07 2022-11-22 Tencent America LLC Method and apparatus for video coding
BR112021020641A2 (pt) * 2019-06-21 2022-03-03 Panasonic Ip Corp America Sistema e método para codificação de vídeo
WO2021023258A1 (en) 2019-08-06 2021-02-11 Beijing Bytedance Network Technology Co., Ltd. Video region partition based on color format
JP7309046B2 (ja) 2019-09-02 2023-07-14 北京字節跳動網絡技術有限公司 カラーフォーマットに基づいたビデオ領域のパーティション
BR112022005109A2 (pt) 2019-09-21 2023-03-14 Beijing Bytedance Network Tech Co Ltd Método de processamento de vídeo, aparelho para processamento de dados de vídeo, e, meios de armazenamento e de gravação legíveis por computador não transitórios
US11432018B2 (en) * 2020-05-11 2022-08-30 Tencent America LLC Semi-decoupled partitioning for video coding
US11876970B2 (en) 2021-07-22 2024-01-16 Tencent America LLC Non-interleaved separate tree

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9462275B2 (en) 2012-01-30 2016-10-04 Qualcomm Incorporated Residual quad tree (RQT) coding for video coding
WO2016074147A1 (en) 2014-11-11 2016-05-19 Mediatek Singapore Pte. Ltd. Separated coding tree for luma and chroma
WO2016090568A1 (en) * 2014-12-10 2016-06-16 Mediatek Singapore Pte. Ltd. Binary tree block partitioning structure
MX2018009737A (es) * 2016-02-11 2018-11-29 Thomson Licensing Metodo y dispositivo para codificacion/decodificacion de una unidad de imagen comprendiendo datos de imagen representados por un canal de luminancia y al menos un canal de crominancia.
US10523949B2 (en) * 2016-05-25 2019-12-31 Arris Enterprises Llc Weighted angular prediction for intra coding
CA3025340A1 (en) * 2016-05-25 2017-11-30 Arris Enterprises Llc General block partitioning method
EP4199515A1 (en) 2016-05-27 2023-06-21 SHARP Kabushiki Kaisha Systems and methods for varying quantization parameters
US11025903B2 (en) * 2017-01-13 2021-06-01 Qualcomm Incorporated Coding video data using derived chroma mode
EP3577899A4 (en) 2017-01-31 2020-06-17 Sharp Kabushiki Kaisha SYSTEMS AND METHODS FOR SCALING TRANSFORM COEFFICIENT LEVEL VALUES

Also Published As

Publication number Publication date
WO2019203940A1 (en) 2019-10-24
JP2021523590A (ja) 2021-09-02
EP3738315A1 (en) 2020-11-18
DK3738315T3 (da) 2022-04-11
EP4072146A1 (en) 2022-10-12
US11109026B2 (en) 2021-08-31
PL3738315T3 (pl) 2022-05-09
JP7279074B2 (ja) 2023-05-22
CY1125341T1 (el) 2024-02-16
EP3738315B1 (en) 2022-01-26
CN112385239A (zh) 2021-02-19
US20210037242A1 (en) 2021-02-04
JP2023052640A (ja) 2023-04-11
US20210368174A1 (en) 2021-11-25
KR20200112958A (ko) 2020-10-05
HUE057767T2 (hu) 2022-06-28
RS63025B1 (sr) 2022-04-29
PT3738315T (pt) 2022-03-30
JP7485803B2 (ja) 2024-05-16
KR102410200B1 (ko) 2022-06-16

Similar Documents

Publication Publication Date Title
ES2909309T3 (es) Partición de bloques de luminancia y de crominancia
US11917130B2 (en) Error mitigation in sub-picture bitstream based viewpoint dependent video coding
ES2898663T3 (es) Perfil, capa, nivel para la 0-ésima capa de salida establecida en la codificación de vídeo
ES2965445T3 (es) Restricciones de imagen del tipo de unidad NAL mixta
BR112021004798A2 (pt) suporte de atributo melhorado em codificação de nuvem de pontos
EP3566454B1 (en) Noise suppression filter
ES2967911T3 (es) Codificación de vídeo entrelazado con imágenes principales
ES2974627T3 (es) Manejo de múltiples tamaños de imagen y ventanas de conformidad para el remuestreo de imágenes de referencia en la codificación de video
BR122022009715A2 (pt) Método implementado por um codificador, dispositivo de codificação de vídeo, meio legível por computador não transitório, e codificador
US11889087B2 (en) Tile group assignment for raster scan and rectangular tile groups in video coding
US20230239518A1 (en) Constrained Coding Tree for Video Coding
BR122022009680A2 (pt) Método implementado em um codificador, dispositivo de codificação de vídeo, meio legível por computador não transitório e codificador
BR112021012649A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
ES2944451T3 (es) Señalización de identificaciones de subimagen en codificación de vídeo basada en subimagen