ES2944451T3 - Señalización de identificaciones de subimagen en codificación de vídeo basada en subimagen - Google Patents

Señalización de identificaciones de subimagen en codificación de vídeo basada en subimagen Download PDF

Info

Publication number
ES2944451T3
ES2944451T3 ES20855518T ES20855518T ES2944451T3 ES 2944451 T3 ES2944451 T3 ES 2944451T3 ES 20855518 T ES20855518 T ES 20855518T ES 20855518 T ES20855518 T ES 20855518T ES 2944451 T3 ES2944451 T3 ES 2944451T3
Authority
ES
Spain
Prior art keywords
sps
pps
value
subpicture
flag
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
ES20855518T
Other languages
English (en)
Inventor
Ye-Kui Wang
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 ES2944451T3 publication Critical patent/ES2944451T3/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/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/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
    • 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/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • 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/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of 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/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/184Methods 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 bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • 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/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/188Methods 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 video data packet, e.g. a network abstraction layer [NAL] unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

Un método de decodificación de video comprende recibir un flujo de bits que incluye un SPS, un PPS y subimágenes asociadas con una asignación de ID de subimágenes. Se determina si una bandera SPS tiene un primer o segundo valor. La bandera SPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el SPS, y el segundo valor especifica que el mapeo de ID de subimagen se señaliza en el PPS. El mapeo de ID de subimagen se obtiene del SPS cuando el indicador SPS tiene el primer valor y del PPS cuando el indicador SPS tiene el segundo valor o el indicador PPS tiene el primer valor. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Señalización de identificaciones de subimagen en codificación de vídeo basada en subimagen
Campo técnico
La presente descripción se relaciona en general con la codificación de video y se relaciona específicamente con la señalización de identificadores (ID) de subimagen en la codificación de video basada en subimagen.
Antecedentes
La cantidad de datos de video necesarios para representar incluso un video relativamente corto puede ser sustancial, lo que da como resultado dificultades cuando los datos se van a 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. Por tanto, los datos de vídeo generalmente se comprimen antes de ser comunicados a través de las redes de telecomunicaciones modernas de hoy en día. 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, reduciendo así 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 calidad de video más alta, 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. c He N et al.: "Signalling subpicture coded video sequence", publicado como contribución JVET-N0754 el 27 de marzo de 2019 a una reunión del Equipo de Exploración de Video Conjunto, propone especificar la señalización de posibles secuencias de video codificadas con subimágenes en una secuencia de video codificada (CVS) y asegurar que el flujo de bits se ajuste a VVC después de extraer o fusionar las CVS de subimagen. Parece lógico que SPS sea el lugar para especificar las propiedades de las subimágenes que pueden ser la unidad de imagen para la extracción y fusión.
HANNUKSELA (NOKIA) M M ET AL: "AHG12: On grouping of tiles", publicado como contribución JVET-M0261 el 2 de enero de 2019 a una reunión del Equipo de Exploración de Video Conjunto, propone que los aspectos de señalización relacionados con la subimagen se señalicen en el PPS. Específicamente, se propone añadir la indicación de anchura y altura de subimagen en el conjunto de parámetros de imagen.
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. Un primer aspecto se relaciona con un método implementado por un decodificador, que comprende recibir, por el decodificador, un flujo de bits que incluye un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) y una pluralidad de subimágenes asociadas con un mapeo de identificador (ID) de subimagen, en donde el SPS incluye un indicador de SPS; determinar, por el decodificador, si el indicador de SPS tiene un primer valor o un segundo valor, en donde el indicador de SPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el SPS, y en donde el indicador de SPS que tiene el segundo valor especifica que el mapeo de ID de subimagen se señaliza en el PPS; obtener, por el decodificador, el mapeo de ID de subimagen del SPS cuando el indicador de SPS tiene el primer valor y del PPS cuando el indicador de SPS tiene el segundo valor; y decodificar, por el decodificador, la pluralidad de subimágenes usando el mapeo de ID de subimagen.
El método proporciona técnicas que aseguran la señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimagen en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el PPS incluye un indicador de PPS, y el método comprende además determinar, por el decodificador, si el indicador de PPS tiene el primer valor o el segundo valor, en donde el indicador de PPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el PPS, y en donde el indicador de PPS que tiene el segundo valor especifica que el mapeo de ID de subimagen no se señaliza en el PPS; y obtener, por el decodificador, el mapeo de ID de subimagen del PPS cuando el indicador de PPS tiene el primer valor.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el indicador de SPS tenga el primer valor cuando el indicador de PPS tenga el segundo valor, y en donde el indicador de SPS tenga el segundo valor cuando el indicador de PPS tenga el primer valor.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el primer valor sea uno y el segundo valor sea cero.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el SPS incluye un segundo indicador de SPS, y en donde el segundo indicador de SPS especifica si el mapeo de ID de subimagen se señaliza explícitamente en el SPS o el PPS.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el flujo de bits comprende además un indicador de cambio de secuencia de video codificado (CVS), y en donde el indicador de cambio de CVS indica si se permite que el mapeo de ID de subimagen cambie dentro de una secuencia de video codificado (CVS) del flujo de bits.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el flujo de bits comprenda un flujo de bits fusionado, y en donde el mapeo de ID de subimagen haya cambiado dentro de la CVS del flujo de bits.
Un segundo aspecto se relaciona con un método implementado por un codificador, el método que comprende codificar, por el decodificador, un flujo de bits que incluye un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) y una pluralidad de subimágenes asociadas con un mapeo de identificador (ID) de subimagen, en donde el SPS incluye un indicador de SPS; establecer, por el decodificador, el indicador de SPS en un primer valor cuando el mapeo de ID de subimagen se señaliza en el SPS y en un segundo valor cuando el mapeo de ID de subimagen se señaliza en el PPS; y almacenar, por el decodificador, el flujo de bits para la comunicación hacia un decodificador.
El método proporciona técnicas que aseguran la señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimagen en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el decodificador, una indicador de PPS en el PPS al primer valor cuando el mapeo de ID de subimagen se señaliza en el PPS y al segundo valor cuando el mapeo de ID de subimagen no se señaliza en el PPS.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el indicador de SPS tenga el primer valor cuando el indicador de PPS tenga el segundo valor, y en donde el indicador de SPS tenga el segundo valor cuando el indicador de PPS tenga el primer valor.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el primer valor sea uno y el segundo valor sea cero.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el SPS incluya un segundo indicador de SPS, y en donde el segundo indicador de SPS especifica si el mapeo de subimágenes se señaliza explícitamente en el SPS o en el PPS.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el flujo de bits comprende además un indicador de cambio de secuencia de video codificada (CVS), y en donde el indicador de cambio de CVS indica si el mapeo de ID de subimagen puede cambiar dentro de una secuencia de video codificada (CVS) del flujo de bits.
Un tercer aspecto se relaciona con un dispositivo de decodificación, que comprende un receptor configurado para recibir un flujo de bits de video que incluye un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) y una pluralidad de subimágenes asociadas con un mapeo de identificador (ID) de subimagen, en donde el SPS incluye un indicador de SPS; una memoria acoplada al receptor, la memoria que almacena instrucciones; y un procesador acoplado a la memoria, el procesador configurado para ejecutar las instrucciones para hacer que el dispositivo de decodificación determine si el indicador de SPS tiene un primer valor o un segundo valor, en donde el indicador de SPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el SPS, y en donde el indicador de SPS que tiene el segundo valor especifica que el mapeo de ID de subimagen se señaliza en el PPS; obtener el mapeo de ID de subimagen del SPS cuando el indicador de SPS tiene el primer valor y del PPS cuando el indicador de SPS tiene el segundo valor; y decodificar la pluralidad de subimágenes usando el mapeo de ID de subimagen.
El dispositivo de decodificación proporciona técnicas que aseguran una señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimagen en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el indicador de SPS tenga el primer valor cuando el indicador de PPS tenga el segundo valor, en donde el indicador de SPS tenga el segundo valor cuando el indicador de PPS tenga el primer valor, y donde el primer valor es uno y el segundo valor es cero.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el SPS incluye un segundo indicador de SPS, y en donde el segundo indicador de SPS especifica si el mapeo de subimágenes se señaliza explícitamente en el SPS o en el PPS.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el flujo de bits comprende además un indicador de cambio de secuencia de video codificada (CVS), y en donde el indicador de cambio de CVS indica si el mapeo de ID de subimagen puede cambiar dentro de una secuencia de video codificada (CVS) del flujo de bits.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el flujo de bits comprenda un flujo de bits fusionado, y en donde el mapeo de ID de subimagen haya cambiado dentro de la CVS del flujo de bits.
Un cuarto aspecto se refiere a un dispositivo de codificación que comprende una memoria que contiene instrucciones; un procesador acoplado a la memoria, el procesador configurado para implementar las instrucciones para hacer que el dispositivo de codificación codifique un flujo de bits que incluye un conjunto de parámetros de secuencia (SPS), un conjunto de parámetros de imagen (PPS) y una pluralidad de subimágenes asociadas con un mapeo de identificador (ID) de subimagen, en donde el SPS incluye un indicador de SPS; establecer el indicador de SPS en un primer valor cuando el mapeo de ID de subimagen se señaliza en el SPS y en un segundo valor cuando el mapeo de ID de subimagen se señaliza en el PPS; establecer un indicador de PPS en el PPS en el primer valor cuando el mapeo de ID de subimagen se señaliza en el PPS y en el segundo valor cuando el mapeo de ID de subimagen no se señaliza en el PPS; y un transmisor acoplado al procesador, el transmisor configurado para transmitir el flujo de bits hacia un decodificador de video.
El dispositivo de codificación proporciona técnicas que aseguran la señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimágenes en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el indicador de SPS tenga el primer valor cuando el indicador de PPS tenga el segundo valor, y en donde el indicador de SPS tenga el segundo valor cuando el indicador de PPS tenga el primer valor.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el primer valor sea uno y el segundo valor sea cero.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el flujo de bits comprenda además un indicador de cambio de secuencia de video codificada (CVS), y en donde el indicador de cambio de CVS indica si el mapeo de ID de subimagen puede cambiar dentro de una secuencia de video codificada (CVS) del flujo de bits.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona que el ID de PpS especifica un valor de un segundo ID de PPS para un PPS en uso, y en donde el segundo ID de PPS identifica el PPS para referencia por los elementos de sintaxis.
Un quinto aspecto se refiere a un aparato de codificación. El aparato de codificación incluye un receptor configurado para recibir una imagen para codificar o para recibir un flujo de bits para decodificar; un transmisor acoplado al receptor, el transmisor configurado para transmitir el flujo de bits a un decodificador o para transmitir una imagen decodificada a una pantalla; una memoria acoplada a al menos uno del receptor o del transmisor, la memoria configurada para almacenar instrucciones; y un procesador acoplado a la memoria, el procesador configurado para ejecutar las instrucciones almacenadas en la memoria para realizar cualquiera de los métodos descritos en la presente memoria.
El aparato de codificación proporciona técnicas que aseguran la señalización eficiente de identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimagen en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Opcionalmente, en cualquiera de los aspectos anteriores, otra implementación del aspecto proporciona una pantalla configurada para mostrar una imagen decodificada.
Un sexto aspecto se relaciona con un sistema. El sistema incluye un codificador; y un decodificador en comunicación con el codificador, en donde el codificador o el decodificador incluye el dispositivo de decodificación, el dispositivo de codificación o el aparato de codificación descrito en la presente memoria.
El sistema proporciona técnicas que aseguran una señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimagen en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Un séptimo aspecto se refiere a unos medios para codificar. Los medios para codificar incluyen medios de recepción configurados para recibir una imagen para codificar o para recibir un flujo de bits para decodificar; medios de transmisión acoplados a los medios de recepción, los medios de transmisión configurados para transmitir el flujo de bits a unos medios de decodificación o para transmitir una imagen decodificada a unos medios de visualización; medios de almacenamiento acoplados a al menos uno de los medios de recepción o los medios de transmisión, los medios de almacenamiento configurados para almacenar instrucciones; y medios de procesamiento acoplados a los medios de almacenamiento, los medios de procesamiento configurados para ejecutar las instrucciones almacenadas en los medios de almacenamiento para realizar cualquiera de los métodos descritos en la presente memoria.
Los medios para la codificación proporcionan técnicas que aseguran la señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los IDS de subimagen en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
Con el propósito de claridad, cualquiera de las realizaciones anteriores se puede combinar con una o más de las otras realizaciones anteriores para crear una nueva realización dentro del alcance de la presente descripción.
Estas y otras características se entenderán más claramente a partir de la siguiente descripción detallada tomada junto con los dibujos adjuntos 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 adjuntos y la descripción detallada, en la que los mismos números de referencia representan partes similares.
La FIG. 1 es un diagrama de flujo de un método de ejemplo de codificación de 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 video de ejemplo.
La FIG. 4 es un diagrama esquemático que ilustra un decodificador de video de ejemplo.
La FIG. 5 es un diagrama esquemático que ilustra un flujo de bits de ejemplo que contiene una secuencia de video codificada.
Las FIGS. 6A-6E ilustran un mecanismo de ejemplo para crear una pista extractora para combinar subimágenes de múltiples resoluciones de diferentes flujos de bits en una sola imagen para usar en aplicaciones de realidad virtual (VR).
Las FIGS. 7A-7E ilustran un mecanismo de ejemplo para actualizar la pista extractora en base a un cambio en la orientación de visualización en aplicaciones de VR.
La FIG. 8 es una realización de un método de decodificación de un flujo de bits de vídeo codificado.
La FIG. 9 es una realización de un método de codificación de un flujo de bits de vídeo codificado.
La FIG. 10 es un diagrama esquemático de un dispositivo de codificación de video.
La FIG. 11 es un diagrama esquemático de una realización de unos medios para codificar.
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 usando cualquier número de técnicas, ya sean actualmente conocidas o existentes. La descripción no se debería limitar de ninguna forma a las implementaciones ilustrativas, los dibujos y las técnicas ilustrados 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.
Los siguientes términos se definen de la siguiente manera a menos que se utilicen en un contexto contrario en la presente memoria. Específicamente, las siguientes definiciones se pretende que proporcionen claridad adicional a la presente descripción. Sin embargo, los términos se pueden describir de manera diferente en diferentes contextos. Por consiguiente, las siguientes definiciones se deberían considerar como un complemento y no se debería considerar que limitan ninguna otra definición de descripciones proporcionadas para tales términos en la presente memoria.
Un flujo de bits es una secuencia de bits que incluye datos de video que se comprimen para su transmisión entre un codificador y un decodificador. Un codificador es un dispositivo que está configurado para emplear procesos de codificación para comprimir datos de video en un flujo de bits. Un decodificador es un dispositivo que está configurado para emplear procesos de decodificación para reconstruir datos de video a partir de un flujo de bits para su visualización. Una imagen es una matriz de muestras de luminancia y/o una matriz de muestras de crominancia que crean un cuadro o un campo del mismo. Se puede hacer referencia a una imagen que se está codificando o decodificando como imagen actual por claridad de la discusión. Una imagen de referencia es una imagen que contiene muestras de referencia que se pueden utilizar cuando se codifican otras imágenes por referencia según interpredicción y/o interpredicción de capas. Una lista de imágenes de referencia es una lista de imágenes de referencia utilizadas para interpredicción y/o interpredicción de capas. Algunos sistemas de codificación de vídeo utilizan dos listas de imágenes de referencia, que se pueden denominar lista de imágenes de referencia uno y lista de imágenes de referencia cero. Una estructura de lista de imágenes de referencia es una estructura de sintaxis direccionable que contiene múltiples listas de imágenes de referencia. La interpredicción es un mecanismo de codificación de muestras de una imagen actual por referencia a muestras indicadas en una imagen de referencia que es diferente de la imagen actual donde la imagen de referencia y la imagen actual están en la misma capa. Una entrada de estructura de lista de imágenes de referencia es una ubicación direccionable en una estructura de lista de imágenes de referencia que indica una imagen de referencia asociada con una lista de imágenes de referencia. Una cabecera de segmento es parte de un segmento codificado que contiene elementos de datos pertenecientes a todos los datos de video dentro de un mosaico representado en el segmento. Un conjunto de parámetros de secuencia (SPS) es un conjunto de parámetros que contiene datos relacionados con una secuencia de imágenes. Un conjunto de parámetros de imagen (PPS) es una estructura de sintaxis que contiene elementos de sintaxis que se aplican a cero o más imágenes codificadas completas según se determina por un elemento de sintaxis encontrado en cada cabecera de imagen.
Un indicador es un elemento de sintaxis variable o de un solo bit que puede tomar uno de los dos valores posibles: 0 y 1. Una subimagen es una región rectangular de uno o más segmentos dentro de una imagen. Un identificador (ID) de subimagen es un número, letra u otro indicio que identifica de manera única una subimagen. Los ID de subimagen (también conocidos como identificadores de mosaico) se usan para identificar subimágenes particulares utilizando un índice de subimagen, al que se puede hacer referencia en la presente memoria como mapeo de ID de subimagen. Expresado de otra forma, el mapeo de ID de subimagen es una tabla que proporciona un mapeo uno a uno entre una lista de índices de subimagen e ID de subimagen. Es decir, un mapeo de ID de subimagen proporciona una ID de subimagen distinta para cada subimagen.
Una unidad de acceso (AU) es un conjunto de una o más imágenes codificadas asociadas con el mismo tiempo de visualización (por ejemplo, el mismo recuento de órdenes de imágenes) para la salida de un almacenador temporal de imágenes decodificadas (DPB) (por ejemplo, para mostrar a un usuario). Un delimitador de unidad de acceso (AUD) es un indicador o estructura de datos que se utiliza para indicar el inicio de una AU o el límite entre AU. Una secuencia de video decodificada es una secuencia de imágenes que han sido reconstruidas por un decodificador en preparación para mostrarlas a un usuario.
Una CVS es una secuencia de unidades de acceso (AU) que incluye, en orden de decodificación, una AU de inicio de secuencia de video codificada (CVSS), seguida por cero o más AU que no son AU de CVSS, incluyendo todas las AU posteriores hasta, pero sin incluir ninguna AU posterior que es una AU de CVSS. Una AU de CVSS es una AU en la que hay una unidad de predicción (PU) para cada capa especificada por el conjunto de parámetros de vídeo (VPS) y la imagen codificada en cada PU es una imagen de CLVSS. En una realización, cada imagen está dentro de una AU. Una PU es un conjunto de unidades de Capa de Abstracción de Red (NAL) que están asociadas entre sí según una regla de clasificación específica, son consecutivas en el orden de decodificación y contienen exactamente una imagen codificada.
En la presente memoria se utilizan los siguientes acrónimos: Filtro de Bucle Adaptativo (ALF), Bloque de Árbol de Codificación (CTB), Unidad de Árbol de Codificación (CTU), Unidad de Codificación (CU), Secuencia de Vídeo Codificada (CVS), Almacenador Temporal de Imagen Decodificada (DPB), Actualización de Decodificación Instantánea (IDR), Punto de Acceso Intraaleatorio (IRAP), Equipo de Expertos de Video Conjunto (JVET), Bit Menos Significativo (LSB), Bit Más Significativo (MSB), Conjunto de Mosaicos con Movimiento Restringido (MCTS), Unidad de Transferencia Máxima (MTU), Capa de Abstracción de Red (NAL), Recuento de Orden de Imagen (POC), Conjunto de Parámetros de Imagen (PPS), Carga Útil de Secuencia de Bytes sin Procesar (RBSP), Desplazamiento Adaptativo de Muestra (SAO), Conjunto de Parámetros de Secuencia (SPS), Predicción de Vector de Movimiento Temporal (TMVP), Codificación de Video Versátil (VVC) y Borrador de Trabajo (WD).
Se pueden emplear muchas técnicas de compresión de video para reducir el tamaño de los archivos de video con una pérdida mínima de datos. Por ejemplo, las técnicas de compresión de video pueden incluir la realización de predicción espacial (por ejemplo, intraimagen) y/o predicción temporal (por ejemplo, interimágenes) para reducir o eliminar la redundancia de datos en las secuencias de video. Para la codificación de video basada en bloques, un segmento de video (por ejemplo, una imagen de video o una parte de una imagen de video) se puede dividir en bloques de video, a los que también se puede hacer referencia como bloques de árbol, bloques de árbol de codificación (CTB), unidades de árbol de codificación (CTU), unidades de codificación (CU) y/o nodos de codificación. Los bloques de video en un segmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen. Los bloques de video en segmento de predicción unidireccional intercodificados (P) o predicción bidireccional (B) de una imagen se pueden codificar empleando predicción espacial con respecto a muestras de referencia en bloques vecinos en la misma imagen o predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Se puede hacer referencia a las imágenes como cuadros y/o imágenes, y se puede hacer referencia a las imágenes de referencia como cuadros de referencia y/o imágenes de referencia. La predicción espacial o temporal da como resultado un bloque predictivo que representa un bloque de imagen. Los datos residuales representan diferencias de píxeles entre el bloque de imagen original y el bloque predictivo. Por consiguiente, un bloque intercodificado se codifica según un vector de movimiento que apunta a un bloque de muestras de referencia que forman el bloque predictivo y los datos residuales que indican la diferencia entre el bloque codificado y el bloque predictivo. Un bloque intracodificado se codifica según un modo de intracodificación y los datos residuales. Para una compresión adicional, los datos residuales se pueden transformar desde el dominio de píxeles a un dominio de transformación. Estos dan como resultado coeficientes de transformación residuales, que se pueden cuantificar. Los coeficientes de transformación cuantificados se pueden disponer inicialmente en una matriz bidimensional. Los coeficientes de transformación cuantificados se pueden escanear con el fin de producir un vector unidimensional de coeficientes de transformación. Se puede aplicar la codificación de entropía para lograr aún más compresión. Tales técnicas de compresión de vídeo se analizan con mayor detalle a continuación.
Para garantizar que un video codificado se pueda decodificar con precisión, el video se codifica y decodifica según los estándares de codificación de video correspondientes. Los estándares de codificación de video incluyen el Sector de Estandarización (ITU-T) de la Unión Internacional de Telecomunicaciones (ITU) H.261, la Organización Internacional para la Estandarización/Comisión Electrotécnica Internacional (ISO/IEC) el Grupo de Expertos en Imágenes en Movimiento (MPEG)-1 Parte 2, ITU-T H.262 o ISO/IEC MPEG-2 Parte 2, ITU-T H.263, ISO/IEC MPEG-4 Parte 2, Codificación de Video Avanzada (AVC), también conocida como ITU-T H.264 o ISO/IEC MPEG-4 Parte 10 y Codificación de Video de Alta Eficiencia (HeVC), también conocida como ITU-T H.265 o MPEG-H Parte 2. La AVC incluye extensiones tales como Codificación de Video Escalable (SVC), Codificación de Video Multivisión (MVC) y Codificación de Vídeo Multivisión más Profundidad (MVC+D) y AVC tridimensional (3D) (3D-AVC). La HEVC incluye extensiones tales como HEVC Escalable (SHVC), HEVC Multivisión (MV-HEVC) y HEVC en 3D (3D-HEVC).
También existe un nuevo estándar de codificación de video, denominado Codificación de Video Versátil (VVC), que está siendo desarrollado por el equipo de expertos en video conjunto (JVET) de ITU-T e ISO/IEC. Si bien el estándar de VVC tiene varios borradores de trabajo, un Borrador de Trabajo (WD) de VVC en particular, esto es, B. Bross, J. Chen y S. Liu, "Versatile Video Coding (Draft 5)", JVET-N1001-v3, 13a reunión de JVET, 27 de marzo de 2019 (Borrador de VVC 5)) se referencia en la presente memoria.
La HEVC incluye cuatro esquemas de partición de imágenes diferentes, esto es, segmentos regulares, segmentos dependientes, mosaicos y Procesamiento Paralelo de Frente de Onda (WPP), que se pueden aplicar para la coincidencia de tamaño de la Unidad de Transferencia Máxima (MTU), procesamiento paralelo y retardo de extremo a extremo reducido.
Los segmentos regulares son similares a los de H.264/AVC. Cada segmento regular está encapsulado en su propia unidad de NAL, y la predicción en la imagen (predicción intramuestra, predicción de información de movimiento, predicción del modo de codificación) y la dependencia de codificación de entropía a través de los límites del segmento están deshabilitadas. Por tanto, un segmento regular se puede reconstruir independientemente de otros segmentos regulares dentro de la misma imagen (aunque aún puede haber interdependencias debido a las operaciones de filtrado de bucle).
El segmento regular es la única herramienta que se puede utilizar para la paralelización que también está disponible, en forma virtualmente idéntica, en H.264/AVC. La paralelización basada en segmentos regulares no requiere mucha comunicación interprocesadores o internúcleos (excepto para compartición de datos interprocesadores o internúcleos para la compensación de movimiento cuando se decodifica una imagen codificada de manera predictiva, que típicamente es mucho más pesada que la compartición de datos interprocesadores o internúcleos debido a la predicción en la imagen). Sin embargo, por la misma razón, el uso de segmentos regulares puede ocasionar una sobrecarga de codificación sustancial debido al coste de bits de la cabecera del segmento y debido a la falta de predicción a través de los límites del segmento. Además, los segmentos regulares (en contraste con las otras herramientas mencionadas a continuación) también sirven como el mecanismo clave para la partición del flujo de bits para cumplir con los requisitos de tamaño de MTU, debido a la independencia en la imagen de los segmentos regulares y que cada segmento regular está encapsulado en su propia unidad de NAL. En muchos casos, el objetivo de la paralelización y el objetivo de igualar el tamaño de la MTU imponen demandas contradictorias al diseño de segmentos en una imagen. La constatación de esta situación condujo al desarrollo de las herramientas de paralelización que se mencionan a continuación.
Los segmentos dependientes tienen cabeceras de segmento cortos y permiten la partición del flujo de bits en los límites del bloque de árbol sin romper ninguna predicción en la imagen. Básicamente, los segmentos dependientes proporcionan la fragmentación de segmentos regulares en múltiples unidades de NAL para proporcionar un retardo de extremo a extremo reducido permitiendo que se envíe una parte de un segmento regular antes de que se termine la codificación de todo el segmento regular.
En WPP, la imagen se divide en filas individuales de bloques de árbol de codificación (CTB). La decodificación y la predicción de entropía se permite que usen datos de CTB en otras particiones. El procesamiento paralelo es posible a través de la decodificación paralela de filas de CTB, donde el inicio de la decodificación de una fila de CTB se retarda dos CTB, para asegurar que los datos relacionados con un CTB arriba y a la derecha del CTB objeto estén disponibles antes que el CTB objeto esté siendo decodificado. Usando este inicio escalonado (que aparece como un frente de onda cuando se representa gráficamente), la paralelización es posible con tantos procesadores/núcleos como filas de CTB contiene la imagen. Debido a que se permite la predicción en la imagen entre filas de bloques de árbol vecinas dentro de una imagen, la comunicación interprocesadores/internúcleos requerida para permitir la predicción en la imagen puede ser sustancial. La partición de WPP no da como resultado la producción de unidades de NAL adicionales en comparación con cuando no se aplica, por tanto WPP no es una herramienta para el emparejamiento del tamaño de MTU. Sin embargo, si se necesita el emparejamiento de tamaño de MTU, se pueden usar segmentos regulares con WPP, con cierta sobrecarga de codificación.
Los mosaicos definen límites horizontales y verticales que dividen una imagen en columnas y filas de mosaicos. El orden de escaneo de los CTB se cambia para que sea local dentro de un mosaico (en el orden de un escaneo de trama de CTB de un mosaico), antes de decodificar el CTB superior izquierdo del siguiente mosaico en el orden del escaneo de trama de mosaico de una imagen. Similar a los segmentos regulares, los mosaicos rompen las dependencias de predicción en la imagen, así como las dependencias de decodificación de entropía. Sin embargo, no necesitan ser incluidos en unidades de NAL individuales (lo mismo que WPP en este sentido); por lo tanto, los mosaicos no se pueden usar para el emparejamiento de tamaño de MTU. Cada mosaico puede ser procesado por un procesador/núcleo, y la comunicación interprocesadores/internúcleos requerida para la predicción en la imagen entre unidades de procesamiento que decodifican mosaicos vecinos se limita a transportar la cabecera de segmento compartido en los casos en que un segmento esté abarcando más de un mosaico y filtrado de bucle relacionado con la compartición de muestras y metadatos reconstruidos. Cuando se incluye más de un mosaico o segmento de WPP en un segmento, el desplazamiento de bytes del punto de entrada para cada mosaico o segmento de WPP distinto del primero en el segmento se señaliza en la cabecera del segmento.
Por simplicidad, las restricciones en la aplicación de los cuatro esquemas de partición de imágenes diferentes se han especificado en HEVC. Una secuencia de video codificada dada no puede incluir mosaicos y frentes de onda para la mayoría de los perfiles especificados en HEVC. Para cada segmento y mosaico, se debe cumplir una o ambas de las siguientes condiciones: 1) todos los bloques de árbol codificados en un segmento pertenecen al mismo mosaico; 2) todos los bloques de árbol codificados en un mosaico pertenecen al mismo segmento. Finalmente, un segmento de frente de onda contiene exactamente una fila de CTB, y cuando el WPP está en uso, si un segmento comienza dentro de una fila de CTB, debe terminar en la misma fila de CTB.
Una enmienda reciente a HEVC se especifica en el documento de salida de JCT-VC, JCTVC-AC1005, J. Boyce, A. Ramasubramonian, R. Skupin, G. J. Sullivan, A. Tourapis, Y.-K. Wang (editores), "HEVC Additional Supplemental Enhancement Information (borrador 4)", 24 de octubre de 2017, disponible públicamente en: http://phenix.intevry.fr/jct/doc_end_user/documents/29_Macau/wg11/JCTVC-AC1005-v2.zip. Con esta enmienda incluida, la HEVC especifica tres mensajes de Información de Mejora Suplementaria (SEI) relacionados con MCTS, esto es, un mensaje de SEI temporal de MCTS, mensaje de SEI de conjunto de información de extracción de MCTS y mensaje de SEI de anidamiento de información de extracción de MCTS.
El mensaje de SEI de MCTS temporal indica la existencia de MCTS en el flujo de bits y señaliza los MCTS. Para cada MCTS, los vectores de movimiento están restringidos para apuntar a ubicaciones de muestra completa dentro del MCTS y a ubicaciones de muestra fraccional que solo requieren ubicaciones de muestra completa dentro del MCTS para la interpolación, y el uso de candidatos de vector de movimiento para la predicción de vector de movimiento temporal derivada de bloques fuera del MCTS está deshabilitado. De esta forma, cada MCTS se puede decodificar independientemente sin exístanla existencia de mosaicos no incluidos en el MCTS.
El mensaje de SEI de conjuntos de información de extracción de MCTS proporciona información suplementaria que se puede utilizar en la extracción de subflujos de bits de MCTS (especificado como parte de la semántica del mensaje de SEI) para generar un flujo de bits conforme para un conjunto MCTS. La información consta de una serie de conjuntos de información de extracción, cada uno que define una serie de conjuntos MCTS y que contiene bytes de RBSP de los conjuntos de parámetros de vídeo de sustitución (VPS), SPS y PPS a ser utilizados durante el proceso de extracción de subflujos de bits de MCTS. Cuando se extrae un subflujo de bits según el proceso de extracción de subflujos de bits de MCTS, los conjuntos de parámetros (VPS, SPS y PPS) se necesitan reescribir o sustituir, las cabeceras de segmento necesitan ser actualizadas ligeramente porque una o todas las direcciones de segmento relacionadas con los elementos de sintaxis (incluyendo first_slice_segment_in_pic_flag y slice_segment_address) típicamente necesitarían tener valores diferentes.
En la última especificación de borrador de VVC, una imagen se puede dividir en múltiples subimágenes, cada una que cubre una región rectangular y que contiene un número entero de segmentos completos. La división de subimagen persiste a lo largo de todas las imágenes dentro de una secuencia de video codificada (CVS), y la información de partición (es decir, las posiciones y tamaños de subimágenes) se señaliza en el SPS. Se puede indicar que una subimagen está codificada sin utilizar valores de muestra de ninguna otra subimagen para la compensación de movimiento.
En la contribución de JVET JVET-O0141, que está disponible públicamente en: http://phenix.itsudparis.eu/jvet/doc_end_user/documents/13_Marrakech/wg11/JVET-M0261-v1.zip, el diseño de subimagen es similar al de la última especificación de borrador de VVC con algunas diferencias, una de las cuales es la señalización explícita de un ID de subimagen para cada subimagen en el SPS, así como la señalización del ID de subimagen en cada cabecera de segmento para habilitar la extracción de subflujos de bits basada en subimagen sin la necesita cambiar las unidades de NAL de segmento codificado. En este enfoque, el ID de subimagen para cada subimagen se mantiene sin cambios a lo largo de todas las imágenes en una CVS.
Durante discusiones anteriores, se mencionó que se debería utilizar un enfoque diferente para la señalización de ID de subimagen para habilitar también la fusión de subflujos de bits basados en subimágenes sin necesidad de cambiar las unidades de NAL de segmento codificado.
Por ejemplo, y como se explicará con más detalle a continuación, en la difusión de forma continua de video de 360 grados dependiente de la ventana de visualización, el cliente selecciona qué subimágenes se reciben y se fusionan con el flujo de bits a ser decodificado. Cuando cambia la orientación de visualización, algunos valores de ID de subimagen pueden permanecer iguales mientras que otros valores de ID de subimagen cambian en comparación con los valores de ID de subimagen recibidos antes del cambio de orientación de visualización. Por tanto, los ID de subimagen que recibe el decodificador en el flujo de bits fusionado cambian cuando cambia la orientación de visualización.
Un enfoque que se ha considerado es de la siguiente manera.
Las posiciones y los tamaños de subimagen se indican en el SPS utilizando, por ejemplo, la sintaxis de la especificación del borrador de VVC más reciente. Se asignan índices de subimagen (0 a N-1, donde N es el número de subimágenes). La asignación del ID de subimagen al índice de subimagen reside en el PPS porque esa asignación podría necesitar ser cambiada en medio de una CVS. Esto puede ser un bucle i = 0 a N-1, proporcionando el subpicture_id[i] que corresponde al índice de subimagen i. Este mapeo de ID de subimagen necesita ser reescrito por el cliente cuando el cliente selecciona un nuevo conjunto de subimágenes a ser decodificadas. La cabecera del segmento contiene el ID de subimagen (por ejemplo, subpicture_id), que seleccionó el codificador (y este no necesita ser reescrito en la fusión de subflujos de bits).
Desafortunadamente, existen problemas con los enfoques de señalización de ID de subimagen existentes. Muchos escenarios de aplicación que utilizan codificación de vídeo basada en subimagen implican la extracción de subflujos de bits, pero no la fusión de subflujos de bits. Por ejemplo, cada subflujo de bits extraído se puede decodificar por su propia instancia de decodificador. Como tal, no hay necesidad de fusionar los subflujos de bits extraídos en un flujo de bits a ser decodificado por una sola instancia de decodificador. En estos escenarios, el ID de subimagen para cada subimagen no cambiará dentro de una CVS. Por tanto, los ID de subimagen se pueden señalizar en el SPS. La señalización de tales ID de subimagen en el SPS en lugar del PPS es beneficiosa tanto desde el punto de vista del ahorro de bits como desde el punto de vista de la negociación de sesión.
En escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits, los ID de subimagen no cambian dentro de una CVS en los flujos de bits originales. Por lo tanto, la señalización de los ID de subimagen en el SPS permite el uso de los ID de subimagen tanto en el SPS como en las cabeceras de segmento, lo que es útil para la parte del proceso de extracción de subflujos de bits. Sin embargo, este enfoque solo es factible cuando los ID de subimagen no cambian dentro de la CVS en el flujo de bits original.
En la presente memoria se describen técnicas que aseguran la señalización eficiente de los identificadores (ID) de subimagen incluso cuando los ID de subimagen cambian dentro de la secuencia de video codificada (CVS) en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. La señalización eficiente se logra estableciendo indicadores en el conjunto de parámetros de secuencia (SPS) o el conjunto de parámetros de imagen (SPS) para indicar si los ID de subimágenes en la CVS pueden cambiar y, de ser así, dónde se ubican los ID de subimagen. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora en relación con los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
La FIG. 1 es un diagrama de flujo de un método operativo 100 de subimagen 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, al tiempo 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 codificado para soportar la difusión en forma continua en directo 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 y 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 de crominancia de un cuadro se pueden subdividir hasta que los bloques individuales contengan valores de color relativamente homogéneos. Por consiguiente, 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 puede 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. Por consiguiente, un bloque que represente un objeto en un cuadro de referencia no se necesita describir repetidamente en cuadros adyacentes. Por consiguiente, un objeto, tal como una mesa, puede permanecer en una posición constante en múltiples cuadros. Por lo tanto, la mesa se describe una vez y los cuadros adyacentes pueden hacer referencia 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 a través de 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 se aprovecha del hecho de que los componentes de luminancia y 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. Por consiguiente, 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 de 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 manera 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 es 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 varios indicadores 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 a petición. El flujo de bits también se puede difundir y/o multidifundirse hacia una pluralidad de decodificadores. La creación del flujo de bits es un proceso iterativo. Por consiguiente, los pasos 101, 103, 105, 107 y 109 pueden ocurrir de manera 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 se pretende que limite 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 los cuadros en el paso 111. La partición debería hacer coincidir los resultados de la partición de bloque en el paso 103. Ahora se describe la codificación/decodificación de entropía empleada en el paso 111. El codificador toma muchas decisiones durante el proceso de compresión, tal 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 una gran cantidad 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 permitidas. A cada opción permitida se le asigna una palabra de código. La longitud de las palabras de código se basa en el número de opciones permitidas (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 permitidas en lugar de indicar de manera única 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 permitidas de manera similar al codificador. Determinando el conjunto de opciones permitidas, el decodificador puede leer la palabra de código y determinar la selección hecha 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 que se generan 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 la 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 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 ver por un usuario final.
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 discute 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 discute con respecto a los pasos 105, 107 y 109 en el método 100. Cuando actúa como un sistema de códec decodificador 200 genera una señal de video de salida del flujo de bits como se discute 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 almacenamiento temporal de imágenes decodificadas 223 y un componente de formato de cabecera y codificación aritmética binaria adaptativa al contexto (CABAC) 231. Tales componentes están acoplados 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 la operación 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 escala y transformación inversa 229, el componente de filtros en bucle 225, y el componente de almacenamiento temporal 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 luego 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 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 diferentes formas 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 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 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 del almacenador temporal a la luz de la velocidad de transmisión para mitigar los problemas de insuficiencia y saturación del almacenador temporal. Para gestionar estos problemas, el componente de control de codificador general 211 gestiona la partición, la predicción y el filtrado por los otros componentes. Por ejemplo, el componente de control de codificador general 211 puede aumentar dinámicamente la complejidad de compresión para aumentar la resolución y aumentar el uso del ancho de banda o disminuir la complejidad de compresión para disminuir la resolución y el uso del ancho de banda. Por lo tanto, el componente de control general del codificador 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 la operación 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 en relación con 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 muy 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 que coincide 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. La 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 CTB, que luego se pueden dividir en 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 velocidad como parte de un proceso de optimización de distorsión de velocidad. 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 velocidad. Las mejores características de distorsión de velocidad 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 almacenador temporal 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 de píxeles fraccionales de la imagen de referencia. Por lo tanto, el componente de estimación de movimiento 221 puede realizar una búsqueda de movimiento con relación a las posiciones de píxeles completos y posiciones de píxeles fraccionales y emitir un vector de movimiento con precisión de píxeles fraccionales. 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. Nuevamente, el componente de estimación de movimiento 221 y el componente de compensación de movimiento 219 se pueden integrar funcionalmente, en algunos ejemplos. Tras 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 codifica, 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 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 ser 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 una 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 de 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 formateo de cabecera y CABAC 231 para su codificación.
Por ejemplo, el componente de estimación intraimagen 215 calcula los valores de distorsión de velocidad usando un análisis de distorsión de velocidad 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 velocidad entre los modos probados. El análisis de distorsión de velocidad 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, una cantidad de bits) utilizada para producir el bloque codificado. El componente de estimación intraimagen 215 calcula las proporciones a partir de las distorsiones y velocidades para los diversos bloques codificados para determinar qué modo de intrapredicción exhibe el mejor valor de distorsión de velocidad 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 velocidad (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 cuantificación y escalado 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 cuantificación y escala de transformación 213 está configurado para comprimir aún más el bloque residual. El componente de cuantificación y escalado de transformación 213 aplica una transformación, tal 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 cuantificación y escalado 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 cuantificación y escalado 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 bits 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 cuantificación y de escalado de transformación 213 puede realizar entonces un escaneo 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 cuantificación y escalado de transformación 213 para soportar la estimación de movimiento. El componente de escalado y transformación inversa 229 aplica un 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 un 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 usar 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 otro modo, tales 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 imagen reconstruidos. 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 en su lugar 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 se opera como codificador, el bloque de imagen reconstruido filtrado, el bloque residual y/o el bloque de predicción se almacenan en el componente de almacenador temporal de imágenes decodificadas 223 para su uso posterior en la estimación de movimiento como se discutió anteriormente. Cuando se opera como decodificador, el componente de almacenador temporal 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 almacenador temporal 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 formato 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 filtro. Además, los datos de predicción, incluidos 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 adaptable al contexto (CAVLC), CABAC, codificación aritmética binaria adaptable 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 FIG. 3 es un diagrama de bloques que ilustra un codificador de video 300 de ejemplo. 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 basada en bloques de referencia en un componente de almacenador temporal de imagen decodificada 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 de transformación y cuantificació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 inversa y cuantificación 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 inversa y cuantificación 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 discute con respecto al componente de filtros en bucle 225. Los bloques filtrados luego se almacenan en un componente de almacenador temporal de imágenes decodificadas 323 para su uso como bloques de referencia por el componente de compensación de movimiento 321. El componente de almacenador temporal de imágenes decodificadas 323 puede ser sustancialmente similar al componente de almacenador temporal de imágenes decodificadas 223.
La FIG. 4 es un diagrama de bloques que ilustra un decodificador de video 400 de ejemplo. 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 desde un codificador 300, y genera una señal de video de salida reconstruida basada en el 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 inversa y cuantificación 429 para la reconstrucción en bloques residuales. El componente de transformada inversa y cuantificación 429 puede ser similar al componente de transformada inversa y cuantificación 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 almacenador temporal de imágenes decodificadas 423 a través de un componente de filtros en bucle 425, que puede ser sustancialmente similar al componente de almacenador temporal de imágenes decodificadas 223 y el componente de filtros de en bucle 225, respectivamente. El componente de filtros en bucle 425 filtra los bloques de imagen reconstruidos, los bloques residuales y/o los bloques de predicción, y tal información se almacena en el componente de almacenador temporal de imágenes decodificadas 423. Los bloques de imagen reconstruidos del componente de almacenador temporal 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 almacenador temporal de imágenes decodificadas 423. El componente de almacenador temporal de imágenes decodificadas 423 continúa almacenando bloques de imagen reconstruidos 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.
La FIG. 5 es un diagrama esquemático que ilustra un flujo de bits 500 de ejemplo que contiene una secuencia de video codificada. Por ejemplo, el flujo de bits 500 se puede generar por un sistema de códec 200 y/o un codificador 300 para decodificación por un sistema de códec 200 y/o un decodificador 400. Como otro ejemplo, el flujo de bits 500 se puede generar por un codificador en el paso 109 del método 100 para su uso por un decodificador en el paso 111.
El flujo de bits 500 incluye un conjunto de parámetros de secuencia (SPS) 510, una pluralidad de conjuntos de parámetros de imagen (PPS) 512, cabeceras de grupo de mosaicos 514 y datos de imagen 520. Un SPS 510 contiene datos de secuencia comunes a todas las imágenes en la secuencia de video contenida en el flujo de bits 500. Tales datos pueden incluir tamaño de imagen, profundidad de bits, parámetros de herramientas de codificación, restricciones de tasa de bits, etc. En una realización, el SPS 510 incluye un indicador de SPS 565. En una realización, el indicador de SPS 565 tiene un primer valor (por ejemplo, uno) o un segundo valor (por ejemplo, cero). El indicador de SPS 565 que tiene el primer valor especifica que un mapeo de ID de subimagen 575 se señaliza en el SPS 510, y el indicador de SPS 565 que tiene el segundo valor especifica que el mapeo de ID de subimagen 575 se señaliza en el PPS 512.
El PPS 512 contiene parámetros que son específicos de una o más imágenes correspondientes. Por lo tanto, cada imagen en una secuencia de video puede referirse a un PPS 512. El PPS 512 puede indicar herramientas de codificación disponibles para mosaicos en imágenes correspondientes, parámetros de cuantificación, desplazamientos, parámetros de herramientas de codificación específicos de imagen (por ejemplo, controles de filtro), etc. En una realización, el PPS 512 incluye un indicador de PPS 567. En una realización, el indicador de PPS 567 tiene un primer valor (por ejemplo, uno) o un segundo valor (por ejemplo, cero). El indicador de PPS 567 que tiene el primer valor especifica que el mapeo de ID de subimagen 575 se señaliza en el PPS 512, y el indicador de PPS 567 que tiene el segundo valor especifica que el mapeo de ID de subimagen 575 no se señaliza en el PPS 512. La cabecera del grupo de mosaicos 514 contiene parámetros que son específicos para cada grupo de mosaicos en una imagen. Por lo tanto, puede haber una cabecera de grupo de mosaicos 514 por grupo de mosaicos en la secuencia de video. La cabecera del grupo de mosaicos 514 puede contener información del grupo de mosaicos, recuentos de órdenes de imágenes (POC), listas de imágenes de referencia, ponderaciones de predicción, puntos de entrada de mosaicos, parámetros de desbloqueo, etc. Se debería señalar que algunos sistemas se refieren a la cabecera del grupo de mosaicos 514 como cabecera de segmento, y usa tal información para soportar segmentos en lugar de grupos de mosaicos.
Los datos de imagen 520 contienen datos de video codificados según la interpredicción y/o la intrapredicción, así como los datos residuales transformados y cuantificados correspondientes. Tales datos de imagen 520 se clasifican según la partición utilizada para dividir la imagen antes de la codificación. Por ejemplo, la imagen en los datos de imagen 520 incluye una o más imágenes 521. Se puede hacer referencia a la secuencia o serie de imágenes 527 como CVS 527. Como se usa en la presente memoria, la CVS 527 es una secuencia de unidades de acceso (AU) que incluyen, en orden de decodificación, una AU de inicio de secuencia de video codificada (CVSS), seguida de cero o más AU que no sean AU de CVSS, incluyendo todas las AU posteriores hasta, pero sin incluir, ninguna AU posterior que sea una AU de CVSS. Una AU de CVSS es una AU en la que hay una unidad de predicción (PU) para cada capa especificada por el conjunto de parámetros de vídeo (VPS) y la imagen codificada en cada PU es una imagen de CLVSS. En una realización, cada imagen 521 está dentro de una AU. Una PU es un conjunto de unidades de NAL que están asociadas unas con otras según una regla de clasificación específica, son consecutivas en el orden de decodificación y contienen exactamente una imagen codificada.
La CVS es una secuencia de video codificada para cada secuencia de video de capa codificada (CLVS) en el flujo de bits de video. En particular, la CVS y la CLVS son las mismas cuando el flujo de bits de video incluye una sola capa. La CVS y la CLVS solo son diferentes cuando el flujo de bits de video incluye múltiples capas.
Cada una de las imágenes 521 se puede dividir en mosaicos 523. Un mosaico 523 es una parte dividida de una imagen creada por límites horizontales y verticales. Los mosaicos 523 pueden ser rectangulares y/o cuadrados. Específicamente, un mosaico 523 incluye cuatro lados que están conectados en ángulo recto. Los cuatro lados incluyen dos pares de lados paralelos. Además, los lados de un par de lados paralelos son de igual longitud. Como tal, un mosaico 523 puede tener cualquier forma rectangular, donde un cuadrado es un caso especial de un rectángulo donde todos de los cuatro lados son de igual longitud. Una imagen/fotografía puede contener uno o más mosaicos 523.
Se puede solicitar una imagen (por ejemplo, la imagen 521) en filas y columnas de mosaicos 523. Una fila de mosaicos es un conjunto de mosaicos 523 colocados de una manera horizontalmente adyacente para crear una línea continua desde el límite izquierdo hasta el límite derecho de una imagen (o viceversa). Una columna de mosaicos es un conjunto de mosaicos 523 colocados de manera verticalmente adyacente para crear una línea continua desde el límite superior hasta el límite inferior de la imagen (o viceversa).
Los mosaicos 523 pueden o no permitir la predicción basada en otros mosaicos 523, dependiendo del ejemplo. Cada mosaico 523 puede tener un índice de mosaico único en la imagen. Un índice de mosaico es un identificador numérico seleccionado por procedimientos que se puede usar para distinguir un mosaico 523 de otro. Por ejemplo, los índices de mosaico pueden aumentar numéricamente en el orden de escaneo de trama. El orden de escaneo de trama es de izquierda a derecha y de arriba a abajo.
Se debería señalar que, en algunos ejemplos, a los mosaicos 523 también se les pueden asignar identificadores (ID) de mosaico. Un ID de mosaico es un identificador asignado que se puede usar para distinguir un mosaico 523 de otro. En algunos ejemplos, los cálculos pueden emplear ID de mosaicos en lugar de índices de mosaicos. Además, se pueden asignar ID de mosaico para que tengan los mismos valores que los índices de mosaico en algunos ejemplos. Los índices y/o ID de mosaico se pueden señalizar para indicar grupos de mosaicos que contienen los mosaicos 523. Por ejemplo, los índices y/o ID de mosaico se pueden emplear para mapear datos de imagen asociados con un mosaico 523 a una posición adecuada para visualización. Un grupo de mosaicos es un conjunto relacionado de mosaicos 523 que se pueden extraer y codificar por separado, por ejemplo, para soportar la visualización de una región de interés y/o para soportar el procesamiento en paralelo. Los mosaicos 523 en un grupo de mosaicos se pueden codificar sin referencia a los mosaicos 523 fuera del grupo de mosaicos. Cada mosaico 523 se puede asignar a un grupo de mosaicos correspondiente y, por lo tanto, una imagen puede contener una pluralidad de grupos de mosaicos.
Los mosaicos 523 se dividen además en unidades de árbol de codificación (CTU). Las CTU se dividen además en bloques de codificación basados en árboles de codificación. Luego, los bloques de codificación se pueden codificar/decodificar según mecanismos de predicción.
Las FIGS. 6A-6E ilustran un mecanismo 600 de ejemplo para crear una pista extractora 610 (también conocida como flujo de bits fusionado) para combinar subimágenes de múltiples resoluciones de diferentes flujos de bits en una sola imagen para uso en aplicaciones de realidad virtual (VR). El mecanismo 600 se puede emplear para soportar un caso de uso de ejemplo del método 100. Por ejemplo, el mecanismo 600 se puede emplear para generar un flujo de bits 500 para la transmisión desde un sistema de códec 200 y/o un codificador 300 hacia un sistema de códec 200 y/o un decodificador 400. Como ejemplo específico, el mecanismo 600 se puede emplear para usar junto con VR, Formato de Medios Omnidireccional (OMAF), video de trescientos sesenta grados, etc.
En VR, solo se muestra una parte del video a un usuario. Por ejemplo, el video de VR se puede filmar para incluir una esfera que rodea a un usuario. El usuario puede emplear una pantalla montada en la cabeza (HMD) para ver el video de VR. El usuario puede apuntar la HMD hacia una región de interés. La región de interés se muestra al usuario y se descartan otros datos de video. De esta forma, un usuario ve solo una parte seleccionada por el usuario del video de VR en cualquier instante. Este enfoque imita las percepciones del usuario y, por lo tanto, hace que el usuario experimente un entorno virtual de una manera que imita un entorno real. Uno de los problemas con este enfoque es que todo el video de VR se puede transmitir al usuario, pero solo se usa realmente una ventana de visualización actual del video y el resto se descarta. Con el fin de aumentar la eficiencia de señalización para las aplicaciones de difusión en forma continua, la ventana de visualización actual del usuario se puede transmitir con una primera resolución más alta y otras ventanas de visualización se pueden transmitir con una segunda resolución más baja. De esta forma, las ventanas de visualización que es probable que se descarten ocupan menos ancho de banda que la ventana o ventanas de visualización que probablemente se vean por el usuario. En el caso de que el usuario seleccione una nueva ventana de visualización, el contenido de resolución más baja se puede mostrar hasta que el decodificador pueda solicitar que se transmita una ventana de visualización actual diferente con la primera resolución más alta. El mecanismo 600 se puede emplear para crear una pista extractora 610, como se muestra en la FIG. 6E, para soportar esta funcionalidad. Una pista extractora 610 es una pista de datos de imagen que encapsula una imagen (por ejemplo, la imagen 521) en múltiples resoluciones para su uso como se describió anteriormente.
El mecanismo 600 codifica el mismo contenido de video en una primera resolución 611 y una segunda resolución 612, como se muestra en las FIGS. 6A y 6B, respectivamente. Como ejemplo específico, la primera resolución 611 puede ser de 5120 x 2560 muestras de luminancia y la segunda resolución 612 puede ser de 2560 x 1280 muestras de luminancia. Las imágenes del video se pueden dividir en mosaicos 601 en la primera resolución 611 y los mosaicos 603 en la segunda resolución 612, respectivamente. Como se usa en la presente memoria, se puede hacer referencia a los mosaicos como subimágenes. En el ejemplo mostrado, los mosaicos 601 y 603 están divididos cada uno en una cuadrícula de 4x2. Además, se puede codificar un MCTS para cada posición de mosaico 601 y 603. Las imágenes a la primera resolución 611 y la segunda resolución 612 dan como resultado, cada una, una secuencia de MCTS que describe el video a lo largo del tiempo en una resolución correspondiente. Cada secuencia de MCTS codificada se almacena como una pista de subimagen o una pista de mosaico. El mecanismo 600 entonces puede usar las imágenes para crear segmentos para soportar la selección de MCTS adaptativa de ventana de visualización. Por ejemplo, se considera cada rango de orientaciones de visualización que causa una selección diferente de MCTS de alta y baja resolución. En el ejemplo ilustrado, se obtienen cuatro mosaicos 601 que contienen unos MCTS en la primera resolución 611 y cuatro mosaicos 603 que contienen unos MCTS en la segunda resolución 612.
El mecanismo 600 entonces puede crear una pista extractora 610 para cada posible selección de MCTS adaptable a la ventana de visualización. Las FIGS. 6C y 6D ilustran una selección de MCTS adaptable a la ventana de visualización de ejemplo. Específicamente, un conjunto de mosaicos seleccionados 605 y 607 se seleccionan en la primera resolución 611 y la segunda resolución 612, respectivamente. Los mosaicos seleccionados 605 y 607 se ilustran en sombreado gris. En el ejemplo mostrado, los mosaicos seleccionados 605 son los mosaicos 601 en la primera resolución 611 que se han de mostrar al usuario y los mosaicos seleccionados 607 son los mosaicos 603 en la segunda resolución 612 que probablemente se descarten pero se mantendrán para soportar la visualización en caso de que el usuario seleccione una nueva ventana de visualización. Los mosaicos seleccionados 605 y 607 se combinan luego en una sola imagen que contiene datos de imagen tanto en la primera resolución 611 como en la segunda resolución 612. Tales imágenes se combinan para crear una pista extractora 610. La FIG. 6E ilustra una sola imagen de una pista extractora 610 correspondiente con propósitos de ilustración. Como se muestra, la imagen en la pista extractora 610 contiene los mosaicos seleccionados 605 y 607 de la primera resolución 611 y la segunda resolución 612. Como se indicó anteriormente, las FIGS. 6C-6E ilustran una selección de MCTS adaptable a ventana de visualización única. Con el fin de permitir la selección del usuario de cualquier ventana de visualización, se debería crear una pista extractora 610 para cada combinación posible de mosaicos seleccionados 605 y 607.
En el ejemplo mostrado, cada selección de mosaicos 603 que encapsulan contenido del segundo flujo de bits de resolución 612 contiene dos segmentos. Se puede incluir un RegionWisePackingBox en la pista extractora 610 para crear un mapeo entre la imagen empaquetada y una imagen proyectada del formato de proyección equirrectangular (ERP). En el ejemplo presentado, los flujos de bits resueltos desde las pistas extractoras 610 tienen una resolución de 3200*2560. En consecuencia, un decodificador con capacidad para cuatro mil muestras (4K) puede decodificar contenido donde la ventana de visualización se extrae de un flujo de bits codificado con una resolución de cinco mil muestras 5K (5120 * 2560).
Como se muestra en la Fig. 6C, los mosaicos seleccionados 605 (mostrados en gris) en la primera resolución 611 tienen los siguientes identificadores de mosaico: 10, 11, 14 y 15. Como se usa en la presente memoria, también se puede hacer referencia a los identificadores de mosaico como identificadores de subimagen. Los mosaicos seleccionados 607 en la segunda resolución 612 tienen los siguientes identificadores: 1, 5, 4 y 8. Por tanto, la pista extractora 610 contiene los siguientes identificadores de mosaico: 10, 11, 14, 15, 1, 5, 4 y 8. Los identificadores de mosaico se usan para identificar subimágenes particulares usando un índice de subimagen, al que se puede hacer referencia en la presente memoria como mapeo de ID de subimagen.
Las FIGS. 7A-7E ilustran un mecanismo 700 de ejemplo para crear una pista extractora 710 para combinar subimágenes de múltiples resoluciones de diferentes flujos de bits en una sola imagen para su uso en aplicaciones de VR cuando el usuario ha cambiado las ventanas de visualización con relación a la ventana de visualización que se eligió para las FIGS. 6A-6E. Es decir, las FIGS. 7A-7E ilustran cómo se crea una nueva pista extractora 710 cuando hay un cambio en la orientación de visualización dentro de la CVS, que incluye la pista extractora 610 y la pista extractora 710.
Como se muestra en las FIGS. 7A-7B, las imágenes del video se han dividido en mosaicos 701 en la primera resolución 711 y mosaicos 703 en la segunda resolución 712, respectivamente. Sin embargo, ha habido un cambio en la orientación de la visualización en el mecanismo 700 con relación al mecanismo 600. Por lo tanto, como se muestra en las FIGS. 7C-7D, los mosaicos seleccionados 705 (mostrados en gris) en la primera resolución 711 ahora tienen los siguientes identificadores de mosaico: 9, 10, 13 y 14, y los mosaicos seleccionados 707 en la segunda resolución 712 ahora tienen los siguientes identificadores: 3, 4, 7 y 8. Por tanto, la pista extractora 710 contiene los siguientes identificadores de mosaicos: 3, 4, 7, 8, 9, 10, 13 y 14 debido al cambio en la orientación de visualización.
Cuando una CVS que se transmite incluye un conjunto constante de subimágenes, entonces los ID de subimagen relevantes se dejan en el SPS (todos los demás se eliminan). Cuando se produce una fusión (por ejemplo, para formar una de las pistas extractoras 610 o 710), los ID de subimagen se mueven al PPS. En cualquier caso, el indicador se establece en el flujo de bits para indicar dónde se ubican actualmente los ID de subimagen.
Normalmente, cuando ocurre el cambio en la orientación de visualización, tienen que ser enviadas nuevas imágenes de IRAP. Una imagen de IRAP es una imagen codificada para la cual todas las unidades de NAL de VCL tienen el mismo valor de tipo de unidad de NAL. Una imagen de IRAP proporciona las dos siguientes funcionalidades/beneficios importantes. En primer lugar, la presencia de una imagen de IRAP indica que el proceso de decodificación puede comenzar a partir de esa imagen. Esta funcionalidad permite una característica de acceso aleatorio en la que el proceso de decodificación comienza en esa posición en el flujo de bits, no necesariamente el comienzo del flujo de bits, siempre que esté presente una imagen de IRAP en esa posición. En segundo lugar, la presencia de una imagen de IRAp refresca el proceso de decodificación de manera que una imagen codificada que comienza en la imagen de IRAP, excluyendo las imágenes principales omitidas de acceso aleatorio (RASL), se codifique sin ninguna referencia a imágenes anteriores. Tener una imagen de IRAP presente en el flujo de bits, en consecuencia, pararía cualquier error que pueda ocurrir durante la decodificación de imágenes codificadas antes de que la imagen de IRAP se propague a la imagen de IRAP y aquellas imágenes que siguen a la imagen de IRAP en el orden de decodificación.
Si bien las imágenes de IRAP proporcionan funcionalidades importantes, conllevan una penalización en la eficiencia de la compresión. La presencia de una imagen de IRAP causa oscilaciones bruscas en la tasa de bits. Esta penalización a la eficiencia de compresión se debe a dos razones. En primer lugar, en la medida que una imagen de IRAP es una imagen intrapredicha, la imagen en sí misma requeriría relativamente más bits para representar cuando se compara con otras imágenes (por ejemplo, imágenes principales, imágenes posteriores) que son imágenes interpredichas. En segundo lugar, porque la presencia de una imagen de IRAP rompe la predicción temporal (esto se debe a que el decodificador actualizaría el proceso de decodificación, en el que una de las acciones del proceso de decodificación para esto es eliminar las imágenes de referencia anteriores en el almacenador temporal de imágenes decodificadas (DPB) ), la imagen de IRAP hace que la codificación de las imágenes que siguen a la imagen de IRAP en el orden de decodificación sea menos eficiente (es decir, necesita más bits para representar) porque tienen menos imágenes de referencia para su codificación interpredicción.
En una realización, se hace referencia a la imagen de IRAP como imagen de acceso aleatorio limpio (CRA) o imagen de actualización instantánea de decodificador (IDR) con imagen decodificable de acceso aleatorio (RADL). En HEVC, las imágenes de IDR, las imágenes de CRA y las imágenes de Acceso a Enlace Roto (BLA) se consideran todas imágenes de IRAP. Para VVC, durante la 12a reunión de JVET en octubre de 2018, se acordó tener imágenes tanto de IDR como de CRA como imágenes de IRAP. En una realización, las imágenes de Acceso a Enlace Roto (BLA) y Actualización Gradual de Decodificador (GDR) también se pueden considerar que son imágenes de IRAP. El proceso de decodificación de una secuencia de vídeo codificada siempre comienza en una imagen de IRAP.
En contraste con el envío de nuevas imágenes de IRAP como se describió anteriormente, un mejor enfoque es continuar enviando cualquier mosaico (también conocido como subimagen) compartido entre la pista extractora 610 y la pista extractora 710. Es decir, continuar enviando los mosaicos que tienen los siguientes ID de mosaico: 4, 8, 10 y 14, dado que esos mosaicos están tanto en la pista extractora 610 como en la pista extractora 710. Al hacerlo así, solo se necesitan enviar nuevas imágenes de IRAP para aquellos mosaicos en la pista extractora 710 que no estaban también en la pista extractora 610. Es decir, solo se necesitan enviar nuevas imágenes de IRAP para mosaicos que tengan los siguientes ID de mosaico: 1, 5, 9 y 13 cuando la orientación de visualización ha cambiado. Sin embargo, el cambio en los ID de subimagen dentro de la CVS puede causar problemas en la señalización. Con el fin de resolver al menos el problema de la señalización, se señaliza una indicación (por ejemplo, un indicador) en el flujo de bits para indicar si el ID de mosaico (también conocido como ID de subimagen) para cada mosaico (también conocido como subimagen) puede cambiar dentro de la CVS. Tal indicador se puede señalizar en el SPS o en el PPS. Además de señalizar si el ID de mosaico puede cambiar dentro de la CVS, el indicador también puede proporcionar otra funcionalidad.
En un enfoque, los ID de subimagen se señalizan o bien en la sintaxis de SPS (cuando se indica que el ID de subimagen para cada subimagen no cambia dentro de una CVS) o bien en la sintaxis de PPS (cuando se indica que el ID de subimagen para cada subimagen puede cambiar dentro de una CVS). En una realización, los ID de subimagen nunca se señalizan tanto en la sintaxis de SPS como en la sintaxis de PPS.
En otro enfoque, los ID de subimagen siempre se señalizan en la sintaxis de SPS, y cuando el indicador indica que el ID de subimagen para cada subimagen puede cambiar dentro de una CVS, los valores de ID de subimagen señalizados en el SPS se pueden anular por los ID de subimagen señalizados en la sintaxis de PPS.
En otro enfoque más, los ID de subimagen no se señalizan en la sintaxis de SPS, sino solo en la sintaxis de PPS, y la indicación de si el ID de subimagen para cada subimagen puede cambiar dentro de una CVS también se señalizan solo en la sintaxis de PPS.
En este enfoque, otra información de subimagen, tal como la posición y el tamaño de cada subimagen, la longitud de los ID de subimagen en bits, así como los indicadores subpic_treated_as_pic_flag[i] y loop_filter_across_subpic_enabled_flag[i] como en la última especificación de borrador de VVC, también se pueden señalizar en el PPS en lugar de en el s Ps , pero todos son iguales para todos los PPS referenciados por imágenes codificadas dentro de la CVS.
Cuando las posiciones y los tamaños de subimagen se señalizan en el PPS, en lugar de ser señalizados de manera similar como en la última especificación de borrador de VVC, se pueden señalizar en base a los segmentos incluidos en cada subimagen. Por ejemplo, para cada subimagen, se puede señalizar el índice o ID de segmento del segmento ubicado en la esquina superior izquierda de la subimagen y el índice o ID de segmento o el segmento ubicado en la esquina inferior derecha de la subimagen, para la derivación de la posición y el tamaño de subimagen, en donde la señalización se puede basar en delta y, en algunas ocasiones particulares, la señalización del índice o ID de segmento o su delta se puede evitar y el valor se infiere, por ejemplo, de manera similar a la forma en que se señalizan los índices superior izquierdo e inferior derecho de ladrillo para segmentos rectangulares en la última especificación de borrador de VVC.
En esta realización, los ID de subimagen se señalizan de la siguiente manera.
En la sintaxis de SPS, cuando se indica que el número de subimágenes en cada imagen en la CVS es mayor que 1, se aplica lo siguiente.
Un indicador (por ejemplo, designada subpicture_ids_signalled_in_sps_flag o sps_subpic_id_mapping_present_flag) se señaliza en el SPS. En una realización, el indicador tiene la siguiente semántica: subpicture_ids_signalled_in_sps_flag igual a 1 especifica que los ID de subimagen se señalizan en el SPS, uno para cada subimagen, y que el valor de ID de subimagen para cada subimagen particular no cambia dentro de la CVS. El subpictureJds_signaNed_rn_sps_flag igual a 0 especifica que los ID de subimagen no se señalizan en el SPS sino que se señalizan en el PPS, y el valor de ID de subimagen para cada subimagen particular puede cambiar dentro de la CVS. Cuando subpicture_ids_signalled_in_sps_flag es igual a 1, se señaliza un ID de subimagen para cada subimagen en el SPS.
En la sintaxis de PPS, se señaliza un indicador (por ejemplo, designado subpicture_ids_signalled_in_pps_flag o pps_subpic_id_mapping_present_flag) en el PPS. El indicador tiene la siguiente semántica: subpicture_ids_signalled_in_pps_flag igual a 1 especifica que los ID de subimagen se señalizan en el PPS, una para cada subimagen, y el valor de ID de subimagen para cada subimagen particular puede cambiar dentro de la CVS. El subpicture_ids_signalled_in_pps_flag igual a 0 especifica que los ID de subimagen no se señalizan en el PPS sino que se señalizan en el SPS, y el valor de ID de subimagen para cada subimagen particular no cambia dentro de la CVS.
En una realización, el valor de subpicture_ids_signalled_in_pps_flag será igual a 1 -subpicture_ids_signalled_in_sps_flag. Cuando subpicture_ids_signalled_in_pps_flag es igual a 1, se señaliza un ID de subimagen para cada subimagen en el PPS.
En la sintaxis de cabecera de segmento, se señaliza un ID de subimagen independientemente del número de subimágenes especificado por el SPS referenciado.
Alternativamente, cuando el número de subimágenes en cada imagen es mayor que 1, la sintaxis de SPS siempre incluye los ID de subimágenes, uno para cada subimagen, y la sintaxis de SPS también incluye un indicador que especifica si los ID de subimagen se pueden anular por los ID de subimagen señalizados en la sintaxis de PPS y si el valor de ID de subimagen para cada subimagen particular puede cambiar dentro de la CVS. La anulación de los ID de subimagen se puede realizar o bien siempre para todos los ID de subimagen, o bien solo para un subconjunto seleccionado de todos los ID de subimagen.
La FIG. 8 es una realización de un método 800 de decodificación implementado por un decodificador de video (por ejemplo, el decodificador de video 400). El método 800 se puede realizar después de que el flujo de bits decodificado haya sido recibido directa o indirectamente desde un codificador de video (por ejemplo, el codificador de video 300). El método 800 mejora el proceso de decodificación asegurando una señalización eficiente de los ID de subimagen incluso cuando los ID de subimagen cambian dentro de la CVS en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora con relación a los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
En el bloque 802, el decodificador de video recibe un flujo de bits de video (por ejemplo, el flujo de bits 500) que incluye un SPS (por ejemplo, el SPS 510), un PPS (por ejemplo, el PPS 512) y una pluralidad de subimágenes (por ejemplo, los mosaicos 605 y 607) asociados con un mapeo de identificador (ID) de subimagen 575. Como se señaló anteriormente, el mapeo de ID de subimagen 575 es un mapeo de ID de subimagen a subimágenes particulares por medio de un índice de subimagen (por ejemplo, el ID de subimagen 8 corresponde al índice de subimagen 8, que identifica una subimagen particular de la pluralidad de subimágenes). En una realización, el SPS 510 contiene un indicador de SPS 565. En una realización, el PPS 512 contiene un indicador de PPS 567.
En el bloque 804, el decodificador de video determina si el indicador de SPS 565 tiene un primer valor o un segundo valor. El indicador de SPS 565 que tiene el primer valor especifica que el mapeo de ID de subimagen 575 está incluido en el SPS 510, y el indicador de SPS 565 que tiene el segundo valor especifica que el mapeo de ID de subimagen 575 se señaliza en el PPS 512.
Cuando el indicador de SPS 565 tiene el segundo valor, en el bloque 806, el decodificador de video determina si el indicador de PPS 567 tiene el primer valor o el segundo valor. El indicador de PPS 567 que tiene el primer valor especifica que el mapeo de ID de subimagen 575 está incluido en el PPS 512, y el indicador de PPS 567 que tiene el segundo valor especifica que el mapeo de ID de subimagen 575 no se señaliza en el PPS 512.
En una realización, el indicador de SPS 656 tiene el primer valor cuando el indicador de PPS 567 tiene el segundo valor. En una realización, el indicador de SPS 565 tiene el segundo valor cuando el indicador de PPS 567 tiene el primer valor. En una realización, el primer valor es uno y el segundo valor es cero.
En una realización, el SPS 510 contiene un segundo indicador de SPS 569. El segundo indicador de SPS 569 especifica si el mapeo de subimágenes 575 se señaliza explícitamente en el SPS 510 o en el PPS 512. En una realización, el flujo de bits 500 comprende además un indicador de cambio de CVS 571. El indicador de cambio de CVS 571 indica si el mapeo de ID de subimagen 575 puede cambiar dentro de la CVS 590 del flujo de bits 500. En una realización, el indicador de cambio de CVS 571 está incluido en el SPS 510, el PPS 512 u otro conjunto de parámetros o cabecera en el flujo de bits 500.
En el bloque 808, el decodificador de video obtiene el mapeo de ID de subimagen 575 del SPS 510 cuando el indicador de SPS 565 tiene el primer valor y del PPS 512 cuando el SPS tiene el segundo valor y/o cuando el indicador de PPS 567 tiene el primer valor. En una realización, el flujo de bits comprende un flujo de bits fusionado. En una realización, el mapeo de ID de subimagen 575 ha cambiado dentro de la CVS 590 del flujo de bits 500. En el bloque 810, el decodificador de video decodifica la pluralidad de subimágenes utilizando el mapeo de ID de subimagen 575. Una vez decodificada, la pluralidad de subimágenes se puede usar para generar o producir una imagen o secuencia de video para mostrar a un usuario en el visualizador o pantalla de un dispositivo electrónico (por ejemplo, un teléfono inteligente, tableta, ordenador portátil, ordenador personal, etc.).
La FIG. 9 es una realización de un método 900 de codificación de un flujo de bits de video implementado por un codificador de video (por ejemplo, el codificador de video 300). El método 900 se puede realizar cuando una imagen (por ejemplo, de un video) se ha de codificar en un flujo de bits de video y luego transmitir hacia un decodificador de video (por ejemplo, el decodificador de video 400). El método 900 mejora el proceso de codificación asegurando una señalización eficiente de los ID de subimagen incluso cuando los ID de subimagen cambian dentro de la CVS en escenarios de aplicación que implican tanto la extracción de subflujos de bits como la fusión de subflujos de bits. Esto reduce la redundancia y aumenta la eficiencia de codificación. Por tanto, el codificador/decodificador (también conocido como "códec") en la codificación de video se mejora con relación a los códecs actuales. Como cuestión práctica, el proceso de codificación de video mejorado ofrece al usuario una mejor experiencia de usuario cuando se envían, reciben y/o ven videos.
En el bloque 902, el codificador de video codifica un flujo de bits que incluye un SPS (por ejemplo, el SPS 510), un PPS (por ejemplo, el PPS 512) y una pluralidad de subimágenes (por ejemplo, los mosaicos 605 y 607) asociadas con un mapeo de identificador (ID) de subimagen. Como se indicó anteriormente, el mapeo de ID de subimagen 575 es un mapeo de ID de subimagen a subimágenes particulares por medio de un índice de subimagen (por ejemplo, el ID de subimagen 8 corresponde al índice de subimagen 8, que identifica una subimagen particular de la pluralidad de subimágenes). En una realización, el SPS 510 contiene un indicador de SPS 565 y el PPS 512 contiene un indicador de PPS 567.
En el bloque 904, el codificador de video establece el indicador de SPS 565 en un primer valor cuando el mapeo de ID de subimagen 575 se incluye en el SPS 510 y en un segundo valor cuando el mapeo de ID de subimagen 575 se señaliza en el PPS 512.
En el bloque 906, el codificador de video establece el indicador de PPS 567 en el primer valor cuando el mapeo de ID de subimagen 575 se incluye en el PPS 512 y en el segundo valor cuando el mapeo de ID de subimagen 575 no se señaliza en el PPS 512.
En una realización, el indicador de SPS 565 tiene el primer valor cuando el indicador de PPS 567 tiene el segundo valor. En una realización, el indicador de SPS 565 tiene el segundo valor cuando el indicador de PPS 567 tiene el primer valor. En una realización, el primer valor es uno y el segundo valor es cero.
En una realización, el SPS 510 contiene un segundo indicador de SPS 569. El segundo indicador de SPS 569 especifica si el mapeo de ID de subimagen 575 se señaliza explícitamente en el SPS 510 o en el PPS 512. En una realización, el flujo de bits 500 comprende además un indicador de cambio de CVS 571. El indicador de cambio de CVS 571 indica si el mapeo de ID de subimagen 575 puede cambiar dentro de la CVS 590 del flujo de bits 500. En una realización, el indicador de cambio de CVS 571 se incluye en el SPS 510, el PPS 512 u otro conjunto de parámetros o cabecera en el flujo de bits 500.
En el bloque 908, el codificador de video almacena el flujo de bits para comunicación hacia un decodificador. El flujo de bits se puede almacenar en la memoria hasta que el flujo de bits de video se transmite hacia el decodificador de video. Una vez recibido por el decodificador de video, el flujo de bits de video codificado se puede decodificar (por ejemplo, como se describió anteriormente) para generar o producir una imagen o secuencia de video para mostrar a un usuario en el visualizador o la pantalla de un dispositivo electrónico (por ejemplo, un teléfono inteligente, tableta, ordenador portátil, ordenador personal, etc.).
En una realización, los ID de subimagen se señalizan de la siguiente manera.
La sintaxis de SPS no incluye la señalización de ID de subimagen.
En la sintaxis de PPS, se señaliza un valor que indica el número de subimágenes, que se requiere que sea el mismo para todos los PPS referenciados por imágenes codificadas dentro de la CVS, y cuando el número indicado de subimágenes es mayor que 1, se aplica lo siguiente:
Un indicador, por ejemplo, denominado subpicture_id_unchanging_in_cvs_flag, se señaliza en el PPS, con la siguiente semántica: subpicture_id_unchanging_in_cvs_flag igual a 1 especifica que el ID de subimagen para cada subimagen particular señalizada en el PPS no cambia dentro de la CVS. subpicture_id_unchanging_in_cvs_flag igual a 0 especifica que el ID de subimagen para cada subimagen particular señalizada en el PPS puede cambiar dentro de la CVS.
En el PPS se señaliza un valor que indica el número de subimágenes. El número indicado de subimágenes será el mismo para todos los PPS referenciados por imágenes codificadas dentro de una CVS.
Se señaliza un ID de subimagen para cada subimagen en el PPS. Cuando la subpicture_id_unchanging_in_cvs_flag es igual a 1, el ID de subimagen para cada subimagen particular será el mismo para todos los PPS referenciados por imágenes codificadas dentro de la CVS.
En la sintaxis de la cabecera de segmento, se señaliza un ID de subimagen, independientemente del número de subimágenes especificado por el SPS referenciado.
También se debería entender que los pasos de los métodos ejemplares expuestos en la presente memoria no se requieren necesariamente que se realicen en el orden descrito, y el orden de los pasos de tales métodos se debería entender que es meramente ejemplar. Del mismo modo, se pueden incluir pasos adicionales en tales métodos, y ciertos pasos se pueden omitir o combinar, en métodos consistentes con varias realizaciones de la presente descripción.
La FIG. 10 es un diagrama esquemático de un dispositivo de codificación de video 1000 (por ejemplo, un codificador de video 300 o un decodificador de video 400) según una realización de la descripción. El dispositivo de codificación de video 1000 es adecuado para implementar las realizaciones descritas como se describe en la presente memoria. El dispositivo de codificación de video 1000 comprende puertos de entrada 1010 y unidades receptoras (Rx) 1020 para recibir datos; un procesador, unidad lógica o unidad central de procesamiento (CPU) 1030 para procesar los datos; unidades transmisoras (Tx) 1040 y puertos de salida 1050 para transmitir los datos; y una memoria 1060 para almacenar los datos. El dispositivo de codificación de video 1000 también puede comprender componentes ópticos a eléctricos (OE) y componentes eléctricos a ópticos (EO) acoplados a los puertos de entrada 1010, las unidades receptoras 1020, las unidades transmisoras 1040 y los puertos de salida 1050 para salida o entrada de señales ópticas o eléctricas.
El procesador 1030 está implementado por hardware y software. El procesador 1030 se puede implementar como uno o más chips de CPU, núcleos (por ejemplo, como un procesador multinúcleo), matrices de puertas programables en campo (FPGA), circuitos integrados de aplicaciones específicas (ASIC) y procesadores de señales digitales (DSP). El procesador 1030 está en comunicación con los puertos de entrada 1010, las unidades receptoras 1020, las unidades transmisoras 1040, los puertos de salida 1050 y la memoria 1060. El procesador 1030 comprende un módulo de codificación 1070. El módulo de codificación 1070 implementa las realizaciones descritas anteriormente. Por ejemplo, el módulo de codificación 1070 implementa, procesa, prepara o proporciona las diversas funciones de códec. La inclusión del módulo de codificación 1070 por lo tanto proporciona una mejora sustancial a la funcionalidad del dispositivo de codificación de video 1000 y efectúa una transformación del dispositivo de codificación de video 1000 a un estado diferente. Alternativamente, el módulo de codificación 1070 se implementa como instrucciones almacenadas en la memoria 1060 y ejecutadas por el procesador 1030.
El dispositivo de codificación de video 1000 también puede incluir dispositivos de entrada y/o salida (I/O) 1080 para comunicar datos hacia y desde un usuario. Los dispositivos de I/O 1080 pueden incluir dispositivos de salida, tales como una pantalla para mostrar datos de video, altavoces para enviar datos de audio, etc. Los dispositivos de I/O 1080 también pueden incluir dispositivos de entrada, tales como un teclado, ratón, bola de apuntamiento, etc., y/o interfaces correspondientes para interactuar con tales dispositivos de salida.
La memoria 1060 comprende uno o más discos, unidades de cinta y unidades de estado sólido y se pueden usar como 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 memoria 1060 puede ser volátil y/o no volátil y puede ser una memoria de solo lectura (ROM), una memoria de acceso aleatorio (RAM), una memoria ternaria de contenido direccionable (TCAM) y/o una memoria de acceso aleatorio estática (SRAM).
La FIG. 11 es un diagrama esquemático de una realización de unos medios para codificar 1100. En una realización, los medios para codificar 1100 se implementan en un dispositivo de codificación de video 1102 (por ejemplo, un codificador de video 300 o un decodificador de video 400). El dispositivo de codificación de video 1102 incluye medios de recepción 1101. Los medios de recepción 1101 están configurados para recibir una imagen para codificar o para recibir un flujo de bits para decodificar. El dispositivo de codificación de video 1102 incluye medios de transmisión 1107 acoplados a los medios de recepción 1101. Los medios de transmisión 1107 están configurados para transmitir el flujo de bits a un decodificador o para transmitir una imagen decodificada a unos medios de visualización (por ejemplo, uno de los dispositivos de I/O 1080).
El dispositivo de codificación de video 1102 incluye unos medios de almacenamiento 1103. Los medios de almacenamiento 1103 están acoplados a al menos uno de los medios de recepción 1101 o los medios de transmisión 1107. Los medios de almacenamiento 1103 están configurados para almacenar instrucciones. El dispositivo de codificación de video 1102 también incluye medios de procesamiento 1105. Los medios de procesamiento 1105 están acoplados a los medios de almacenamiento 1103. Los medios de procesamiento 1105 están configurados para ejecutar las instrucciones almacenadas en los medios de almacenamiento 1103 para realizar los métodos descritos en la presente memoria.
Si bien se han proporcionado varias realizaciones en la presente descripción, se puede entender que los sistemas y métodos descritos se podrían incorporar en muchas otras formas específicas sin apartarse del alcance de la presente descripción. Los presentes ejemplos se han de considerar como ilustrativos y no restrictivos, y la intención no se limita a los detalles dados en la presente memoria. Por ejemplo, los diversos elementos o componentes se pueden combinar o integrar en otro sistema.
Además, las técnicas, sistemas, subsistemas y métodos descritos e ilustrados en las diversas realizaciones como discretos o separados se pueden combinar o integrar con otros sistemas, componentes, técnicas o métodos sin apartarse del alcance de la presente descripción.

Claims (14)

REIVINDICACIONES
1. Un método implementado por un decodificador, que comprende:
recibir (802), por el decodificador, un flujo de bits que incluye un conjunto de parámetros de secuencia, SPS, un conjunto de parámetros de imagen, PPS, y una pluralidad de subimágenes asociadas con un mapeo de identificador, ID, de subimagen, en donde el SPS incluye un indicador de SPS;
determinar (804), por el decodificador, si el indicador de SPS tiene un primer valor o un segundo valor, en donde el indicador de SPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el SPS, y en donde el indicador de SPS que tiene el segundo valor especifica que el mapeo de ID de subimagen se señaliza en el PPS;
obtener (808), por el decodificador, el mapeo de ID de subimagen del SPS cuando el indicador de SPS tiene el primer valor y del PPS cuando el indicador de SPS tiene el segundo valor; y
decodificar (810), por el decodificador, la pluralidad de subimágenes usando el mapeo de ID de subimagen.
2. El método de la reivindicación 1, en donde el PPS incluye un indicador de PPS, y el método comprende además: determinar (806), por el decodificador, si el indicador de PPS tiene el primer valor o el segundo valor, en donde el indicador de PPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el PPS, y en donde el indicador de PPS que tiene el segundo valor especifica que el ID de subimagen no se señaliza en el PPS; y
obtener (808), por el decodificador, el mapeo de ID de subimagen del PPS cuando el indicador de PPS tiene el primer valor.
3. El método de la reivindicación 2, en donde el indicador de SPS tiene el primer valor cuando el indicador de PPS tiene el segundo valor, y en donde el indicador de SPS tiene el segundo valor cuando el indicador de PPS tiene el primer valor.
4. El método de cualquiera de las reivindicaciones 1-3, en donde el primer valor es uno y el segundo valor es cero.
5. El método de cualquiera de las reivindicaciones 1-4, en donde el SPS incluye un segundo indicador de SPS, y en donde el segundo indicador de SPS especifica si el mapeo de ID de subimagen se señaliza explícitamente en el SPS o el PPS.
6. El método de cualquiera de las reivindicaciones 1-5, en donde el flujo de bits comprende además un indicador de cambio de secuencia de video codificada, CVS, y en donde el indicador de cambio de CVS indica si se permite que el mapeo de ID de subimagen cambie dentro de una secuencia de video codificada, CVS, del flujo de bits.
7. El método de una cualquiera de las reivindicaciones 1-6, en donde el flujo de bits comprende un flujo de bits fusionado, y en donde el mapeo de ID de subimagen ha cambiado dentro de la CVS del flujo de bits.
8. Un método implementado por un codificador, el método que comprende:
codificar (902), por el codificador, un flujo de bits que incluye un conjunto de parámetros de secuencia, SPS, un conjunto de parámetros de imagen, PPS, y una pluralidad de subimágenes asociadas con un mapeo de identificador, ID, de subimagen, en donde el SPS incluye un indicador de SPS;
establecer (904), por el codificador, el indicador de SPS en un primer valor cuando el mapeo de ID de subimagen se señaliza en el SPS y en un segundo valor cuando el mapeo de ID de subimagen se señaliza en el PPS; y almacenar (908), por el decodificador, el flujo de bits para la comunicación hacia un decodificador.
9. El método de la reivindicación 8, ajustar además (906), por el codificador, un indicador de PPS en el PPS al primer valor cuando el mapeo de ID de subimagen se señaliza en el PPS y al segundo valor cuando el mapeo de ID de subimagen no se señaliza en el PPS.
10. El método de la reivindicación 9, en donde el indicador de SPS tiene el primer valor cuando el indicador de PPS tiene el segundo valor, y en donde el indicador de SPS tiene el segundo valor cuando el indicador de PPS tiene el primer valor.
11. El método de una cualquiera de las reivindicaciones 8-10, en donde el primer valor es uno y el segundo valor es cero.
12. El método de cualquiera de las reivindicaciones 8-11, en donde el SPS incluye un segundo indicador de SPS, y en donde el segundo indicador de SPS especifica si el mapeo de subimagen se señaliza explícitamente en el SPS o en el PPS.
13. El método de cualquiera de las reivindicaciones 8-12, en donde el flujo de bits comprende además un indicador de cambio de secuencia de video codificada, CVS, y en donde el indicador de cambio de CVS indica si el mapeo de ID de subimagen puede cambiar dentro de una secuencia de video codificada, CVS, del flujo de bits
14. Un dispositivo decodificador, que comprende:
un receptor (1020) configurado para recibir un flujo de bits de video que incluye un conjunto de parámetros de secuencia, SPS, un conjunto de parámetros de imagen, PPS, y una pluralidad de subimágenes asociadas con un mapeo de identificador, ID, de subimagen, en donde el SPS incluye un indicador de SPS;
una memoria (1032) acoplada al receptor, la memoria que almacena instrucciones; y
un procesador (1030) acoplado a la memoria (1032), el procesador (1030) configurado para ejecutar las instrucciones para hacer al dispositivo de decodificación:
determinar si el indicador de SPS tiene un primer valor o un segundo valor, en donde el indicador de SPS que tiene el primer valor especifica que el mapeo de ID de subimagen se señaliza en el SPS, y en donde el indicador de SPS que tiene el segundo valor especifica que el mapeo de ID de subimagen se señaliza en el PPS; obtener el mapeo de ID de subimagen del SPS cuando el indicador de SPS tiene el primer valor y del PPS cuando el indicador de SPS tiene el segundo valor; y
decodificar la pluralidad de subimágenes usando el mapeo de ID de subimagen.
ES20855518T 2019-09-17 2020-09-15 Señalización de identificaciones de subimagen en codificación de vídeo basada en subimagen Active ES2944451T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962901552P 2019-09-17 2019-09-17
PCT/US2020/050835 WO2021035225A1 (en) 2019-09-17 2020-09-15 Signaling subpicture ids in subpicture based video coding

Publications (1)

Publication Number Publication Date
ES2944451T3 true ES2944451T3 (es) 2023-06-21

Family

ID=74660755

Family Applications (1)

Application Number Title Priority Date Filing Date
ES20855518T Active ES2944451T3 (es) 2019-09-17 2020-09-15 Señalización de identificaciones de subimagen en codificación de vídeo basada en subimagen

Country Status (23)

Country Link
US (1) US20220210477A1 (es)
EP (2) EP4213487A1 (es)
JP (2) JP7460760B2 (es)
KR (1) KR20220053676A (es)
CN (7) CN116567252A (es)
AU (1) AU2020332002A1 (es)
BR (1) BR122023003915B1 (es)
CA (1) CA3151255A1 (es)
CL (1) CL2022000640A1 (es)
CY (1) CY1126045T1 (es)
DK (1) DK4018658T3 (es)
ES (1) ES2944451T3 (es)
FI (1) FI4018658T3 (es)
HR (1) HRP20230554T1 (es)
HU (1) HUE061642T2 (es)
IL (1) IL291464A (es)
LT (1) LT4018658T (es)
MX (1) MX2022003221A (es)
PL (1) PL4018658T3 (es)
PT (1) PT4018658T (es)
RS (1) RS64175B1 (es)
SI (1) SI4018658T1 (es)
WO (1) WO2021035225A1 (es)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113994690A (zh) * 2019-09-23 2022-01-28 韩国电子通信研究院 图像编码/解码方法和装置、以及存储比特流的记录介质
EP4138401A1 (en) * 2021-08-17 2023-02-22 Nokia Technologies Oy A method, an apparatus and a computer program product for video encoding and video decoding

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9491456B2 (en) * 2012-09-24 2016-11-08 Qualcomm Incorporated Coded picture buffer removal times signaled in picture and sub-picture timing supplemental enhancement information messages
EP3020202B1 (en) * 2013-07-10 2019-09-04 Sharp Kabushiki Kaisha Scaling list signaling and parameter sets activation
US9860540B2 (en) * 2014-01-03 2018-01-02 Qualcomm Incorporated Inference of nooutputofpriorpicsflag in video coding
US9912966B2 (en) * 2014-01-03 2018-03-06 Nokia Technologies Oy Parameter set coding
US9998742B2 (en) * 2015-01-27 2018-06-12 Qualcomm Incorporated Adaptive cross component residual prediction
AU2016269362A1 (en) * 2015-05-28 2017-12-07 Hfi Innovation Inc. Method and apparatus for using a current picture as a reference picture
JP6559337B2 (ja) * 2015-09-23 2019-08-14 ノキア テクノロジーズ オーユー 360度パノラマビデオの符号化方法、符号化装置、及びコンピュータプログラム
US10523966B2 (en) * 2017-03-31 2019-12-31 Mediatek Inc. Coding transform blocks
US10623738B2 (en) * 2017-04-06 2020-04-14 Futurewei Technologies, Inc. Noise suppression filter
US11153607B2 (en) * 2018-01-29 2021-10-19 Mediatek Inc. Length-adaptive deblocking filtering in video coding
KR20210087090A (ko) * 2019-03-11 2021-07-09 텐센트 아메리카 엘엘씨 타일 및 서브-픽처 파티셔닝

Also Published As

Publication number Publication date
EP4018658A4 (en) 2022-10-12
LT4018658T (lt) 2023-05-10
CN116828191A (zh) 2023-09-29
JP7460760B2 (ja) 2024-04-02
HRP20230554T1 (hr) 2023-08-18
RS64175B1 (sr) 2023-05-31
CN116600125A (zh) 2023-08-15
CN115567713B (zh) 2023-07-07
EP4213487A1 (en) 2023-07-19
DK4018658T3 (da) 2023-04-24
CN114556938B (zh) 2023-04-11
AU2020332002A1 (en) 2022-04-07
JP2022548663A (ja) 2022-11-21
CN115567713A (zh) 2023-01-03
CN114556938A (zh) 2022-05-27
CL2022000640A1 (es) 2022-10-21
JP2024083350A (ja) 2024-06-21
MX2022003221A (es) 2022-04-26
CY1126045T1 (el) 2023-11-15
EP4018658B1 (en) 2023-03-29
IL291464A (en) 2022-05-01
BR112022004859A2 (pt) 2022-06-07
PL4018658T3 (pl) 2023-06-05
BR122023003915B1 (pt) 2024-02-15
SI4018658T1 (sl) 2023-06-30
CN116567252A (zh) 2023-08-08
US20220210477A1 (en) 2022-06-30
EP4018658A1 (en) 2022-06-29
FI4018658T3 (fi) 2023-05-02
CA3151255A1 (en) 2021-02-25
KR20220053676A (ko) 2022-04-29
PT4018658T (pt) 2023-05-12
CN116600126A (zh) 2023-08-15
WO2021035225A1 (en) 2021-02-25
CN116567251A (zh) 2023-08-08
HUE061642T2 (hu) 2023-07-28

Similar Documents

Publication Publication Date Title
ES2952079T3 (es) Dimensionamiento de subimágenes en la codificación de vídeo
ES2965445T3 (es) Restricciones de imagen del tipo de unidad NAL mixta
AU2019414460B2 (en) A video encoder, a video decoder and corresponding methods
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
ES2967911T3 (es) Codificación de vídeo entrelazado con imágenes principales
US11889087B2 (en) Tile group assignment for raster scan and rectangular tile groups in video coding
US20220210477A1 (en) Signaling subpicture ids in subpicture based video coding
CN114026872A (zh) 使用标识符指示的视频译码码流提取
BR112021012649A2 (pt) Codificador de vídeo, decodificador de vídeo e métodos correspondentes
RU2792176C2 (ru) Кодер видео, декодер видео и соответствующие способы
BR112022004859B1 (pt) Método implementado por um decodificador, método implementado por um codificador, dispositivo, aparelho e sistema de codificação, e meios para codificação