ES2750531T3 - Remuestreo utilizando factor de escalado - Google Patents

Remuestreo utilizando factor de escalado Download PDF

Info

Publication number
ES2750531T3
ES2750531T3 ES14736507T ES14736507T ES2750531T3 ES 2750531 T3 ES2750531 T3 ES 2750531T3 ES 14736507 T ES14736507 T ES 14736507T ES 14736507 T ES14736507 T ES 14736507T ES 2750531 T3 ES2750531 T3 ES 2750531T3
Authority
ES
Spain
Prior art keywords
image
video
sample
reference layer
layer
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
ES14736507T
Other languages
English (en)
Inventor
Vadim Seregin
Jianle Chen
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2750531T3 publication Critical patent/ES2750531T3/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/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/33Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability in the spatial domain
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors

Landscapes

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

Abstract

Un aparato para codificar información de vídeo, comprendiendo el aparato: una memoria configurada para almacenar información de vídeo asociada a una imagen de capa de referencia y una imagen de capa de mejora; y un procesador acoplado operativamente a la memoria y configurado para: calcular un factor de escalado para la obtención de la ubicación de la muestra en un proceso de remuestreo que indica una proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en una primera dirección; determinar usando el factor de escalado previamente calculado un valor de desplazamiento de redondeo para determinar una coordenada en la primera dirección de una primera muestra ubicada en la imagen de la capa de referencia, correspondiendo la primera muestra a una segunda muestra ubicada en la imagen de la capa de mejora; y determinar la coordenada en la primera dirección de la primera muestra usando el factor de escalado y el valor de desplazamiento de redondeo; en el que el procesador está configurado además para determinar el valor de desplazamiento de redondeo como un producto del factor de escalado y una fase que a continuación se suma con un primer valor de desplazamiento y a continuación se desplaza a la derecha, en el que la fase indica una fase de filtro de remuestreo en la primera dirección y el primer valor de desplazamiento es un número.

Description

DESCRIPCIÓN
Remuestreo utilizando factor de escalado
ANTECEDENTES
Campo
[0001] Esta divulgación está relacionada con el campo de la compresión y la codificación de vídeo. En particular, está relacionado con la codificación de vídeo escalable (SVC), que incluye SVC para codificación de vídeo avanzada (AVC), así como SVC para codificación de vídeo de alta eficiencia (HEVC), que también se conoce como HEVC escalable (SHVC). También está relacionado con la codificación de vídeo 3D, como la ampliación de múltiples visualizaciones de HEVC, denominada MV-HEVC. Diversos modos de realización se refieren a sistemas y procedimientos para determinar los desplazamientos de redondeo utilizados en el proceso de remuestreo.
Descripción de la técnica relacionada
[0002] Las capacidades del vídeo digital pueden incorporarse a una amplia gama de dispositivos, que incluye televisores digitales, sistemas de difusión digital directa, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de escritorio, ordenadores tipo tablet, lectores de libros electrónicos, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos celulares o de radio por satélite, los denominados "teléfonos inteligentes", dispositivos de videoconferencia, dispositivos de transmisión de vídeo en tiempo real y similares. Los dispositivos de vídeo digital implementan técnicas de codificación de vídeo, tales como las descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC), la norma de Codificación de Vídeo de Alta Eficacia (HEVC), actualmente en desarrollo, y las ampliaciones de tales normas. Los dispositivos de vídeo pueden transmitir, recibir, codificar, descodificar y/o almacenar información de vídeo digital más eficazmente, implementando tales técnicas de codificación de vídeo.
[0003] Las técnicas de codificación de vídeo incluyen la predicción espacial (intra-imagen) y/o la predicción temporal (entre imágenes) para reducir o eliminar la redundancia intrínseca en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fragmento de vídeo (por ejemplo, una trama de vídeo o una parte de una trama de vídeo) puede dividirse en bloques de vídeo, que también pueden denominarse bloques arbolados, unidades de codificación (CU) y/o nodos de codificación. Los bloques de vídeo en un fragmento intracodificado (I) de una imagen se codifican usando predicción espacial con respecto a muestras de referencia en bloques próximos en la misma imagen. Los bloques de vídeo en un fragmento intercodificado (P o B) de una imagen pueden usar la predicción espacial con respecto a muestras de referencia en bloques próximos en la misma imagen o la predicción temporal con respecto a muestras de referencia en otras imágenes de referencia. Las imágenes pueden denominarse tramas y las imágenes de referencia pueden denominarse tramas de referencia.
[0004] La predicción espacial o temporal da como resultado un bloque predictivo para un bloque a codificar. Los datos residuales representan diferencias de píxeles entre el bloque original a codificar y el bloque predictivo. Un bloque intercodificado se codifica de acuerdo con 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 de acuerdo con un modo de intracodificación y a los datos residuales. Para una mayor compresión, los datos residuales pueden transformarse desde el dominio del píxel a un dominio de transformada, dando como resultado coeficientes de transformada residuales, que a continuación se pueden cuantificar. Los coeficientes de transformada cuantificados, dispuestos inicialmente en una formación bidimensional, pueden explorarse con el fin de generar un vector unidimensional de coeficientes de transformada, y puede aplicarse codificación por entropía para lograr aún más compresión.
SUMARIO
[0005] En general, esta divulgación describe técnicas relacionadas con codificación de vídeo escalable (SVC). Varias técnicas descritas a continuación proporcionan procedimientos y dispositivos para determinar los desplazamientos de redondeo utilizados en el proceso de remuestreo. La invención se estipula en las reivindicaciones adjuntas.
[0006] Un aparato para codificar información de vídeo de acuerdo con ciertos aspectos incluye una memoria y un procesador. La unidad de memoria está configurada para almacenar información de vídeo asociada con una imagen de la capa de referencia y una imagen de la capa de mejora. El procesador está configurado para: almacenar información de vídeo asociada con una imagen de la capa de referencia y una imagen de la capa de mejora; recibir un factor de escalado que indica una proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en una primera dirección; determinar, sin realizar una operación de división, un valor de desplazamiento de redondeo utilizando el factor de escalado; y determinar una coordenada en la primera dirección de una primera muestra ubicada en la imagen de la capa de referencia que corresponde a una segunda muestra ubicada en la imagen de la capa de mejora utilizando el factor de escalado y el valor de desplazamiento de redondeo.
[0007] Los detalles de uno o más ejemplos se exponen en los dibujos adjuntos y la descripción a continuación, que no pretenden limitar el alcance completo de los conceptos inventivos descritos en el presente documento. Otras características, objetos y ventajas resultarán evidentes a partir de la descripción y de los dibujos, y a partir de las reivindicaciones.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
[0008] A lo largo de los dibujos, los números de referencia pueden reutilizarse para indicar correspondencia entre elementos a los que se hace referencia. Los dibujos se proporcionan para ilustrar modos de realización de ejemplo descritos en el presente documento y no pretenden limitar el alcance de la divulgación.
La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación y descodificación de vídeo de ejemplo que puede utilizar técnicas de acuerdo con los aspectos descritos en esta divulgación.
La FIG. 2A es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La FIG. 2B es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La FIG. 3A es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La FIG. 3B es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación.
La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de determinación de desplazamientos de redondeo usados en el proceso de remuestreo, de acuerdo con aspectos de la divulgación.
La FIG. 5 es un diagrama de flujo que ilustra un modo de realización de un procedimiento para determinar los desplazamientos de redondeo utilizados en el proceso de remuestreo, de acuerdo con los aspectos de esta divulgación.
La FIG. 6 es un diagrama de flujo que ilustra otro modo de realización del procedimiento para determinar los desplazamientos de redondeo utilizados en el proceso de remuestreo, de acuerdo con los aspectos de esta divulgación.
DESCRIPCIÓN DETALLADA
[0009] Las técnicas descritas en esta divulgación en general se relacionan con la codificación de vídeo escalable (SHVC, SVC) y la codificación de vídeo de múltiples visualizaciones/3D (por ejemplo, codificación de múltiples visualizaciones más profundidad, MVC D). Por ejemplo, las técnicas pueden referirse a y utilizarse con o en una ampliación de codificación de vídeo escalable (SVC, a veces denominada SHVC) de codificación de vídeo de alta eficiencia (HEVC). En una ampliación de SVC, SHVC, podría haber múltiples capas de información de vídeo. La capa en el nivel más bajo puede servir como capa base (BL), y la capa en la parte superior (o la capa más alta) puede servir como capa mejorada (EL). La "capa mejorada" a veces se denomina "capa de mejora", y estos términos se pueden usar indistintamente. La capa base a veces se denomina "capa de referencia", (RL) y estos términos también se pueden usar indistintamente. Todas las capas entre la capa base y la capa superior pueden servir como uno o ambos EL o capas de referencia (RL). Por ejemplo, una capa central puede ser una EL para las capas por debajo de la misma, tal como la capa base o cualquier capa de mejora intermedia, y al mismo tiempo servir como RL para las capas de mejora dispuestas sobre la misma. Cada capa entre la capa base y la capa superior (o la capa más alta) puede ser usada como referencia para la predicción entre capas por una capa más alta y puede usar una capa más baja como referencia para la predicción entre capas.
[0010] Para simplificar, los ejemplos se presentan en términos de solo dos capas: una BL y una EL; sin embargo, debe entenderse bien que las ideas y modos de realización descritos a continuación son aplicables también a casos con múltiples capas. Además, para facilitar la explicación, a menudo se usan los términos "tramas" o "bloques". Sin embargo, estos términos no pretenden ser limitativos. Por ejemplo, las técnicas descritas a continuación se pueden usar con cualquier variedad de unidades de vídeo, incluyendo, pero sin limitarse a, píxeles, bloques (por ejemplo, CU, PU, TU, macrobloques, etc.), fragmentos, tramas, imagen, etc.
Codificación de vídeo
[0011] Entre las normas de codificación de vídeo se incluyen ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 o ISO/IEC MPEG-2 Visual, ITU-T H.263, ISO/IEC MPEG-4 Visual e ITU-T H.264 (también conocida como ISO/IEC MPEG-4 AVC), incluidas sus ampliaciones de codificación de vídeo escalable (SVC) y de codificación de vídeo de múltiples visualizaciones (MVC) y codificación de múltiples visualizaciones más profundidad (MVC+D). El borrador de especificación HEVC más reciente, denominado de aquí en adelante HEVC WD10 en el presente documento, está disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zip. El JCT-3V también está desarrollando la ampliación de múltiples visualizaciones para HEVC, en concreto, la MV-HEVC. Un reciente Borrador de Trabajo (WD) de MV-HEVC, denominado WD3 de aquí en adelante en el presente documento, está disponible en http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11JCT3V-C1004-v4.zip. El JCT-VC también está elaborando la ampliación escalabre de HEVC, denominada SHVC. Un borrador de trabajo (WD) reciente de SHVC, y denominado SHVC WD2 de aquí en adelante en el presente documento, está disponible en http://phenix.int-evry.fr/jct/doc_end_user/documents/13_Incheon/wg11JCTVC-M1008-v1.zip.
[0012] En SVC, SHVC, la información de vídeo se puede proporcionar como múltiples capas. La capa en el nivel más bajo puede servir simplemente como una capa base (BL) y la capa en el nivel más alto puede servir como una capa de mejora (EL). Todas las capas entre las capas superior e inferior pueden servir como capas de mejora y capas base. Por ejemplo, una capa en el medio puede ser una EL para las capas debajo de ella, y al mismo tiempo como una BL para las capas que están por encima de ella. Para simplificar la descripción, podemos suponer que existen dos capas, una BL y una EL, para ilustrar las técnicas descritas a continuación. Sin embargo, todas las técnicas descritas en el presente documento también son aplicables a casos con múltiples (más de dos) capas.
[0013] La codificación de vídeo escalable (SVC) se puede usar para proporcionar escalabilidad de calidad (también llamada relación de señal a ruido (SNR)), escalabilidad espacial y/o escalabilidad temporal. Por ejemplo, en un modo de realización, una capa de referencia (por ejemplo, una capa base) incluye información de vídeo suficiente para mostrar un vídeo en un primer nivel de calidad y la capa de mejora incluye información de vídeo adicional relativa a la capa de referencia de tal manera que la capa de referencia y la capa de mejora en conjunto incluyen información de vídeo suficiente para mostrar el vídeo en un segundo nivel de calidad superior al primer nivel (por ejemplo, menos ruido, mayor resolución, mejor velocidad de tramas, etc.). Una capa mejorada puede tener una resolución espacial diferente a una capa base. Por ejemplo, la relación de aspecto espacial entre la EL y la BL puede ser 1,0, 1,5, 2,0 u otras relaciones diferentes en la direcciones vertical y horizontal. En otras palabras, el aspecto espacial de la EL puede ser igual a 1,0, 1,5 o 2,0 veces el aspecto espacial de la BL. En algunos ejemplos, el factor de escalamiento de la EL puede ser mayor que la del BL. Por ejemplo, un tamaño de imágenes en la EL puede ser mayor que un tamaño de imágenes en la BL. De esta manera, puede ser posible, aunque no es una limitación, que la resolución espacial de la EL sea mayor que la resolución espacial de la BL.
[0014] En SVC, que se refiere a la ampliación SVC para H.264 o la ampliación SHVC para H.265 (como se analizó anteriormente), la predicción de un bloque actual puede realizarse usando las diferentes capas que se proporcionan para SVC. Dicha predicción se puede denominar predicción entre capas. Los procedimientos de predicción entre capas se pueden utilizar en SVC para reducir la redundancia entre capas. Algunos ejemplos de predicción entre capas pueden incluir la predicción intra entre capas, la predicción de movimiento entre capas y la predicción residual entre capas. La predicción intra entre capas utiliza la reconstrucción de bloques ubicados conjuntamente en la capa base para predecir el bloque actual en la capa de mejora. La predicción de movimiento entre capas usa la información de movimiento (incluidos los vectores de movimiento) de la capa base para predecir el movimiento en la capa de mejora. La predicción residual entre capas usa el residuo de la capa base para predecir el residuo de la capa de mejora.
Visión general
[0015] En SHVC, si un tamaño de la imagen de la capa de referencia es diferente del tamaño de la imagen de la capa de mejora, se puede aplicar un proceso de remuestreo (o muestreo ascendente) a la imagen de la capa de referencia para que coincida con el tamaño de la imagen de la capa de mejora para la predicción entre capas. Para remuestrear la imagen de la capa de referencia, se puede aplicar un filtro de remuestreo N tap para cada componente de color. En el proceso de filtrado, las magnitudes de muestra (o píxel) de la imagen de la capa de referencia se pueden multiplicar por coeficientes de filtro y resumir. Dado que el tamaño de la imagen de la capa de referencia y el tamaño de la imagen de la capa de mejora son diferentes, se pueden definir las coordenadas de las muestras de la capa de referencia involucradas en el proceso de filtrado. Por ejemplo, la ubicación de la muestra de la imagen de la capa de referencia que corresponde a la ubicación de la muestra de la imagen de la capa de mejora actual se puede determinar de modo que las muestras indicadas por la ubicación de la muestra de la imagen de la capa de referencia se puedan usar en el proceso de remuestreo.
[0016] Durante el proceso de remuestreo, se puede aplicar un desplazamiento de redondeo adicional. Se pueden agregar desplazamientos de redondeo para determinar la ubicación de la muestra de la imagen de la capa de referencia que se remuestreará. Por ejemplo, se puede aplicar un desplazamiento de redondeo adicional addY en la dirección vertical. Del mismo modo, se puede aplicar un desplazamiento de redondeo adicional addX en la dirección horizontal. La ubicación de la muestra de la imagen de la capa de referencia se puede definir mediante una ubicación de muestra horizontal y una ubicación de muestra vertical. El desplazamiento de redondeo horizontal se puede agregar para determinar la ubicación de la muestra horizontal de la imagen de la capa de referencia para remuestrear, y el desplazamiento de redondeo vertical se puede agregar para determinar la ubicación de la muestra vertical de la imagen de la capa de referencia para remuestrear.
[0017] En el Borrador de trabajo 2 de SHVC, addY se calcula de la siguiente manera:
• addY = (((RefLayerPicHeightInSamplesL* phaseY) << 14) ( ScaledRefLayerPicHeightInSamplesL >> 1)) / ScaledRefLayerPicHeightInSamplesL,
donde RefLayerPicHeightInSamplesL indica la altura de la imagen de la capa de referencia y ScaledRefLayerPicHeightInSamplesL indica la altura de la imagen de la capa de referencia escalada o remuestreada. Sin embargo, usar una operación de división para calcular addY puede ser costoso. En consecuencia, sería ventajoso calcular addY de una manera más eficiente.
[0018] Para abordar estos y otros desafíos, las técnicas descritas en esta divulgación pueden calcular los desplazamientos de redondeo utilizados en el remuestreo de la imagen de la capa de referencia sin realizar una operación de división utilizando los factores de escalado calculados previamente. Los factores de escalado pueden incluir un factor de escalado horizontal ScaleFactorX y un factor de escalado vertical ScaleFactorY. El factor de escalado horizontal y el factor de escalado vertical también pueden denominarse factor de escalado horizontal y factor de escalado vertical, respectivamente. El factor de escalado horizontal y el factor de escalado vertical pueden indicar la proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en la dirección horizontal y la proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en la dirección vertical, respectivamente. ScaleFactorX y ScaleFactorY se pueden calcular de la siguiente manera:
• ScaleFactorX = ((RefLayerPicWidthInSamplesL << 16) (ScaledRefLayerPicWidthInSamplesL >> 1)) / ScaledRefLayerPicWidthInSamplesL
• ScaleFactorY = ((RefLayerPicHeightInSamplesL << 16) (ScaledRefLayerPicHeightInSamplesL >> 1)) / ScaledRefLayerPicHeightInSamplesL,
donde RefLayerPicWidthInSamplesL y RefLayerPicHeightInSamplesL indican el ancho y el alto de la imagen de la capa de referencia, respectivamente, y ScaledRefLayerPicWidthInSamplesL y ScaledRefLayerPicHeightInSamplesL indican el ancho y el alto de la imagen de la capa de referencia escalada o remuestreada, respectivamente.
[0019] Dado que el cálculo de los factores de escalado es similar al cálculo de los desplazamientos de redondeo, las técnicas pueden utilizar los factores de escalado para calcular los desplazamientos de redondeo. Como se explicó anteriormente, puede haber un desplazamiento de redondeo para la dirección horizontal y un desplazamiento de redondeo para la dirección vertical. En un modo de realización, addY y addX se pueden calcular de la siguiente manera:
• addY = (ScaleFactorY * phaseY offset) >> 2,
• addX = (ScaleFactorX * phaseX offset) >> 2,
en el que el desplazamiento puede ser algún número (por ejemplo, 0, 1, 2, etc.).
[0020] En general, los factores de escalado están disponibles cuando se calculan los desplazamientos de redondeo y, por lo tanto, los desplazamientos de redondeo se pueden calcular basándose en los factores de escalado sin realizar una operación de división. Dado que una operación de división es costosa, los desplazamientos de redondeo se pueden calcular de manera más eficiente al eliminar una operación de división. Como resultado, el proceso de codificación también se puede realizar de manera más eficiente.
[0021] A continuación, en el presente documento se describen de forma más detallada diversos aspectos de los sistemas, aparatos y procedimientos novedosos, con referencia a los dibujos adjuntos. Sin embargo, la presente divulgación se puede realizar de muchas formas diferentes y no se debería interpretar que está limitada a ninguna estructura o función específica presentada a lo largo de esta divulgación. En cambio, estos aspectos se proporcionan de modo que esta divulgación sea exhaustiva y completa, y transmita por completo el alcance de la divulgación a los expertos en la técnica. basándose en las enseñanzas del presente documento, un experto en la técnica debería apreciar que el alcance de la divulgación está concebido para abarcar cualquier aspecto de los sistemas, aparatos y procedimientos novedosos divulgados en el presente documento, ya sea implementados independientemente de, o en combinación con, cualquier otro aspecto de la invención. Por ejemplo, un aparato se puede implementar o un procedimiento se puede llevar a la práctica usando cualquier número de los aspectos expuestos en el presente documento. Además, el alcance de la invención está concebido para abarcar dicho aparato o procedimiento, que se lleva a la práctica usando otra estructura, funcionalidad, o estructura y funcionalidad, de forma adicional o alternativa a los diversos aspectos de la invención expuestos en el presente documento. Debería entenderse que cualquier aspecto divulgado en el presente documento puede realizarse mediante uno o más elementos de una reivindicación.
[0022] Aunque en el presente documento se describen aspectos particulares, muchas variantes y permutaciones de estos aspectos quedan dentro del alcance de la divulgación. Aunque se mencionan algunos beneficios y ventajas de los aspectos preferentes, el alcance de la divulgación no está concebido para limitarse a beneficios, usos u objetivos particulares. En cambio, los aspectos de la divulgación están concebidos para ser ampliamente aplicables a diferentes tecnologías inalámbricas, configuraciones de sistema, redes y protocolos de transmisión, algunos de los cuales se ilustran a modo de ejemplo en las figuras y en la siguiente descripción de los aspectos preferentes. La descripción detallada y los dibujos son meramente ilustrativos de la divulgación, en lugar de limitantes, estando el alcance de la divulgación definido por las reivindicaciones adjuntas y los equivalentes de las mismas.
Sistema de codificación de vídeo
[0023] La FIG. 1 es un diagrama de bloques que ilustra un sistema de codificación de vídeo 10 de ejemplo que puede utilizar técnicas de acuerdo con aspectos descritos en esta divulgación. Tal como se usa en el presente documento, el término "codificador de vídeo" se refiere, en general, tanto a codificadores de vídeo como a descodificadores de vídeo. En esta divulgación, los términos "codificación de vídeo" o "codificación" pueden referirse genéricamente a la codificación de vídeo y a la descodificación de vídeo.
[0024] Como se muestra en la FIG. 1, el sistema de codificación de vídeo 10 incluye un dispositivo de origen 12 y un dispositivo de destino 14. El dispositivo de origen 12 genera datos de vídeo codificados. El dispositivo de destino 14 puede descodificar los datos de vídeo codificados, generados por el dispositivo de origen 12. El dispositivo de origen 12 puede proporcionar los datos de vídeo al dispositivo de destino 14 a través de un canal de comunicación 16, que puede incluir un medio de almacenamiento legible por ordenador u otro canal de comunicación. El dispositivo de origen 12 y el dispositivo de destino 14 pueden incluir una amplia gama de dispositivos, incluyendo ordenadores de sobremesa, notebooks (por ejemplo, portátiles), ordenadores tipo tablet, descodificadores, teléfonos portátiles como los denominados teléfonos “inteligentes”, los denominados paneles “inteligentes”, televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivos de transmisión de vídeo en tiempo real, ordenadores de coche o similares. El dispositivo de origen 12 y el dispositivo de destino 14 pueden estar equipados para la comunicación inalámbrica.
[0025] El dispositivo de destino 14 puede recibir los datos de vídeo codificados que se van a descodificar a través de un canal de comunicación 16. El canal de comunicación 16 puede comprender un tipo de medio o dispositivo capaz de transmitir los datos de vídeo codificados desde el dispositivo de origen 12 al dispositivo de destino 14. Por ejemplo, el canal de comunicación 16 puede comprender un medio de comunicación para permitir que el dispositivo de origen 12 transmita datos de vídeo codificados directamente a un dispositivo de destino 14 en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino 14. El medio de comunicación puede comprender un medio de comunicación inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas de transmisión físicas. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir routers, interruptores, estaciones base u otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen 12 hasta el dispositivo de destino 14.
[0026] En algunos modos de realización, pueden enviarse datos codificados desde la interfaz de salida 22 hasta un dispositivo de almacenamiento. En tales ejemplos, el canal 16 puede corresponder a un dispositivo de almacenamiento o medio de almacenamiento legible por ordenador que almacena los datos de vídeo codificados generados por el dispositivo de origen 12. En este ejemplo, el dispositivo de destino 14 puede acceder al medio de almacenamiento legible por ordenador a través de acceso al disco o acceso a la tarjeta. De forma similar, se puede acceder a los datos codificados del medio de almacenamiento legible por ordenador mediante una interfaz de entrada 28. El medio de almacenamiento legible por ordenador puede incluir cualquiera entre varios medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, u otro medio de almacenamiento digital para almacenar datos de vídeo. El medio de almacenamiento legible por ordenador puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo de origen 12. El dispositivo de destino 14 puede acceder a datos de vídeo almacenados desde el medio de almacenamiento legible por ordenador, mediante transmisión en tiempo real o descarga. El servidor de ficheros puede ser un tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino 14. Entre los servidores de ficheros de ejemplo se incluye un servidor de la Red (por ejemplo, para una sede de la Red), un servidor del FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino 14 puede acceder a los datos de vídeo codificados a través de una conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados desde el medio de almacenamiento legible por ordenador puede ser una transmisión en tiempo real, una transmisión de descarga o una combinación de ambas.
[0027] Las técnicas de esta divulgación pueden aplicar aplicaciones o configuraciones además de las aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de cualquiera entre varias aplicaciones multimedia, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en tiempo real por Internet, tales como la transmisión en tiempo real adaptativa dinámica por HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos modos de realización, el sistema 10 puede estar configurado para prestar soporte a una transmisión de vídeo unidireccional o bidireccional, a fin de prestar soporte a aplicaciones tales como la transmisión de vídeo en tiempo real, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0028] En la FIG. 1, el dispositivo de origen 12 incluye un origen de vídeo 18, un codificador de vídeo 20 y una interfaz de salida 22. El dispositivo de destino 14 incluye una interfaz de entrada 28, un descodificador de vídeo 30 y un dispositivo de visualización 32. El codificador de vídeo 20 del dispositivo de origen 12 puede estar configurado para aplicar las técnicas para codificar un flujo de bits que incluye datos de vídeo conforme a múltiples normas o ampliaciones de normas. En otros modos de realización, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen 12 puede recibir datos de vídeo desde un origen de vídeo externo 18, tal como una cámara externa. Del mismo modo, el dispositivo de destino 14 puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0029] El origen de vídeo 18 del dispositivo de origen 12 puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de suministro de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. El origen de vídeo 18 puede generar datos basados en gráficos de ordenador como vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos modos de realización, si el origen de vídeo 18 es una videocámara, el dispositivo de origen 12 y el dispositivo de destino 14 pueden formar los llamados teléfonos con cámara o videoteléfonos. El codificador de vídeo 20 puede codificar el vídeo capturado, capturado previamente o generado por ordenador. La información de vídeo codificada puede ser enviada por la interfaz de salida 22 a un canal de comunicación 16, que puede incluir un medio de almacenamiento legible por ordenador, como se analizó anteriormente.
[0030] El medio de almacenamiento legible por ordenador puede incluir medios transitorios, tales como una radiodifusión inalámbrica o una transmisión de red cableada, o medios de almacenamiento (por ejemplo, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otros medios legibles por ordenador. Un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y proporcionar los datos de vídeo codificados al dispositivo de destino 14 (por ejemplo, mediante transmisión por red). Un dispositivo informático de una utilidad de producción de un medio, tal como una utilidad de grabación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen 12 y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, puede entenderse que el canal de comunicación 16 incluye uno o más medios de almacenamiento legibles por ordenador de diversas formas.
[0031] La interfaz de entrada 28 del dispositivo de destino 14 puede recibir información del canal de comunicación 16. La información del canal de comunicación 16 puede incluir información sintáctica definida por el codificador de vídeo 20, que también es usada por el descodificador de vídeo 30, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, GOP. El dispositivo de visualización 32 muestra los datos de vídeo descodificados a un usuario, y puede incluir cualquiera entre varios dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización.
[0032] El codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con una norma de codificación de vídeo, tal como la norma de codificación de vídeo de alta eficacia (HEVC), actualmente en fase de desarrollo, y pueden ajustarse al modelo de prueba de HEVC (HM). De forma alternativa, el codificador de vídeo 20 y el descodificador de vídeo 30 pueden funcionar de acuerdo con otras normas de propiedad o industriales, tales como la norma ITU-T H.264, denominada de forma alternativa MPEG-4, parte 10, codificación avanzada de vídeo (AVC), o ampliaciones de dichas normas. Sin embargo, las técnicas de esta divulgación no están limitadas a ninguna norma de codificación particular. Otros ejemplos de normas de codificación de vídeo incluyen MPEG-2 e ITU-T H.263. Aunque no se muestra en la FIG. 1, en algunos aspectos, tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden estar integrados con un codificador y descodificador de audio, y pueden incluir unidades MUX-DEMUX adecuadas, u otro tipo de hardware y software, para gestionar la codificación tanto de audio como de vídeo en un flujo de datos común o en flujos de datos independientes. Si procede, las unidades MUX-DEMUX pueden ser conformes al protocolo multiplexor ITU H.223 o a otros protocolos tales como el protocolo de datagramas de usuario (UDP).
[0033] La FIG. 1 es meramente un ejemplo y las técnicas de esta divulgación pueden aplicarse a configuraciones de codificación de vídeo (por ejemplo, codificación de vídeo o descodificación de vídeo) que no incluyan necesariamente ninguna comunicación de datos entre los dispositivos de codificación y descodificación. En otros ejemplos, los datos pueden recuperarse de una memoria local, transmitirse a través de una red o similar. Un dispositivo de codificación puede codificar y almacenar datos en la memoria, y/o un dispositivo de descodificación puede recuperar y descodificar datos de la memoria. En muchos ejemplos, la codificación y la descodificación se realizan mediante dispositivos que no se comunican entre sí, sino que simplemente codifican datos en la memoria y/o recuperan y descodifican datos de la memoria.
[0034] Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 pueden implementarse como cualquiera entre varios circuitos codificadores adecuados, tales como uno o más microprocesadores, procesadores de señales digitales (DSP), circuitos integrados específicos de la aplicación (ASIC), formaciones de puertas programables in situ (FPGA), lógica discreta, software, hardware, firmware o cualquier combinación de los mismos. Cuando las técnicas se implementan parcialmente en software, un dispositivo puede almacenar instrucciones para el software en un medio no transitorio legible por ordenador, y ejecutar las instrucciones en hardware usando uno o más procesadores para realizar las técnicas de esta divulgación. Tanto el codificador de vídeo 20 como el descodificador de vídeo 30 se pueden incluir en uno o más codificadores o descodificadores, cualquiera de los cuales se puede integrar como parte de un codificador/descodificador (CÓDEC) combinado en un dispositivo respectivo. Un dispositivo que incluye el codificador de vídeo 20 y/o el descodificador de vídeo 30 puede comprender un circuito integrado, un microprocesador y/o un dispositivo de comunicación inalámbrica, tal como un teléfono celular.
[0035] El equipo JCT-VC está trabajando en la elaboración de la norma HEVC. La iniciativa de normalización HEVC se basa en un modelo en evolución de un dispositivo de codificación de vídeo denominado modelo de prueba HEVC (HM). El HM supone varias capacidades adicionales de los dispositivos de codificación de vídeo respecto a los dispositivos existentes, de acuerdo con, por ejemplo, la norma ITU-T H.264/AVC. Por ejemplo, mientras que la norma H.264 proporciona nueve modos de codificación mediante predicción intra, e1HM puede proporcionar hasta treinta y tres modos de codificación mediante predicción intra.
[0036] En general, el modelo de explotación del HM especifica que una trama o imagen de vídeo puede dividirse en una secuencia de bloques de árbol o unidades de codificación más grandes (LCU), que incluyen tanto muestras de luma como de croma. Los datos sintácticos dentro de un flujo de bits pueden definir un tamaño para la LCU, que es la mayor unidad de codificación en lo que respecta al número de píxeles. Un fragmento incluye un número de bloques arbolados consecutivos en orden de codificación. Una trama o imagen de vídeo puede dividirse en uno o más fragmentos. Cada bloque arbolado puede dividirse en unidades de codificación (CU) de acuerdo con un árbol cuádruple. En general, una estructura de datos de árbol cuádruple incluye un nodo por CU, con un nodo raíz correspondiente al bloque arbolado. Si una CU se divide en cuatro sub-CU, el nodo correspondiente a la CU incluye cuatro nodos hoja, cada uno de los cuales corresponde a una de las sub-CU.
[0037] Cada nodo de la estructura de datos de árbol cuádruple puede proporcionar datos sintácticos para la CU correspondiente. Por ejemplo, un nodo en el árbol cuádruple puede incluir un indicador de división, que indica si la CU correspondiente al nodo está dividida en varias sub-CU. Los elementos sintácticos para una CU pueden definirse de manera recursiva y pueden depender de si la CU está dividida en varias sub-CU. Si una CU no está dividida adicionalmente, se denomina CU hoja. En esta divulgación, cuatro sub-CU de una CU hoja también se denominarán CU hojas, incluso aunque no haya ninguna división explícita de la CU hoja original. Por ejemplo, si una CU de tamaño 16x16 no se divide adicionalmente, las cuatro sub-CU de tamaño 8x8 también se denominarán CU hojas aunque la CU de tamaño 16x16 no se haya dividido nunca.
[0038] Una CU tiene un propósito similar a un macrobloque de la norma H.264, excepto porque una CU no tiene una distinción de tamaño. Por ejemplo, un bloque arbolado puede dividirse en cuatro nodos hijos (también denominados sub-CU) y cada nodo hijo puede a su vez ser un nodo padre y dividirse en otros cuatro nodos hijos. Un nodo hijo final, no dividido, denominado nodo hoja del árbol cuádruple, comprende un nodo de codificación, también denominado CU hoja. Los datos sintácticos asociados a un flujo de bits codificado pueden definir un número máximo de veces en que puede dividirse un bloque arbolado, lo que se denomina profundidad de CU máxima, y también pueden definir un tamaño mínimo de los nodos de codificación. Por consiguiente, un flujo de bits también puede definir la unidad de codificación más pequeña (SCU). Esta divulgación utiliza el término "bloque" para referirse a cualquiera entre una CU, PU o TU, en el contexto de la HEVC, o a estructuras de datos similares en el contexto de otras normas (por ejemplo, macrobloques y subbloques de los mismos en la norma H.264/AVC).
[0039] Una CU incluye un nodo de codificación y unidades de predicción (PU) y unidades de transformada (TU) asociadas al nodo de codificación. Un tamaño de la CU corresponde a un tamaño del nodo de codificación y debe ser de forma cuadrada. El tamaño de la CU puede variar desde 8x8 píxeles hasta el tamaño del bloque arbolado, con un máximo de 64x64 píxeles o más. Cada CU puede contener una o más PU y una o más TU. Los datos sintácticos asociados a una CU pueden describir, por ejemplo, la división de la CU en una o más PU. Los modos de división pueden diferir entre si la CU está codificada en modo de salto o directa, codificada en modo de predicción intra o codificada en modo de predicción inter. Las PU pueden dividirse para tener forma no cuadrada. Los datos sintácticos asociados a una CU también pueden describir, por ejemplo, la división de la CU en una o más TU de acuerdo con un árbol cuádruple. Una TU puede tener forma cuadrada o no cuadrada (por ejemplo, rectangular).
[0040] La norma HEVC admite transformaciones de acuerdo con las TU, que pueden ser diferentes para diferentes CU. El tamaño de las TU se basa típicamente en el tamaño de las PU dentro de una CU definida dada para una LCU dividida, aunque puede que no sea siempre así. Las TU son típicamente del mismo tamaño o de un tamaño más pequeño que las PU. En algunos ejemplos, las muestras residuales correspondientes a una CU pueden subdividirse en unidades más pequeñas utilizando una estructura de árbol cuádruple conocida como "árbol cuádruple residual" (RQT). Los nodos hojas del RQT pueden denominarse unidades de transformada (TU). Los valores de diferencias de píxeles asociados a las TU pueden transformarse para generar coeficientes de transformada, que pueden cuantificarse.
[0041] Una CU hoja puede incluir una o más unidades de predicción (PU). En general, una PU representa una zona espacial correspondiente a la totalidad, o a una parte, de la CU correspondiente, y puede incluir datos para recuperar una muestra de referencia para la PU. Además, una PU incluye datos relacionados con la predicción. Por ejemplo, cuando la PU está codificada mediante modo intra pueden incluirse datos para la PU en un árbol cuaternario residual (RQT), que puede incluir datos que describen un modo de predicción intra para una TU correspondiente a la PU. Como otro ejemplo, cuando la PU está codificada mediante modo inter, la PU puede incluir datos que definen uno o más vectores de movimiento para la PU. Los datos que definen el vector de movimiento para una PU pueden describir, por ejemplo, una componente horizontal del vector de movimiento, una componente vertical del vector de movimiento, una resolución para el vector de movimiento (por ejemplo, precisión de un cuarto de píxel o precisión de un octavo de píxel), una imagen de referencia a la que apunta el vector de movimiento y/o una lista de imágenes de referencia (por ejemplo, lista 0, lista 1 o lista C) para el vector de movimiento.
[0042] Una CU hoja que tiene una o más PU también puede incluir una o más unidades de transformada (TU). Las unidades de transformada pueden especificarse usando un RQT (también denominado estructura de árbol cuádruple de TU), como se ha expuesto anteriormente. Por ejemplo, un indicador de división puede indicar si una CU hoja está dividida en cuatro unidades de transformada. A continuación, cada unidad de transformada puede dividirse adicionalmente en sub-TU adicionales. Cuando una TU no se divide adicionalmente, puede denominarse una TU hoja. En general, en lo que respecta a la intracodificación, todas las TU hojas que pertenecen a una CU hoja comparten el mismo modo de predicción intra. Es decir, el mismo modo de predicción intra se aplica en general para calcular valores predichos para todas las TU de una CU hoja. En lo que respecta a la intracodificación, un codificador de vídeo puede calcular un valor residual para cada TU hoja usando el modo de predicción intra, como una diferencia entre la parte de la CU correspondiente a la TU y el bloque original. Una TU no está necesariamente limitada al tamaño de una PU. De este modo, las TU pueden ser mayores o menores que una PU. En lo que respecta a la intracodificación, una PU puede estar coubicada con una TU hoja correspondiente para la misma CU. En algunos ejemplos, el tamaño máximo de una TU hoja puede corresponder al tamaño de la CU hoja correspondiente.
[0043] Además, las TU de las CU hojas también pueden asociarse a respectivas estructuras de datos de árbol cuádruple, denominadas árboles cuádruples residuales (RQT). Es decir, una Cu hoja puede incluir un árbol cuádruple que indica cómo la CU hoja está dividida en las TU. El nodo raíz de un árbol cuádruple de TU corresponde en general a una CU hoja, mientras que el nodo raíz de un árbol cuádruple de CU corresponde en general a un bloque arbolado (o LCU). Las TU del RQT que no están divididas se denominan TU hojas. En general, esta divulgación usa los términos CU y TU para hacer referencia a una CU hoja y a una TU hoja, respectivamente, a no ser que se indique lo contrario.
[0044] Una secuencia de vídeo incluye típicamente una serie de tramas o imágenes de vídeo. Un grupo de imágenes (GOP) comprende, en general, una serie de una o más de las imágenes de vídeo. Un GOP puede incluir datos sintácticos en una cabecera del GOP, una cabecera de una o más de las imágenes, o en otras ubicaciones, que describen una serie de imágenes incluidas en el GOP. Cada fragmento de una imagen puede incluir datos sintácticos de fragmento que describen un modo de codificación para el fragmento respectivo. El codificador de vídeo 20 actúa habitualmente sobre bloques de vídeo dentro de fragmentos de vídeo individuales con el fin de codificar los datos de vídeo. Un bloque de vídeo puede corresponder a un nodo de codificación dentro de una CU. Los bloques de vídeo pueden tener tamaños fijos o variables y pueden diferir en tamaño de acuerdo con una norma de codificación especificada.
[0045] En un ejemplo, el HM presta soporte a la predicción en diversos tamaños de PU. Si se supone que el tamaño de una CU particular es 2Nx2N, el HM da soporte a la predicción intra en tamaños de PU de 2Nx2N o NxN, y a la predicción inter en tamaños de PU simétricas de 2Nx2N, 2NxN, Nx2N o NxN. E1HM también da soporte a la división asimétrica para la predicción inter en tamaños de PU de 2NxnU, 2NxnD, nLx2N y nRx2N. En la división asimétrica, una dirección de una CU no está dividida, mientras que la otra dirección está dividida entre un 25 % y un 75 %. La parte de la CU correspondiente a la división del 25 % está indicada por una "n" seguida por una indicación de "arriba", "abajo", "izquierda" o "derecha". Así pues, por ejemplo, "2NxnU" se refiere a una CU de tamaño 2Nx2N que está dividida horizontalmente, con una PU de tamaño 2Nx0,5N encima y una PU de tamaño 2Nx1,5N debajo.
[0046] En la presente divulgación, "NxN" y "N por N" pueden usarse indistintamente para hacer referencia a las dimensiones de píxeles de un bloque de vídeo en términos de dimensiones verticales y horizontales, por ejemplo, 16x16 píxeles o 16 por 16 píxeles. En general, un bloque de 16x16 tendrá 16 píxeles en una dirección vertical (y = 16) y 16 píxeles en una dirección horizontal (x = 16). Asimismo, un bloque de tamaño NxN tiene, en general, N píxeles en una dirección vertical y N píxeles en una dirección horizontal, donde N representa un valor entero no negativo. Los píxeles de un bloque se pueden disponer en filas y columnas. Además, no es necesario que los bloques tengan necesariamente el mismo número de píxeles en la dirección horizontal que en la dirección vertical. Por ejemplo, los bloques pueden comprender NxM píxeles, donde M no es necesariamente igual a N.
[0047] Tras la codificación intrapredictiva o interpredictiva, usando las PU de una CU, el codificador de vídeo 20 puede calcular datos residuales para las TU de la CU. Las PU pueden comprender datos sintácticos que describen un procedimiento o modo de generación de datos de píxeles predictivos en el dominio espacial (también denominado el dominio de píxeles) y las TU pueden comprender coeficientes en el dominio de transformada, tras la aplicación de una transformada, por ejemplo, una transformada de seno discreta (DST), una transformada de coseno discreta (DCT), una transformada entera, una transformada de tren de ondas o una transformada conceptualmente similar, en los datos de vídeo residuales. Los datos residuales pueden corresponder a diferencias de píxeles entre píxeles de la imagen no codificada y valores de predicción correspondientes a las PU. El codificador de vídeo 20 puede formar las TU incluyendo los datos residuales para la CU y, a continuación, transformar las TU para generar coeficientes de transformada para la CU.
[0048] Tras cualquier transformada para generar coeficientes de transformada, el codificador de vídeo 20 puede realizar la cuantificación de los coeficientes de transformada. La cuantificación es un término amplio que pretende tener su significado ordinario más amplio. En un modo de realización, la cuantificación se refiere a un proceso en el que unos coeficientes de transformada se cuantifican para reducir posiblemente la cantidad de datos usados para representar los coeficientes, proporcionando compresión adicional. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. Por ejemplo, un valor de n bits puede redondearse a la baja hasta un valor de m bits durante la cuantificación, donde n es mayor que m.
[0049] Después de la cuantificación, el codificador de vídeo puede explorar los coeficientes de transformada, produciendo un vector unidimensional a partir de la matriz bidimensional que incluye los coeficientes de transformada cuantificados. La exploración puede estar diseñada para colocar los coeficientes de mayor energía (y, por lo tanto, de menor frecuencia) al frente de la formación y para colocar los coeficientes de menor energía (y, por lo tanto, de mayor frecuencia) al final de la formación. En algunos ejemplos, el codificador de vídeo 20 puede utilizar un orden de exploración predefinido para explorar los coeficientes de transformada cuantificados, para producir un vector serializado que se pueda codificar por entropía. En otros ejemplos, el codificador de vídeo 20 puede realizar una exploración adaptativa. Después de explorar los coeficientes de transformada cuantificados para formar un vector unidimensional, el codificador de vídeo 20 puede realizar la codificación por entropía del vector unidimensional, por ejemplo, de acuerdo con la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa al contexto (CABAC), la codificación aritmética binaria adaptativa al contexto basada en la sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) o con otra metodología de codificación por entropía. El codificador de vídeo 20 también puede realizar la codificación por entropía de los elementos sintácticos asociados a los datos de vídeo codificados, para su uso por el descodificador de vídeo 30 en la descodificación de los datos de vídeo.
[0050] Para realizar la codificación CABAC, el codificador de vídeo 20 puede asignar un contexto, dentro de un modelo de contexto, a un símbolo a transmitir. El contexto se puede referir, por ejemplo, a si los valores contiguos del símbolo son distintos de cero o no. Para realizar la CAVLC, el codificador de vídeo 20 puede seleccionar un código de longitud variable para un símbolo a transmitir. Las palabras de código en la VLC se pueden construir de modo que los códigos relativamente más cortos correspondan a símbolos más probables, mientras que los códigos más largos correspondan a símbolos menos probables. De esta forma, el uso de la VLC puede lograr un ahorro en bits con respecto, por ejemplo, al uso de palabras de código de igual longitud para cada símbolo que se va a transmitir. La determinación de la probabilidad se puede basar en un contexto asignado al símbolo.
[0051] Además, el codificador de vídeo 20 puede enviar datos sintácticos, tales como datos sintácticos basados en bloques, datos sintácticos basados en tramas y datos sintácticos basados en GOP, al descodificador de vídeo 30, por ejemplo, en una cabecera de trama, una cabecera de bloque, una cabecera de fragmento o una cabecera de g Op . Los datos sintácticos de GOP pueden describir una pluralidad de tramas en el GOP respectivo, y los datos sintácticos de trama pueden indicar un modo de codificación/predicción utilizado para codificar la trama correspondiente.
Codificador de vídeo
[0052] La FIG. 2A es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El codificador de vídeo 20 puede configurarse para procesar una sola capa de un flujo de bits de vídeo, tal como para HEVC. Además, el codificador de vídeo 20 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación, que incluyen, pero no se limitan a, los procedimientos para determinar los desplazamientos de redondeo usados en el proceso de remuestreo y procesos relacionados descritos con mayor detalle arriba y abajo con respecto a las FIGS. 4-6. Como ejemplo, la unidad de predicción entre capas 66 (cuando esté disponible) puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. Sin embargo, los aspectos de esta divulgación no se limitan a lo anterior. En algunos ejemplos, las técnicas descritas en esta divulgación pueden compartirse entre los diversos componentes del codificador de vídeo 20. En algunos ejemplos, adicionalmente o de forma alternativa, un procesador (no mostrado) puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación.
[0053] Con fines de explicación, esta divulgación describe el codificador de vídeo 20 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otras normas o procedimientos de codificación. El codificador 20 de la FIG. 2A ilustra una sola capa de un códec. Sin embargo, como se describirá adicionalmente con respecto a la FIG. 2B, algunos o todos los codificadores de vídeo 20 pueden duplicarse para procesar de acuerdo con un códec de múltiples capas.
[0054] El codificador de vídeo 20 puede realizar predicciones intra, inter y entre capas (a veces denominadas codificación intra, inter o entre capas) de bloques de vídeo dentro de fragmentos de vídeo. La intracodificación se basa en la predicción espacial para reducir o eliminar la redundancia espacial en el vídeo dentro de una trama o imagen de vídeo determinada. La intercodificación se basa en la predicción temporal para reducir o eliminar la redundancia temporal en el vídeo dentro de tramas o imágenes adyacentes de una secuencia de vídeo. La codificación entre capas se basa en la predicción basada en vídeo dentro de una(s) capa(s) diferente(s) dentro de la misma secuencia de codificación de vídeo. El modo intra (modo I) puede referirse a cualquiera de varios modos de codificación de base espacial. Los modos inter, tales como la predicción unidireccional (modo P) o la bipredicción (modo B), pueden referirse a cualquiera de varios modos de codificación de base temporal.
[0055] Como se muestra en la FIG. 2A, el codificador de vídeo 20 recibe un bloque de vídeo actual dentro de una trama de vídeo que se va a codificar. En el ejemplo de la FIG. 2A, el codificador de vídeo 20 incluye una unidad de selección de modo 40, una memoria de tramas de referencia 64, un sumador 50, una unidad de procesamiento de transformada 52, una unidad de cuantificación 54 y una unidad de codificación por entropía 56. A su vez, la unidad de selección de modo 40 incluye la unidad de compensación de movimiento 44, la unidad de estimación de movimiento 42, la unidad de predicción intra 46, la unidad de predicción entre capas 66 y la unidad de partición 48. La memoria de trama de referencia 64 puede incluir una memoria intermedia de imágenes descodificadas. La memoria intermedia de imágenes descodificadas es un término amplio que tiene su significado ordinario, y en algunos modos de realización se refiere a una estructura de datos de tramas de referencia gestionados por códec de vídeo.
[0056] Para la reconstrucción de bloques de vídeo, el codificador de vídeo 20 incluye también la unidad de cuantificación inversa 58, la unidad de transformada inversa 60 y el sumador 62. También se puede incluir un filtro de eliminación de bloques (no mostrado en la FIG. 2A) para filtrar límites de bloques, para eliminar distorsiones de efecto pixelado del vídeo reconstruido. Si se desea, el filtro de eliminación de bloques filtrará habitualmente la salida del sumador 62. También pueden usarse filtros adicionales (en el bucle o tras el bucle), además del filtro de eliminación de bloques. Dichos filtros no se muestran por razones de brevedad pero, si se desea, pueden filtrar la salida del sumador 50 (como un filtro en el bucle).
[0057] Durante el proceso de codificación, el codificador de vídeo 20 recibe una trama o un fragmento de vídeo a codificar. La trama o el fragmento pueden dividirse en múltiples bloques de vídeo. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 llevan a cabo la codificación interpredictiva del bloque de vídeo recibido con respecto a uno o más bloques en una o más tramas de referencia para proporcionar predicción temporal. La unidad de predicción intra 46, de forma alternativa, puede llevar a cabo la codificación intrapredictiva del bloque de vídeo recibido con respecto a uno o más bloques contiguos en la misma trama o fragmento que el bloque a codificar para proporcionar predicción espacial. El codificador de vídeo 20 puede llevar a cabo múltiples pases de codificación, por ejemplo, para seleccionar un modo adecuado de codificación para cada bloque de datos de vídeo.
[0058] Además, la unidad de partición 48 puede dividir bloques de datos de vídeo en subbloques, basándose en la evaluación de los anteriores esquemas de partición en los anteriores pases de codificación. Por ejemplo, la unidad de partición 48 puede dividir inicialmente una trama o un fragmento en varias LCU, y dividir cada una de las LCU en varias sub-CU, basándose en un análisis de velocidad-distorsión (por ejemplo, una optimización de velocidaddistorsión, etc.). La unidad de selección de modo 40 puede producir además una estructura de datos de árbol cuádruple, indicativa de la división de una LCU en las sub-CU. Las CU de nodos hojas del árbol cuádruple pueden incluir una o más PU y una o más TU.
[0059] La unidad de selección de modo 40 puede seleccionar uno de los modos de codificación, modo de predicción intra, inter o entre capas, por ejemplo, basándose en los resultados erróneos, y proporcionar el bloque intracodificado, intercodificado o con codificación entre capas resultante al sumador 50 para generar datos de bloques residuales, y al sumador 62 para reconstruir el bloque codificado, para su uso como una trama de referencia. La unidad de selección de modo 40 también proporciona elementos sintácticos, tales como vectores de movimiento, indicadores de modo intra, información de división y otra información sintáctica de este tipo, a la unidad de codificación por entropía 56.
[0060] La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden estar sumamente integradas, pero se ilustran por separado con fines conceptuales. La estimación del movimiento, realizada por la unidad de estimación de movimiento 42, es el proceso de generación de vectores de movimiento, que estiman el movimiento para los bloques de vídeo. Un vector de movimiento, por ejemplo, puede indicar el desplazamiento de una PU de un bloque de vídeo dentro de una trama o imagen de vídeo actual, con respecto a un bloque predictivo dentro de una trama de referencia (u otra unidad codificada), con respecto al bloque actual que se está codificando dentro de la trama actual (u otra unidad codificada). Un bloque predictivo es un bloque que se revela como estrechamente coincidente con el bloque a codificar, en lo que respecta a la diferencia de píxeles, lo cual puede determinarse mediante la suma de diferencias absolutas (SAD), la suma de las diferencias al cuadrado (SSD) u otras métricas de diferencia. En algunos ejemplos, el codificador de vídeo 20 puede calcular valores para posiciones fraccionarias de píxeles de imágenes de referencia almacenadas en la memoria de tramas de referencia 64. Por ejemplo, el codificador de vídeo 20 puede interpolar valores de posiciones de un cuarto de píxel, posiciones de un octavo de píxel u otras posiciones fraccionarias de píxel de la imagen de referencia. Por lo tanto, la unidad de estimación de movimiento 42 puede realizar una búsqueda de movimiento relativa a las posiciones de píxel completo y las posiciones de píxel fraccionario, y enviar un vector de movimiento con una precisión de píxel fraccionaria.
[0061] La unidad de estimación de movimiento 42 calcula un vector de movimiento para una PU de un bloque de vídeo en un fragmento intercodificado, comparando la posición de la PU con la posición de un bloque predictivo de una imagen de referencia. La imagen de referencia puede seleccionarse a partir de una primera lista de imágenes de referencia (Lista 0) o una segunda lista de imágenes de referencia (Lista 1), cada una de las cuales identifica una o más imágenes de referencia almacenadas en la memoria de tramas de referencia 64. La unidad de estimación de movimiento 42 envía el vector de movimiento calculado a la unidad de codificación por entropía 56 y a la unidad de compensación de movimiento 44.
[0062] La compensación de movimiento, llevada a cabo por la unidad de compensación de movimiento 44, puede implicar capturar o generar el bloque predictivo basándose en el vector de movimiento determinado por la unidad de estimación de movimiento 42. La unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44 pueden integrarse funcionalmente, en algunos ejemplos. Tras recibir el vector de movimiento para la PU del bloque de vídeo actual, la unidad de compensación de movimiento 44 puede localizar el bloque predictivo al que apunta el vector de movimiento en una de las listas de imágenes de referencia. El sumador 50 forma un bloque de vídeo residual restando los valores de píxel del bloque predictivo a los valores de píxel del bloque de vídeo actual que se está codificando, generando valores de diferencias de píxel, como se expone más adelante. En algunos modos de realización, la unidad de estimación de movimiento 42 puede llevar a cabo la estimación de movimiento con respecto a los componentes de luma, y la unidad de compensación de movimiento 44 puede utilizar los vectores de movimiento calculados basándose en los componentes de luma, tanto para los componentes de croma como para los componentes de luma. La unidad de selección de modo 40 puede generar elementos sintácticos asociados a los bloques de vídeo y al fragmento de vídeo para su uso mediante el descodificador de vídeo 30 en la descodificación de los bloques de vídeo del fragmento de vídeo.
[0063] La unidad de predicción intra 46 puede realizar predicción intra o calcular un bloque actual, como alternativa a la predicción inter llevada a cabo por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como se ha descrito anteriormente. En particular, la unidad de predicción intra 46 puede determinar un modo de predicción intra a usar para codificar un bloque actual. En algunos ejemplos, la unidad de predicción intra 46 puede codificar un bloque actual usando diversos modos de predicción intra, por ejemplo, durante pases de codificación independientes, y la unidad de predicción intra 46 (o la unidad de selección de modo 40, en algunos ejemplos) puede seleccionar un modo de predicción intra adecuada para usar, entre los modos probados.
[0064] Por ejemplo, la unidad de predicción intra 46 puede calcular valores de velocidad-distorsión usando un análisis de velocidad-distorsión para los diversos modos de predicción intra probadas, y seleccionar el modo de predicción intra que tenga las mejores características de velocidad-distorsión entre los modos probados. El análisis de velocidad-distorsión determina, en general, una cantidad de distorsión (o de errores) entre un bloque codificado y un bloque original, no codificado, que fue codificado para producir el bloque codificado, así como una velocidad de transmisión de bits (es decir, un número de bits) usada para producir el bloque codificado. La unidad de predicción intra 46 puede calcular razones a partir de las distorsiones y velocidades para los diversos bloques codificados, para determinar qué modo de predicción intra presenta el mejor valor de velocidad-distorsión para el bloque.
[0065] Después de seleccionar un modo de predicción intra para un bloque, la unidad de predicción intra 46 puede proporcionar información, indicativa del modo de predicción intra seleccionado para el bloque, a la unidad de codificación por entropía 56. La unidad de codificación por entropía 56 puede codificar la información que indica el modo de predicción intra seleccionado. El codificador de vídeo 20 puede incluir, en el flujo de bits transmitido, datos de configuración, que pueden incluir una pluralidad de tablas de índices de modo de predicción intra y una pluralidad de tablas modificadas de índices de modo de predicción intra (también denominadas tablas de correlación de palabras de código), definiciones de contextos de codificación para diversos bloques e indicaciones de un modo de predicción intra más probable, una tabla de índices de modo de predicción intra y una tabla modificada de índices de modo de predicción intra, a usar para cada uno de los contextos.
[0066] El codificador de vídeo 20 puede incluir una unidad de predicción entre capas 66. La unidad de predicción entre capas 66 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en la EL) usando una o más capas diferentes que están disponibles en SVC (por ejemplo, una capa base o de referencia). Dicha predicción se puede denominar predicción entre capas. La unidad de predicción entre capas 66 utiliza procedimientos de predicción para reducir la redundancia entre capas, mejorando así la eficacia de codificación y reduciendo los requisitos de recursos informáticos. Algunos ejemplos de predicción entre capas incluyen la predicción intra entre capas, la predicción de movimiento entre capas y la predicción residual entre capas. La predicción intra entre capas utiliza la reconstrucción de bloques ubicados conjuntamente en la capa base para predecir el bloque actual en la capa de mejora. La predicción de movimiento entre capas usa la información de movimiento de la capa base para predecir el movimiento en la capa de mejora. La predicción residual entre capas usa el residuo de la capa base para predecir el residuo de la capa de mejora. Cuando las capas base y de mejora tienen diferentes resoluciones espaciales, la unidad de predicción entre capas 66 puede realizar el escalado de vectores de movimiento espacial y/o la asignación de posición entre capas usando una función de escalado temporal, como se describe con mayor detalle a continuación.
[0067] El codificador de vídeo 20 forma un bloque de vídeo residual restando los datos de predicción de la unidad de selección de modo 40 del bloque de vídeo original que se está codificando. El sumador 50 representa el componente o los componentes que realizan esta operación de resta. La unidad de procesamiento de transformada 52 aplica una transformada, tal como una transformada discreta de coseno (DCT) o una transformada conceptualmente similar, al bloque residual, produciendo un bloque de vídeo que comprende valores residuales de coeficientes de transformada. La unidad de procesamiento de transformada 52 puede llevar a cabo otras transformadas que son conceptualmente similares a la DCT. Por ejemplo, también se pueden utilizar transformadas sinusoidales discretas (DST), transformadas de tren de ondas, transformadas de enteros, transformadas de subbanda u otros tipos de transformadas.
[0068] La unidad de procesamiento de transformada 52 puede aplicar la transformada al bloque residual, generando un bloque de coeficientes de transformada residuales. La transformada puede convertir la información residual desde un dominio de valores de píxel a un dominio de transformada, tal como un dominio de frecuencia. La unidad de procesamiento de transformada 52 puede enviar los coeficientes de transformada resultantes a la unidad de cuantificación 54. La unidad de cuantificación 54 cuantifica los coeficientes de transformada para reducir más la velocidad de bits. El proceso de cuantificación puede reducir la profundidad de bits asociada a algunos, o a la totalidad, de los coeficientes. El grado de cuantificación se puede modificar ajustando un parámetro de cuantificación. En algunos ejemplos, la unidad de cuantificación 54 puede realizar, a continuación, una exploración de la matriz que incluye los coeficientes de transformada cuantificados. De forma alternativa, la unidad de codificación por entropía 56 puede realizar la exploración.
[0069] Tras la cuantificación, la unidad de codificación por entropía 56 realiza la codificación por entropía de los coeficientes de transformada cuantificados. Por ejemplo, la unidad de codificación por entropía 56 puede llevar a cabo la codificación de longitud variable adaptativa al contexto (CAVLC), la codificación aritmética binaria adaptativa el contexto (CABAC), la codificación aritmética binaria adaptativa el contexto basada en sintaxis (SBAC), la codificación por entropía por división en intervalos de probabilidad (PIPE) u otra técnica de codificación por entropía. En el caso de la codificación por entropía basada en el contexto, el contexto se puede basar en bloques contiguos. Tras la codificación por entropía por parte de la unidad de codificación por entropía 56, el flujo de bits codificado se puede transmitir a otro dispositivo (por ejemplo, el descodificador de vídeo 30) o archivar para su posterior transmisión o recuperación.
[0070] La unidad de cuantificación inversa 58 y la unidad de transformada inversa 60 aplican la cuantificación inversa y la transformación inversa, respectivamente, para reconstruir el bloque residual en el dominio de píxeles (por ejemplo, para su uso posterior como bloque de referencia). La unidad de compensación de movimiento 44 puede calcular un bloque de referencia añadiendo el bloque residual a un bloque predictivo de una de las tramas de la memoria de tramas de referencia 64. La unidad de compensación de movimiento 44 también puede aplicar uno o más filtros de interpolación al bloque residual reconstruido para calcular valores fraccionarios de píxeles, para su uso en la estimación de movimiento. El sumador 62 añade el bloque residual reconstruido al bloque de predicción compensado por movimiento, generado por la unidad de compensación de movimiento 44, para generar un bloque de vídeo reconstruido para su almacenamiento en la memoria de tramas de referencia 64. El bloque de vídeo reconstruido puede ser utilizado por la unidad de estimación de movimiento 42 y la unidad de compensación de movimiento 44, como bloque de referencia para intercodificar un bloque en una trama de vídeo posterior.
Codificador de vídeo de múltiples capas
[0071] La FIG. 2 es un diagrama de bloques que ilustra un ejemplo de un codificador de vídeo de múltiples capas 21 que puede implementar técnicas de acuerdo con los aspectos descritos en esta divulgación. El codificador de vídeo 21 puede configurarse para procesar tramas de vídeo de múltiples capas, como para codificación SHVC y de múltiples visualizaciones. Además, el codificador de vídeo 21 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación.
[0072] El codificador de vídeo 21 incluye un codificador de vídeo 20A y un codificador de vídeo 20B, cada uno de los cuales puede configurarse como el codificador de vídeo 20 de la FIG. 2A y puede realizar las funciones descritas anteriormente con respecto al codificador de vídeo 20. Además, como se indica por la reutilización de los números de referencia, los codificadores de vídeo 20A y 20B pueden incluir, al menos, algunos de los sistemas y subsistemas como el codificador de vídeo 20. Aunque el codificador de vídeo 21 se ilustra como que incluye dos codificadores de vídeo 20A y 20B, el codificador de vídeo 21 no está limitado como tal y puede incluir cualquier número de capas de codificador de vídeo 20. En algunos modos de realización, el codificador de vídeo 21 puede incluir un codificador de vídeo 20 para cada imagen o trama en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco imágenes puede ser procesada o codificada por un codificador de vídeo que incluye cinco capas de codificador. En algunos modos de realización, el codificador de vídeo 21 puede incluir más capas de codificador que tramas en una unidad de acceso. En algunos de dichos casos, algunas de las capas del codificador de vídeo pueden estar inactivas al procesar algunas unidades de acceso.
[0073] Además de los codificadores de vídeo 20A y 20B, el codificador de vídeo 21 puede incluir una unidad de remuestreo 90. La unidad de remuestreo 90 puede, en algunos casos, realizar muestreo ascendente de una capa base de una trama de vídeo recibida para, por ejemplo, crear una capa de mejora. La unidad de remuestreo 90 puede realizar muestreo ascendente de la información particular asociada con la capa base recibida de una trama, pero no otra información. Por ejemplo, la unidad de remuestreo 90 puede realizar muestreo ascendente del tamaño espacial o el número de píxeles de la capa base, pero el número de fragmentos o el recuento de orden de imágenes puede permanecer constante. En algunos casos, la unidad de remuestreo 90 puede no procesar el vídeo recibido y/o puede ser opcional. Por ejemplo, en algunos casos, la unidad de selección de modo 40 puede realizar un muestreo ascendente. En algunos modos de realización, la unidad de remuestreo 90 está configurada para realizar muestreo ascendente de una capa y reorganizar, redefinir, modificar o ajustar uno o más fragmentos para cumplir con un conjunto de reglas de límite de fragmento y/o reglas de escaneo de trama. Aunque se describe principalmente como un muestreo ascendente de una capa base o de una capa inferior en una unidad de acceso, en algunos casos, la unidad de remuestreo 90 puede realizar muestreo descendente de una capa. Por ejemplo, si durante la transmisión de un vídeo en tiempo real se reduce el ancho de banda, una trama puede sufrir muestreo descendente en lugar de muestreo ascendente. La unidad de remuestreo 90 también puede configurarse para realizar operaciones de recorte y/o relleno.
[0074] La unidad de remuestreo 90 puede configurarse para recibir una imagen o trama (o información de imagen asociada con la imagen) desde la memoria intermedia de imágenes descodificadas 114 del codificador de capa inferior (por ejemplo, el codificador de vídeo 20A) y para realizar muestreo ascendente de la imagen (o la información de imagen recibida). A continuación, esta imagen con muestreo ascendente puede proporcionarse a la unidad de selección de modo 40 de un codificador de capa superior (por ejemplo, el codificador de vídeo 20B) configurado para codificar una imagen en la misma unidad de acceso que el codificador de capa inferior. En algunos casos, el codificador de capa superior es una capa eliminada del codificador de capa inferior. En otros casos, puede haber uno o más codificadores de capa superior entre el codificador de vídeo de capa 0 y el codificador de capa 1 de la FIG. 2B.
[0075] En algunos casos, la unidad de remuestreo 90 se puede omitir o anular. En dichos casos, la imagen de la memoria intermedia de imágenes descodificadas 64 del codificador de vídeo 20A se puede proporcionar directamente, o al menos sin proporcionarse a la unidad de remuestreo 90, a la unidad de selección de modo 40 del codificador de vídeo 20B. Por ejemplo, si los datos de vídeo proporcionados al codificador de vídeo 20B y la imagen de referencia de la memoria intermedia de imágenes descodificadas 64 del codificador de vídeo 20A son del mismo tamaño o resolución, la imagen de referencia puede proporcionarse al codificador de vídeo 20B sin ningún remuestreo.
[0076] En algunos modos de realización, el codificador de vídeo 21 realiza muestreo descendente de los datos de vídeo a proporcionar al codificador de capa inferior usando la unidad de muestreo descendente 94 antes de proporcionar los datos de vídeo al codificador de vídeo 20A. De forma alternativa, la unidad de muestreo descendente 94 puede ser una unidad de remuestreo 90 capaz de realizar un muestreo ascendente o muestreo descendente de los datos de vídeo. En otros modos de realización más, la unidad de muestreo descendente 94 puede omitirse.
[0077] Como se ilustra en la FIG. 2B, el codificador de vídeo 21 puede incluir, además, un multiplexor 98, o mux. El mux 98 puede enviar un flujo de bits combinado desde el codificador de vídeo 21. El flujo de bits combinado se puede crear tomando un flujo de bits de cada uno de los codificadores de vídeo 20A y 20B y alternando qué flujo de bits se envía en un momento determinado. Mientras que en algunos casos los bits de los dos (o más en el caso de más de dos capas de codificador de vídeo) flujos de bits pueden alternarse un bit a la vez, en muchos casos los flujos de bits se combinan de manera diferente. Por ejemplo, el flujo de bits de salida puede crearse alternando el flujo de bits seleccionado un bloque a la vez. En otro ejemplo, el flujo de bits de salida se puede crear enviando una proporción de bloques diferente a 1:1 de cada uno de los codificadores de vídeo 20A y 20B. Por ejemplo, pueden enviarse dos bloques desde el codificador de vídeo 20B para cada salida de bloque del codificador de vídeo 20A. En algunos modos de realización, el flujo de salida del mux 98 puede preprogramarse. En otros modos de realización, el mux 98 puede combinar los flujos de bits de los codificadores de vídeo 20A, 20B basándose en una señal de control recibida desde un sistema externo al codificador de vídeo 21, tal como desde un procesador en un dispositivo de origen 12. La señal de control puede generarse basándose en la resolución o velocidad de bits de un vídeo desde el origen de vídeo 18, basándose en el ancho de banda del canal 16, basándose en una suscripción asociada a un usuario (por ejemplo, una suscripción de pago frente a una suscripción gratuita) o basándose en cualquier otro factor para determinar una salida de resolución deseada del codificador de vídeo 21.
Descodificador de vídeo
[0078] La FIG. 3A es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El descodificador de vídeo 30 puede configurarse para procesar una sola capa de un flujo de bits de vídeo, tal como para HEVC. Además, el descodificador de vídeo 30 puede configurarse para realizar cualquiera o todas las técnicas de esta divulgación, incluyendo, pero sin limitarse a, los procedimientos para determinar los desplazamientos de redondeo usados en el proceso de remuestreo y los procesos relacionados descritos con mayor detalle arriba y abajo con respecto a las FIGS. 4-6. Como ejemplo, la unidad de predicción entre capas 75 puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación. Sin embargo, los aspectos de esta divulgación no se limitan a lo anterior. En algunos ejemplos, las técnicas descritas en esta divulgación pueden compartirse entre los diversos componentes del descodificador de vídeo 30. En algunos ejemplos, adicionalmente o de forma alternativa, un procesador (no mostrado) puede configurarse para realizar cualquiera o todas las técnicas descritas en esta divulgación.
[0079] Con fines explicativos, esta divulgación describe un descodificador de vídeo 30 en el contexto de la codificación HEVC. Sin embargo, las técnicas de esta divulgación pueden ser aplicables a otras normas o procedimientos de codificación. El descodificador 30 de la FIG. 3A ilustra una sola capa de un códec. Sin embargo, como se describirá adicionalmente con respecto a la FIG. 3B, parte o la totalidad del descodificador de vídeo 30 puede duplicarse para procesar de acuerdo con un códec de múltiples capas.
[0080] En el ejemplo de la FIG. 3A, el descodificador de vídeo 30 incluye una unidad de descodificación por entropía 70, una unidad de compensación de movimiento 72, una unidad de predicción intra 74, una unidad de predicción entre capas 75, una unidad de cuantificación inversa 76, una unidad de transformación inversa 78, una memoria de tramas de referencia 82 y un sumador 80. En algunos modos de realización, la unidad de compensación de movimiento 72 y/o la unidad de predicción intra 74 pueden configurarse para realizar predicción entre capas, en cuyo caso la unidad de predicción entre capas 75 puede omitirse. En algunos ejemplos, el descodificador de vídeo 30 puede llevar a cabo una pasada de descodificación en general recíproca a la pasada de codificación descrita con respecto al codificador de vídeo 20 (FIG. 2A). La unidad de compensación de movimiento 72 puede generar datos de predicción basándose en vectores de movimiento recibidos desde la unidad de descodificación por entropía 70, mientras que la unidad de predicción intra 74 puede generar datos de predicción basándose en indicadores de modo de predicción intra, recibidos desde la unidad de descodificación por entropía 70. La memoria de trama de referencia 82 puede incluir una memoria intermedia de imágenes descodificadas. La memoria intermedia de imágenes descodificadas es un término amplio que tiene su significado ordinario, y en algunos modos de realización se refiere a una estructura de datos de tramas de referencia gestionados por códec de vídeo.
[0081] Durante el proceso de descodificación, el descodificador de vídeo 30 recibe un flujo de bits de vídeo codificado, que representa bloques de vídeo de un fragmento de vídeo codificado y elementos sintácticos asociados, desde el codificador de vídeo 20. La unidad de descodificación por entropía 70 del descodificador de vídeo 30 descodifica por entropía el flujo de bits para generar coeficientes cuantificados, vectores de movimiento o indicadores de modo de predicción intra y otros elementos sintácticos. La unidad de descodificación por entropía 70 renvía los vectores de movimiento y otros elementos sintácticos a la unidad de compensación de movimiento 72. El descodificador de vídeo 30 puede recibir los elementos sintácticos en el nivel de fragmento de vídeo y/o el nivel de bloque de vídeo.
[0082] Cuando el fragmento de vídeo se codifica como un fragmento intracodificado (I), la unidad de predicción intra 74 puede generar datos de predicción para un bloque de vídeo del fragmento de vídeo actual basándose en un modo de predicción intra señalizado y en datos de bloques previamente descodificados de la trama o imagen actual. Cuando la trama de vídeo se codifica como un fragmento intercodificado (por ejemplo, B, P o GPB), la unidad de compensación de movimiento 72 genera bloques predictivos para un bloque de vídeo del fragmento de vídeo actual basándose en los vectores de movimiento y en otros elementos sintácticos recibidos desde la unidad de descodificación por entropía 70. Los bloques predictivos se pueden generar a partir de una de las imágenes de referencia dentro de una de las listas de imágenes de referencia. El descodificador de vídeo 30 puede construir las listas de tramas de referencia, la Lista 0 y la Lista 1, usando técnicas de construcción por omisión, basándose en las imágenes de referencia almacenadas en la memoria de imágenes de referencia 82.
[0083] La unidad de compensación de movimiento 72 determina la información de predicción para un bloque de vídeo del fragmento de vídeo actual, analizando sintácticamente los vectores de movimiento y otros elementos sintácticos, y usa la información de predicción para generar los bloques predictivos para el bloque de vídeo actual que se está descodificando. Por ejemplo, la unidad de compensación de movimiento 72 usa algunos de los elementos sintácticos recibidos para determinar un modo de predicción (por ejemplo, predicción intra o predicción inter) usada para codificar los bloques de vídeo del fragmento de vídeo, un tipo de fragmento de predicción inter (por ejemplo, un fragmento B, un fragmento P o un fragmento GPB), información de construcción para una o más de las listas de imágenes de referencia para el fragmento, vectores de movimiento para cada bloque de vídeo intercodificado del fragmento, el estado de predicción inter para cada bloque de vídeo intercodificado del fragmento y otra información para descodificar los bloques de vídeo en el fragmento de vídeo actual.
[0084] La unidad de compensación de movimiento 72 también puede realizar la interpolación basándose en filtros de interpolación. La unidad de compensación de movimiento 72 puede usar filtros de interpolación como los usados por el codificador de vídeo 20 durante la codificación de los bloques de vídeo, para calcular valores interpolados para píxeles fraccionarios de los bloques de referencia. En este caso, la unidad de compensación de movimiento 72 puede determinar los filtros de interpolación usados por el codificador de vídeo 20 a partir de los elementos sintácticos recibidos y usar los filtros de interpolación para generar bloques predictivos.
[0085] El descodificador de vídeo 30 también puede incluir una unidad de predicción entre capas 75. La unidad de predicción entre capas 75 está configurada para predecir un bloque actual (por ejemplo, un bloque actual en la EL) usando una o más capas diferentes que están disponibles en SVC (por ejemplo, una capa base o de referencia). Dicha predicción se puede denominar predicción entre capas. La unidad de predicción entre capas 75 utiliza procedimientos de predicción para reducir la redundancia entre capas, mejorando así la eficacia de codificación y reduciendo los requisitos de recursos informáticos. Algunos ejemplos de predicción entre capas incluyen la predicción intra entre capas, la predicción de movimiento entre capas y la predicción residual entre capas. La predicción intra entre capas utiliza la reconstrucción de bloques ubicados conjuntamente en la capa base para predecir el bloque actual en la capa de mejora. La predicción de movimiento entre capas usa la información de movimiento de la capa base para predecir el movimiento en la capa de mejora. La predicción residual entre capas usa el residuo de la capa base para predecir el residuo de la capa de mejora. Cuando las capas base y de mejora tienen diferentes resoluciones espaciales, la unidad de predicción entre capas 75 puede realizar el escalado del vector de movimiento espacial y/o la asignación de posición entre capas usando una función de escalado temporal, como se describe con mayor detalle a continuación.
[0086] La unidad de cuantificación inversa 76 cuantifica de manera inversa, por ejemplo, descuantifica, los coeficientes de transformada cuantificados, proporcionados en el flujo de bits y descodificados por la unidad de descodificación por entropía 70. El proceso de cuantificación inversa puede incluir el uso de un parámetro de cuantificación QPY, calculado por el descodificador 30 de vídeo de cada bloque de vídeo en el fragmento de vídeo para determinar un grado de cuantificación y, asimismo, un grado de cuantificación inversa que debería aplicarse.
[0087] La unidad de transformada inversa 78 aplica una transformada inversa, por ejemplo, una DCT inversa, una DST inversa, una transformada entera inversa, o un proceso de transformada inversa conceptualmente similar, a los coeficientes de transformada, con el fin de generar bloques residuales en el dominio de píxel.
[0088] Después de que la unidad de compensación de movimiento 72 genera el bloque predictivo para el bloque de vídeo actual basándose en los vectores de movimiento y otros elementos sintácticos, el descodificador de vídeo 30 forma un bloque de vídeo descodificado sumando los bloques residuales de la unidad de transformada inversa 78 a los correspondientes bloques predictivos generados por la unidad de compensación de movimiento 72. El sumador 90 representa el componente o los componentes que realizan esta operación de suma. Si se desea, también se puede aplicar un filtro de eliminación de bloques para filtrar los bloques descodificados, a fin de eliminar distorsiones de efecto pixelado. También se pueden usar otros filtros de bucle (en el bucle de codificación o bien después del bucle de codificación) para allanar las transiciones de píxeles o mejorar de otro modo la calidad del vídeo. Los bloques de vídeo descodificados en una trama o imagen dada se almacenan a continuación en la memoria de tramas de referencia 82, que almacena imágenes de referencia usadas para una compensación de movimiento subsiguiente. La memoria de tramas de referencia 82 almacena también vídeo descodificado para su presentación posterior en un dispositivo de visualización, tal como el dispositivo de visualización 32 de la FIG. 1.
Descodificador de múltiples capas
[0089] La FIG. 3B es un diagrama de bloques que ilustra un ejemplo de un descodificador de vídeo de múltiples capas 31 que puede implementar técnicas de acuerdo con aspectos descritos en esta divulgación. El descodificador de vídeo 31 puede configurarse para procesar tramas de vídeo de múltiples capas, como para codificación SHVC y de múltiples visualizaciones. Además, el descodificador de vídeo 31 se puede configurar para realizar cualquiera o todas las técnicas de esta divulgación.
[0090] El descodificador de vídeo 31 incluye un descodificador de vídeo 30A y un descodificador de vídeo 30B, cada uno de los cuales puede configurarse como el descodificador de vídeo 30 de la FIG. 3A y puede realizar las funciones descritas anteriormente con respecto al descodificador de vídeo 30. Además, como se indica por la reutilización de los números de referencia, los descodificadores de vídeo 30A y 30B pueden incluir al menos algunos de los sistemas y subsistemas como el descodificador de vídeo 30. Aunque el descodificador de vídeo 31 se ilustra como que incluye dos descodificadores de vídeo 30A y 30B, el descodificador de vídeo 31 no está limitado como tal y puede incluir cualquier número de capas de descodificador de vídeo 30. En algunos modos de realización, el descodificador de vídeo 31 puede incluir un descodificador de vídeo 30 para cada imagen o trama en una unidad de acceso. Por ejemplo, una unidad de acceso que incluye cinco imágenes puede procesarse o descodificarse mediante un descodificador de vídeo que incluye cinco capas de descodificador. En algunos modos de realización, el descodificador de vídeo 31 puede incluir más capas de descodificador que tramas en una unidad de acceso. En algunos de dichos casos, algunas de las capas del descodificador de vídeo pueden estar inactivas al procesar algunas unidades de acceso.
[0091] Además de los descodificadores de vídeo 30A y 30B, el descodificador de vídeo 31 puede incluir una unidad de muestreo ascendente 92. En algunos modos de realización, la unidad de muestreo ascendente 92 puede realizar muestreo ascendente de una capa base de una trama de vídeo recibida para crear una capa mejorada para ser añadida a la lista de imágenes de referencia para la trama o la unidad de acceso. Esta capa mejorada puede almacenarse en la memoria de trama de referencia 82 (por ejemplo, en su memoria intermedia de imágenes descodificadas, etc.). En algunos modos de realización, la unidad de muestreo ascendente 92 puede incluir algunos o todos los modos de realización descritos con respecto a la unidad de remuestreo 90 de la FIG. 2B. En algunos modos de realización, la unidad de muestreo ascendente 92 está configurada para realizar muestreo ascendente de una capa y reorganizar, redefinir, modificar o ajustar uno o más fragmentos para cumplir con un conjunto de reglas de límite de fragmento y/o reglas de escaneo de trama. En algunos casos, la unidad de muestreo ascendente 92 puede ser una unidad de remuestreo configurada para realizar muestreo ascendente y/o realizar muestreo descendente de una capa de una trama de vídeo recibida.
[0092] La unidad de muestreo ascendente 92 puede estar configurada para recibir una imagen o trama (o información de imagen asociada a la imagen) de la memoria intermedia de imágenes descodificadas 82 del descodificador de capa inferior (por ejemplo, el descodificador de vídeo 30A) y para realizar muestreo ascendente de la imagen (o la información de imagen recibida). A continuación, esta imagen con muestreo ascendente puede proporcionarse a la unidad de selección de modo 71 de un descodificador de capa superior (por ejemplo, el descodificador de vídeo 30B) configurado para descodificar una imagen en la misma unidad de acceso que el descodificador de capa inferior. En algunos casos, el descodificador de capa superior es una capa eliminada del descodificador de capa inferior. En otros casos, puede haber uno o más descodificadores de capa superior entre el descodificador de capa 0 y el descodificador de capa 1 de la FIG. 3B.
[0093] En algunos casos, la unidad de muestreo ascendente 92 se puede omitir o anular. En dichos casos, la imagen de la memoria intermedia de imágenes descodificadas 82 del descodificador de vídeo 30A se puede proporcionar directamente, o al menos sin proporcionarse a la unidad de muestreo ascendente 92, a la unidad de selección de modo 71 del descodificador de vídeo 30B. Por ejemplo, si los datos de vídeo proporcionados al descodificador de vídeo 30B y la imagen de referencia de la memoria intermedia de imágenes descodificadas 82 del descodificador de vídeo 30A son del mismo tamaño o resolución, la imagen de referencia puede proporcionarse al descodificador de vídeo 30B sin muestreo ascendente. Además, en algunos modos de realización, la unidad de muestreo ascendente 92 puede ser una unidad de remuestreo 90 configurada para realizar muestreo ascendente o muestreo descendente de la imagen de referencia recibida de la memoria intermedia de imágenes descodificadas 82 del descodificador de vídeo 30A.
[0094] Tal como se ilustra en la FIG. 3B, el descodificador de vídeo 31 puede incluir, además, un desmultiplexor 99, o demux. El demux 99 puede dividir un flujo de bits de vídeo codificado en múltiples flujos de bits con cada flujo de bits enviado por el demux 99 que se proporciona a un descodificador de vídeo diferente 30A y 30B. Los múltiples flujos de bits pueden crearse al recibir un flujo de bits y cada uno de los descodificadores de vídeo 30A y 30B recibe una parte del flujo de bits en un momento determinado. Mientras que en algunos casos los bits del flujo de bits recibidos en el demux 99 pueden alternarse un bit a la vez entre cada uno de los descodificadores de vídeo (por ejemplo, los descodificadores de vídeo 30A y 30B en el ejemplo de la FIG. 3B), en muchos casos el flujo de bits se divide de manera diferente. Por ejemplo, el flujo de bits se puede dividir alternando qué descodificador de vídeo recibe el flujo de bits un bloque a la vez. En otro ejemplo, el flujo de bits puede dividirse por una proporción de bloques diferente a 1:1 a cada uno de los descodificadores de vídeo 30A y 30B. Por ejemplo, pueden proporcionarse dos bloques al descodificador de vídeo 30B por cada bloque proporcionado al descodificador de vídeo 30A. En algunos modos de realización, la división del flujo de bits por el demux 99 puede preprogramarse. En otros modos de realización, el demux 99 puede dividir el flujo de bits basándose en una señal de control recibida desde un sistema externo al descodificador de vídeo 31, tal como desde un procesador en un dispositivo de destino 14. La señal de control puede generarse basándose en la resolución o la velocidad de bits de un vídeo desde la interfaz de entrada 28, basándose en el ancho de banda del canal 16, basándose en una suscripción asociada a un usuario (por ejemplo, una suscripción de pago frente a una suscripción gratuita) o basándose en cualquier otro factor para determinar una resolución obtenible por el descodificador de vídeo 31.
Proceso de remuestreo en SHVC
[0095] En SHVC, si un tamaño de la imagen de la capa de referencia es diferente del tamaño de la imagen de la capa de mejora, se puede aplicar un proceso de remuestreo (o muestreo ascendente) a la imagen de la capa de referencia para que coincida con el tamaño de la imagen de la capa de mejora para la predicción entre capas. Para remuestrear la imagen de la capa de referencia, se puede aplicar un filtro de remuestreo N tap para cada componente de color.
[0096] En el proceso de filtrado, las magnitudes de las muestras (o píxeles) de la imagen de la capa de referencia se pueden multiplicar por coeficientes de filtro y sumar para obtener una muestra filtrada (o píxel). Dado que el tamaño de la imagen de la capa de referencia y el tamaño de la imagen de la capa de mejora son diferentes, se pueden definir las coordenadas de las muestras de la capa de referencia involucradas en el proceso de filtrado. Por ejemplo, la ubicación de la muestra de la imagen de la capa de referencia que corresponde a la ubicación de la muestra de la imagen de la capa de mejora actual se puede determinar de modo que las muestras indicadas por la ubicación de la muestra de la imagen de la capa de referencia se puedan usar en el proceso de remuestreo. En un modo de realización, este proceso puede denominarse asignación de posición de muestra o determinación de ubicación de muestra, que se describe adicionalmente a continuación.
[0097] SHVC incluye una sección relacionada con el proceso de obtención para la ubicación de la muestra de la capa de referencia utilizada en el remuestreo (por ejemplo, la Sección G.6.1). El proceso puede tomar como entrada una ubicación de muestra relativa a la muestra superior izquierda del componente de color de la imagen actual y generar una ubicación de muestra que especifica la ubicación de muestra de la capa de referencia en unidades de muestra fraccional (por ejemplo, 1/12, 1/16 muestra) en relación con la muestra superior izquierda de la imagen de la capa de referencia.
[0098] Durante el proceso de ubicación de la muestra de la capa de referencia, se puede aplicar un desplazamiento de redondeo adicional. Se pueden agregar desplazamientos de redondeo para determinar la ubicación de la muestra de la imagen de la capa de referencia que se remuestreará. Por ejemplo, se puede aplicar un desplazamiento de redondeo adicional addY en la dirección vertical. Del mismo modo, se puede aplicar un desplazamiento de redondeo adicional addX en la dirección horizontal. El desplazamiento de redondeo addY y el desplazamiento de redondeo addX también pueden denominarse desplazamiento de redondeo vertical y desplazamiento de redondeo horizontal, respectivamente. La ubicación de la muestra de la imagen de la capa de referencia se puede definir mediante una ubicación de muestra horizontal y una ubicación de muestra vertical. El desplazamiento de redondeo horizontal se puede agregar para determinar la ubicación de la muestra horizontal de la imagen de la capa de referencia para remuestrear, y el desplazamiento de redondeo vertical se puede agregar para determinar la ubicación de la muestra vertical de la imagen de la capa de referencia para remuestrear.
[0099] En SHVC, los factores de escalado se calculan en el proceso de codificación y en general están disponibles en el momento de calcular los desplazamientos de redondeo antes de invocar el proceso de obtención de ubicación de muestra de capa de referencia. Por ejemplo, se pueden generar en la Sección G.8,1.4, el proceso de remuestreo para imágenes de referencia entre capas. Los factores de escalado pueden incluir un factor de escalado horizontal ScaleFactorX y un factor de escalado vertical ScaleFactorY. Los factores de escalado pueden calcularse para la imagen de la capa de mejora actual. El factor de escalado horizontal y el factor de escalado vertical pueden indicar la proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en la dirección horizontal y la proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en la dirección vertical, respectivamente.
[0100] En el Borrador de trabajo 2 de SHVC, el cálculo de los desplazamientos de redondeo implica una operación de división. Sin embargo, una operación de división puede ser costosa. Dado que el cálculo de los factores de escalado es similar al cálculo de los desplazamientos de redondeo, las técnicas pueden utilizar los factores de escalado para calcular los desplazamientos de redondeo. En consecuencia, las técnicas descritas en esta divulgación pueden calcular los desplazamientos de redondeo utilizados en el remuestreo de la imagen de la capa de referencia sin realizar una operación de división utilizando los factores de escalado calculados previamente. Dado que una operación de división es costosa, los desplazamientos de redondeo se pueden calcular de manera más eficiente al eliminar una operación de división. Como resultado, el proceso de codificación también se puede realizar de manera más eficiente. Ciertos detalles relacionados con las técnicas se describen a continuación con referencia a la FIG. 4.
[0101] La FIG. 4 es un diagrama de bloques que ilustra un ejemplo de determinación de desplazamientos de redondeo usados en el proceso de remuestreo, de acuerdo con aspectos de la divulgación. Varios términos utilizados a lo largo de esta divulgación son términos amplios que tienen su significado corriente. Además, en algunos modos de realización, ciertos términos se refieren a los siguientes conceptos de vídeo. En ciertos modos de realización, un desplazamiento de redondeo puede referirse a un valor que se agrega en un proceso de cálculo para redondear un valor predeterminado. En ciertos modos de realización, el símbolo "*" indica multiplicación, y el símbolo ">>" se refiere al desplazamiento a la derecha de los bits. En algunos modos de realización, el desplazamiento hacia la derecha y hacia la izquierda de n bits se puede implementar dividiendo y multiplicando por 2An, respectivamente.
[0102] En el Borrador de trabajo 2 de SHVC (sección G.6,1), addY se calcula de la siguiente manera:
• addY = (((RefLayerPicHeightInSamplesL* phaseY) << 14) ( ScaledRefLayerPicHeightInSamplesL » 1)) / ScaledRefLayerPicHeightInSamplesL,
donde RefLayerPicHeightInSamplesL 418 indica la altura de la imagen de la capa de referencia 410 y ScaledRefLayerPicHeightInSamplesL 432 indica la altura de la versión escalada o remuestreada de la imagen de la capa de referencia 422. Sin embargo, usar una operación de división para calcular addY puede ser costoso.
[0103] Del mismo modo, aunque addX no está incluido en el Borrador de trabajo 2 de SHVC, addX se puede calcular de la siguiente manera:
• addX = (((RefLayerPicWidthlnSamplesL* phaseX) << 14) (ScaledRefLayerPicWid thInSamplesL >> 1)) / ScaledRefLayerPicWidthlnSamplesL,
donde RefLayerPicWidthlnSamplesL 416 indica el ancho de la imagen de la capa de referencia 410 y ScaledRefLayerPicWidthlnSamplesL 430 indica el ancho de la versión escalada o remuestreada de la imagen de la capa de referencia 422. Del mismo modo, usar una operación de división para calcular addX puede ser costoso.
[0104] En SHVC, ScaleFactorX y ScaleFactorY se pueden calcular de la siguiente manera:
• ScaleFactorX = ((RefLayerPicWidthInSamplesL << 16) (ScaledRefLayerPicWidthInSamplesL >> 1)) / ScaledRefLayerPicWidthlnSamplesL
• ScaleFactorY = ((RefLayerPicHeightInSamplesL << 16) (ScaledRefLayerPicHeightInSamplesL >> 1)) / ScaledRefLayerPicHeightInSamplesL,
donde RefLayerPicWidthInSamplesL 416 y RefLayerPicHeightInSamplesL 418 indican el ancho y el alto de la imagen de la capa de referencia 410, respectivamente, y ScaledRefLayerPicWidthInSamplesL 430 y ScaledRefLayerPicHeightInSamplesL 432 indican el ancho y el alto de la versión escalada o remuestreada de la imagen de la capa de referencia 422, respectivamente. ScaledRefLayerPicWidthInSamplesL 430 y ScaledRefLayerPicHeightInSamplesL 432 se pueden explicar para indicar el ancho y el alto de la versión escalada o remuestreada de la imagen de la capa de referencia 422. Si los desplazamientos de la capa de referencia escalada 424 son cero, ScaledRefLayerPicWidthInSamplesL 430 y ScaledRefLayerPicHeightInSamplesL 432 son iguales al ancho y el alto de la imagen de la capa de mejora 420. Los desplazamientos de la capa de referencia escalada 424 pueden ser desplazamientos que indican, en relación con la imagen actual, la región de la imagen de referencia entre capas con muestreo ascendente o remuestreada utilizada en la predicción (por ejemplo, cuando solo se usa una parte o región de la imagen de la capa de referencia con muestreo ascendente o remuestreada).
[0105] Los desplazamientos de redondeo se pueden usar en el proceso de obtención para la ubicación de la muestra de la capa de referencia utilizada en el remuestreo. Por ejemplo, el desplazamiento de redondeo addY se puede usar en el proceso de obtención para la ubicación de la muestra de la capa de referencia utilizada en el remuestreo como se explica en la Sección G.6,1 del Borrador de trabajo 2 de SHVC. Los detalles relacionados con la Sección G.6,1 se explican a continuación:
• Las entradas para este proceso son:
- una variable cIdx que especifica el índice del componente de color, y
- una ubicación de muestra (xP, yP) 434 en relación con la muestra superior izquierda del componente de color de la imagen actual especificada por cIdx.
• La salida de este proceso es:
- una ubicación de muestra (xRef16, yRef16) que especifica la ubicación de la muestra de la capa de referencia en unidades de 1/16 de muestra en relación con la muestra superior izquierda de la imagen de la capa de referencia.
[0106] Las variables utilizadas en el proceso de obtención de G.6,1 se explican a continuación:
• Las variables offsetX y offsetY pueden referirse a los desplazamientos horizontales y verticales, respectivamente, para un componente de color entre la muestra superior izquierda de la imagen de la capa de referencia remuestreada asociada y la muestra de luma superior izquierda de la imagen de la capa de mejora actual. Las variables offsetX y offsetY se obtienen de la siguiente manera:
- offsetX = ScaledRefLayerLeftOffset / ( ( cIdx = = 0) ? 1: SubWidthC) (G-3)
- offsetY = ScaledRefLayerTopOffset / ( ( cIdx = = 0) ? 1: SubHeightC) (G-4),
donde ScaledRefLayerLeftOffset 424a indica el desplazamiento hacia la izquierda de un componente de color luma, Scaled ScaledRefLayerTopOffset 424b indica el desplazamiento superior del componente de color luma, SubWidthC indica el submuestreo del componente de color croma relativo al componente de color luma en la dirección horizontal, y SubHeightC indica el submuestreo del componente de color croma en relación con el componente de color luma en la dirección vertical, y cIdx representa el índice del componente de color y puede ser igual a 0. Por ejemplo, cIdx es igual a 0 para el componente de color luma y es mayor que 0 para los componentes de color croma.
• La variable phaseY puede referirse a una fase de filtro de remuestreo del componente de color luma. Las variables phaseY se pueden obtener de la siguiente manera:
- phaseY = (cIdx = = 0) ? 0: 1 (G-5).
• La variable addY se explica anteriormente y se puede obtener de la siguiente manera:
- addY = ( ( ( RefLayerPicHeightInSamplesL *phaseY ) << 14) ( ScaledRefLayerPicHeightInSamplesL >> 1 ) ) / ScaledRefLayerPicHeightInSamplesL (G-6)
• Las variables xRef16 e yRef16 pueden referirse a una ubicación de muestra que especifica la ubicación de muestra de la capa de referencia en unidades de 1/16 de muestra en relación con la muestra superior izquierda de la imagen de la capa de referencia. La variable xRef16 puede referirse a la ubicación de la muestra horizontal, y la variable yRef16 puede referirse a la ubicación de la muestra vertical. Las variables xRef16 e yRef16 se obtienen de la siguiente manera:
- xRef16 = ( ( ( xP - offsetX ) * ScaleFactorX ( 1 << 11 ) ) >> 12 ) (G-7)
- yRef16 = ( ( ( yP - offsetY ) * ScaleFactorY addY ( 1 << 11 ) ) >> 12 ) -( phaseY <<2 ) (G-8)
[0107] Como se muestra arriba, el cálculo de los factores de escalado es similar al cálculo de los desplazamientos de redondeo. En consecuencia, las técnicas pueden utilizar los factores de escalado en el cálculo de los desplazamientos de redondeo para evitar realizar otra operación de división. Por ejemplo, ScaleFactorX y ScaleFactorY calculados para la obtención de la ubicación de la muestra en el proceso de remuestreo se pueden usar para el cálculo adicional del desplazamiento de redondeo. En un modo de realización, addY y addX se pueden calcular de la siguiente manera:
• addY = (ScaleFactorY * phaseY offset) >> 2
• addX = (ScaleFactorX * phaseX offset) >> 2,
en el que la variable "desplazamiento" se refiere a un desplazamiento de redondeo, que puede ser algún número (por ejemplo, 0, 1, 2, etc.).
[0108] Aunque addX no se usa en el Borrador de trabajo 2, addX puede calcularse de manera similar a addY como se especifica anteriormente, y xRef16 puede obtenerse de manera similar a yRef16 de la siguiente manera:
• xRef16 = (((xP - offsetX) * ScaleFactorX addX (1 << 11)) >> 12) -( phaseX << 2),
donde phaseX se puede determinar de manera similar a phaseY.
[0109] En algunos modos de realización, addX y addY modificados pueden incluirse directamente en el cálculo de xRef16 e yRef16. Por ejemplo, yRef16 se puede calcular de la forma siguiente:
• yRef16 = ((((yP - offsetY) * 4 phaseY) * ScaleFactorY (1 << 13 )) >> 14) -(phaseY << 2)
En algunos casos, incorporar addY directamente en el cálculo de yRef16 puede conducir a una mayor precisión.
[0110] Los ejemplos anteriores se han descrito en términos de 1/16 de precisión de muestra. Sin embargo, se pueden usar diferentes unidades de precisión fraccionaria, por ejemplo 1/12 o similar.
[0111] En general, los factores de escalado están disponibles cuando se calculan los desplazamientos de redondeo y, por lo tanto, los desplazamientos de redondeo se pueden calcular basándose en los factores de escalado sin realizar una operación de división. Dado que una operación de división es costosa, los desplazamientos de redondeo se pueden calcular de manera más eficiente al eliminar una operación de división. Como resultado, el proceso de codificación también se puede realizar de manera más eficiente.
[0112] Todas las características y/o modos de realización descritos con respecto a la FIG. 4 pueden implementarse solos o en cualquier combinación con otras características y/o modos de realización descritos en las FIGS. 4-6. Procedimiento para determinar los valores de desplazamiento de redondeo utilizados en el remuestreo de la imagen de la capa de referencia
[0113] La FIG. 5 es un diagrama de flujo que ilustra un modo de realización de un procedimiento para determinar los desplazamientos de redondeo utilizados en el proceso de remuestreo, de acuerdo con los aspectos de esta divulgación. El proceso 500 puede realizarse mediante un codificador (por ejemplo, el codificador como se muestra en la FIG. 2A, 2B, etc.), un descodificador (por ejemplo, el descodificador como se muestra en la FIG. 3A, 3B, etc.) o cualquier otro componente, dependiendo del modo de realización. Los bloques del proceso 500 se describen con respecto al descodificador 31 en la FIG. 3B, pero el proceso 500 puede ser realizado por otros componentes, como un codificador, como se mencionó anteriormente. El descodificador de vídeo de capa 130B del descodificador 31 y/o el descodificador de capa 0 30A del descodificador 31 pueden realizar el proceso 500, dependiendo del modo de realización. Todos los modos de realización descritos con respecto a la FIG. 5 pueden implementarse por separado, o en combinación entre sí. Ciertos detalles relacionados con el proceso 500 se explican arriba y abajo, por ejemplo, con respecto a las FIGS. 4 y 6.
[0114] El proceso 500 se inicia en el bloque 501. El descodificador 31 puede incluir una memoria (por ejemplo, memoria de trama de referencia 82) para almacenar información de vídeo asociada con una imagen de la capa de referencia y una imagen de la capa de mejora.
[0115] En el bloque 502, el descodificador 31 recibe un factor de escalado que indica una proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en una primera dirección. La primera dirección puede ser la dirección horizontal o la dirección vertical. Por ejemplo, el factor de escalado puede ser para la dirección horizontal o la dirección vertical. En algunos modos de realización, la primera dirección es la dirección horizontal y el factor de escalado se basa en un ancho de la imagen de la capa de referencia y un ancho de la imagen de la capa de mejora. En otros modos de realización, la primera dirección es la dirección horizontal y el factor de escalado se basa en un ancho de la imagen de la capa de referencia y un ancho de una versión escalada de la imagen de la capa de referencia. En ciertos modos de realización, el factor de escalado en la dirección horizontal se determina como (1) una suma de (a) el ancho de la imagen de la capa de referencia desplazada 16 bits hacia la izquierda y (b) el ancho de la versión escalada de la imagen de la capa de referencia desplazado a la derecha 1 bit, dividido por (2) el ancho de la versión escalada de la imagen de la capa de referencia.
[0116] En algunos modos de realización, la primera dirección es la dirección vertical y el factor de escalado se basa en una altura de la imagen de la capa de referencia y una altura de la imagen de la capa de mejora. En otros modos de realización, la primera dirección es la dirección vertical y el factor de escalado se basa en una altura de la imagen de la capa de referencia y una altura de una versión escalada de la imagen de la capa de referencia. En ciertos modos de realización, el factor de escalado en la dirección vertical se determina como (3) una suma de (c) la altura de la imagen de la capa de referencia desplazada 16 bits hacia la izquierda y (d) la altura de la versión escalada de la imagen de la capa de referencia desplazada a la derecha por 1 bit, dividido por (4) la altura de la versión escalada de la imagen de la capa de referencia.
[0117] En el bloque 503, el descodificador 31 determina, sin realizar una operación de división, un valor de desplazamiento de redondeo utilizando el factor de escalado. El valor de desplazamiento de redondeo puede usarse en el cálculo de la posición en un proceso de remuestreo. El valor de desplazamiento de redondeo puede ser para la dirección horizontal cuando el factor de escalado es para la dirección horizontal. De manera similar, el valor de desplazamiento de redondeo puede ser para la dirección vertical cuando el factor de escalado es para la dirección vertical. En algunos modos de realización, el descodificador 31 determina el valor de desplazamiento de redondeo como:
(el factor de escalado * una fase un primer valor de desplazamiento) >> 2
en el que la fase indica una fase de filtro de remuestreo en la primera dirección y el primer valor de desplazamiento indica un desplazamiento de redondeo.
[0118] En el bloque 504, el descodificador 31 determina una coordenada en la primera dirección de una primera muestra ubicada en la imagen de la capa de referencia que corresponde a una segunda muestra ubicada en la imagen de la capa de mejora utilizando el factor de escalado y el valor de desplazamiento de redondeo. Por ejemplo, si el factor de escalado y el valor de desplazamiento de redondeo son para la dirección horizontal, la coordenada de la primera muestra puede ser la coordenada horizontal. De manera similar, si el factor de escalado y el valor de desplazamiento de redondeo son para la dirección vertical, la coordenada de la primera muestra puede ser la coordenada vertical. En algunos modos de realización, la coordenada horizontal y la coordenada vertical de la primera muestra pueden indicar la(s) muestra(s) en la imagen de la capa de referencia que deberían incluirse en el proceso de remuestreo.
[0119] En algunos modos de realización, la coordenada en la dirección horizontal de la primera muestra corresponde a una coordenada horizontal de la segunda muestra, en el que la coordenada en la dirección horizontal de la primera muestra es relativa a la muestra superior izquierda de la imagen de la capa de referencia y la coordenada horizontal de la segunda muestra es relativa a la muestra superior izquierda de la imagen de la capa de mejora. En otros modos de realización, la coordenada en la dirección vertical de la primera muestra corresponde a una coordenada vertical de la segunda muestra, en el que la coordenada en la dirección vertical de la primera muestra es relativa a la muestra superior izquierda de la imagen de la capa de referencia y la coordenada vertical de la segunda muestra es relativa a la muestra superior izquierda de la imagen de la capa de mejora.
[0120] En ciertos modos de realización, la coordenada en la dirección horizontal de la primera muestra se determina de acuerdo con la ecuación:
( ( ( la coordenada en la dirección horizontal de la segunda muestra - un primer desplazamiento horizontal) * el factor de escalado en la dirección horizontal el valor de desplazamiento de redondeo (1 << 11)) >>
12) -(una fase horizontal <<2),
en el que la fase horizontal indica una fase de filtro de remuestreo en la dirección horizontal y el primer desplazamiento horizontal indica un desplazamiento horizontal para una coordenada de color entre una muestra superior izquierda de una versión remuestreada de la imagen de la capa de referencia y la muestra superior izquierda de la imagen de la capa de mejora.
[0121] En otros modos de realización, la coordenada en la dirección vertical de la primera muestra se determina de acuerdo con la ecuación:
( ( ( la coordenada en la dirección vertical de la segunda muestra - un primer desplazamiento vertical) * el factor de escalado el valor de desplazamiento de redondeo (1 << 11)) >> 12) -(una fase vertical << 2),
en el que la fase vertical indica una fase de filtro de remuestreo en la dirección vertical y el primer desplazamiento vertical indica un desplazamiento vertical para una coordenada de color entre una muestra superior izquierda de una versión muestreada de la imagen de la capa de referencia y la muestra superior izquierda de la mejora imagen de la capa.
[0122] El descodificador 31 puede remuestrear la primera muestra aplicando un filtro de remuestreo a la primera muestra.
[0123] El proceso 500 finaliza en el bloque 505. Los bloques pueden agregarse y/u omitirse en el proceso 500, dependiendo del modo de realización, y los bloques del proceso 500 pueden realizarse en diferentes órdenes, dependiendo del modo de realización.
[0124] Cualquier característica y/o modo de realización descrito con respecto al remuestreo en esta divulgación puede implementarse por separado o en cualquier combinación de las mismas. Por ejemplo, cualquier característica y/o modo de realización descrito en relación con las FIGS. 4 y 6 puede implementarse en cualquier combinación con cualquier característica y/o modo de realización descrito en relación con la FIG. 5. y viceversa.
[0125] La FIG. 6 es un diagrama de flujo que ilustra un procedimiento para determinar los desplazamientos de redondeo utilizados en el proceso de remuestreo, de acuerdo con los aspectos de esta divulgación. El proceso 600 puede realizarse mediante un codificador (por ejemplo, el codificador como se muestra en la FIG. 2A, 2B, etc.), un descodificador (por ejemplo, el descodificador como se muestra en la FIG. 3A, 3B, etc.) o cualquier otro componente, dependiendo del modo de realización. Los bloques del proceso 600 se describen con respecto al descodificador 31 en la FIG. 3B, pero el proceso 600 puede ser realizado por otros componentes, como un codificador, como se mencionó anteriormente. El descodificador de vídeo de capa 130B del descodificador 31 y/o el descodificador de capa 030A del descodificador 31 pueden realizar el proceso 600, dependiendo del modo de realización. Todos los modos de realización descritos con respecto a la FIG. 6 pueden implementarse por separado, o en combinación entre sí. Ciertos detalles relacionados con el proceso 600 se explican anteriormente, por ejemplo, con respecto a las FIGS.
4 y 5.
[0126] El proceso 600 se inicia en el bloque 601. El descodificador 31 puede incluir una memoria (por ejemplo, memoria de trama de referencia 82) para almacenar información de vídeo asociada con una imagen de la capa de referencia en una capa de referencia y una imagen de la capa de mejora para codificarse en una capa de mejora.
[0127] En el bloque 602, el descodificador 31 determina un valor de desplazamiento de redondeo horizontal usando un factor de escalado horizontal sin realizar una operación de división. El valor de desplazamiento de redondeo horizontal puede ser un valor de desplazamiento de redondeo utilizado para determinar una ubicación de muestra horizontal de la imagen de la capa de referencia en el proceso de remuestreo aplicado a la imagen de la capa de referencia. El factor de escalado horizontal puede indicar una proporción de escalado horizontal entre la imagen de la capa de referencia y la imagen de la capa de mejora.
[0128] El factor de escalado horizontal puede basarse en el ancho de la imagen de la capa de referencia y el ancho de una versión escalada de la imagen de la capa de referencia. En un modo de realización, el factor de escalado horizontal puede basarse en el ancho de la imagen de la capa de referencia y el ancho de la imagen de la capa de mejora (por ejemplo, cuando los desplazamientos de la capa de referencia escalada son 0). En ciertos modos de realización, el factor de escalado horizontal se puede determinar como: una suma de (a) el ancho de la imagen de la capa de referencia desplazada a la izquierda en 16 bits y (b) un ancho de la versión escalada de la imagen de la capa de referencia desplazada a la derecha en 1 bit, con la suma dividida por el ancho de la versión escalada de la imagen de la capa de referencia.
[0129] En el bloque 603, el descodificador 31 determina un valor de desplazamiento de redondeo vertical usando un factor de escalado vertical sin realizar una operación de división. El valor de desplazamiento de redondeo vertical puede ser un valor de desplazamiento de redondeo utilizado para determinar una ubicación de muestra vertical de la imagen de la capa de referencia en el proceso de remuestreo aplicado a la imagen de la capa de referencia. El factor de escalado vertical puede indicar una proporción de escalado vertical entre la imagen de la capa de referencia y la imagen de la capa de mejora.
[0130] El factor de escalado vertical puede basarse en la altura de la imagen de la capa de referencia y la altura de la versión escalada de la imagen de la capa de referencia. En un modo de realización, el factor de escalado vertical puede basarse en la altura de la imagen de la capa de referencia y la altura de la imagen de la capa de mejora (por ejemplo, cuando los desplazamientos de la capa de referencia escalada son 0). En ciertos modos de realización, el factor de escalado vertical puede determinarse como una suma de (c) la altura de la imagen de la capa de referencia desplazada a la izquierda 16 bits y (d) la altura de la versión escalada de la imagen de la capa de referencia desplazada a la derecha 1 bit, la suma dividida por la altura de la versión escalada de la imagen de la capa de referencia.
[0131] En algunos modos de realización, el descodificador 31 determina el valor de desplazamiento de redondeo horizontal como:
(el factor de escalado horizontal * una fase horizontal un primer valor de desplazamiento) >> 2,
en el que la fase horizontal indica la fase del filtro de remuestreo en la dirección horizontal y el primer valor de desplazamiento indica un desplazamiento de redondeo.
El descodificador 31 determina que el valor de desplazamiento de redondeo vertical se determina como:
(el factor de escalado vertical * una fase vertical un segundo valor de desplazamiento) >> 2,
en el que la fase vertical indica la fase del filtro de remuestreo en la dirección vertical y el segundo valor de desplazamiento indica un desplazamiento de redondeo.
[0132] En el bloque 604, el descodificador 31 determina una primera ubicación de muestra horizontal de la imagen de la capa de referencia basada, al menos en parte, en el factor de escalado horizontal y el valor de desplazamiento del redondeo horizontal. En un modo de realización, la primera ubicación de muestra horizontal de la imagen de la capa de referencia corresponde a una ubicación de muestra horizontal de la imagen de la capa de mejora, en el que la primera ubicación de muestra horizontal es relativa a una muestra superior izquierda de la imagen de la capa de referencia, y en el que la ubicación de la muestra horizontal de la imagen de la capa de mejora es relativa a una muestra superior izquierda de la imagen de la capa de mejora.
[0133] En algunos modos de realización, la primera ubicación de muestra horizontal se determina de acuerdo con la ecuación:
( ( ( la ubicación de la muestra horizontal de la imagen de la capa de mejora - un primer desplazamiento horizontal) * el factor de escalado horizontal el valor del desplazamiento de redondeo horizontal (1 <<
11)) >> 12) -(la fase horizontal << 2),
en el que el primer desplazamiento horizontal indica un desplazamiento horizontal para un componente de color entre la muestra superior izquierda de la versión muestreada de la imagen de la capa de referencia y la muestra superior izquierda de la imagen de la capa de mejora.
[0134] En el bloque 605, el descodificador 31 determina una primera ubicación de muestra vertical de la imagen de la capa de referencia basada, al menos en parte, en el factor de escalado vertical y el valor de desplazamiento del redondeo vertical. La primera ubicación de muestra horizontal y la primera ubicación de muestra vertical juntas pueden indicar la ubicación de muestra de la imagen de la capa de referencia para remuestrear en el proceso de remuestreo aplicado a la imagen de la capa de referencia. El descodificador 31 puede aplicar un filtro de remuestreo a la ubicación de la muestra de la imagen de la capa de referencia.
[0135] En un modo de realización, la primera ubicación de muestra vertical de la imagen de la capa de referencia corresponde a una ubicación de muestra vertical de la imagen de la capa de mejora, en el que la primera ubicación de muestra vertical es relativa a la muestra superior izquierda de la imagen de la capa de referencia, y en el que la ubicación de la muestra vertical de la imagen de la capa de mejora es relativa a la muestra superior izquierda de la imagen de la capa de mejora.
[0136] En algunos modos de realización, la primera ubicación de la muestra vertical se determina de acuerdo con la ecuación:
( ( ( la ubicación de la muestra vertical de la imagen de la capa de mejora - un primer desplazamiento vertical) * el factor de escalado vertical el valor del desplazamiento de redondeo vertical (1 << 11)) >>
12) -(la fase vertical << 2),
en el que el primer desplazamiento vertical indica un desplazamiento vertical para un componente de color entre la muestra superior izquierda de la versión muestreada de la imagen de la capa de referencia y la muestra superior izquierda de la imagen de la capa de mejora.
[0137] El proceso 600 finaliza en el bloque 606. Los bloques pueden agregarse y/u omitirse en el proceso 600, dependiendo del modo de realización, y los bloques del proceso 500 pueden realizarse en diferentes órdenes, dependiendo del modo de realización.
[0138] Cualquier característica y/o modo de realización descrito con respecto al remuestreo en esta divulgación puede implementarse por separado o en cualquier combinación de las mismas. Por ejemplo, cualquier característica y/o modo de realización descrito en relación con las FIGS. 4 y 5 puede implementarse en cualquier combinación con cualquier característica y/o modo de realización descrito en relación con la FIG. 6. y viceversa.
Terminología
[0139] Si bien la divulgación anterior ha descrito modos de realización particulares, son posibles muchas variaciones. Por ejemplo, como se mencionó anteriormente, las técnicas anteriores se pueden aplicar a la codificación de vídeo 3D. En algunos modos de realización de vídeo en 3D, una capa de referencia (por ejemplo, una capa base) incluye información de vídeo suficiente para mostrar una primera visualización de un vídeo y la capa de mejora incluye información de vídeo adicional en relación con la capa de referencia de tal manera que la capa de referencia y la mejora la capa incluye información de vídeo suficiente para mostrar una segunda visualización del vídeo. Estas dos visualizaciones se pueden usar para generar una imagen estereoscópica. Como se analizó anteriormente, la información de movimiento de la capa de referencia se puede usar para identificar hipótesis implícitas adicionales al codificar o descodificar una unidad de vídeo en la capa de mejora, de acuerdo con los aspectos de la divulgación. Esto puede proporcionar una mayor eficiencia de codificación para un flujo de bits de vídeo 3D.
[0140] Ha de reconocerse que, dependiendo del ejemplo, ciertos actos o sucesos de cualquiera de las técnicas descritas en el presente documento pueden realizarse en una secuencia distinta, pueden añadirse, combinarse u omitirse por completo (por ejemplo, no todos los actos o sucesos descritos son necesarios para la puesta en práctica de las técnicas). Asimismo, en determinados ejemplos, los actos o sucesos se pueden realizar simultáneamente, por ejemplo, mediante procesamiento de múltiples hilos, procesamiento de interrupciones o múltiples procesadores, en lugar de secuencialmente.
[0141] La información y las señales divulgadas en el presente documento pueden representarse usando cualquiera entre varias tecnologías y técnicas diferentes. Por ejemplo, los datos, instrucciones, comandos, información, señales, bits, símbolos y segmentos que se pueden haber mencionado a lo largo de la descripción anterior se pueden representar mediante tensiones, corrientes, ondas electromagnéticas, campos o partículas magnéticas, campos o partículas ópticas o cualquier combinación de los mismos.
[0142] Los diversos bloques lógicos, módulos, circuitos y pasos de algoritmo ilustrativos, descritos en relación con los modos de realización divulgados en el presente documento pueden implementarse como hardware electrónico, software informático o combinaciones de ambos. Para ilustrar claramente esta intercambiabilidad de hardware y software, anteriormente se han descrito diversos componentes, bloques, módulos, circuitos y pasos ilustrativos, en general, en lo que respecta a su funcionalidad. Que dicha funcionalidad se implemente como hardware o software depende de la aplicación particular y de las restricciones de diseño impuestas en el sistema general. Los expertos en la técnica pueden implementar la funcionalidad descrita de formas distintas para cada aplicación particular, pero no debería interpretarse que dichas decisiones de implementación suponen apartarse del alcance de la presente invención.
[0143] Las técnicas descritas en el presente documento pueden implementarse en hardware, software, firmware o en cualquier combinación de lo anterior. Dichas técnicas pueden implementarse en cualquiera entre una variedad de dispositivos tales como ordenadores de propósito general, equipos manuales de dispositivos de comunicación inalámbrica o dispositivos de circuitos integrados que tienen múltiples usos, incluyendo su aplicación en equipos manuales de dispositivos de comunicación inalámbrica y otros dispositivos. Todas las características descritas como módulos o componentes pueden implementarse juntas en un dispositivo lógico integrado o por separado, como dispositivos lógicos discretos pero interoperables. Si se implementan en software, las técnicas pueden realizarse, al menos en parte, mediante un medio de almacenamiento de datos legible por ordenador que comprenda código de programa que incluye instrucciones que, cuando se ejecutan, realizan uno o más de los procedimientos descritos anteriormente. El medio de almacenamiento de datos legible por ordenador puede formar parte de un producto de programa informático, que puede incluir materiales de embalaje. El medio legible por ordenador puede comprender memoria o medios de almacenamiento de datos, tales como memoria de acceso aleatorio (RAM), tal como memoria de acceso aleatorio dinámica síncrona (SDRAM), memoria de solo lectura (ROM), memoria de acceso aleatorio no volátil (NVRAM), memoria de solo lectura programable y borrable eléctricamente (EEPROM), memoria FLASH, medios de almacenamiento de datos magnéticos u ópticos, y similares. Las técnicas se pueden realizar, adicionalmente o de forma alternativa, al menos en parte, por un medio de comunicación legible por ordenador que transporta o comunica código de programa en forma de instrucciones o estructuras de datos y a las que se puede acceder, leer y/o ejecutar por medio de un ordenador, tales como señales u ondas propagadas.
[0144] El código de programa puede ser ejecutado por un procesador, que puede incluir uno o más procesadores, tales como uno o más procesadores de señales digitales (DSP), microprocesadores de propósito general, circuitos integrados específicos de la aplicación (ASIC), matrices de puertas programables en el terreno (FPGA) u otros circuitos lógicos equivalentes, integrados o discretos. Un procesador de este tipo puede estar configurado para realizar cualquiera de las técnicas descritas en esta divulgación. Un procesador de propósito general puede ser un microprocesador, pero, de forma alternativa, el procesador puede ser cualquier procesador, controlador, microcontrolador o máquina de estados convencional. Un procesador también puede implementarse como una combinación de dispositivos informáticos, por ejemplo, una combinación de un DSP y un microprocesador, una pluralidad de microprocesadores, uno o más microprocesadores junto con un núcleo de DSP o cualquier otra configuración de este tipo. Por consiguiente, el término "procesador", como se usa en el presente documento, puede referirse a cualquier estructura anterior, cualquier combinación de la estructura anterior, o cualquier otra estructura o aparato adecuados para la implementación de las técnicas descritas en el presente documento. Además, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de módulos de software o módulos de hardware dedicados configurados para la codificación y la descodificación, o incorporados en un codificador-descodificador de vídeo combinado (CODEC).
[0145] Las técnicas de codificación analizadas en el presente documento pueden ser un modo de realización en un sistema de codificación y descodificación de vídeo de ejemplo. Un sistema incluye un dispositivo de origen que proporciona datos de vídeo codificados, a descodificar en un momento posterior mediante un dispositivo de destino. En particular, el dispositivo de origen proporciona los datos de vídeo al dispositivo de destino mediante un medio legible por ordenador. El dispositivo de origen y el dispositivo de destino pueden comprender cualquiera de una amplia gama de dispositivos, incluyendo ordenadores de escritorio, ordenadores plegables (es decir, portátiles), ordenadores tipo tablet, descodificadores, teléfonos tales como los denominados teléfonos "inteligentes", los denominados paneles "inteligentes", televisores, cámaras, dispositivos de visualización, reproductores de medios digitales, consolas de videojuegos, dispositivo de transmisión de vídeo en tiempo real o similares. En algunos casos, el dispositivo de origen y el dispositivo de destino pueden estar equipados para la comunicación inalámbrica.
[0146] El dispositivo de destino puede recibir los datos de vídeo codificados a descodificar mediante el medio legible por ordenador. El medio legible por ordenador puede comprender cualquier tipo de medio o dispositivo capaz de transportar los datos de vídeo codificados desde el dispositivo de origen al dispositivo de destino. En un ejemplo, el medio legible por ordenador puede comprender un medio de comunicación para habilitar el dispositivo de origen 12 para transmitir datos de vídeo codificados directamente al dispositivo de destino en tiempo real. Los datos de vídeo codificados se pueden modular de acuerdo con una norma de comunicación, tal como un protocolo de comunicación inalámbrica, y transmitir al dispositivo de destino. El medio de comunicación puede comprender cualquier medio de comunicación, inalámbrica o cableada, tal como un espectro de radiofrecuencia (RF) o una o más líneas físicas de transmisión. El medio de comunicación puede formar parte de una red basada en paquetes, tal como una red de área local, una red de área amplia o una red global tal como Internet. El medio de comunicación puede incluir routers, interruptores, estaciones base o cualquier otro equipo que pueda ser útil para facilitar la comunicación desde el dispositivo de origen hasta el dispositivo de destino.
[0147] En algunos ejemplos, pueden enviarse datos codificados desde la interfaz de salida hasta un dispositivo de almacenamiento. De forma similar, se puede acceder a los datos codificados desde el dispositivo de almacenamiento mediante una interfaz de entrada. El dispositivo de almacenamiento puede incluir cualquiera entre varios medios de almacenamiento de datos, distribuidos o de acceso local, tales como un disco duro, discos Blu-ray, DVD, CD-ROM, memoria flash, memoria volátil o no volátil, o cualquier otro medio de almacenamiento digital adecuado para almacenar datos de vídeo codificados. En un ejemplo adicional, el dispositivo de almacenamiento puede corresponder a un servidor de ficheros o a otro dispositivo de almacenamiento intermedio que pueda almacenar el vídeo codificado generado por el dispositivo de origen. El dispositivo de destino puede acceder a datos de vídeo almacenados desde el dispositivo de almacenamiento, mediante transmisión en tiempo real o descarga. El servidor de ficheros puede ser cualquier tipo de servidor capaz de almacenar datos de vídeo codificados y transmitir esos datos de vídeo codificados al dispositivo de destino. Entre los servidores de ficheros de ejemplo se incluye un servidor de la Red (por ejemplo, para una sede de la Red), un servidor del FTP, dispositivos de almacenamiento conectados en red (NAS) o una unidad de disco local. El dispositivo de destino puede acceder a los datos de vídeo codificados a través de cualquier conexión de datos estándar, incluida una conexión a Internet. Esto puede incluir un canal inalámbrico (por ejemplo, una conexión de Wi-Fi), una conexión cableada (por ejemplo, DSL, módem de cable, etc.) o una combinación de ambas que sea adecuada para acceder a datos de vídeo codificados almacenados en un servidor de ficheros. La transmisión de datos de vídeo codificados desde el dispositivo de almacenamiento puede ser una transmisión en tiempo real, una transmisión de descarga o una combinación de ambas.
[0148] Las técnicas de esta divulgación no están limitadas necesariamente a aplicaciones o configuraciones inalámbricas. Las técnicas se pueden aplicar a la codificación de vídeo como soporte de cualquiera entre varias aplicaciones multimedia, tales como difusiones de televisión por el aire, transmisiones de televisión por cable, transmisiones de televisión por satélite, transmisiones de vídeo en tiempo real por Internet, tales como la transmisión en tiempo real adaptativa dinámica por HTTP (DASH), vídeo digital que se codifica en un medio de almacenamiento de datos, descodificación de vídeo digital almacenado en un medio de almacenamiento de datos u otras aplicaciones. En algunos ejemplos, el sistema puede estar configurado para prestar soporte a una transmisión de vídeo unidireccional o bidireccional, a fin de prestar soporte a aplicaciones tales como la transmisión de vídeo en tiempo real, la reproducción de vídeo, la radiodifusión de vídeo y/o la videotelefonía.
[0149] En un ejemplo, el dispositivo de origen incluye un origen de vídeo, un codificador de vídeo y una interfaz de salida. El dispositivo de destino puede incluir una interfaz de entrada, un descodificador de vídeo y un dispositivo de visualización. El codificador de vídeo del dispositivo de origen puede configurarse para aplicar las técnicas divulgadas en el presente documento. En otros ejemplos, un dispositivo de origen y un dispositivo de destino pueden incluir otros componentes o disposiciones. Por ejemplo, el dispositivo de origen puede recibir datos de vídeo desde un origen de vídeo externo, tal como una cámara externa. Del mismo modo, el dispositivo de destino puede interactuar con un dispositivo de visualización externo, en lugar de incluir un dispositivo de visualización integrado.
[0150] El sistema de ejemplo anterior es simplemente un ejemplo. Las técnicas para procesamiento de datos de vídeo en paralelo pueden realizarse mediante cualquier dispositivo de codificación y/o de descodificación de vídeo digital. Aunque, en general, las técnicas de esta divulgación son llevadas a cabo por un dispositivo de codificación de vídeo, las técnicas también pueden ser llevadas a cabo por un codificador/descodificador de vídeo, denominado típicamente "CÓDEC". Además, las técnicas de esta divulgación también se pueden llevar a cabo mediante un preprocesador de vídeo. El dispositivo de origen y el dispositivo de destino son simplemente ejemplos de dichos dispositivos de codificación en los que el dispositivo de origen genera datos de vídeo codificados para su transmisión al dispositivo de destino. En algunos ejemplos, los dispositivos de origen y destino pueden funcionar de manera esencialmente simétrica, de modo que cada uno de los dispositivos 12 y 14 incluye componentes de codificación y de descodificación de vídeo. De ahí que los sistemas de ejemplo puedan prestar soporte a la transmisión de vídeo unidireccional o bidireccional entre los dispositivos de vídeo, por ejemplo, para la transmisión de vídeo en tiempo real, la reproducción de vídeo, la radiodifusión de vídeo o la videotelefonía.
[0151] El origen de vídeo puede incluir un dispositivo de captura de vídeo, tal como una cámara de vídeo, un archivo de vídeo que contiene vídeo capturado previamente y/o una interfaz de suministro de vídeo para recibir vídeo desde un proveedor de contenidos de vídeo. Como otra alternativa, el origen de vídeo puede generar datos basados en gráficos de ordenador como el vídeo de origen, o una combinación de vídeo en directo, vídeo archivado y vídeo generado por ordenador. En algunos casos, si el origen de vídeo es una videocámara, el dispositivo de origen y el dispositivo de destino pueden formar los llamados teléfonos con cámara o videoteléfonos. Sin embargo, como se ha mencionado anteriormente, las técnicas descritas en esta divulgación pueden ser aplicables a la codificación de vídeo en general, y se pueden aplicar a aplicaciones inalámbricas y/o cableadas. En cada caso, el codificador de vídeo puede codificar el vídeo capturado, precapturado o generado por ordenador. A continuación, la información de vídeo codificada puede ser proporcionada por la interfaz de salida a un medio legible por ordenador.
[0152] Como se ha indicado, el medio legible por ordenador puede incluir medios transitorios, tales como una radiodifusión inalámbrica o una transmisión de red cableada, o medios de almacenamiento (es decir, medios de almacenamiento no transitorios), tales como un disco duro, una unidad de memoria flash, un disco compacto, un disco de vídeo digital, un disco Blu-ray u otros medios legibles por ordenador. En algunos ejemplos, un servidor de red (no mostrado) puede recibir datos de vídeo codificados desde el dispositivo de origen y proporcionar los datos de vídeo codificados al dispositivo de destino, por ejemplo, mediante transmisión por red. De forma similar, un dispositivo informático de una unidad de producción de un medio, tal como una unidad de grabación de discos, puede recibir datos de vídeo codificados desde el dispositivo de origen y producir un disco que contiene los datos de vídeo codificados. Por lo tanto, se puede entender que el medio legible por ordenador incluye uno o más medios legibles por ordenador de diversas formas, en varios ejemplos.
[0153] La interfaz de entrada del dispositivo de destino recibe información del medio legible por ordenador. La información del medio legible por ordenador puede incluir información sintáctica definida por el codificador de vídeo, que también es utilizada por el descodificador de vídeo, que incluye elementos sintácticos que describen características y/o procesamiento de bloques y otras unidades codificadas, por ejemplo, grupos de imágenes (GOP). Un dispositivo de visualización muestra los datos de vídeo descodificados a un usuario, y puede comprender cualquiera entre varios dispositivos de visualización, tales como un tubo de rayos catódicos (CRT), una pantalla de cristal líquido (LCD), una pantalla de plasma, una pantalla de diodos orgánicos emisores de luz (OLED) u otro tipo de dispositivo de visualización. Se han descrito diversos modos de realización de la invención. Estos y otros modos de realización están dentro del alcance de las siguientes reivindicaciones.
[0154] Se han descrito diversos modos de realización de la invención. Estos y otros modos de realización están dentro del alcance de las siguientes reivindicaciones.

Claims (15)

  1. REIVINDICACIONES
    i . Un aparato para codificar información de vídeo, comprendiendo el aparato:
    una memoria configurada para almacenar información de vídeo asociada a una imagen de capa de referencia y una imagen de capa de mejora; y
    un procesador acoplado operativamente a la memoria y configurado para:
    calcular un factor de escalado para la obtención de la ubicación de la muestra en un proceso de remuestreo que indica una proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en una primera dirección;
    determinar usando el factor de escalado previamente calculado un valor de desplazamiento de redondeo para determinar una coordenada en la primera dirección de una primera muestra ubicada en la imagen de la capa de referencia, correspondiendo la primera muestra a una segunda muestra ubicada en la imagen de la capa de mejora; y
    determinar la coordenada en la primera dirección de la primera muestra usando el factor de escalado y el valor de desplazamiento de redondeo;
    en el que el procesador está configurado además para determinar el valor de desplazamiento de redondeo como un producto del factor de escalado y una fase que a continuación se suma con un primer valor de desplazamiento y a continuación se desplaza a la derecha,
    en el que la fase indica una fase de filtro de remuestreo en la primera dirección y el primer valor de desplazamiento es un número.
  2. 2. El aparato de la reivindicación 1, en el que la primera dirección es una dirección horizontal o una dirección vertical.
  3. 3. El aparato de la reivindicación 2, en el que la primera dirección es la dirección horizontal y el factor de escalado se basa en un ancho de la imagen de la capa de referencia y un ancho de la imagen de la capa de mejora.
  4. 4. El aparato de acuerdo con la reivindicación 2, en el que la primera dirección es la dirección horizontal y el factor de escalado se basa en un ancho de la imagen de la capa de referencia y un ancho de una versión escalada de la imagen de la capa de referencia.
  5. 5. El aparato de la reivindicación 2, en el que la primera dirección es la dirección vertical y el factor de escalado se basa en una altura de la imagen de la capa de referencia y una altura de la imagen de la capa de mejora.
  6. 6. El aparato de acuerdo con la reivindicación 2, en el que la primera dirección es la dirección vertical y el factor de escalado se basa en una altura de la imagen de la capa de referencia y una altura de una versión escalada de la imagen de la capa de referencia.
  7. 7. El aparato de acuerdo con la reivindicación 2, en el que la coordenada en la dirección horizontal de la primera muestra corresponde a una coordenada horizontal de la segunda muestra, en la que la coordenada en la dirección horizontal de la primera muestra es relativa a una muestra superior izquierda de la imagen de la capa de referencia y la coordenada horizontal de la segunda muestra es relativa a una muestra superior izquierda de la imagen de la capa de mejora.
  8. 8. El aparato de la reivindicación 2, en el que la coordenada en la dirección vertical de la primera muestra corresponde a una coordenada vertical de la segunda muestra, en el que la coordenada en la dirección vertical de la primera muestra es relativa a una muestra superior izquierda de la imagen de la capa de referencia y la coordenada vertical de la segunda muestra es relativa a una muestra superior izquierda de la imagen de la capa de mejora.
  9. 9. El aparato de acuerdo con la reivindicación 8, en el que la coordenada en la dirección horizontal de la primera muestra se determina de acuerdo con la ecuación:
    ( ( ( la coordenada en la dirección horizontal de la segunda muestra - un primer desplazamiento horizontal) * el factor de escalado en la dirección horizontal el valor de desplazamiento de redondeo (1 << 11)) >>
    12) -(una fase horizontal <<2),
    en el que la fase horizontal indica una fase de filtro de remuestreo en la dirección horizontal y el primer desplazamiento horizontal indica un desplazamiento horizontal para una coordenada de color entre una muestra superior izquierda de una versión remuestreada de la imagen de la capa de referencia y la muestra superior izquierda de la imagen de la capa de mejora.
  10. 10. El aparato de acuerdo con la reivindicación 8, en el que la coordenada en la dirección vertical de la primera muestra se determina de acuerdo con la ecuación:
    ( ( ( la coordenada en la dirección vertical de la segunda muestra - un primer desplazamiento vertical) * el factor de escalado el valor de desplazamiento de redondeo (1 << 11)) >> 12) - (una fase vertical << 2), en el que la fase vertical indica una fase de filtro de remuestreo en la dirección vertical y el primer desplazamiento vertical indica un desplazamiento vertical para una coordenada de color entre una muestra superior izquierda de una versión remuestreada de la imagen de la capa de referencia y la muestra superior izquierda de la mejora imagen de la capa.
  11. 11. Un procedimiento de codificación de información de vídeo, comprendiendo el procedimiento:
    almacenar información de vídeo asociada con una imagen de la capa de referencia y una imagen de la capa de mejora;
    calcular un factor de escalado para la obtención de la ubicación de la muestra en un proceso de remuestreo que indica una proporción de escalado entre la imagen de la capa de referencia y la imagen de la capa de mejora en una primera dirección;
    determinar usando el factor de escalado previamente calculado un valor de desplazamiento de redondeo para determinar una coordenada en la primera dirección de una primera muestra ubicada en la imagen de la capa de referencia, correspondiendo la primera muestra a una segunda muestra ubicada en la imagen de la capa de mejora; y
    determinar la coordenada en la primera dirección de la primera muestra usando el factor de escalado y el valor de desplazamiento de redondeo;
    en el que dicha determinación del valor de desplazamiento de redondeo comprende determinar el valor de desplazamiento de redondeo como un producto del factor de escalado y una fase que luego se suma con un primer valor de desplazamiento y a continuación se desplaza a la derecha,
    en el que la fase indica una fase de filtro de remuestreo en la primera dirección y el primer valor de desplazamiento es un número.
  12. 12. El procedimiento de la reivindicación 11, en el que la primera dirección es una dirección horizontal o una dirección vertical.
  13. 13. El procedimiento de acuerdo con la reivindicación 11, en el que la primera dirección es la dirección horizontal y el factor de escalado se basa en un ancho de la imagen de la capa de referencia y un ancho de una versión escalada de la imagen de la capa de referencia y en el que el factor de escalado en la dirección horizontal se determina como (1) una suma de (a) el ancho de la imagen de la capa de referencia desplazada a la izquierda 16 bits y (b) el ancho de la versión escalada de la imagen de la capa de referencia desplazada a la derecha 1 bit, dividido por (2) el ancho de la versión escalada de la imagen de la capa de referencia.
  14. 14. El procedimiento de la reivindicación 11, en el que la primera dirección es la dirección vertical y el factor de escalado se basa en una altura de la imagen de la capa de referencia y una altura de una versión escalada de la imagen de la capa de referencia y en el que el factor de escalado en la dirección vertical se determina como (3) una suma de (c) la altura de la imagen de la capa de referencia desplazada a la izquierda 16 bits y (d) la altura de la versión escalada de la imagen de la capa de referencia desplazada a la derecha 1 bit, dividida por (4) altura de la versión escalada de la imagen de la capa de referencia.
  15. 15. Un medio no transitorio legible por ordenador que comprende instrucciones que, cuando son ejecutadas en un procesador que comprende hardware de ordenador, hacen que el procesador ejecute el procedimiento de una cualquiera de las reivindicaciones 11 a 14.
ES14736507T 2013-05-31 2014-05-28 Remuestreo utilizando factor de escalado Active ES2750531T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361829926P 2013-05-31 2013-05-31
US14/287,797 US9635371B2 (en) 2013-05-31 2014-05-27 Determining rounding offset using scaling factor in picture resampling
PCT/US2014/039795 WO2014193956A1 (en) 2013-05-31 2014-05-28 Resampling using scaling factor

Publications (1)

Publication Number Publication Date
ES2750531T3 true ES2750531T3 (es) 2020-03-26

Family

ID=51985085

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14736507T Active ES2750531T3 (es) 2013-05-31 2014-05-28 Remuestreo utilizando factor de escalado

Country Status (8)

Country Link
US (1) US9635371B2 (es)
EP (1) EP3005702B1 (es)
JP (1) JP6285018B2 (es)
KR (1) KR101810312B1 (es)
CN (1) CN105247868B (es)
ES (1) ES2750531T3 (es)
HU (1) HUE047048T2 (es)
WO (1) WO2014193956A1 (es)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015009764A1 (en) * 2013-07-16 2015-01-22 General Instrument Corporation Resampling filters for scalable video coding with phase offset adjustment and signaling of same
US10785492B2 (en) * 2014-05-30 2020-09-22 Arris Enterprises Llc On reference layer and scaled reference layer offset parameters for inter-layer prediction in scalable video coding
EP3354029A4 (en) * 2015-09-23 2019-08-21 Nokia Technologies Oy METHOD, APPARATUS AND COMPUTER PROGRAM PRODUCT FOR ENCODING 360-DEGREE PANORAMIC VIDEO
KR102045522B1 (ko) * 2016-03-03 2019-11-15 주식회사 케이티 이미지를 변환하는 가속기 서버, 셋톱 박스 및 클라우드 서버
WO2020071672A1 (ko) * 2018-10-02 2020-04-09 엘지전자 주식회사 움직임 벡터를 압축하는 방법 및 그 장치
US11290734B2 (en) * 2019-01-02 2022-03-29 Tencent America LLC Adaptive picture resolution rescaling for inter-prediction and display
HRP20230702T1 (hr) * 2019-01-09 2023-10-13 Huawei Technologies Co., Ltd. Signaliziranje identifikatora podslike kod kodiranja videa
KR20220088681A (ko) * 2019-08-06 2022-06-28 오피 솔루션즈, 엘엘씨 적응적 해상도 관리 시그널링
AU2020326881A1 (en) 2019-08-06 2022-03-24 Op Solutions, Llc Block-based adaptive resolution management
CN114467305A (zh) 2019-08-06 2022-05-10 Op方案有限责任公司 自适应分辨率管理预测重缩放
MX2022001595A (es) 2019-08-06 2022-03-11 Op Solutions Llc Método de señalización implícita de gestión de resolución adaptativa basada en el tipo de trama.
WO2021061744A1 (en) * 2019-09-23 2021-04-01 Beijing Dajia Internet Information Technology Co., Ltd. Methods and devices for quantization and de-quantization design in video coding
AU2020352589B2 (en) 2019-09-24 2024-02-08 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Encoder and decoder, encoding method and decoding method for reference picture resampling extensions
US11632540B2 (en) * 2019-12-20 2023-04-18 Qualcomm Incorporated Reference picture scaling ratios for reference picture resampling in video coding
WO2021134222A1 (en) * 2019-12-30 2021-07-08 Alibaba Group Holding Limited Selective control of conditional filters in resolution-adaptive video coding

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6947886B2 (en) * 2002-02-21 2005-09-20 The Regents Of The University Of California Scalable compression of audio and other signals
US7277486B2 (en) * 2002-05-03 2007-10-02 Microsoft Corporation Parameterization for fading compensation
KR100878809B1 (ko) * 2004-09-23 2009-01-14 엘지전자 주식회사 비디오 신호의 디코딩 방법 및 이의 장치
US8175168B2 (en) * 2005-03-18 2012-05-08 Sharp Laboratories Of America, Inc. Methods and systems for picture up-sampling
US7956930B2 (en) * 2006-01-06 2011-06-07 Microsoft Corporation Resampling and picture resizing operations for multi-resolution video coding and decoding
US9014280B2 (en) * 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
KR101066117B1 (ko) * 2009-11-12 2011-09-20 전자부품연구원 스케일러블 영상 코딩 방법 및 장치
CN103155568B (zh) * 2010-07-08 2016-07-27 杜比实验室特许公司 用于使用参考处理信号进行多层图像和视频传输的系统和方法
WO2013051897A1 (ko) * 2011-10-05 2013-04-11 한국전자통신연구원 영상 부호화 방법과 영상 복호화 방법
KR20130037162A (ko) * 2011-10-05 2013-04-15 한국전자통신연구원 스케일러블 비디오 코딩을 위한 계층간 텍스처 예측 방법 및 그 장치
US9635356B2 (en) * 2012-08-07 2017-04-25 Qualcomm Incorporated Multi-hypothesis motion compensation for scalable video coding and 3D video coding
US9854235B2 (en) * 2012-08-31 2017-12-26 Blackberry Limited Methods and devices for entropy coding in scalable video compression
US8798165B2 (en) * 2013-01-04 2014-08-05 Vidyo, Inc. Techniques for prediction of unavailable samples in inter-layer predicted video coding
US9986251B2 (en) * 2014-05-01 2018-05-29 Arris Enterprises Llc Reference layer and scaled reference layer offsets for scalable video coding
WO2016108188A1 (en) * 2014-12-31 2016-07-07 Nokia Technologies Oy Inter-layer prediction for scalable video coding and decoding

Also Published As

Publication number Publication date
JP2016524407A (ja) 2016-08-12
HUE047048T2 (hu) 2020-04-28
EP3005702A1 (en) 2016-04-13
EP3005702B1 (en) 2019-07-24
JP6285018B2 (ja) 2018-02-28
KR20160016936A (ko) 2016-02-15
CN105247868B (zh) 2018-07-03
US20140355676A1 (en) 2014-12-04
CN105247868A (zh) 2016-01-13
US9635371B2 (en) 2017-04-25
WO2014193956A1 (en) 2014-12-04
KR101810312B1 (ko) 2017-12-18

Similar Documents

Publication Publication Date Title
ES2750531T3 (es) Remuestreo utilizando factor de escalado
ES2706476T3 (es) Procesamiento paralelo para codificación de vídeo
KR101937522B1 (ko) Shvc 에서 리샘플링 프로세스의 조건적 호출
JP6285020B2 (ja) コンポーネント間フィルタ処理
ES2795682T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
TWI594622B (zh) 多層視訊寫碼中之層間預測類型
ES2686936T3 (es) Códec 3DVC basado en MVC que soporta el modo de predicción de movimiento de visualización interna (IVMP)
ES2648312T3 (es) Relleno de píxeles de borde para intra-predicción en codificación de vídeo
ES2886344T3 (es) Predicción residual generalizada para codificación de vídeo escalable y codificación de vídeo 3D
ES2778350T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo
WO2015196119A1 (en) Cross-component prediction in video coding
ES2736308T3 (es) Predicción de texturas entre capas para codificación de vídeo
KR20150137098A (ko) 고레벨 신택스 전용 스케일러블 비디오 코딩에 대한 계층간 레퍼런스 픽처 제한
ES2711954T3 (es) Dispositivo y procedimiento para codificación escalable de información de vídeo basándose en codificación de vídeo de alta eficiencia
KR20140043037A (ko) 인터 레이어 예측 오차를 부호화하기 위한 sao 오프셋 보상 방법 및 그 장치
KR20150139894A (ko) 계층간 픽처 시그널링 및 관련된 프로세스들
KR20150122767A (ko) 상이한 종횡비를 갖는 공간 스케일러빌리티를 위한 계층간 참조 화상 구성
KR20160032164A (ko) Vps 에서 비트 레이트 정보 및 픽처 레이트 정보의 시그널링
KR20150138308A (ko) Shvc 를 위한 다수의 기초 계층 참조 화상
CN114303371A (zh) 带有协调运动场存储和运动补偿的几何分割模式
CN114830667A (zh) 视频编解码中用于参考图片重采样的参考图片缩放比例
ES2769837T3 (es) Escalamiento del vector de movimiento espacial para codificación escalable de vídeo
KR102293104B1 (ko) 리샘플링 프로세스에서 중간 데이터의 동적 범위 제어
CN114868397A (zh) 关于视频译码中的多重变换选择信令的基于系数组的约束
KR102262064B1 (ko) 스케일러블 비디오 신호 인코딩/디코딩 방법 및 장치