ES2891175T3 - Realizar de manera adaptativa operaciones de suavizado - Google Patents

Realizar de manera adaptativa operaciones de suavizado Download PDF

Info

Publication number
ES2891175T3
ES2891175T3 ES11802249T ES11802249T ES2891175T3 ES 2891175 T3 ES2891175 T3 ES 2891175T3 ES 11802249 T ES11802249 T ES 11802249T ES 11802249 T ES11802249 T ES 11802249T ES 2891175 T3 ES2891175 T3 ES 2891175T3
Authority
ES
Spain
Prior art keywords
unit
samples
smoothing
prediction
sample
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
ES11802249T
Other languages
English (en)
Inventor
Liwei Guo
Peisong Chen
Marta Karczewicz
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 ES2891175T3 publication Critical patent/ES2891175T3/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/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/127Prioritisation of hardware or computational resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

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

Abstract

Un método para codificar datos de vídeo, comprendiendo el método: generar (804), en una operación de compensación de movimiento, un bloque de predicción para una unidad de codificación, CU, de un fotograma de los datos de vídeo, incluyendo el bloque de predicción una zona (1200) de transición en un límite entre muestras del bloque de predicción asociado con una primera unidad de predicción, PU, de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU; hacer (1302), por el dispositivo informático, una determinación de si el tamaño de la primera PU se encuentra por debajo de un umbral dado; caracterizado por realizar (806, 1306) una operación de suavizado de compensación de movimiento de bloque solapado, OBMC, para suavizar muestras del bloque de predicción que se encuentra dentro de la zona (1200) de transición si el tamaño de la primera PU no se encuentra por debajo del umbral dado; y no realizar (1308) la operación de suavizado de OBMC si el tamaño de la primera PU se encuentra por debajo del umbral dado.

Description

DESCRIPCIÓN
Realizar de manera adaptativa operaciones de suavizado
Campo técnico
Esta divulgación se refiere a la codificación de vídeo.
Antecedentes
Las capacidades de vídeo digital pueden incorporarse a una amplia gama de dispositivos, incluyendo televisiones digitales, sistemas de difusión directa digital, sistemas de difusión inalámbrica, asistentes digitales personales (PDA), ordenadores portátiles o de sobremesa, cámaras digitales, dispositivos de grabación digital, reproductores de medios digitales, dispositivos de videojuegos, consolas de videojuegos, teléfonos de radio celular o por satélite, dispositivos de teleconferencia de vídeo y similares. Los dispositivos de vídeo digital implementan técnicas de compresión de vídeo, tales como aquellas descritas en las normas definidas por MPEG-2, MPEG-4, ITU-T H.263 o ITU-T H.264/MPEG-4, Parte 10, Codificación Avanzada de Vídeo (AVC) y extensiones de tales normas, para transmitir y recibir información de vídeo digital de manera más eficaz.
Las técnicas de compresión de vídeo realizan predicción espacial y/o predicción temporal para reducir o eliminar la redundancia inherente en las secuencias de vídeo. Para la codificación de vídeo basada en bloques, un fotograma o corte de vídeo puede subdividirse en bloques. Cada bloque puede subdividirse adicionalmente. Los bloques en un fotograma o corte intra-codificado (I) se codifican usando predicción espacial con respecto a bloques vecinos. Los bloques en un fotograma o corte inter-codificado (P o B) pueden usar predicción espacial con respecto a bloques vecinos en el mismo fotograma o corte o predicción temporal con respecto a otros fotogramas de referencia.
Se llama la atención al documento WO 2008/048864 A2 que se refiere a técnicas de codificación de vídeo que soportan codificación de vídeo de capa única normal o codificación de vídeo escalable con características tales como escalabilidad de relación de señal a ruido (SNR) y escalabilidad espacial. Un dispositivo de codificación de vídeo puede implementar estas técnicas en un decodificador de vídeo que incluye un módulo de compensación de movimiento y un filtro. El módulo de compensación de movimiento decodifica un fotograma de predicción a partir de una señal de vídeo digital, en donde el módulo de compensación de movimiento determina cada bloque del fotograma inter-codificado a partir de vectores de movimiento codificados en la señal de vídeo digital. El filtro filtra de manera adaptativa uno o más de los bloques inter-codificados basándose en una señal codificada o inferida a partir de la señal de vídeo digital. El decodificador de vídeo puede aplicar de manera adaptativa funciones de filtro, una en la dirección horizontal y otra en la vertical, basándose en la señal.
El documento VAN DER AUWERA G ET AL: "CE6.b: SDIP Harmonization with Deblocking, MDIS and HE Residual Coding", JCTVC-F556, 02-07-2011, desvela la reducción de artefactos de bloqueo de la intra-predicción de corta distancia. El tamaño de la región de soporte de filtro de suavizado depende del tamaño de la unidad de predicción.
El documento ANÓNIMO: "Test Model under Consideration for High-Efficiency Video Coding", n.° N11280, 28-07­ 2010, desvela una implementación del modelo de prueba de HEVC, que desvela particularmente detalles sobre la filtración de desbloqueo y OBMC, y las dependencias de las correspondientes operaciones de suavizado de límite en el tamaño de subbloque de predicción/transformada, así como vectores de movimiento y modos de codificación.
Sumario
De acuerdo con la invención, se proporciona un método para codificación como se expone en la reivindicación 1, se proporciona un dispositivo informático como se expone en la reivindicación 13, así como un programa informático como se expone en la reivindicación 14. Se exponen realizaciones adicionales de la invención en las reivindicaciones dependientes. Cualquier otra realización mencionada en la descripción se considera únicamente como un ejemplo ilustrativo.
Breve descripción de los dibujos
La Figura 1 es un diagrama de bloques que ilustra un sistema de codificación multimedia de ejemplo.
La Figura 2 es un diagrama conceptual que ilustra una serie de ejemplo de fotogramas en un vídeo.
La Figura 3 es un diagrama de bloques que ilustra una configuración de ejemplo de una unidad de codificación. La Figura 4 es un diagrama conceptual que ilustra un fotograma de ejemplo subdividido en bloques de árbol. La Figura 5 es un diagrama conceptual que ilustra una subdivisión de ejemplo adicional de bloques de árbol. La Figura 6 es un diagrama de bloques que ilustra una configuración de ejemplo de una unidad de inter-predicción. La Figura 7 es un diagrama de bloques que ilustra una configuración de ejemplo de una unidad de decodificación. La Figura 8 es un diagrama de flujo que ilustra una operación de codificación inter-fotograma de ejemplo realizada por una unidad de inter-predicción.
La Figura 9 es un diagrama conceptual que ilustra modos de subdivisión rectangular de ejemplo.
La Figura 10 es un diagrama conceptual que ilustra modos de subdivisión geométrica de ejemplo.
La Figura 11 es un diagrama conceptual que ilustra una zona de transición de una CU.
La Figura 12 es un diagrama de flujo que ilustra una operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 13 es un diagrama de flujo que ilustra otra operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 14 es un diagrama de flujo que ilustra otra operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 15 es un diagrama de flujo que ilustra otra operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 16 es un diagrama de flujo que ilustra otra operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 17 es un diagrama de flujo que ilustra otra operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 18 es un diagrama de flujo que ilustra otra operación de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción.
La Figura 19 es un diagrama de flujo que ilustra una operación de identificación de muestra de transición de ejemplo. La Figura 20 es un diagrama de flujo que ilustra otra operación de ejemplo de una unidad de suavizado.
La Figura 21 es un diagrama de flujo que ilustra otra operación de identificación de muestra de transición de ejemplo. Descripción detallada
Los dibujos adjuntos ilustran ejemplos. Elementos indicados por números de referencia en los dibujos adjuntos corresponden a elementos indicados por números de referencia similares en la siguiente descripción. En los dibujos adjuntos, las elipses indican la presencia de uno o más elementos similares a aquellos separados por las elipses.
Los sufijos alfabéticos en números de referencia para elementos similares no se pretenden para indicar la presencia de números particulares de los elementos. En esta divulgación, elementos que tienen nombres que comienzan con palabras ordinales (por ejemplo, "primero", "segundo", "tercero" y así sucesivamente) no implican necesariamente que los elementos tienen un orden particular. En su lugar, tales palabras ordinales pueden usarse simplemente para hacer referencia a diferentes elementos de la misma clase o similar.
Un fotograma de datos de vídeo está asociado con uno o más bloques de muestras (es decir, un bloque de muestra). Una muestra puede ser un valor que define un componente de un píxel, tal como un componente de luma o uno de croma del píxel. Un bloque de muestra puede hacer referencia a una matriz bidimensional de tales muestras. Cada uno de los bloques de muestra del fotograma pueden especificar diferentes componentes de los píxeles en el fotograma. Un codificador puede subdividir en primer lugar un fotograma en "cortes". Un corte es un término usado de manera general para hacer referencia a porciones del fotograma decodificables de manera independiente.
El codificador puede subdividir a continuación estos cortes en "bloques de árbol". Un bloque de árbol puede denominarse también como una unidad de codificación más grande (LCU). El codificador puede subdividir los bloques de árbol en una jerarquía de bloques de muestra progresivamente más pequeños, que, cuando se ilustran, pueden representarse como una estructura de árbol jerárquico, de ahí el nombre "bloques de árbol". Los nodos hoja de una estructura de árbol jerárquico de este tipo pueden corresponder a unidades de codificación (CU) en que estos nodos hoja definen un bloque o unidad de muestra que ha de codificarse. De esta manera, cada una de las CU está asociada con un bloque de muestra diferente del fotograma. La subdivisión de los bloques de árbol de esta manera puede posibilitar que el codificador capture movimiento de diferentes tamaños.
Cada una de las CU puede tener una o más unidades de predicción (PU). El bloque de muestra de una CU se subdivide en áreas de predicción asociadas con las PU de la CU. Un codificador puede realizar una operación de estimación de movimiento con respecto a las áreas de predicción del bloque de muestra para generar información de movimiento para cada área de predicción. La información de movimiento para cada una de las áreas de predicción se almacena como la PU. Un codificador o decodificador usa la información de movimiento determinada para las PU para generar un bloque de predicción para la CU. En esta divulgación, el término "codificador" puede hacer referencia a un codificador o un decodificador y el término "codificación" puede hacer referencia a codificación o decodificación.
En algunos casos, el codificador realiza una operación de suavizado para suavizar muestras en una zona de transición del bloque de predicción. La zona de transición tiene lugar en general en un límite entre muestras de bloque de predicción que están asociadas con diferentes PU. El codificador puede realizar esta operación de suavizado para mejorar la posterior codificación de datos residuales de la CU y/o la calidad de vídeo de los datos de vídeo resultante cuando se reconstruyen por un decodificador (donde tales datos de vídeo pueden denominarse como "datos de vídeo reconstruidos").
Aunque en algunos casos suavizar las muestras en la zona de transición mejora el rendimiento de compresión y/o la calidad visual de los datos de vídeo reconstruidos, en otras instancias, la realización de la operación de suavizado introduce efectos artificiales que degradan el rendimiento de compresión. Por lo tanto, la realización de la operación de suavizado puede dar como resultado datos de vídeo comprimidos que son mayores en tamaño debido a la introducción de datos residuales adicionales por la operación de suavizado. Además, estos efectos artificiales introducidos pueden degradar la percepción subjetiva de los datos de vídeo reconstruidos cuando se observa por un observador, lo que impacta la calidad subjetiva de vídeo. En algunas otras instancias, realizar esta operación de suavizado puede eliminar datos en el contenido de vídeo que pueden considerarse importantes para un fotograma particular lo que puede reducir adicionalmente la calidad visual e impactar en la reconstrucción de otros fotogramas que se basan en este fotograma para la reconstrucción del fotograma. La pérdida de datos a través de la realización de esta operación de suavizado, adicionalmente, puede ser irreversible, lo que significa que el decodificador puede ser incapaz de recuperar los datos perdidos.
Esta divulgación proporciona técnicas para realizar de manera adaptativa una operación de suavizado de tal manera que mejora potencialmente la calidad visual y el rendimiento de compresión. En lugar de realizar una operación de suavizado para suavizar muestras en zonas de transición de cada uno y todos los bloques de predicción, como es habitual en los codificadores convencionales, las técnicas posibilitan que un codificador realice de manera adaptativa la operación de suavizado en casos donde el codificador determina que sería más beneficioso, según se mide en términos de calidad visual o rendimiento de compresión. Por ejemplo, el codificador puede realizar de manera adaptativa la operación de suavizado basándose en un tamaño de una o más PU de una CU.
Con una zona de transición grande, pueden manipularse más muestras. Sin embargo, procesar demasiadas muestras puede introducir distorsión adicional. Con una zona de transición pequeña, puede limitarse el rendimiento de la operación de suavizado. De acuerdo con algunas técnicas descritas en esta divulgación, el codificador selecciona de manera adaptativa un tamaño de región vecina. El codificador usa regiones del tamaño de región vecina seleccionada para determinar si las muestras del bloque de predicción se encuentran dentro de la zona de transición. De esta manera, el codificador puede seleccionar el tamaño de la zona de transición para maximizar el rendimiento de la operación de suavizado.
La Figura 1 es un diagrama de bloques que ilustra un sistema 100 de codificación multimedia de ejemplo. El sistema 100 de codificación multimedia captura datos de vídeo, codifica los datos de vídeo capturados, transmite los datos de vídeo codificados, decodifica los datos de vídeo codificados y a continuación reproduce los datos de vídeo decodificados.
El sistema 100 de codificación multimedia comprende una unidad 102 de origen, una unidad 104 de codificación, una unidad 106 de decodificación y una unidad 108 de presentación. La unidad 102 de origen genera datos de vídeo. La unidad 104 de codificación codifica los datos de vídeo. La unidad 106 de decodificación decodifica los datos de vídeo codificados. La unidad 108 de presentación presenta los datos de vídeo decodificados.
Uno o más dispositivos informáticos implementan la unidad 102 de origen, la unidad 104 de codificación, la unidad 106 de decodificación y la unidad 108 de presentación. En esta divulgación, la expresión dispositivo informático abarca dispositivos físicos que procesan información. Tipos de dispositivos informáticos de ejemplo incluyen ordenadores personales, ordenadores portátiles, teléfonos móviles, teléfonos inteligentes, ordenadores de tableta, ordenadores dentro del coche, decodificadores de salón de televisión, sistemas de conferencia de vídeo, equipo de producción de vídeo, cámaras de vídeo, consolas de videojuegos u otros tipos de dispositivos que procesan información.
En algunos ejemplos, un único dispositivo informático puede implementar dos o más de la unidad 102 de origen, la unidad 104 de codificación, la unidad 106 de decodificación y la unidad 108 de presentación. Por ejemplo, un único dispositivo informático puede implementar la unidad 102 de origen y la unidad 104 de codificación. En este ejemplo, otro dispositivo informático puede implementar la unidad 106 de decodificación y la unidad 108 de presentación. En otros ejemplos, diferentes dispositivos informáticos implementan la unidad 102 de origen, la unidad 104 de codificación, la unidad 106 de decodificación y la unidad 108 de presentación.
En el ejemplo de la Figura 1, un dispositivo 103 informático implementa la unidad 104 de codificación y un dispositivo 107 informático implementa la unidad 106 de decodificación. En algunos ejemplos, el dispositivo 103 informático puede proporcionar funcionalidad además de la unidad 104 de codificación. Adicionalmente, en algunos ejemplos, el dispositivo 107 informático puede proporcionar funcionalidad además de la unidad 106 de decodificación.
Como se ha mencionado brevemente anteriormente, la unidad 102 de origen genera datos de vídeo que representan una serie de fotogramas. Un fotograma también se denomina comúnmente como una "instantánea". Cuando se presenta la serie de fotogramas en los datos de vídeo a un usuario en sucesión rápida (por ejemplo, 24 o 25 fotogramas por segundo), el usuario puede percibir objetos en los fotogramas que están en movimiento.
La Figura 2 es un diagrama conceptual que ilustra una serie de ejemplo de los fotogramas 200A a 200P en datos de vídeo. Esta divulgación hace referencia de manera colectiva a los fotogramas 200A a 200P como los "fotogramas 200". Los datos de vídeo representan escenas de una carrera de bicicletas. Los fotogramas en las filas 202 y 204 muestran una escena de una persona pedaleando una bicicleta. Los fotogramas en la fila 206 muestran dos comentadores sentados detrás de una mesa. Los fotogramas en la fila 208 muestran una escena de corredores de bicicleta desde arriba. Cada fotograma dentro de una escena puede diferir ligeramente del fotograma anterior. Presentando los fotogramas 200 en sucesión rápida, los usuarios pueden percibir el movimiento en estas escenas.
Se hace ahora referencia continuada al ejemplo de la Figura 1. En diversos ejemplos, la unidad 102 de origen genera los datos de vídeo de diversas maneras. Por ejemplo, la unidad 102 de origen puede comprender una cámara de vídeo. En este ejemplo, la cámara de vídeo captura imágenes de un entorno visible. En otro ejemplo, la unidad 102 de origen puede comprender uno o más sensores para generación de imágenes médicas, industriales o científicas. Tales sensores pueden incluir detectores de rayos x, sensores de formación de imágenes por resonancia magnética, detectores de partículas y así sucesivamente. En otro ejemplo más, la unidad 102 de origen puede comprender un sistema de animación. En este ejemplo, uno o más usuarios pueden usar el sistema de animación para dibujar, perfilar, programar o diseñar de otra manera el contenido de los datos de vídeo a partir de sus imaginaciones.
La unidad 104 de codificación recibe los datos de vídeo generados por la unidad 102 de origen. La unidad 104 de codificación codifica los datos de vídeo de manera que menos datos representan la serie de fotogramas en los datos de vídeo. En algunos casos, puede ser necesaria la codificación de los datos de vídeo de esta manera para garantizar que los datos de vídeo pueden almacenarse en un tipo dado de medio legible por ordenador, tal como un DVD o CD-ROM. Adicionalmente, en algunos casos, puede ser necesaria la codificación de los datos de vídeo de esta manera para garantizar que los datos de vídeo pueden transmitirse de manera eficaz a través de una red de comunicación, tal como internet.
La unidad 104 de codificación puede codificar datos de vídeo, que a menudo se expresan como una secuencia o serie de fotogramas de vídeo. Para codificar los datos de vídeo, la unidad 104 de codificación puede dividir estos fotogramas en porciones que pueden decodificarse independientemente (que se denominan comúnmente como "cortes"), que, a su vez, la unidad 104 de codificación puede dividir en bloques de árbol. Estos bloques de árbol pueden experimentar una forma de división de árbol cuádruple jerárquica recursiva. La unidad 104 de codificación puede realizar esta división para generar una estructura de datos similar a árbol jerárquica, denominándose el nodo raíz como un "bloque de árbol". Los nodos hoja de esta estructura de datos similar a árbol jerárquica pueden denominarse como "nodos de codificación". Una "unidad de codificación" o "CU" incluye el nodo de codificación, así como otros tipos de información, que incluyen información de movimiento e información de transformada. Cada nodo de codificación identifica un bloque de muestra dentro de un bloque de árbol. En esta divulgación, el bloque de muestra identificado por un nodo de codificación asociado con una CU puede denominarse como el bloque de muestra de la CU.
La unidad 104 de codificación puede usar modos de subdivisión rectangular y/o geométrica para subdividir el bloque de muestra de una CU en áreas de predicción. Cuando la unidad 104 de codificación usa un modo de subdivisión geométrica para subdividir el bloque de muestra de una CU, un límite entre las áreas de partición puede no cumplir los bordes del bloque de muestra en ángulos rectos. La unidad 104 de codificación puede realizar una forma de estimación de movimiento con respecto a cada área de predicción para generar información de movimiento, tal como un vector de movimiento, para cada área de predicción. Una "unidad de predicción" o "PU" de una CU puede contener información que indica un área de predicción de la CU, la información de movimiento para el área de predicción y/u otra información con respecto al área de predicción. La unidad 104 de codificación puede usar la información de movimiento para generar un bloque de predicción.
De acuerdo con las técnicas de esta divulgación, la unidad 104 de codificación puede hacer una determinación basándose en un tamaño de una primera PU de la CU de si realizar una operación de suavizado. La zona de transición tiene lugar en un límite entre muestras del bloque de predicción asociado con la primera PU de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU. Después de que la unidad 104 de codificación hace la determinación para realizar la operación de suavizado, la unidad 104 de codificación puede realizar la operación de suavizado para suavizar las muestras en la zona de transición del bloque de predicción.
Adicionalmente, de acuerdo con las técnicas de esta divulgación, la unidad 104 de codificación puede determinar si las muestras del bloque de predicción están en la zona de transición seleccionando un tamaño de región vecina. Después de seleccionar el tamaño de región vecina, la unidad 104 de codificación puede identificar muestras en la zona de transición del bloque de predicción. La zona de transición incluye una muestra asociada con una primera PU de la CU cuando una región vecina contiene la muestra y también contiene una muestra del bloque de predicción que está asociada con una segunda PU de la CU. La región vecina tiene el tamaño de región vecina seleccionada.
La unidad 104 de codificación a continuación determina datos residuales comparando el bloque de muestra original de la CU al bloque de predicción. Después de determinar estos datos residuales, la unidad 104 de codificación puede aplicar una transformada a datos residuales. Por lo tanto, la unidad 104 de codificación aplica la operación de suavizado a las muestras en la zona de transición del bloque de predicción antes de aplicar la transformada a los datos residuales derivados del bloque de predicción. Para transformar estos datos residuales, la unidad 104 de codificación puede subdividir los datos residuales en una o más áreas de transformada. La unidad 104 de codificación a continuación aplica una o más transformadas a las áreas de transformada de los datos residuales para generar datos residuales transformados, que pueden denominarse también como un "bloque de coeficiente de transformada". Este bloque de coeficiente de transformada típicamente expresa los datos residuales como un bloque de coeficientes de transformada. Los datos residuales transformados a continuación se almacenan a una unidad de transformada (TU) de la correspondiente CU. Por lo tanto, una CU comprende un nodo de codificación o bloque de muestra, una TU y una CU, así como, cualquier otro elemento de sintaxis que pueda ser necesario para decodificar los datos residuales transformados.
La unidad 106 de decodificación recibe datos de vídeo codificados. En diversos ejemplos, la unidad 106 de decodificación puede recibir los datos de vídeo codificados de diversas maneras. Por ejemplo, la unidad 106 de decodificación puede recibir un medio legible por ordenador, tal como un DVD, que almacena los datos de vídeo. En otro ejemplo, la unidad 106 de decodificación puede recibir los datos de vídeo codificados de un medio de comunicación, tal como internet, una red de área local (LAN), un cable conectado a otro dispositivo informático o un enlace de interconexión en red inalámbrica.
Después de recibir los datos de vídeo codificados, la unidad 106 de decodificación decodifica los datos de vídeo codificados. Cuando la unidad 106 de decodificación decodifica los datos de vídeo codificados, la unidad 106 de decodificación puede generar un bloque de predicción para una CU de un fotograma en los datos de vídeo. La unidad 106 de decodificación puede a continuación determinar si realizar una operación de suavizado en muestras en la zona de transición del bloque de predicción. La zona de transición del bloque previsto puede ser en un límite entre muestras del bloque de predicción asociado con una primera PU de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU. Después de que la unidad 106 de decodificación hace la determinación para realizar la operación de suavizado en las muestras en la zona de transición, la unidad 106 de decodificación realiza la operación de suavizado para suavizar las muestras en la zona de transición del bloque de predicción.
Adicionalmente, de acuerdo con las técnicas de esta divulgación, la unidad 106 de decodificación puede determinar si las muestras del bloque de predicción están en la zona de transición seleccionando un tamaño de región vecina. Después de seleccionar el tamaño de región vecina, la unidad 106 de decodificación puede identificar muestras en la zona de transición del bloque de predicción. La zona de transición incluye una muestra asociada con una primera PU de la CU cuando una región vecina contiene la muestra y también contiene una muestra del bloque de predicción que está asociada con una segunda PU de la CU. La región vecina tiene el tamaño de región vecina seleccionada.
La unidad 108 de presentación recibe los datos de vídeo decodificados desde la unidad 106 de decodificación. En diversos ejemplos, la unidad 108 de presentación recibe los datos de vídeo decodificados de diversas maneras. Por ejemplo, cuando un único dispositivo informático proporciona a la unidad 106 de decodificación y al sistema 108 de presentación, la unidad 108 de presentación puede recibir los datos de vídeo decodificados mediante uno o más medios de comunicación internos, tales como cables o buses. En otro ejemplo, la unidad 108 de presentación puede recibir los datos de vídeo decodificados de uno o más medios legibles por ordenador, tales como una conexión de red, DVD, CD-ROM, dispositivo de memoria de estado sólido y así sucesivamente. Después de recibir los datos de vídeo decodificados, la unidad 108 de presentación presenta los fotogramas en los datos de vídeo decodificados a uno o más usuarios.
La Figura 3 es un diagrama de bloques que ilustra una configuración de ejemplo de la unidad 104 de codificación. En el ejemplo de la Figura 3, la unidad 104 de codificación proporciona una unidad 302 de selección de modo, una unidad 304 de inter-predicción, una unidad 308 de intra-predicción, una unidad 310 de generación residual, un módulo 312 de transformada, una unidad 314 de cuantificación, una unidad 316 de codificación por entropía, una unidad 318 de cuantificación inversa, una unidad 320 de transformada inversa, una unidad 322 de reconstrucción y un almacén 324 de fotogramas de referencia. Los lectores entenderán que algunos ejemplos de la unidad 104 de codificación pueden comprender más, menos o diferentes unidades.
En diversos ejemplos, la unidad 104 de codificación implementa la unidad 302 de selección de modo, la unidad 304 de inter-predicción, la unidad 308 de intra-predicción, la unidad 310 de generación residual, el módulo 312 de transformada, la unidad 314 de cuantificación, la unidad 316 de codificación por entropía, la unidad 318 de cuantificación inversa, la unidad 320 de transformada inversa, la unidad 322 de reconstrucción y el almacén 324 de fotogramas de referencia de diversas maneras. Por ejemplo, el uno o más dispositivos informáticos que implementan la unidad 104 de codificación pueden implementar una o más de estas unidades cuando los procesadores del uno o más dispositivos informáticos ejecutan ciertas instrucciones legibles por ordenador almacenadas en uno o más medios legibles por ordenador. En este ejemplo, estas unidades o módulos pueden no implementarse como piezas modulares discretas de software informático. En otro ejemplo, el uno o más dispositivos informáticos que implementan la unidad 104 de codificación pueden comprender uno o más circuitos integrados específicos de la aplicación (ASIC) que implementan la funcionalidad de una o más de estas unidades. En algunos ejemplos, la funcionalidad de estas unidades puede proporcionarse por dispositivos informáticos separados.
La unidad 104 de codificación recibe datos que representan fotogramas de datos de vídeo. Cuando la unidad 104 de codificación recibe datos que representan un fotograma, la unidad 104 de codificación codifica el fotograma. Para facilidad de explicación, esta divulgación se refiere al fotograma que se codifica como el fotograma de origen. Los datos que representan el fotograma de origen comprenden uno o más bloques de muestras.
Para codificar el fotograma de origen, la unidad 302 de selección de modo subdivide un bloque de muestra del fotograma entre una pluralidad de bloques de árbol. En algunos casos, un bloque de árbol puede ser un bloque de NxN muestras de luma y dos correspondientes bloques de muestras de croma. En algunos ejemplos, un bloque es una matriz bidimensional de muestras o coeficientes de transformada. En otras instancias, un bloque de árbol puede ser un bloque de muestras de luma o una matriz de muestras de croma.
La unidad 302 de selección de modo puede generar un árbol cuádruple para cada uno de los bloques de árbol. El árbol cuádruple para un árbol de bloque comprende una jerarquía de nodos. Inicialmente, el árbol cuádruple del bloque de árbol dado únicamente comprende un nodo raíz. El nodo raíz corresponde al bloque de árbol dado. La unidad 302 de selección de modo puede subdividir el bloque de árbol dado en múltiples bloques de muestra más pequeños. Cuando la unidad 302 de selección de modo subdivide el bloque de árbol dado en múltiples bloques de muestra más pequeños, la unidad 302 de selección de modo añade nodos hijo al árbol cuádruple del bloque de árbol dado. Cada uno de los nodos hijo corresponde a uno diferente de los bloques de muestra más pequeños. En algunos ejemplos, la unidad 302 de selección de modo puede subdividir uno o más de los bloques de muestra más pequeños en bloques de muestra aún más pequeños. Cuando la unidad 302 de selección de modo subdivide unos bloques de muestra más pequeños en bloques de muestra aún más pequeños, la unidad 302 de selección de modo puede añadir nodos nietos al árbol cuádruple del bloque de árbol dado. Cada uno de los nodos nieto corresponda a uno de los bloques de muestra aún más pequeños. Los nodos nieto son hijos de los nodos hijo. La unidad 302 de selección de modo puede continuar subdividiendo el bloque de árbol dado y generar nodos en el bloque de árbol del bloque de árbol dado según sea apropiado, hasta un límite preconfigurado. Los nodos en el árbol cuádruple que no tienen hijos (es decir, nodos hoja) se denominan en el presente documento como nodos de codificación.
Cada uno de los nodos de codificación corresponde a una CU diferente. Un nodo de codificación de una CU es un nodo raíz de un árbol de predicción y un árbol de transformada. El árbol de predicción almacena información de las PU de la CU. Por ejemplo, el árbol de predicción puede especificar tamaños y posiciones de áreas de predicción de las PU. Las PU de la CU pueden comprender también datos de predicción asociados adicionales. El árbol de transformada almacena información con respecto a las TU de la CU. Por ejemplo, el árbol de transformada puede especificar tamaños y posiciones del área de transformada de las TU. Las TU de la CU pueden comprender también datos de transformada asociados adicionales.
La Figura 4 es un diagrama conceptual que ilustra el fotograma 200A de ejemplo subdividido en los bloques 400A a 400P de árbol (de manera colectiva, los "bloques 400 de árbol"). Cada uno de bloques 400 de árbol es cuadrado y tiene el mismo tamaño. Por ejemplo, los bloques de muestra de los bloques 400 de árbol pueden ser 32 muestras a lo ancho por 32 muestras a lo alto (es decir, 32x32). En otro ejemplo, los bloques de muestra de los bloques 400 de árbol pueden ser 64 muestras de ancho por 64 muestras de alto (es decir, 64x64).
La Figura 5 es un diagrama conceptual que ilustra una subdivisión de ejemplo adicional de bloques de árbol 400. En el ejemplo de la Figura 5, la unidad 302 de selección de modo ha subdividido el bloque de muestra del bloque de árbol 400J en cuatro bloques 500A a 500D de muestra más pequeños. Adicionalmente, en el ejemplo de la Figura 5, la unidad 302 de selección de modo ha subdividido el bloque 400D de muestra en cuatro bloques 502A a 504D de muestra. La unidad 302 de selección de modo ha subdividido adicionalmente el bloque 502A de muestra en cuatro bloques 504A a 504D de muestra más.
Se hace ahora referencia continuada al ejemplo de la Figura 3. Después de que la unidad 302 de selección de modo genera un árbol cuádruple para un bloque de árbol, la unidad 304 de inter-predicción realiza una operación de codificación de inter-fotograma para cada CU del bloque de árbol. Cuando la unidad 304 de inter-predicción realiza la operación de codificación inter-fotograma para una CU, la unidad 304 de inter-predicción usa modos de subdivisión rectangular y/o geométrica para subdividir el bloque de muestra de la CU en áreas de predicción. Las PU de la CU especifican estas áreas de predicción.
Después de que la unidad 304 de inter-predicción usa un modo de subdivisión dado para subdividir el bloque de muestra en dos o más áreas de predicción, la unidad 304 de inter-predicción puede realizar una operación de estimación de movimiento que genera información de movimiento para las PU asociadas con estas áreas de predicción. Durante la operación de estimación de movimiento, la unidad 304 de inter-predicción busca un fotograma de referencia para muestras de referencia para las PU. Una muestra de referencia para una PU es una porción de un fotograma de referencia que corresponde a las muestras en el área de predicción de la PU. La unidad 304 de inter-predicción genera información de movimiento para una PU para indicar la muestra de referencia para la PU.
La unidad 304 de inter-predicción usa las muestras de referencia para las PU de una CU para generar un bloque de predicción para la CU. El bloque de predicción de una CU es un bloque de muestras previstas. El bloque de predicción para una CU puede diferir en cierto modo del bloque de muestra de la CU. Por ejemplo, las muestras en el bloque de predicción pueden tener colores o brillos ligeramente diferentes de las correspondientes muestras del bloque de muestra de la CU.
De acuerdo con las técnicas de esta divulgación, la unidad 304 de inter-predicción puede hacer una determinación de si realizar una operación de suavizado en muestras en una zona de transición del bloque de predicción. Si la unidad 304 de inter-predicción hace la determinación para realizar la operación de suavizado en las muestras en la zona de transición, la unidad 304 de inter-predicción realiza la operación de suavizado para suavizar las muestras en la zona de transición. Adicionalmente, la unidad 304 de inter-predicción puede identificar de manera adaptativa muestras en la zona de transición del bloque de predicción. Por ejemplo, la unidad 304 de inter-predicción puede seleccionar un tamaño de región vecina. Después de seleccionar el tamaño de región vecina, la unidad 304 de inter­ predicción puede identificar muestras en la zona de transición. En este ejemplo, la zona de transición incluye una muestra asociada con una primera PU de la CU cuando una región vecina contiene la muestra y también contiene una muestra del bloque de predicción que está asociada con una segunda PU de la CU. La región vecina tiene el tamaño de región vecina seleccionada.
La unidad 308 de intra-predicción puede usar muestras en los bloques de muestra de otras CU del fotograma de origen para generar un bloque de predicción para la CU. En diversos ejemplos, la unidad 308 de intra-predicción genera el bloque de predicción de diversas maneras. Por ejemplo, la unidad 308 de intra-predicción puede generar el bloque de predicción de la CU de manera que las muestras en CU vecinas se extienden horizontalmente a través o verticalmente hacia abajo a través del bloque de predicción. La unidad 308 de intra-predicción puede seleccionar también un modo de intra-predicción que corresponde mejor al bloque de muestra de la CU.
Después de que la unidad de inter-predicción 306 y la unidad 308 de intra-predicción generan bloques de predicción para la CU, la unidad 302 de selección de modo puede seleccionar uno de los bloques de predicción para la CU. Si la unidad 302 de selección de modo selecciona un bloque de predicción generado por la unidad 308 de intrapredicción, la unidad 302 de selección de modo puede añadir un elemento de sintaxis al nodo de codificación de la CU para indicar el modo de intra-predicción que usa la unidad de intra-predicción 308 cuando se genera el bloque de predicción seleccionado. Si la unidad 302 de selección de modo selecciona un bloque de predicción generado por la unidad 304 de inter-predicción, la unidad 302 de selección de modo puede añadir un elemento de sintaxis al nodo de codificación para la CU que indica que se usó la inter-predicción para codificar la CU. Además, la unidad 302 de selección de modo puede añadir elementos de sintaxis al árbol de predicción de la CU. Por ejemplo, la unidad 302 de selección de modo puede añadir elementos de sintaxis al árbol de predicción que indican los tamaños y ubicaciones de las PU de la CU, vectores de movimiento para las PU y otros datos generados durante la operación de codificación inter-fotograma. Adicionalmente, la unidad 302 de selección de modo puede añadir elementos de sintaxis al árbol de transformada de la CU. Por ejemplo, la unidad 302 de selección de modo puede añadir elementos de sintaxis al árbol de transformada que indican los tamaños y ubicaciones de las TU de la CU.
En algunos ejemplos, un elemento de sintaxis es un elemento de datos representado en un flujo de bits. Un flujo de bits puede ser una secuencia de bits que forma una representación de instantáneas codificadas y datos asociados que forman una o más secuencias de vídeo codificadas. Una secuencia de vídeo codificada puede ser una secuencia de unidades de acceso. Una unidad de acceso puede ser un conjunto de unidades de Capa de Abstracción de Red (NAL) que son consecutivas en orden de decodificación y contienen exactamente una instantánea codificada primaria. Una unidad de NAL puede ser una estructura de sintaxis que contiene una indicación del tipo de datos a seguir y bytes que contienen esos datos en forma de una carga útil de secuencia de bytes sin procesar intercalados según sea necesario con bits de prevención de emulación. Una instantánea codificada primaria puede ser una representación codificada de una instantánea que va a usarse por un proceso de decodificación para un flujo de bits.
Después de que la unidad 302 de selección de modo selecciona un bloque de predicción de la CU, la unidad 310 de generación residual puede usar el bloque de muestra original de la CU y el bloque de predicción seleccionado de la CU para generar datos residuales para la CU. En algunos ejemplos, los datos residuales para la CU pueden estar dispuestos como una matriz bidimensional de los datos residuales (es decir, un bloque residual). Los datos residuales para la CU pueden representar las diferencias entre el bloque de muestra original de la CU y el bloque de predicción de la CU. En diversos ejemplos, la unidad 310 de generación residual puede generar los datos residuales de diversas maneras. Por ejemplo, la unidad 310 de generación residual puede generar los datos residuales para la CU restando las muestras en el bloque de predicción de la CU de las muestras en el bloque de muestra de la Cu.
Como se ha mencionado brevemente anteriormente, cada CU tiene una o más TU. Una unidad de transformada puede comprender un árbol de transformada y datos de transformada asociados. El árbol de transformada puede especificar los tamaños y posiciones de áreas de transformada. Por ejemplo, el árbol de transformada puede indicar la ubicación de una esquina superior izquierda de un área de transformada. En este ejemplo, el tamaño del área de transformada puede derivarse de una profundidad de un nodo correspondiente en el árbol de transformada.
Cuando la unidad 310 de generación residual genera datos residuales para la CU, el módulo 312 de transformada puede realizar una operación de transformada para cada TU de la CU. Cuando el módulo 312 de transformada realiza la operación de transformada para una TU de la CU, el módulo 312 de transformada transforma muestras aplicables de los datos residuales de un dominio espacial a un dominio de la frecuencia. El módulo 312 de transformada puede almacenar muestras en el dominio de la frecuencia como un bloque de coeficientes de transformada. Las muestras aplicables de los datos residuales pueden incluir muestras de los datos residuales en el área de transformada especificados por la TU. El bloque de coeficientes de transformada es una matriz bidimensional de coeficientes de transformada. En algunos ejemplos, un coeficiente de transformada puede ser una cantidad escalar, considerada que se encuentra en un dominio de frecuencia, que está asociada con un índice de frecuencia unidimensional o bidimensional particular en una parte de transformada inversa de un proceso de decodificación.
Cuando el módulo 312 de transformada realiza la operación de transformada en muestras de los datos residuales, el módulo 312 de transformada aplica una transformación matemática a las muestras. Por ejemplo, el módulo 312 de transformada puede realizar una Transformada de Coseno Discreta (DCT) en las muestras para transformar las muestras del dominio espacial al dominio de la frecuencia.
El módulo 312 de transformada puede proporcionar el bloque de coeficiente de transformada resultante a la unidad 314 de cuantificación. La unidad 314 de cuantificación puede realizar una operación de cuantificación en el bloque de coeficientes de transformada. Cuando la unidad 314 de cuantificación realiza la operación de cuantificación, la unidad 314 de cuantificación puede cuantificar cada uno de los coeficientes de transformada en el bloque de coeficientes de transformada, generando de esta manera un bloque de coeficiente de transformada cuantificado. El bloque de coeficientes de transformada cuantificados es una matriz bidimensional de coeficientes de transformada cuantificados. En diversos ejemplos, la unidad 314 de cuantificación realiza diversas operaciones de cuantificación. Por ejemplo, la unidad 314 de cuantificación puede realizar una operación de cuantificación que cuantifica los coeficientes de transformada dividiendo los coeficientes de transformada entre un parámetro de cuantificación y a continuación recortando los cocientes resultantes.
Después de que la unidad 314 de cuantificación realiza la operación de cuantificación en los bloques de coeficientes de transformada de la CU, la unidad 316 de codificación por entropía realiza una operación de codificación por entropía en el bloque de coeficientes de transformada cuantificados de la CU, en el nodo de codificación de la CU, en el árbol de predicción de la CU y en el árbol de transformada de la CU. La unidad 316 de codificación por entropía genera datos codificados por entropía para la CU como resultado de la realización de esta operación de codificación por entropía. En algunos casos, cuando la unidad 316 de codificación por entropía realiza la operación de codificación por entropía, la unidad 314 de cuantificación puede reducir el número de bits necesarios para representar los datos de la CU. En diversos casos, la unidad 316 de codificación por entropía puede realizar diversas operaciones de codificación por entropía en los datos de la CU. Por ejemplo, la unidad 316 de codificación por entropía puede realizar una operación de codificación de longitud variable según contexto (CAVLC) o una operación de codificación binaria aritmética adaptativa según contexto (CABAC) en los datos de la CU.
La unidad 104 de codificación genera un flujo de bits que incluye datos codificados por entropía para la CU. En diversos ejemplos, la unidad 104 de codificación puede generar diversos tipos de flujos de bits que incluyen los datos codificados por entropía para la CU. Por ejemplo, la unidad 104 de codificación puede emitir un flujo de unidad de NAL. En este ejemplo, el flujo de unidad de NAL comprende una secuencia de estructuras de sintaxis denominadas unidades de NAL. Las unidades de NAL se ordenen en orden de decodificación. La una o más de las unidades de NAL pueden incluir los datos codificados por entropía para la CU. En otro ejemplo, la unidad 104 de codificación puede emitir un flujo de bytes. La unidad 104 de codificación construye el flujo de bytes desde un flujo de unidad de NAL ordenando unidades de NAL en orden de decodificación y prefijando cada unidad de NAL con un prefijo de código de inicio y cero o más bytes de valor cero para formar un flujo de bytes.
La unidad 318 de cuantificación inversa realiza una operación de cuantificación inversa en bloques de coeficientes de transformada cuantificados. La operación de cuantificación inversa invierte al menos parcialmente el efecto de la operación de cuantificación realizada por la unidad 314 de cuantificación, generando de esta manera bloques de coeficientes de transformada.
La unidad 320 de transformada inversa realiza una operación de transformada inversa en bloques de coeficientes de transformada generados por la unidad 318 de cuantificación inversa. Cuando la unidad 320 de transformada inversa realiza la operación de transformada inversa, la unidad 320 de transformada inversa invierte el efecto de la operación de transformación realizada por el módulo 312 de transformada, generando de esta manera datos residuales reconstruidos.
La unidad 322 de reconstrucción realiza una operación de reconstrucción que genera bloques de muestra reconstruidos. La unidad 322 de reconstrucción genera los bloques de muestra reconstruidos basándose en los datos residuales reconstruidos y los bloques de predicción generados por la unidad 304 de inter-predicción o la unidad 308 de intra-predicción. En diversos ejemplos, la unidad 322 de reconstrucción realiza diversas operaciones de reconstrucción. Por ejemplo, la unidad 322 de reconstrucción realiza la operación de reconstrucción añadiendo las muestras en los datos residuales reconstruidos con correspondientes muestras en los bloques de predicción. El almacén 324 de fotogramas de referencia almacena los bloques de muestra reconstruidos. Después de que la unidad 104 de codificación tiene datos codificados para cada CU del fotograma de origen, la unidad 104 de codificación ha generado bloques de muestra reconstruidos para cada CU en el fotograma de origen. Por lo tanto, el almacén 324 de fotogramas de referencia almacena una reconstrucción completa del bloque de muestra del fotograma de origen. La unidad 302 de selección de modo puede proporcionar las reconstrucciones de los bloques de muestra del fotograma de origen a la unidad 304 de inter-predicción como un fotograma de referencia.
La Figura 6 es un diagrama de bloques que ilustra una configuración de ejemplo de la unidad 304 de inter­ predicción. En el ejemplo de la Figura 6, la unidad 304 de inter-predicción comprende una unidad 602 de estimación de movimiento, una unidad 604 de compensación de movimiento y una unidad 606 de generación de TU. La unidad 604 de compensación de movimiento comprende una unidad 608 de suavizado. Los lectores entenderán que otras configuraciones de ejemplo de unidad 304 de inter-predicción pueden incluir más, menos o diferentes componentes. La unidad 602 de estimación de movimiento puede realizar una operación de estimación de movimiento para cada PU de una CU. La unidad 604 de compensación de movimiento puede realizar una operación de compensación de movimiento que genera un bloque de predicción para la CU. La unidad 606 de generación de TU puede realizar una operación de selección de unidad de transformada que genera las TU de la CU. De acuerdo con las técnicas de esta divulgación, la unidad 608 de suavizado puede realizar de manera adaptativa una operación de suavizado en muestras en una zona de transición del bloque de predicción. Además, la unidad 608 de suavizado puede determinar qué muestras del bloque de predicción están en la zona de transición. Aunque las Figuras 12-21 se describen como operaciones realizadas por la unidad 608 de suavizado, las operaciones descritas en las Figuras 12­ 21 pueden realizarse por una unidad de compensación de movimiento de la unidad 106 de decodificación.
Cuando la unidad 602 de estimación de movimiento realiza la operación de estimación de movimiento para la CU, la unidad 602 de estimación de movimiento puede generar uno o más árboles de predicción. Cada uno de los árboles de predicción pueden estar asociados con una diferente PU de la CU. Cada uno de los árboles de predicción pueden especificar una posición y un tamaño de un área de predicción. Para facilidad de explicación, esta divulgación puede hacer referencia a la posición o tamaño del área de predicción especificada por el árbol de predicción de una PU como la posición o tamaño de la PU.
La unidad 602 de estimación de movimiento puede buscar uno o más fotogramas de referencia para muestras de referencia. Las muestras de referencia de una PU pueden ser áreas de los fotogramas de referencia que corresponden visualmente a porciones del bloque de muestra de la CU que caen dentro del área de predicción de la PU. Si la unidad 602 de estimación de movimiento halla una muestra de referencia de este tipo para una de las PU, la unidad 602 de estimación de movimiento puede generar un vector de movimiento. El vector de movimiento es un conjunto de datos que describe una diferencia entre la posición espacial de la muestra de referencia para una PU y la posición espacial de la PU. Por ejemplo, el vector de movimiento puede indicar que la muestra de referencia de una PU se encuentra cinco muestras más alta y tres muestras a la derecha de la PU. Adicionalmente, en algunas circunstancias, la unidad 602 de estimación de movimiento puede no poder identificar una muestra de referencia para una PU. En tales circunstancias, la unidad 602 de estimación de movimiento puede seleccionar un modo de salto o un modo directo para la PU.
En algunos ejemplos, en lugar de realizar una búsqueda para una muestra de referencia de una PU, la unidad 602 de estimación de movimiento puede predecir un vector de movimiento para la PU. En la realización de esta predicción de vector de movimiento, la unidad 602 de estimación de movimiento puede seleccionar uno de los vectores de movimiento determinados para las CU especialmente vecinas en el fotograma de origen o un vector de movimiento determinado para una CU coubicada en un fotograma de referencia. La unidad 602 de estimación de movimiento puede realizar predicción de vector de movimiento en lugar de buscar una muestra de referencia para reducir la complejidad asociada con la determinación de un vector de movimiento para cada partición.
La unidad 604 de compensación de movimiento usa los modos de inter-codificación de las PU para generar el bloque de predicción de la CU. Si la unidad 602 de estimación de movimiento seleccionó el modo de salto para una PU, la unidad 604 de compensación de movimiento puede generar el bloque de predicción de la CU de manera que las muestras en el bloque de predicción que están asociadas con la PU coinciden con muestras coubicadas en el fotograma de referencia. Si la unidad 602 de estimación de movimiento seleccionó el modo directo para una PU, la unidad 604 de compensación de movimiento puede generar el bloque de predicción de manera que las muestras en el bloque de predicción que están asociadas con la PU coinciden con muestras coubicadas en el bloque de muestra de la Cu. Si la unidad 602 de estimación de movimiento genera un vector de movimiento para una PU, la unidad 604 de compensación de movimiento puede generar el bloque de predicción de manera que las muestras en el bloque de predicción que están asociadas con la PU corresponden a muestras en una porción del fotograma de referencia indicado por el vector de movimiento. Si la unidad 602 de estimación de movimiento generó múltiples vectores de movimiento para una PU, la unidad 604 de compensación de movimiento puede generar el bloque de predicción de manera que las muestras en el bloque de predicción que están asociadas con la PU corresponden a muestras en porciones de múltiples fotogramas de referencia indicados por los vectores de movimiento de la PU.
La Figura 7 es un diagrama de bloques que ilustra una configuración de ejemplo de la unidad 106 de decodificación. Como se ilustra en el ejemplo de la Figura 7, la unidad 106 de decodificación implementa una unidad 700 de decodificación por entropía, una unidad 702 de compensación de movimiento, una unidad 704 de intra-predicción, una unidad 708 de cuantificación inversa, un módulo 710 de transformada inversa, una unidad 712 de reconstrucción y un almacén 714 de fotogramas de referencia. En diversos ejemplos, la unidad 106 de decodificación implementa estos componentes de diversas maneras. Por ejemplo, el uno o más dispositivos informáticos que proporcionan la unidad 1 0 6 de decodificación pueden implementar estas unidades cuando los procesadores de los dispositivos informáticos ejecutan ciertas instrucciones legibles por ordenador. En este ejemplo, estas unidades o módulos pueden no implementarse como piezas modulares discretas de software informático. En otro ejemplo, el uno o más dispositivos informáticos que implementan la unidad 106 de decodificación pueden comprender ASIC que proporcionan la funcionalidad de una o más de estas unidades.
La unidad 106 de decodificación recibe un flujo de bits codificado que representa datos de vídeo. El flujo de bits codificado puede comprender datos que representan fotogramas en los datos de vídeo. Por ejemplo, el flujo de bits codificado puede comprender datos que representan cada uno de los fotogramas 200 (Figura 2). Cuando la unidad 106 de decodificación recibe datos que representan un fotograma, la unidad 106 de decodificación decodifica los datos para reconstruir el fotograma. Para facilidad de explicación, esta divulgación puede hacer referencia a este fotograma como el fotograma de origen.
Cuando la unidad 106 de decodificación decodifica los datos para el fotograma de origen, la unidad 106 de decodificación recibe datos codificados para cada CU del fotograma de origen. Por ejemplo, la unidad 106 de decodificación puede recibir una versión codificada de un bloque de coeficiente de transformada cuantificado para la CU, una versión codificada del nodo de codificación de la CU, una versión codificada del árbol de predicción de la CU y una versión codificada del árbol de transformada de la CU. La unidad 106 de decodificación a continuación decodifica los datos de cada CU del fotograma de origen. Cuando la unidad 106 de decodificación decodifica los datos de una CU dada, la unidad 700 de decodificación por entropía recibe datos codificados para la CU dada. La unidad 700 de decodificación por entropía realiza una operación de decodificación por entropía en los datos codificados para la CU dada. La operación de decodificación por entropía invierte los efectos de la operación de codificación por entropía realizada por la unidad 316 de codificación por entropía (Figura 3).
La unidad 700 de decodificación por entropía proporciona el bloque de coeficiente de transformación cuantificado para la CU a la unidad 708 de cuantificación inversa. La unidad 700 de decodificación por entropía puede proporcionar datos de codificación para la CU, tal como el nodo de codificación, el árbol de predicción y el árbol de transformada de la CU, a la unidad 702 de compensación de movimiento y/o a la unidad 704 de intra-predicción.
Cuando la unidad 702 de compensación de movimiento recibe los datos de codificación para la CU, la unidad 702 de compensación de movimiento usa los datos de codificación para realizar una operación de compensación de movimiento que genera un bloque de predicción para la CU. Durante la operación de compensación de movimiento, la unidad 702 de compensación de movimiento puede recuperar uno o más fotogramas de referencia del almacén 714 de fotogramas de referencia. La unidad 702 de compensación de movimiento puede identificar a continuación muestras de referencia para las PU de la CU. Los vectores de movimiento para las PU identifican áreas dentro de los fotogramas de referencia como las muestras de referencia para las PU. Después de identificar las muestras de referencia para las PU de la CU, la unidad 702 de compensación de movimiento genera un bloque de predicción para la CU. En el bloque de predicción, las PU de la CU pueden contener las muestras de referencia de las PU.
De acuerdo con las técnicas de esta divulgación, la unidad 702 de compensación de movimiento puede realizar una operación que realiza de manera adaptativa una operación de suavizado en muestras en una zona de transición del bloque de predicción. Por ejemplo, la unidad 702 de compensación de movimiento puede realizar una de las operaciones de ejemplo ilustradas en las Figuras 12-18 y 20. Adicionalmente, en algunos casos, la unidad 702 de compensación de movimiento puede determinar qué muestras están dentro de la zona de transición. En algunos ejemplos, la unidad 702 de compensación de movimiento puede determinar qué muestras están dentro de la zona de transición realizando las operaciones de ejemplo ilustradas en las Figuras 20 y 21.
Cuando la unidad 704 de intra-predicción recibe los datos de codificación para la CU, la unidad 704 de intrapredicción usa los bloques de muestra reconstruidos de bloques de muestra decodificados previamente en el fotograma de origen para generar el bloque de predicción para la CU. La unidad 704 de intra-predicción puede modificar las muestras en el bloque de predicción de acuerdo con un modo de intra-predicción indicado.
La unidad 708 de cuantificación inversa recibe uno o más bloques de coeficientes de transformada cuantificados para cada CU. Cuando la unidad 708 de cuantificación inversa recibe un bloque de coeficiente de transformada cuantificado para una CU, la unidad 708 de cuantificación inversa realiza una operación de cuantificación inversa que invierte al menos parcialmente el efecto de la operación de cuantificación realizada por la unidad 314 de cuantificación (Figura 3), generando de esta manera un bloque de coeficiente de transformada no cuantificado para la CU.
El módulo 710 de transformada inversa realiza una operación de transformada inversa en bloques de coeficientes de transformada. La operación de transformada inversa puede invertir el efecto de la operación de transformación realizado por el módulo 312 de transformada (Figura 3), generando de esta manera datos residuales reconstruidos. El módulo 710 de transformada inversa proporciona los datos residuales reconstruidos a la unidad 712 de reconstrucción.
La unidad 712 de reconstrucción recibe bloques de predicción de la unidad 702 de compensación de movimiento y de la unidad 704 de intra-predicción. La unidad 712 de reconstrucción recibe también correspondientes datos residuales reconstruidos del módulo 710 de transformada inversa. La unidad 712 de reconstrucción realiza una operación de reconstrucción que usa datos residuales reconstruidos de una CU y un bloque de predicción para la CU para generar un bloque de muestra reconstruido para la CU. En diversos ejemplos, la unidad 712 de reconstrucción puede realizar diversas operaciones de reconstrucción. Por ejemplo, la unidad 712 de reconstrucción puede generar el bloque de muestra reconstruido de la CU añadiendo las muestras en los datos residuales reconstruidos de la CU con correspondientes muestras en el bloque de predicción de la CU.
Después de generar un bloque de muestra reconstruido para una CU, la unidad 712 de reconstrucción emite el bloque de muestra reconstruido. La unidad 712 de reconstrucción también proporciona el bloque de muestra reconstruido al almacén 714 de fotogramas de referencia. El almacén 714 de fotogramas de referencia almacena el bloque de muestra reconstruido. La unidad 702 de compensación de movimiento y/o la unidad de intra-predicción 704 pueden usar posteriormente el bloque de muestra reconstruido para generar bloques de predicción adicionales.
La Figura 8 es un diagrama de flujo que ilustra una operación 800 de codificación inter-fotograma de ejemplo realizada por la unidad 304 de inter-predicción. Después de que la unidad 104 de codificación inicia la operación 800 de codificación inter-fotograma, la unidad 602 de estimación de movimiento realiza una operación de estimación de movimiento en las PU de la CU (802). En algunos casos, la unidad 602 de estimación de movimiento puede realizar la operación de estimación de movimiento para una PU buscando dentro de un área de búsqueda de un fotograma de referencia para una muestra de referencia para la PU. La muestra de referencia para la PU puede ser una porción del fotograma de referencia que corresponde al área de predicción especificada por el árbol de predicción de la PU. Si la unidad 602 de estimación de movimiento halla una muestra de referencia para la PU, la unidad 602 de estimación de movimiento puede generar un vector de movimiento que indica una diferencia en la posición entre la PU y la muestra de referencia para la PU. En otras instancias, la unidad 602 de estimación de movimiento pueden predecir un vector de movimiento para la PU.
Dentro de esta estructura general, diversos ejemplos de la unidad 602 de estimación de movimiento pueden realizar la operación de estimación de movimiento de diversas maneras. Por ejemplo, diferentes ejemplos de la unidad 602 de estimación de movimiento pueden usar diferentes áreas de búsqueda cuando se busca una porción del fotograma de referencia que corresponde a una PU. En algunos de tales ejemplos, la unidad 104 de codificación tiene un parámetro de área de búsqueda que controla el tamaño del área de búsqueda usada por la unidad 602 de estimación de movimiento. El valor del parámetro de área de búsqueda puede establecerse por un usuario humano o por un programa informático.
Después de realizar la operación de estimación de movimiento en las PU de la CU, la unidad 604 de compensación de movimiento realiza una operación de compensación de movimiento para generar un bloque de predicción para la CU (804). Adicionalmente, durante la realización de la operación 800, la unidad 608 de suavizado puede realizar una operación que realiza de manera adaptativa una operación de suavizado en muestras en una zona de transición del bloque (806) de predicción. La operación de suavizado puede suavizar las muestras en una zona de transición del bloque de predicción. La zona de transición puede tener lugar en un límite entre muestras del bloque de predicción asociado con las diferentes PU de la CU. Por ejemplo, la zona de transición puede tener lugar en un límite entre muestras del bloque de predicción asociado con una primera PU de la CU y muestras del bloque de predicción asociado con una segunda PU. Una muestra del bloque de predicción puede estar asociada con una PU cuando la muestra está dentro de un área de predicción especificada por un árbol de predicción de la PU.
En algunos ejemplos, suavizar una muestra en el área de transición puede reducir diferencias entre la muestra y muestras que son vecinas a la muestra. Como se ha descrito en cualquier otra parte en esta divulgación, la unidad 608 de suavizado puede mejorar la eficacia de codificación y/o una apariencia visual del bloque de muestra decodificado de la Cu realizando la operación de suavizado. En diversos ejemplos, la unidad 608 de suavizado realiza diversas operaciones de suavizado. Las Figuras 12-18 y 20, descritas en detalle en cualquier otra parte en esta divulgación, ilustran operaciones de ejemplo realizadas por la unidad 608 de suavizado para suavizar de manera adaptativa muestras en las zonas de transiciones de bloques de predicción.
Además, la unidad 606 de generación de TU puede realizar una operación de selección de transformada para seleccionar tamaños de las TU para la CU (808). Como se ha analizado anteriormente, el módulo 312 de transformada puede recibir datos residuales para la CU. El módulo 312 de transformada puede a continuación realizar una operación de transformada en cada TU de la CU. Cuando el módulo 312 de transformada realiza la operación de transformada en una TU, el módulo 312 de transformada puede aplicar una transformada a muestras de los datos residuales que corresponden a la TU, generando de esta manera un bloque de coeficientes de transformada para la TU. Las muestras de los datos residuales pueden corresponder a una TU cuando las muestras están dentro del área de transformada especificada por el árbol de transformada de la TU. La unidad 320 de transformada inversa en la unidad 104 de codificación y el módulo 710 de transformada inversa en la unidad 106 de decodificación también usan transformadas que tienen los tamaños de transformada seleccionados cuando se transforman bloques de coeficientes de transformada en bloques de muestra.
Adicionalmente, la unidad 304 de inter-predicción puede generar elementos (810) de sintaxis de inter-predicción. Los elementos de sintaxis de inter-predicción pueden proporcionar información acerca de la CU y el bloque de predicción. Por ejemplo, los elementos de sintaxis de inter-predicción pueden incluir elementos de sintaxis que indican si la CU tiene más de una PU. En este ejemplo, si la CU tiene más de una PU, los elementos de sintaxis de inter-predicción pueden indicar también tamaños, formas y/o ubicaciones de las áreas de predicción de las PU. En otro ejemplo, los elementos de sintaxis de inter-predicción pueden especificar inter-modos de predicción para las PU de la CU. Adicionalmente, los elementos de sintaxis de inter-predicción pueden incluir datos basándose en vectores de movimiento para una o más de las PU de la CU. En otro ejemplo, los elementos de sintaxis de inter-predicción pueden indicar los tamaños y/o la ubicación de las TU de la CU. En algunos ejemplos, los elementos de sintaxis de conjunto de inter-predicción incluyen alguno o todos los elementos de sintaxis de inter-predicción especificados por la norma H.264 MPEG Parte 10.
Si la unidad 302 de selección de modo selecciona el bloque de predicción generado en la etapa 804, la unidad 304 de inter-predicción puede emitir el bloque de predicción a la unidad 310 de generación residual y a la unidad 322 de reconstrucción. Adicionalmente, si la unidad 302 de selección de modo selecciona el bloque de predicción generado en la etapa 804, la unidad 302 de selección de modo puede incluir los elementos de sintaxis de inter-predicción en el nodo de codificación, en el árbol de predicción y/o en el árbol de transformada de la CU.
La Figura 9 es un diagrama conceptual que ilustra modos de subdivisión rectangular de ejemplo. Como se ha explicado brevemente anteriormente, la unidad 602 de estimación de movimiento puede generar una o más PU para una CU. Cada una de las PU puede tener un árbol de predicción que especifica un tamaño y una posición de un área de predicción. Cada una de las áreas de predicción puede corresponder a una partición diferente del bloque de muestra de la CU. Para facilidad de explicación, esta divulgación puede explicar que una PU corresponde a una partición del bloque de muestra de una CU cuando el área de predicción especificada por el árbol de predicción de la PU corresponde a la partición del bloque de muestra de la CU.
En diversos ejemplos, la unidad 602 de estimación de movimiento puede usar diversos modos de subdivisión para generar las PU de la CU. Tales modos de subdivisión pueden incluir modos de subdivisión rectangular. En los modos de subdivisión rectangular, las PU corresponden a subdivisiones con forma rectangular del bloque de muestra de la CU. En algunos ejemplos, la unidad 602 de estimación de movimiento puede usar alguno o todos los modos de subdivisión rectangular definidos en la norma H.264 MPEG Parte 10.
El ejemplo de la Figura 9 ilustra los modos 900A-H de subdivisión rectangular (de manera colectiva, los "modos 900 de subdivisión rectangular"). En el modo 900A de subdivisión rectangular, la unidad 602 de estimación de movimiento genera una única PU para la CU. El área de predicción de esta PU es del mismo tamaño que el bloque de muestra de la CU. En el modo 900B de subdivisión rectangular, la unidad 602 de estimación de movimiento genera cuatro PU para la CU. Las PU generadas usando el modo 900B de subdivisión rectangular corresponden a cuatro subdivisiones con igual tamaño del bloque de muestra de la CU.
En los modos 900C a 900H de subdivisión rectangular, la unidad 602 de estimación de movimiento genera dos PU para la CU. Las PU generadas usando el modo 900C de subdivisión rectangular corresponden a subdivisiones horizontalmente divididas con igual tamaño del bloque de muestra de la CU. Las PU generadas usando el modo 900D de subdivisión rectangular corresponden a particiones verticalmente divididas con igual tamaño del bloque de muestra de la CU.
Las PU generadas usando el modo 900E de subdivisión rectangular corresponden a subdivisiones horizontalmente divididas del bloque de muestra en el que la partición inferior es mayor que la partición superior. En algunos ejemplos, la unidad 602 de estimación de movimiento puede subdividir el bloque de muestra horizontalmente en cualquier muestra en el bloque de muestra por encima de una línea media horizontal del bloque de muestra. Las PU generadas usando el modo 900F de subdivisión rectangular corresponden a subdivisiones horizontalmente divididas del bloque de muestra en las que la partición inferior es menor que la partición superior. En algunos ejemplos, la unidad 602 de estimación de movimiento puede subdividir el bloque de muestra horizontalmente en cualquier muestra en el bloque de muestra por debajo de una línea media horizontal del bloque de muestra.
Las PU generadas usando el modo 900G de subdivisión rectangular corresponden a particiones divididas verticalmente del bloque de muestra en las que la partición izquierda es menor que la partición derecha. En algunos ejemplos, la unidad 602 de estimación de movimiento puede subdividir el bloque de muestra verticalmente en cualquier muestra en el bloque de muestra a la izquierda de una línea media vertical del bloque de muestra. Las PU generadas usando el modo 900H de subdivisión rectangular corresponden a particiones divididas verticalmente del bloque de muestra en las que la partición izquierda es mayor que la partición derecha. En algunos ejemplos, la unidad 602 de estimación de movimiento puede subdividir el bloque de muestra verticalmente en cualquier muestra en el bloque de muestra a la derecha de una línea media vertical del bloque de muestra.
La Figura 10 es un diagrama conceptual que ilustra modos de subdivisión geométrica de ejemplo. En algunos ejemplos, la unidad 602 de estimación de movimiento usa un modo de subdivisión geométrica para generar dos PU para una CU. Cuando la unidad 602 de estimación de movimiento usa un modo de subdivisión geométrica para generar las PU para la CU, las PU corresponden a particiones del bloque de muestra de la CU cuyos límites no cumplen necesariamente los bordes del bloque de muestra en ángulos rectos.
En el ejemplo de la Figura 10, la unidad 602 de estimación de movimiento ha usado un modo de subdivisión geométrica para subdividir un bloque 1000 de muestra en una primera partición 1002 y en una segunda partición 1004. Una línea 1006 de subdivisión separa la primera partición 1002 y la segunda partición 1004. Para facilidad de explicación, la Figura 10 ilustra una línea media 1008 vertical y una línea media 1010 horizontal del bloque 1000 de muestra. Dos parámetros definen el modo de subdivisión geométrica usado para subdividir el bloque 1000 de muestra. En esta divulgación, estos dos parámetros se denominan como theta y ro. El parámetro theta indica un ángulo 1012 en el que se extiende una línea 1014 desde un punto central del bloque 1000 de muestra. El parámetro ro indica una longitud 1016 de la línea 1014. Por lo tanto, los parámetros theta y ro actúan como coordenadas polares para indicar un punto 1018 dentro de un bloque 1000 de muestra. La línea 1006 de subdivisión se define de manera que la línea 1006 de subdivisión se encuentra con la línea 1014 en un ángulo recto. En el ejemplo de la Figura 10, un ángulo 1020 en el que la línea 1006 de subdivisión se encuentra con un ángulo del bloque 1000 de muestra no es un ángulo recto. De esta manera, los parámetros theta y ro definen la ubicación de la línea 1006 de subdivisión. Usando diversos valores para los parámetros theta y ro, la unidad 602 de estimación de movimiento puede definir diversas líneas que subdividen el bloque 1000 de muestra.
La línea 1006 de subdivisión y la línea 1014 no están necesariamente visualmente presentes en el bloque 1000 de muestra y se muestran en la Figura 10 para ilustrar cómo el bloque 1000 de muestra puede subdividirse geométricamente.
La Figura 11 es un diagrama conceptual que ilustra una zona 1200 de transición de un bloque 1202 de predicción de una CU. En el ejemplo de la Figura 11, el bloque 1202 de predicción incluye las muestras 1204 asociadas con una primera PU de la CU y las muestras 1206 asociadas con una segunda PU de la CU. Una línea 1208 de subdivisión separa las muestras 1204 de las muestras 1206. La zona 1200 de transición es una porción del bloque 1202 de predicción que tiene lugar en un límite entre las muestras 1204 y las muestras 1206. En el ejemplo de la Figura 11, las muestras en la zona 1200 de transición se muestran como bloques.
Las Figuras 12-18 y 20, descritas en detalle a continuación, ilustran operaciones de ejemplo para suavizar de manera adaptativa muestras en las zonas de transición de los bloques de predicción. En cada una de estas operaciones de ejemplo, la unidad 608 de suavizado determina si realizar una operación de suavizado en las muestras en la zona de transición. En algunas circunstancias, la eficacia de codificación de una CU puede mejorarse suavizando muestras en la zona de transición. En otras circunstancias, la eficacia de codificación de la CU puede reducirse suavizando las muestras en la zona de transición. Por lo tanto, realizando de manera adaptativa una operación de suavizado en muestras en la zona de transición, la unidad 104 de codificación puede mejorar la eficacia de codificación de la CU.
La Figura 12 es un diagrama de flujo que ilustra una operación 1250 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 608 de suavizado puede realizar la operación 1250 como una alternativa a las operaciones de ejemplo ilustradas en las Figuras 13-18 y 20.
Como se ha analizado anteriormente, la unidad 310 de generación residual puede restar muestras del bloque de predicción de muestras de la CU para generar datos residuales. La unidad 304 de inter-predicción puede generar una o más TU para la CU. Cada una de las TU especifica un área de transformada. Los datos residuales de la CU se subdividen entre las TU. Para facilidad de explicación, esta divulgación puede describir porciones de los datos residuales de la CU dentro del área de transformada de una TU como si estuviera dentro de la TU. Para cada TU, el módulo 312 de transformada aplica una transformada a porciones de los datos residuales de la CU en la TU para generar un bloque de coeficientes de transformada para la TU.
Una TU de una CU puede abarcar dos o más PU de la CU cuando el área de transformada de la TU solapa con las áreas de predicción de las PU. Cuando una TU de una CU abarca dos o más PU de la CU, es más probable que haya discontinuidades agudas en el color o brillo entre muestras en lados opuestos de la línea de partición entre las PU. En algunos ejemplos, el módulo 312 de transformada genera un bloque de coeficientes de transformada que tienen coeficientes más significativos (es decir, distintos de cero) cuando el módulo 312 de transformada aplica transformadas a las TU que tienen muestras con discontinuidades agudas que cuando el módulo 312 de transformada aplica transformadas a las TU que no tienen muestras con discontinuidades agudas.
Aplicar un filtro de suavizado a muestras en la zona de transición puede reducir las discontinuidades en el color o en el brillo entre muestras en lados opuestos de la línea de partición entre porciones del bloque de predicción asociado con diferentes PU. Puesto que pueden reducirse las discontinuidades aplicando el filtro de suavizado, el módulo 312 de transformada puede generar un bloque de coeficientes de transformada que tiene menos coeficientes significativos.
Sin embargo, si la TU tiene lugar completamente dentro de una PU, aplicar un filtro de suavizado a las muestras en la TU puede aumentar las diferencias entre el bloque de predicción de la CU y el bloque de muestra original de la CU, dando como resultado datos residuales más complejos. El módulo 312 de transformada puede generar un bloque de coeficientes de transformada que tienen más coeficientes significativos para datos residuales más complejos.
Después de que la unidad 608 de suavizado inicia la operación 1250, la unidad 608 de suavizado determina si una TU de la CU abarca múltiples PU de la CU (1252). Si la unidad 608 de suavizado determina que una TU de la CU abarca múltiples PU de la CU, la unidad 608 de suavizado hace la determinación para realizar la operación de suavizado en muestras en la zona de transición del bloque de predicción de la CU. Por lo tanto, si la unidad 608 de suavizado determina que una TU de la CU abarca múltiples PU de la CU ("SÍ" de 1252), la unidad 608 de suavizado identifica muestras en una zona de transición del bloque de predicción de la CU (1254) y realiza la operación de suavizado en las muestras en la zona (1256) de transición. De otra manera, si la unidad 608 de suavizado determina que una TU no abarca múltiples PU ("NO" de 1252), la unidad 608 de suavizado no realiza la operación de suavizado en muestras en la zona (1258) de transición.
En diversos ejemplos, la unidad 608 de suavizado identifica las muestras en la zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar la operación de identificación de muestra de transición de ejemplo ilustrada en la Figura 20 o la operación de identificación de muestra de transición de ejemplo ilustrada en la Figura 21 para identificar muestras en la zona de transición.
En diversos ejemplos, la unidad 608 de suavizado puede realizar diversas operaciones de suavizado en las muestras en la zona de transición. Por ejemplo, la unidad 608 de suavizado puede realizar una operación de suavizado de Compensación de Movimiento de Bloque Solapado (OBMC) en las muestras en la zona de transición. En una operación de suavizado de OBMC, la unidad 608 de suavizado genera dos predicciones para cada una de las muestras en la zona de transición. La unidad 608 de suavizado genera la primera predicción para una muestra dada identificando una muestra de un fotograma de referencia indicado por un vector de movimiento de una de las PU. La unidad 608 de suavizado genera la segunda predicción para la muestra dada identificando una muestra del fotograma de referencia indicado por un vector de movimiento de la otra de las PU. Si una de las PU no tiene un vector de movimiento, la unidad 608 de suavizado puede generar una predicción identificando una muestra del fotograma de referencia en las mismas ubicaciones espaciales que la muestra dada.
Adicionalmente, en una operación de suavizado de OBMC, la unidad 608 de suavizado mezcla las predicciones para cada muestra en la zona de transición. En diversos ejemplos, la unidad 608 de suavizado mezcla las predicciones para una muestra dada de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede mezclar las predicciones para una muestra dada calculando una media ponderada de las predicciones. En diversos ejemplos, la unidad 608 de suavizado puede proporcionar diferentes pesos a las predicciones. Por ejemplo, la unidad 608 de suavizado puede proporcionar un peso en % a la predicción basándose en el vector de movimiento de la PU que contiene una muestra dada y puede proporcionar un peso de 1V a la predicción basándose en el vector de movimiento de la otra PU.
En otros ejemplos, la unidad 608 de suavizado puede realizar una operación de suavizado basada en filtro. Cuando la unidad 608 de suavizado realiza una operación de suavizado basada en filtro, la unidad 608 de suavizado puede aplicar uno o más filtros a las muestras en la zona de transición. En tales operaciones de suavizado basadas en filtro, la unidad 608 de suavizado puede aplicar diversos filtros de suavizado a las muestras identificadas en la zona de transición. En este ejemplo, la unidad 608 de suavizado puede aplicar el siguiente filtro de suavizado de 3x3 a cada muestra en la zona de transición:
1/15 2/15 1/15
2/15 3/15 2/15
1/15 2/15 1/15
En este ejemplo, cuando la unidad 608 de suavizado aplica el filtro de suavizado a una muestra dada, 1/15 del nuevo valor de la muestra dada está basado en la muestra por encima y a la izquierda de la muestra dada, 2/15 del nuevo valor está basado en la muestra por encima de la muestra dada, 1/15 del nuevo valor está basado en la muestra por encima y a la derecha de la muestra dada, 2/15 del nuevo valor está basado en la muestra a la izquierda de la muestra dada, 3/15 el nuevo valor está basado en un valor actual de la muestra dada, 2/15 del nuevo valor está basado en la muestra a la derecha de la muestra dada, 1/15 del nuevo valor está basado en la muestra por debajo y a la izquierda de la muestra dada, 2/15 del nuevo valor está basado en la muestra por debajo de la muestra dada y 1/15 del nuevo valor está basado en la muestra por debajo y a la derecha de la muestra dada. La unidad 608 de suavizado puede aplicar otros filtros de suavizado a las muestras en la zona de transición. Por ejemplo, la unidad 608 de suavizado puede aplicar filtros de suavizado con diferentes pesos. En otro ejemplo, la unidad 608 de suavizado puede aplicar filtros de suavizado de otros tamaños, por ejemplo, 5x5, 7x7, etc.
En algunos ejemplos, la operación 1250 es parte de un método para codificar datos de vídeo. El método comprende generar un bloque de predicción para una CU en un fotograma de los datos de vídeo. El método también comprende determinar, por un dispositivo informático, basándose en si una TU de la CU abarca múltiples PU de la CU si realizar una operación de suavizado en muestras una zona de transición del bloque de predicción. La zona de transición se encuentra en un límite entre muestras del bloque de predicción asociado con una primera PU de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU. El método también comprende después de que el dispositivo informático hace una determinación para realizar la operación de suavizado en las muestras en la zona de transición, realizar la operación de suavizado para suavizar las muestras en la zona de transición del bloque de predicción.
En algunos ejemplos, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en si una TU abarca múltiples PU y basándose en otros factores. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en si una TU abarca múltiples PU y basándose en el tamaño de una PU de la CU.
La Figura 13 es un diagrama de flujo que ilustra otra operación 1300 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 608 de suavizado puede realizar la operación 1300 como una alternativa a realizar las operaciones de ejemplo ilustradas en las Figuras 12, 14-18 y 20. La unidad 608 de suavizado puede realizar la operación 1300 para determinar si realizar una operación de suavizado en muestras en una zona de transición de un bloque de predicción. En la operación 1300, la unidad 608 de suavizado hace una determinación de si realizar una operación de suavizado en muestras en la zona de transición basándose en los tamaños de las PU de una CU. En algunos casos, las PU de una CU pueden ser relativamente pequeñas. En tales casos, suavizar las muestras en la zona de transición entre las PU puede no mejorar la calidad de imagen o mejorar significativamente la eficacia de codificación.
Después de que la unidad 608 de suavizado inicia la operación 1300, la unidad 608 de suavizado determina si un tamaño de una de las PU se encuentra por debajo de un umbral (1302) dado. En algunos ejemplos, el tamaño de una PU es el tamaño de un área de predicción especificada por un árbol de predicción de la PU. En diversos ejemplos, la unidad 608 de suavizado puede determinar si el tamaño de la PU se encuentra por debajo de varios umbrales. Por ejemplo, si una PU tiene tamaño MxN, la unidad 608 de suavizado puede determinar si cualquiera de M o N es menor que 4. En algunos ejemplos, el umbral dado está preconfigurado en la unidad 104 de codificación y en la unidad 106 de decodificación. En otros ejemplos, la unidad 104 de codificación y la unidad 106 de decodificación determinan programáticamente el umbral dado.
En diversos ejemplos, la unidad 608 de suavizado puede determinar si el tamaño de una de las PU se encuentra por debajo del umbral dado de diversas maneras. Por ejemplo, la unidad 104 de codificación puede almacenar una tabla de búsqueda. La tabla de búsqueda contiene entradas que corresponden a diferentes tamaños de PU. Cada una de las entradas determina si el correspondiente tamaño de PU se encuentra por encima o por debajo del umbral dado. Si los tamaños de las PU no se encuentran por debajo del umbral dado ("NO" de 1302), la unidad 608 de suavizado hace la determinación para realizar la operación de suavizado en muestras en la zona de transición. Por ejemplo, si una PU tiene tamaño MxN, la unidad 608 de suavizado puede hacer la determinación para realizar la operación de suavizado en las muestras en la zona de transición cuando cualquiera de M o N es cuatro o mayor. Por lo tanto, si los tamaños de las PU no se encuentran por debajo del umbral dado ("NO" de 1302), la unidad 608 de suavizado identifica las muestras en la zona (1304) de transición y a continuación realiza la operación de suavizado en las muestras en la zona (1306) de transición. De otra manera, si el tamaño de una de las PU se encuentra por debajo del umbral dado ("SÍ" de 1302), la unidad 608 de suavizado hace la determinación de no realizar la operación de suavizado en muestras en la zona (1308) de transición. En diversos ejemplos, la unidad 608 de suavizado puede identificar las muestras en la zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar las operaciones de ejemplo ilustradas en las Figuras 19 y 21 para identificar las muestras en la zona de transición. Adicionalmente, en diversos ejemplos, la unidad 608 de suavizado puede realizar diversas operaciones de suavizado en las muestras en la zona de transición. Por ejemplo, la unidad 608 de suavizado puede realizar una o más operaciones de suavizado basadas en OBMC o en filtros como se ha descrito anteriormente con respecto a la Figura 12.
En otros ejemplos, la unidad 608 de suavizado puede realizar una versión de la operación 1300 en la que la unidad 608 de suavizado determina si un tamaño de una transformada se encuentra por debajo del umbral en lugar de determinar si un tamaño de la PU se encuentra por debajo del umbral. El módulo 312 de transformada puede usar la transformada cuando se convierten datos residuales basándose en el bloque de predicción de un dominio espacial a un dominio de la frecuencia. Por lo tanto, la unidad 608 de suavizado puede determinar si realizar la operación de suavizado en las muestras en la zona de transición basándose en el tamaño de la transformada.
En algunos ejemplos, la operación 1300 es parte de un método para codificar datos de vídeo. El método comprende generar un bloque de predicción para una CU en un fotograma de los datos de vídeo. El método también comprende determinar, por un dispositivo informático, basándose en un tamaño de una PU de la CU o basándose en un tamaño de una transformada, si realizar una operación de suavizado en muestras una zona de transición del bloque de predicción. La zona de transición se encuentra en un límite entre muestras del bloque de predicción asociado con una primera PU de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU. El método también comprende después de que el dispositivo informático hace una determinación para realizar la operación de suavizado en las muestras en la zona de transición, realizar la operación de suavizado para suavizar las muestras en la zona de transición del bloque de predicción.
En algunos ejemplos, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en el tamaño de la PU o la transformada y basándose en otros factores. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en el tamaño de la PU o de la transformada y basándose en vectores de movimiento de las PU de la CU.
La Figura 14 es un diagrama de flujo que ilustra otra operación 1400 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 608 de suavizado puede realizar la operación 1400 como una alternativa a realizar las operaciones de ejemplo ilustradas en las Figuras 12, 13, 15-18 y 20.
Cuando la unidad 602 de estimación de movimiento realiza la operación de estimación de movimiento en las PU de una CU, la unidad 602 de estimación de movimiento puede generar un vector de movimiento para cada una de las PU. Por ejemplo, si la CU tiene una primera PU y una segunda PU, la unidad 602 de estimación de movimiento puede generar un primer vector de movimiento y un segundo vector de movimiento. El primer vector de movimiento indica una diferencia en ubicación espacial entre la primera PU y una primera muestra de referencia. La primera muestra de referencia es un área que corresponde a la primera PU dentro de un fotograma de referencia. El segundo vector de movimiento indica una diferencia en ubicación espacial entre la segunda unidad de partición y una segunda muestra de referencia. La segunda muestra de referencia es un área que corresponde a la segunda PU dentro del fotograma de referencia.
Después de que la unidad 608 de suavizado inicia la operación 1400, la unidad 608 de suavizado recibe vectores de movimiento para las PU de una CU (1402). La unidad 608 de suavizado a continuación aplica una función a los vectores de movimiento para las PU (1404). La función produce un valor de resultado. En diversos ejemplos, la unidad 608 de suavizado puede aplicar diversas funciones a los vectores de movimiento. Por ejemplo, la unidad 608 de suavizado puede aplicar una función que calcula el valor absoluto de restar uno de los vectores de movimiento del otro vector de movimiento. En otro ejemplo, la unidad 608 de suavizado puede aplicar una función basándose en una amplitud de un vector de movimiento determinado para una PU vecina y un vector de movimiento previsto. En este ejemplo, el vector de movimiento previsto puede predecirse de uno o más de: el vector de movimiento determinado para la unidad de predicción vecina y un vector de movimiento determinado para una unidad de predicción coubicada en el fotograma de referencia
Después de aplicar la función a los vectores de movimiento, la unidad 608 de suavizado determina si el valor de resultado supera un umbral (1406). En diversos ejemplos, la unidad 608 de suavizado puede determinar si el valor de resultado supera diversos umbrales. Por ejemplo, si el resultado es un valor absoluto de una diferencia entre vectores de movimiento, la unidad 608 de suavizado puede determinar si el valor de resultado es mayor que el umbral. En este ejemplo, el umbral puede ser 1 píxel de número entero. En algunos ejemplos, el umbral es un parámetro predeterminado que se establece tanto en la unidad 104 de codificación como en la unidad 106 de decodificación. En otros ejemplos, la unidad 104 de codificación puede generar un elemento de sintaxis que especifica el umbral y proporciona el elemento de sintaxis a la unidad 106 de decodificación. Por ejemplo, la unidad 104 de codificación puede proporcionar el umbral a la unidad 106 de decodificación como un elemento de sintaxis en un conjunto de parámetros de secuencia asociados con la CU.
Si el valor de resultado de la función supera el umbral dado ("SÍ" de 1406), la unidad 608 de suavizado hace la determinación para realizar la operación de suavizado en muestras en la zona de transición. Por lo tanto, si el valor de resultado de la función supera el umbral dado ("SÍ" de 1406), la unidad 608 de suavizado identifica las muestras en la zona (1408) de transición y realiza la operación de suavizado en las muestras en la zona (1410) de transición. De otra manera, si el valor de resultado de la función no supera el umbral dado ("NO" de 1406), la unidad 608 de suavizado no realiza la operación de suavizado en muestras en la zona (1412) de transición. De esta manera, la unidad 608 de suavizado determina si realizar la operación de suavizado en muestras en la zona de transición basándose al menos en parte en un primer vector de movimiento y un segundo vector de movimiento. En diversos ejemplos, la unidad 608 de suavizado puede identificar las muestras en la zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar las operaciones de ejemplo ilustradas en las Figuras 19 y 21 para identificar las muestras en la zona de transición. Adicionalmente, en diversos ejemplos, la unidad 608 de suavizado puede realizar diversas operaciones de suavizado en las muestras en la zona de transición. Por ejemplo, la unidad 608 de suavizado puede realizar una o más operaciones de suavizado basadas en OBMC o en filtros como se ha descrito anteriormente con respecto a la Figura 12.
En algunos ejemplos, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en los vectores de movimiento y basándose en otros factores. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en los vectores de movimiento y basándose en el tamaño de una PU de la CU. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación para realizar la operación de suavizado cuando la diferencia entre los vectores de movimiento es mayor que un umbral dado y el tamaño de una PU en la CU supera un umbral.
La Figura 15 es un diagrama de flujo que ilustra otra operación 1500 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 304 de inter-predicción puede realizar la operación 1500 de determinación de suavizado como una alternativa a realizar las operaciones de ejemplo ilustradas en las Figuras 12-14, 16-18 y 20. En el ejemplo de la Figura 15, la unidad 608 de suavizado determina si realizar una operación de suavizado en muestras en una zona de transición de datos residuales de una CU dada basándose en direccionalidades de inter-predicción de las PU de la CU dada. La direccionalidad de inter-predicción de una PU puede determinar si la porción del bloque de predicción de una CU asociada con la PU está basada en muestras de referencia de uno o dos fotogramas de referencia.
La unidad 104 de codificación puede codificar un fotograma como un intra-fotograma (es decir, un "fotograma I"), un fotograma de predicción (es decir, un "fotograma P"), o un fotograma de predicción bidireccional (es decir, un "fotograma B"). De manera similar, la unidad 104 de codificación puede codificar un corte de un fotograma como un intra-corte (es decir, un "corte I"), un corte de predicción (es decir, un "corte P"), o un corteo bidireccional (es decir, un "corte B"). Si la unidad 104 de codificación codifica el fotograma o corte como un fotograma I o un corte I, las PU dentro del fotograma o corte pueden ser únicamente PU intra-previstas. Si la unidad 104 de codificación codifica un fotograma o corte como un fotograma P o un fotograma P, las PU dentro del fotograma o corte pueden ser PU intraprevistas PU uni-previstas. Si la unidad 104 de codificación codifica un fotograma o corte como un fotograma B o un corte B, las PU dentro del fotograma o corte pueden ser PU intra-previstas, PU uni-previstas PU bi-previstas. La unidad 604 de compensación de movimiento y/o la unidad 702 de compensación de movimiento pueden generar porciones del bloque de predicción que está asociado con una PU intra-prevista sin referencia a otros fotogramas o cortes. La unidad 604 de compensación de movimiento y/o la unidad 702 de compensación de movimiento pueden generar porciones del bloque de predicción que están asociadas con una PU uni-prevista basándose en un único fotograma de referencia en los datos de vídeo. En algunos casos, una CU que tiene únicamente PU uni-previstas puede denominarse como una CU uni-prevista o de uni-predicción. La unidad 604 de compensación de movimiento y/o la unidad 702 de compensación de movimiento pueden generar porciones del bloque de predicción que están asociadas con una PU bi-prevista basándose en dos fotogramas de referencia. En algunos casos, una CU que incluye una o más PU bi-previstas puede denominarse como una CU bi-prevista o de bipredicción.
Por ejemplo, cuando una PU dada es una PU uni-prevista, la unidad 104 de codificación busca un único fotograma de referencia para muestras de referencia para la PU dada. Este único fotograma de referencia puede tener lugar de manera temporal antes o después del fotograma de la PU dada. En otras palabras, el único fotograma de referencia puede encontrarse en LIST_0 o en LIST_1. La unidad 104 de codificación puede a continuación usar las muestras de referencia de la PU dada para generar las porciones de un bloque de predicción para una CU que está asociada con la PU dada.
Cuando una PU dada es una PU bi-prevista, la unidad 104 de codificación puede buscar dos fotogramas de referencia para obtener dos muestras de referencia para la PU dada. Uno de los fotogramas de referencia puede tener lugar temporalmente antes del fotograma de la PU dada y uno de los fotogramas de referencia puede tener lugar temporalmente después del fotograma de la PU dada. Para generar el bloque de predicción de una CU, la unidad 104 de codificación puede realizar una operación de mezcla con respecto a la PU dada. Cuando la unidad 104 de codificación realiza la operación de mezcla con respecto a la PU dada, la unidad 104 de codificación puede generar porciones del bloque de predicción que están asociadas con la PU dada basándose en las dos muestras de referencia de la PU dada. Por ejemplo, la unidad 104 de codificación puede generar porciones del bloque de predicción que están asociadas con la PU dada basándose en una media ponderada de muestras en las dos muestras de referencia de la PU dada.
De manera comparativa puede ser necesario que se recuperen más datos de la memoria para realizar una operación de suavizado de OBMC en muestras en el bloque de predicción de una CU que incluye una PU bi-prevista (es decir, una CU de bipredicción) que realizar la operación de suavizado de OBMC en muestras en el bloque de predicción de una CU que no incluye una PU bi-prevista. Por lo tanto, absteniéndose de realizar la operación de suavizado cuando la CU incluye una PU bi-prevista puede reducir la cantidad de datos recuperados de la memoria y acelerar el proceso de codificación o decodificación.
Como se ilustra en el ejemplo de la Figura 15, la unidad 608 de suavizado puede determinar si una CU tiene una PU (1502) bi-prevista. Si la CU no tiene una PU bi-prevista ("NO" de 1502), la unidad 608 de suavizado hace la determinación para realizar la operación de suavizado en muestras de la zona de transición del bloque de predicción de la CU. Por lo tanto, si la CU no tiene una PU bi-prevista ("NO" de 1502), la unidad 608 de suavizado identifica las muestras en la zona (1504) de transición y realiza la operación de suavizado en las muestras en la zona (1506) de transición. En otros ejemplos, la unidad 608 de suavizado puede hacer la determinación para realizar la operación de suavizado en las muestras en la zona de transición cuando la CU tiene una PU bi-prevista. En otro ejemplo, la CU puede tener dos PU y una de las PU es una PU bi-prevista. Para realizar una operación de suavizado de OBMC, la unidad 608 de suavizado puede necesitar derivar un subconjunto de muestras en las regiones de transición usando las dos muestras de referencia de la PU bi-prevista (que aumentaría la cantidad de datos recuperados de la memoria como se ha explicado anteriormente). Por lo tanto, en este ejemplo, la unidad 608 de suavizado puede hacer la determinación de no realizar la operación de suavizado de OBMC en el subconjunto de muestras de la región de transición que están asociadas con la PU bi-prevista. La unidad 608 de suavizado puede también hacer la determinación para realizar la operación de suavizado de OBMC en otras muestras de la región de transición que están asociadas con la otra PU basándose en si la otra PU es una PU bi-prevista.
En diversos ejemplos, la unidad 608 de suavizado puede identificar las muestras en la zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar las operaciones de ejemplo ilustradas en las Figuras 19 y 21 para identificar las muestras en la zona de transición. Adicionalmente, en diversos ejemplos, la unidad 608 de suavizado puede realizar diversas operaciones de suavizado en las muestras en la zona de transición. Por ejemplo, la unidad 608 de suavizado puede realizar una o más operaciones de suavizado basadas en OBMC o en filtros como se ha descrito anteriormente con respecto a la Figura 12.
De otra manera, si la CU tiene una PU bi-prevista ("SÍ" de 1502), la unidad 608 de suavizado no realiza la operación de suavizado en muestras en la zona de transición del bloque de predicción de la CU (1508). Por lo tanto, si la CU tiene una PU bi-prevista, la unidad 608 de suavizado no aplica la operación de suavizado a muestras en la zona de transición del bloque de predicción. De esta manera, la unidad 608 de suavizado hace la determinación de si realizar la operación de suavizado basándose en la direccionalidad de inter-predicción de las PU de la CU, y, por lo tanto, las direccionalidades de inter-predicción de la CU.
En algunos ejemplos, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en las direccionalidades de inter-predicción de las PU de una CU y basándose en otros factores. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en las direccionalidades de inter-predicción de las PU y basándose en el tamaño de una PU de la CU. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación para realizar la operación de suavizado cuando la CU no tiene una PU de bipredicción y el tamaño de una PU en la CU supera un umbral.
La Figura 16 es un diagrama de flujo que ilustra otra operación 1600 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 608 de suavizado puede realizar la operación 1600 como una alternativa a realizar las operaciones ilustradas en los ejemplos de las Figuras 12-15, 17, 18 y 20.
Cuando la unidad 304 de inter-predicción realiza la operación 1600, la unidad 608 de suavizado identifica muestras en la zona de transición de un bloque de predicción de una CU (1602). En diversos ejemplos, la unidad 608 de suavizado puede identificar las muestras en la zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar las operaciones de ejemplo ilustradas en las Figuras 19 y 21 para identificar las muestras en la zona de transición.
Después de identificar las muestras en la zona de transición, la unidad 608 de suavizado determina una cantidad de diferencia entre muestras en la zona de transición que están asociadas con diferentes PU de la CU (1604). Por ejemplo, la unidad 608 de suavizado puede determinar una cantidad de diferencia entre muestras en la zona de transición que están asociadas con una primera PU de la CU y muestras en la zona de transición que están asociadas con una segunda PU de la CU.
La unidad 608 de suavizado a continuación determina si la cantidad de diferencia entre las muestras en lados opuestos de la línea de subdivisión supera un umbral (1606) dado. En diferentes ejemplos, la unidad 608 de suavizado determina si la cantidad de diferencia supera diversos umbrales. Por ejemplo, la unidad 608 de suavizado puede determinar si la cantidad de diferencia entre correspondientes muestras en lados opuestos de la línea de subdivisión es mayor que dos. En algunos ejemplos, los usuarios humanos pueden configurar el umbral dado. En otros ejemplos, la unidad 104 de codificación y la unidad 106 de decodificación determinan el umbral dado programáticamente.
Si la diferencia entre muestras en lados opuestos de la línea de subdivisión supera el umbral dado ("SÍ" de 1606), la unidad 608 de suavizado puede realizar una operación de suavizado en muestras en la zona (1608) de transición. Por ejemplo, la unidad 608 de suavizado puede realizar una operación de suavizado en las muestras en la zona de transición si la diferencia entre correspondientes muestras en lados opuestos de la línea de subdivisión es dos o menor. En diversos ejemplos, la unidad 608 de suavizado puede realizar diversas operaciones de suavizado en las muestras. Por ejemplo, la unidad 608 de suavizado puede realizar una operación de suavizado basada en OBMC o basada en filtro en muestras en la zona de transición como se ha descrito anteriormente con respecto a la Figura 12. De otra manera, si la diferencia entre muestras en lados opuestos de la línea de subdivisión no supera el umbral dado ("NO" de 1606), la unidad 608 de suavizado no realiza la operación de suavizado en las muestras en la zona (1610) de transición. De esta manera, la unidad 608 de suavizado puede determinar si realizar la operación de suavizado basándose al menos en parte en una cantidad de diferencia entre muestras en la zona de transición que están asociadas con una PU de la CU y muestras en la zona de transición que están asociadas con otra PU de la CU.
En algunos ejemplos, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en la cantidad de diferencia entre muestras en la zona de transición que están asociadas con diferentes PU y basándose en otros factores. Por ejemplo, la unidad 608 de suavizado puede hacer la determinación de si realizar la operación de suavizado basándose en la cantidad de diferencia entre muestras en la zona de transición que están asociadas con diferentes PU y basándose en el tamaño de una PU de la CU.
La Figura 17 es un diagrama de flujo que ilustra otra operación 1700 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 608 de suavizado puede realizar la operación 1700 como una alternativa a realizar las operaciones de ejemplo ilustradas en las Figuras 12-16, 18 y 20. Cuando la unidad 304 de inter-predicción realiza la operación 1700, la unidad 304 de inter-predicción puede realizar operaciones de suavizado en muestras en la zona de transición de manera selectiva. En otras palabras, la unidad 304 de inter-predicción no suaviza necesariamente todas muestras en la zona de transición.
Cuando la unidad 304 de inter-predicción realiza la operación 1700, la unidad 608 de suavizado realiza una operación de identificación de muestra de transición para identificar muestras en una zona de transición de un bloque de predicción de una CU (1702). En diversos ejemplos, la unidad 608 de suavizado puede realizar diversas operaciones de identificación de muestra de transición. Por ejemplo, la unidad 608 de suavizado puede realizar la operación de identificación de muestra de transición de ejemplo ilustrada en la Figura 19 o la operación de identificación de muestra de transición de ejemplo ilustrada en la Figura 21.
Después de identificar las muestras en la zona de transición, la unidad 608 de suavizado determina si hay muestras restantes en la zona (1704) de transición. Si hay una o más muestras restantes en la zona de transición ("SÍ" de 1704), la unidad 608 de suavizado selecciona una de las muestras restantes en la zona (1706) de transición. Después de que la unidad 608 de suavizado selecciona la muestra, la unidad 608 de suavizado puede no considerar que la muestra sea una muestra restante.
La unidad 608 de suavizado a continuación determina si la muestra seleccionada satisface criterios (1708) particulares. Si la muestra seleccionada satisface los criterios ("SÍ" de 1708), la unidad 608 de suavizado realiza una operación de suavizado en la muestra (1710) seleccionada. Por ejemplo, la unidad 608 de suavizado puede realizar una operación de suavizado basada en OBMC o basada en filtro en la muestra seleccionada. Si la muestra seleccionada no satisface los criterios ("NO" de 1708), la unidad 608 de suavizado no realiza la operación de suavizado en la muestra (1712) seleccionada. En cualquier caso, la unidad 608 de suavizado de nuevo determina si hay muestras restantes en la zona (1704) de transición. Si hay muestras restantes en la zona de transición, la unidad 608 de suavizado puede repetir las etapas 1706, 1708, 1710 y 1712 con respecto a las muestras restantes.
En diversos ejemplos, la unidad 608 de suavizado puede determinar si la muestra seleccionada satisface diversos criterios. Por ejemplo, la unidad 608 de suavizado puede determinar que la muestra seleccionada satisface los criterios si la muestra seleccionada se encuentra en una PU dada de la CU. En este ejemplo, la unidad 608 de suavizado puede determinar que la muestra seleccionada no satisface los criterios si la muestra seleccionada es otra PU de la CU. De esta manera, la unidad 608 de suavizado puede realizar una operación de suavizado en muestras en la PU dada, pero no en muestras en la otra PU. Por ejemplo, cuando la unidad 608 de suavizado realiza la operación de suavizado, la unidad 608 de suavizado modifica muestras en la zona de transición que están asociadas con una primera PU de la CU y no modifica muestras en la zona de transición que no están asociadas con una segunda PU de la CU.
En otro ejemplo, la unidad 608 de suavizado puede recibir un conjunto de parámetros de secuencia (SPS). En este ejemplo, la unidad 608 de suavizado puede determinar que una muestra satisface los criterios si el SPS especifica las muestras. En este ejemplo, la unidad 608 de suavizado puede determinar que la muestra no satisface los criterios si la SPS no especifica la muestra.
La Figura 18 es un diagrama de flujo que ilustra otra operación 1800 de ejemplo para suavizar de manera adaptativa muestras en una zona de transición de un bloque de predicción. La unidad 304 de inter-predicción puede realizar la operación 1800 como una alternativa a realizar las operaciones de ejemplo ilustradas en las Figuras 12-17 y 20. En el ejemplo de la Figura 18, la unidad 608 de suavizado elige de manera adaptativa una operación de suavizado de entre una pluralidad de operaciones de suavizado disponibles. En algunos ejemplos, elegir de manera adaptativa una operación de suavizado de entre múltiples operaciones de suavizado disponibles puede dar como resultado mayor eficacia de codificación y/o calidad de imagen.
Después de que la unidad 608 de suavizado inicia la operación 1800, la unidad 608 de suavizado determina si realizar una primera operación de suavizado en muestras en la zona de transición de un bloque de predicción de una CU (1802). Si la unidad 608 de suavizado hace la determinación para realizar la primera operación de suavizado en las muestras en la zona de transición ("SÍ" de 1802), la unidad 608 de suavizado puede identificar las muestras en la zona (1804) de transición y a continuación realizar la primera operación de suavizado en las muestras en la zona (1806) de transición. En diversos ejemplos, la unidad 608 de suavizado puede hacer la determinación para realizar la primera operación de suavizado de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar las operaciones de ejemplo ilustradas en las Figuras 12-17 para hacer la determinación de si realizar la primera operación de suavizado. En este ejemplo, la unidad 608 de suavizado puede hacer la determinación para aplicar la primera operación de suavizado a muestras en la zona de transición si el tamaño de la CU es de 32x32 o 16x16.
De otra manera, si la unidad 608 de suavizado hace la determinación para no realizar la primera operación de suavizado ("NO" de 1802), la unidad 608 de suavizado puede determinar si realizar una segunda operación de suavizado en las muestras en la zona (1808) de transición. Si la unidad 608 de suavizado hace la determinación para realizar la segunda operación de suavizado en muestras en la zona de transición ("SÍ" de 1808), la unidad 608 de suavizado puede identificar muestras en la zona (1810) de transición y realizar la segunda operación de suavizado en muestras en la zona (1812) de transición. En diversos ejemplos, la unidad 608 de suavizado puede hacer la determinación para realizar la segunda operación de suavizado de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede usar las operaciones de ejemplo ilustradas en las Figuras 12-17 para hacer la determinación para realizar la segunda operación de suavizado. En este ejemplo, la unidad 608 de suavizado puede hacer la determinación para aplicar la segunda operación de suavizado a muestras en la zona de transición si el tamaño de la CU es 8x8 y si la dirección de inter-predicción de la CU es una CU bi-prevista. Por lo tanto, cuando la unidad 608 de suavizado realiza la operación 1800, la unidad 608 de suavizado puede determinar si realizar las operaciones de suavizado basándose en combinaciones de las operaciones anteriormente descritas.
Después de realizar la primera operación de suavizado, de realizar la segunda operación de suavizado o después de hacer la determinación de no realizar la segunda operación de suavizado, la unidad 608 de suavizado puede emitir un elemento de sintaxis que indica cuál operación de suavizado se realizó, si la hubiera, en muestras en la zona (1814) de transición. La unidad 604 de compensación de movimiento en la unidad 104 de codificación puede usar este elemento de sintaxis cuando se reconstruye la CU como parte de un fotograma de referencia. Además, la unidad 702 de compensación de movimiento en la unidad 106 de decodificación puede usar este elemento de sintaxis cuando se reconstruye un bloque de predicción para la CU.
La primera y segunda operaciones de suavizado pueden ser las mismas o diferentes tipos de operaciones de suavizado. Por ejemplo, un primer núcleo de suavizado configura la primera operación de suavizado y un segundo núcleo de suavizado puede configurar la segunda operación de suavizado. En este ejemplo, los núcleos definen el tipo y extensión del suavizado realizado por los filtros de suavizado. En este ejemplo, la unidad 608 de suavizado puede hacer la determinación de si realizar la primera operación de suavizado basándose en un tamaño de una transformada, un tamaño de una PU de la CU, una amplitud de un vector de movimiento determinado para una PU vecina y un vector de movimiento previsto. En este ejemplo, el vector de movimiento previsto de uno o más de los vectores de movimiento determinados para la unidad de predicción vecina y un vector de movimiento determinado para una unidad de predicción coubicada en el fotograma de referencia.
En otro ejemplo, la primera operación de suavizado puede ser una operación de suavizado basada en OBMC y la segunda operación de suavizado puede ser una operación de suavizado basada en filtro. Puesto que la primera y segunda operaciones de suavizado pueden ser diferentes tipos de operaciones de suavizado, la primera operación de suavizado y la segunda operación de suavizado pueden producir versiones del bloque de predicción que difieren entre sí.
La Figura 19 es un diagrama de flujo que ilustra una operación 2100 de identificación de muestra de transición de ejemplo. La unidad 608 de suavizado puede realizar una operación 2100 de identificación de muestra de transición para identificar muestras en una zona de transición de un bloque de predicción. Después de que la unidad 608 de suavizado inicia la operación 2100 de identificación de muestra de transición, la unidad 608 de suavizado selecciona el tamaño de una región (2102) vecina. En otras palabras, la unidad 608 de suavizado selecciona un tamaño de región vecina. En diversos ejemplos, la unidad 608 de suavizado puede seleccionar diversos tamaños de región vecina. Por ejemplo, la unidad 608 de suavizado puede seleccionar 3x3, 5x5, 7x7 u otro tamaño como el tamaño de región vecina.
En diversos ejemplos, la unidad 608 de suavizado selecciona el tamaño de región vecina de diversas maneras. Por ejemplo, la unidad 104 de codificación y la unidad 106 de decodificación pueden almacenar un elemento de sintaxis de tamaño de región vecina predeterminado que indica un tamaño. En este ejemplo, la unidad 104 de codificación y la unidad 106 de decodificación leen el elemento de sintaxis de tamaño de región vecina y usan el elemento de sintaxis de tamaño de región vecina para seleccionar el tamaño de región vecina.
En otro ejemplo, la unidad 104 de codificación almacena un parámetro de tamaño de región vecina que indica un tamaño. En algunos ejemplos, la unidad 104 de codificación y/o la unidad 106 de decodificación reciben el parámetro de tamaño de región vecina de un usuario humano. En otros ejemplos, el parámetro de tamaño de región vecina se establece programáticamente. La unidad 104 de codificación usa el parámetro de tamaño de región vecina para seleccionar el tamaño de región vecina. Además, la unidad 104 de codificación señaliza el tamaño de región vecina a la unidad 106 de decodificación. Por ejemplo, la unidad 104 de codificación puede emitir un elemento de sintaxis en un conjunto de parámetros de instantánea (PPS) o un conjunto de parámetros de corte (SPS) que indica el tamaño de región vecina.
En otro ejemplo, la unidad 104 de codificación puede seleccionar, antes de que la unidad 608 de suavizado realice la operación 2100 de identificación de muestra de transición, el tamaño de región vecina para un fotograma de contenido multimedia, un grupo de instantáneas que incluye un fotograma actual, otra CU, un grupo de CU, un grupo de sub-CU, un corte del fotograma actual, dos o más porciones del fotograma actual u otra parte del contenido multimedia. En este ejemplo, la unidad 104 de codificación puede seleccionar el tamaño de región vecina basándose en ciertos criterios y señalizar explícitamente el tamaño vecino seleccionado a un decodificador. La unidad 608 de suavizado selecciona el tamaño de región vecina basándose en el tamaño de región vecina previamente seleccionado para la parte de contenido multimedia asociado con la CU.
En otro ejemplo más, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en características de la CU. En diversos ejemplos, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en diversas características de la CU. Por ejemplo, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en un tamaño de la CU. En otro ejemplo, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en un vector de movimiento de una PU en la CU. En este ejemplo, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en una amplitud del vector de movimiento. En otro ejemplo más, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en un modo de predicción (es decir, modo de salto, modo directo, modo de inter-fotograma o modo de intra-fotograma) de una PU de la CU. En otro ejemplo más, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en las diferencias en muestras en el bloque de predicción.
En otro ejemplo más, la unidad 608 de suavizado puede seleccionar el tamaño de región vecina basándose en los resultados de codificar otras CU en los datos de vídeo. Por ejemplo, la unidad 608 de suavizado puede determinar que esos bloques de predicción generados para otras CU usando un tamaño de región vecina mayor dan como resultado menos distorsión que los bloques de predicción generados usando tamaños de región más pequeños o viceversa. En otros ejemplos, el tamaño de región vecina puede determinarse basándose en los modos de partición de la CU anterior, los modos de partición de las CU codificadas anteriores, los vectores de movimiento de las CU codificadas anteriores. Basándose en esta determinación, la unidad 608 de suavizado puede seleccionar un tamaño de región vecina que tiende a producir bloques de predicción con los niveles de distorsión más bajos.
Después de seleccionar el tamaño de región vecina, la unidad 608 de suavizado identifica muestras en la zona de transición. Como se describe a continuación, la zona de transición incluye una muestra asociada con una PU dada de la CU cuando una región vecina contiene la muestra y también contiene una muestra del bloque de predicción que está asociada con otra PU de la CU. La región vecina tiene el tamaño de región vecina seleccionada. Para identificar las muestras en la zona de transición, la unidad 608 de suavizado puede determinar si hay alguna muestra restante en el bloque (2104) de predicción. Si hay una o más muestras restantes en el bloque de predicción ("SÍ" de 2104), la unidad 608 de suavizado selecciona una de las muestras (2106) restantes. Después de que la unidad 608 de suavizado selecciona la muestra, la unidad 608 de suavizado no considera que la muestra es una muestra restante del bloque de predicción. La unidad 608 de suavizado a continuación identifica la PU asociada con la muestra (2108) seleccionada.
A continuación, la unidad 608 de suavizado identifica muestras en una región (2110) vecina. La región vecina es una zona del bloque de predicción que tiene el tamaño de región vecina seleccionada y que contiene la muestra (2110) seleccionada. En algunos ejemplos, la región vecina está centrada en la muestra seleccionada. Por ejemplo, si la región vecina es un cuadrado de 3x3, la muestra seleccionada sería la muestra central del cuadrado de 3x3. En otro ejemplo, la región vecina no está centrada en la muestra seleccionada. Por ejemplo, si la región vecina es un cuadrado de 3x3, la muestra seleccionada puede encontrarse en un borde superior, inferior, izquierdo o derecho del cuadrado de 3x3. Por lo tanto, si la región vecina no está centrada en la muestra seleccionada, la zona de transición puede extenderse adicionalmente en una PU distinta de la PU.
En algunos ejemplos, la unidad 304 de inter-predicción puede usar la unidad 608 de suavizado para realizar la operación 2100 de identificación de muestra de transición múltiples veces. Por ejemplo, la unidad 608 de suavizado puede realizar la operación de identificación de muestra de transición 2100 una vez con regiones vecinas centradas en muestras seleccionadas y una vez con regiones vecinas no centradas en zonas seleccionadas. La unidad 304 de inter-predicción puede evaluar si el bloque de predicción tiene menos distorsión cuando las regiones vecinas están centradas en muestras seleccionadas o cuando las regiones vecinas no están centradas en muestras seleccionadas. La unidad 304 de inter-predicción puede seleccionar el bloque de predicción que tiene menos distorsión.
Después de identificar las muestras en la región vecina, la unidad 608 de suavizado determina si alguna de las muestras en la región vecina está en una PU diferente de la muestra (2112) seleccionada. Si alguna de las muestras en la región vecina están en una PU diferente de la muestra seleccionada ("SÍ" de 2112), la unidad 608 de suavizado identifica la muestra seleccionada como que está en la zona (2114) de transición. De otra manera, si ninguna de las muestras en la región vecina está en una PU diferente de la muestra seleccionada ("NO" de 2112), la unidad 608 de suavizado no identifica la muestra seleccionada como que está en la zona (2116) de transición. En cualquier caso, la unidad 608 de suavizado puede determinar de nuevo si hay muestras restantes en el bloque (2104) de predicción. Si hay muestras restantes en el bloque de predicción, la unidad 608 de suavizado puede repetir las etapas 2106, 2108, 2110, 2112, 2114 y 2116 con respecto a las muestras restantes en el bloque de predicción. Si no hay muestras restantes en el bloque de predicción ("NO" de 2104), la unidad 608 de suavizado finaliza la operación 2100 de identificación de muestra de transición.
La Figura 20 es un diagrama de flujo que ilustra otra operación 2200 de ejemplo de la unidad 608 de suavizado. Después de que la unidad 608 de suavizado inicia la operación 2200, la unidad 608 de suavizado identifica muestras en una primera zona de transición de un bloque de predicción de una CU (2202). En diversos ejemplos, la unidad 608 de suavizado identifica las muestras en la primera zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede probar muestras en el bloque de predicción. Cuando la unidad 608 de suavizado prueba una muestra dada, la unidad 608 de suavizado puede determinar si las muestras en una región vecina están asociadas con una PU diferente de la CU que la muestra dada. En este ejemplo, la región vecina puede tener diversos tamaños. Por ejemplo, la región vecina puede ser un cuadrado de 3x3.
La unidad 608 de suavizado a continuación identifica muestras en una segunda zona de transición del bloque (2204) de predicción. En diversos ejemplos, la unidad 608 de suavizado identifica las muestras en la segunda zona de transición de diversas maneras. Por ejemplo, la unidad 608 de suavizado puede probar muestras en el bloque de predicción. En este ejemplo, cuando la unidad 608 de suavizado prueba una muestra dada, la unidad 608 de suavizado determina si las muestras en una región vecina están asociadas con una PU diferente de la CU que la muestra dada. En este ejemplo, la unidad 608 de suavizado puede identificar muestras del bloque de predicción en una segunda zona de transición, en donde las muestras asociadas con una primera PU de la CU están en la segunda zona de transición si las regiones vecinas que contienen las muestras contienen muestras asociadas con una segunda PU de la CU. En este ejemplo, las muestras asociadas con la segunda PU están en la segunda zona de transición si las regiones vecinas que contienen las muestras contienen muestras asociadas con la primera PU. En este ejemplo, la región vecina es una zona del bloque de predicción que incluye la muestra dada. El tamaño de la región vecina puede ser diferente del tamaño de las regiones vecinas usadas para identificar muestras en la primera zona de transición. Por ejemplo, el tamaño de la región vecina usada para identificar muestras en la primera zona de transición puede ser 3x3 y el tamaño de la región vecina usada para identificar muestras en la segunda zona de transición puede ser 5x5.
La unidad 608 de suavizado a continuación realiza una primera operación de suavizado en muestras en la primera zona (2206) de transición. La unidad 608 de suavizado realiza una segunda operación de suavizado en muestras en la segunda zona (2208) de transición. La segunda operación de suavizado puede ser diferente de la primera operación de suavizado. Por ejemplo, la primera y segunda operaciones de suavizado pueden ser ambas operaciones de suavizado basadas en OBMC. Sin embargo, en este ejemplo, las operaciones de suavizado basadas en OBMC pueden mezclar muestras previstas de manera diferente. Por ejemplo, la operación de suavizado basada en OBMC puede usar diferentes pesos para predicciones de diferentes PU. Por ejemplo, en este ejemplo, si una muestra está asociada con una primera PU de la CU y también está en la primera zona de transición, la unidad 608 de suavizado puede usar un peso 3/4 para una predicción de la primera PU y un peso de 1/4 para una predicción de la segunda PU de la CU. En este ejemplo, si una muestra está asociada con la primera PU y también está en la segunda zona de transición, la unidad 608 de suavizado puede usar un peso de 7/8 para la predicción de la primera PU y un peso de 1/8 para la predicción de la segunda Pu. En otro ejemplo, una de las operaciones de suavizado puede ser una operación de suavizado basada en OBMC y una de las operaciones de suavizado puede ser una operación de suavizado basada en filtro. En otro ejemplo más, la primera y segunda operaciones de suavizado pueden ambas ser operaciones de suavizado basadas en filtro. Sin embargo, en este ejemplo, los filtros usados en la primera y segunda operaciones de suavizado pueden ser diferentes.
De esta manera, la unidad 608 de suavizado puede suavizar diferentes partes del bloque de predicción de diferentes maneras. Esto puede dar como resultado una mayor eficacia de codificación y/o menores cantidades de distorsión.
La Figura 21 es un diagrama de flujo que ilustra otra operación 2300 de ejemplo de identificación de muestra de transición. La unidad 608 de suavizado puede realizar una operación 2300 de identificación de muestra de transición para identificar muestras en una zona de transición de un bloque de predicción de una CU. Después de que la unidad 608 de suavizado inicia la operación 2300 de identificación de muestra de transición, la unidad 608 de suavizado determina si hay alguna muestra restante en el bloque (2302) de predicción. Si hay una o más muestras restantes en el bloque de predicción ("SÍ" de 2304), la unidad 608 de suavizado selecciona una de las muestras (2304) restantes. Después de que la unidad 608 de suavizado selecciona la muestra, la unidad 608 de suavizado no considera que la muestra es una muestra restante del bloque de predicción. La unidad 608 de suavizado a continuación identifica una PU de la CU asociada con la muestra (2306) seleccionada.
A continuación, la unidad 608 de suavizado selecciona un tamaño de región vecina asociado con la PU asociada con la muestra (2308) seleccionada. Diferentes PU pueden asociarse con diferentes tamaños de región vecina. Por ejemplo, una CU puede tener una primera PU y una segunda PU. En este ejemplo, la primera PU puede estar asociada con un tamaño de región vecina de 3x3 muestras y la segunda región PU puede estar asociada con un tamaño de región vecina de 5x5 muestras. En este ejemplo, si la muestra seleccionada está asociada con la primera PU, la unidad 608 de suavizado selecciona el tamaño de región vecina de 3x3 muestras. En este ejemplo, si la muestra seleccionada está asociada con la segunda PU, la unidad 608 de suavizado selecciona el tamaño de región vecina de 5x5 muestras.
En diversos ejemplos, las PU pueden estar asociadas con tamaños de región vecina de diversas maneras. Por ejemplo, la unidad 104 de codificación y la unidad 106 de decodificación pueden almacenar y/o recibir datos que identifican de manera separada los tamaños de región vecina asociados con las PU. En otro ejemplo, la unidad 104 de codificación y la unidad 106 de decodificación pueden almacenar y/o recibir datos que indican un tamaño de región vecina asociado con una primera PU. En este ejemplo, la unidad 104 de codificación y la unidad 106 de decodificación pueden derivar el tamaño de región vecina asociado con una segunda PU a partir del tamaño de región vecina asociado con la primera PU.
La unidad 608 de suavizado a continuación identifica muestras en una región (2310) vecina. La región vecina es una zona del bloque de predicción que tiene el tamaño de región vecina seleccionada y que contiene la muestra seleccionada. Similar la operación 2100 de identificación de muestra de transición de ejemplo anteriormente analizada, la región vecina puede estar centrada en la muestra seleccionada o no estar centrada en la muestra seleccionada.
Después de identificar las muestras en la región vecina, la unidad 608 de suavizado determina si alguna de las muestras en la región vecina está asociada con una PU diferente de la muestra (2312) seleccionada. Si alguna de las muestras en la región vecina está asociada con una PU diferente de la muestra seleccionada ("SÍ" de 2312), la unidad 608 de suavizado identifica la muestra seleccionada como que está en la zona (2314) de transición. De otra manera, si ninguna de las muestras en la región vecina está asociada con una PU diferente de la muestra seleccionada ("NO" de 2312), la unidad 608 de suavizado no identifica la muestra seleccionada como que está en la zona (2316) de transición. En cualquier caso, la unidad 608 de suavizado puede determinar de nuevo si hay muestras restantes en el bloque (2302) de predicción.
Si hay muestras restantes en el bloque de predicción, la unidad 608 de suavizado puede repetir las etapas 2304, 2306, 2308, 2310, 2312, 2314 y 2316 con respecto a las muestras restantes en el bloque de predicción. Si no hay muestras restantes en el bloque de predicción ("NO" de 2302), la unidad 608 de suavizado finaliza la operación 2300 de identificación de muestra de transición.
En algunos casos, la operación 2300 de identificación de muestra de transición implementa un método que comprende generar un bloque de predicción para una CU en un fotograma de datos de vídeo, teniendo la CU una primera PU y una segunda PU. El método también comprende seleccionar una primera muestra en el bloque de predicción y determinar que la primera muestra está asociada con la primera PU. El método también comprende seleccionar, por un dispositivo informático, un primer tamaño de región vecina determinando que la primera PU está asociada con el primer tamaño de región vecina. El método también comprende identificar la primera muestra como que está dentro de la primera zona de transición cuando una región vecina que tiene el primer tamaño de región vecina contiene la primera muestra y también contiene una muestra asociada con la segunda PU. El método también comprende seleccionar una segunda muestra en el bloque de predicción, determinar que la segunda muestra está asociada con la segunda PU, y determinar que la segunda PU está asociada con un segundo tamaño de región vecina. El segundo tamaño de región vecina es diferente del primer tamaño de región vecina. El método también comprende identificar la segunda muestra como que está dentro de la primera zona de transición cuando una región vecina que tiene el segundo tamaño de región vecina contiene la segunda muestra y también contiene una muestra asociada con la primera PU. El método también comprende realizar una primera operación de suavizado en las muestras en la primera zona de transición.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse como una o más instrucciones o código en un medio legible por ordenador y ejecutarse por una unidad de procesamiento basada en hardware. Medio legible por ordenador puede incluir medio de almacenamiento legible por ordenador, que corresponde a un medio de almacenamiento tal como un medio de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, medio legible por ordenador generalmente puede corresponder a (1) medio de almacenamiento legible por ordenador tangible que es no transitorio o (2) un medio de comunicación tal como una señal u onda portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible que pueda accederse por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador.
En uno o más ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinación de los mismos. Si se implementan en software, las funciones pueden almacenarse en o transmitirse como una o más instrucciones o código en un medio legible por ordenador y ejecutarse por una unidad de procesamiento basada en hardware. Medio legible por ordenador puede incluir medio de almacenamiento legible por ordenador, que corresponde a un medio de almacenamiento tal como un medio de almacenamiento de datos o medios de comunicación que incluyen cualquier medio que facilite la transferencia de un programa informático desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicación. De esta manera, medio legible por ordenador generalmente puede corresponder a (1) medio de almacenamiento legible por ordenador tangible que es no transitorio o (2) un medio de comunicación tal como una señal u onda portadora. El medio de almacenamiento de datos puede ser cualquier medio disponible que pueda accederse por uno o más ordenadores o uno o más procesadores para recuperar instrucciones, código y/o estructuras de datos para la implementación de las técnicas descritas en esta divulgación. Un producto de programa informático puede incluir un medio legible por ordenador. A modo de ejemplo, y no como limitación, tal medio de almacenamiento legible por ordenador puede comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco óptico, almacenamiento de disco magnético u otros dispositivos de almacenamiento magnético, memoria flash o cualquier otro medio que pueda usarse para almacenar código de programa deseado en forma de instrucciones o estructuras de datos y que puede accederse por un ordenador. También, cualquier conexión se denomina apropiadamente un medio legible por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, servidor u otra fuente remota usando un cable coaxial, cable de fibra óptica, par trenzado, línea digital de abonado (DSL) o tecnologías inalámbricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, cable de fibra óptica, par trenzado, DSL o tecnologías inalámbricas tales como infrarrojos, radio y microondas se incluyen en la definición de medio. Sin embargo, debería entenderse que medios de almacenamiento legibles por ordenador y medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, señales u otros medios transitorios, sino que, en su lugar, se refieren a medios de almacenamiento tangibles no transitorios. Disco magnético y disco óptico, como se usan en el presente documento, incluyen disco compacto (CD), laser disc, disco óptico, disco versátil digital (DVD), disco flexible y disco Blu-ray donde los discos magnéticos normalmente reproducen datos magnéticamente, mientras que los discos ópticos reproducen datos ópticamente con láseres. Las combinaciones de lo anterior deberían incluirse también dentro del alcance de medio legible por ordenador.
Las instrucciones pueden ejecutarse por uno o más procesadores, tal 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 lógicas programables en campo (FPGA) u otra circuitería integrada o de lógica discreta equivalente. Por consiguiente, el término "procesador", como se usa en el presente documento puede hacer referencia a cualquiera de la estructura anterior o cualquier otra estructura adecuada 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 hardware especializado y/o módulos de software configurados para codificar y decodificar o incorporarse en un códec combinado. También, las técnicas podrían implementarse totalmente en uno o más circuitos o elementos lógicos.
Las técnicas de esta divulgación pueden implementarse en una amplia diversidad de dispositivos o aparatos, incluyendo un microteléfono inalámbrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Se describen diversos componentes, módulos o unidades en esta divulgación para destacar aspectos funcionales de dispositivos configurados para realizar las técnicas divulgadas, pero no requieren necesariamente su realización por diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de códec o proporcionarse por una colección de unidades de hardware inter operativas, incluyendo uno o más procesadores, como se ha descrito anteriormente, en conjunto con software y/o firmware adecuado.
Se han descrito diversos ejemplos. La invención se expone en las reivindicaciones adjuntas.

Claims (14)

REIVINDICACIONES
1. Un método para codificar datos de vídeo, comprendiendo el método:
generar (804), en una operación de compensación de movimiento, un bloque de predicción para una unidad de codificación, CU, de un fotograma de los datos de vídeo, incluyendo el bloque de predicción una zona (1200) de transición en un límite entre muestras del bloque de predicción asociado con una primera unidad de predicción, PU, de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU;
hacer (1302), por el dispositivo informático, una determinación de si el tamaño de la primera PU se encuentra por debajo de un umbral dado; caracterizado por
realizar (806, 1306) una operación de suavizado de compensación de movimiento de bloque solapado, OBMC, para suavizar muestras del bloque de predicción que se encuentra dentro de la zona (1200) de transición si el tamaño de la primera PU no se encuentra por debajo del umbral dado; y
no realizar (1308) la operación de suavizado de OBMC si el tamaño de la primera PU se encuentra por debajo del umbral dado.
2. El método de la reivindicación 1, en donde el dispositivo informático genera el bloque de predicción antes de que el dispositivo informático realice o no realice la operación de suavizado de OBMC.
3. El método de la reivindicación 1, que comprende adicionalmente:
si no se realiza la operación de suavizado de OBMC, determinar, por el dispositivo informático, si realizar una segunda operación de suavizado en muestras en la zona de transición; y
realizar la segunda operación de suavizado en la zona de transición en lugar de realizar la operación de suavizado de OBMC, produciendo las operaciones de OBMC y de segundo suavizado versiones del bloque de predicción que difieren entre sí.
4. El método de la reivindicación 3, en donde un primer núcleo configura la operación de suavizado de OBMC y un segundo núcleo configura la segunda operación de suavizado.
5. El método de la reivindicación 1, en donde realizar la operación de suavizado de OBMC comprende modificar muestras en la zona de transición que están asociadas con la primera PU y no modificar muestras en la zona de transición que están asociadas con la segunda PU.
6. El método de la reivindicación 1, en donde realizar la operación de suavizado de OBMC comprende: modificar un subconjunto de las muestras en la zona de transición y no modificar muestras de la zona de transición fuera del subconjunto.
7. El método de la reivindicación 6, que comprende adicionalmente determinar el subconjunto de las muestras basándose en uno o más de:
un tamaño de la primera PU o la segunda PU; y
una amplitud de un vector de movimiento determinado para una PU vecina y un vector de movimiento previsto, el vector de movimiento previsto previsto de uno o más de:
el vector de movimiento determinado para la unidad de predicción vecina y
un vector de movimiento determinado para una unidad de predicción coubicada en el fotograma de referencia.
8. El método de la reivindicación 1, en donde generar el bloque de predicción comprende usar información de movimiento de la primera PU e información de movimiento de la segunda PU para generar el bloque de predicción.
9. El método de la reivindicación 1, en donde realizar la operación de suavizado de OBMC comprende realizar la operación de suavizado de OBMC para suavizar las muestras del bloque de predicción en la zona de transición antes de aplicar una transformada a datos residuales derivados del bloque de predicción.
10. El método de la reivindicación 1, en donde realizar la operación de suavizado de OBMC está basada adicionalmente en direccionalidades de inter-predicción de las PU de la CU.
11. El método de la reivindicación 1, en donde codificar los datos de vídeo comprende codificar los datos de vídeo; y en donde el método comprende adicionalmente usar un bloque de muestra original de la CU y el bloque de predicción para generar datos residuales para la CU.
12. El método de la reivindicación 1,
en donde codificar los datos de vídeo comprende decodificar los datos de vídeo; y en donde el método comprende adicionalmente usar datos residuales reconstruidos de la CU y el bloque de predicción para generar un bloque de muestra reconstruido para la CU.
13. Un dispositivo informático que codifica datos de vídeo, comprendiendo el dispositivo informático: medios para generar, en una operación de compensación de movimiento, un bloque de predicción para una unidad de codificación, CU, de un fotograma de los datos de vídeo, incluyendo el bloque de predicción una zona (1200) de transición en un límite entre muestras del bloque de predicción asociado con una primera unidad de predicción, PU, de la CU y muestras del bloque de predicción asociado con una segunda PU de la CU;
medios para hacer una determinación de si el tamaño de la primera PU se encuentra por debajo de un umbral dado; caracterizado por
medios configurados para:
realizar una operación de suavizado de compensación de movimiento de bloque solapado, OBMC, para suavizar muestras del bloque de predicción que se encuentran dentro de la zona (1200) de transición en respuesta a una determinación de que el tamaño de la primera PU no se encuentra por debajo del umbral dado; y
no realizar la operación de suavizado de OBMC en respuesta a una determinación de que el tamaño de la primera PU se encuentra por debajo del umbral dado.
14. Un producto de programa informático para codificar datos de vídeo, comprendiendo el producto de programa informático un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en el mismo que provocan que uno o más procesadores realicen el método de una cualquiera de las reivindicaciones 1 a 12.
ES11802249T 2011-01-10 2011-12-07 Realizar de manera adaptativa operaciones de suavizado Active ES2891175T3 (es)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201161431408P 2011-01-10 2011-01-10
US201161450532P 2011-03-08 2011-03-08
US201161450538P 2011-03-08 2011-03-08
US201161537450P 2011-09-21 2011-09-21
US13/311,812 US9071851B2 (en) 2011-01-10 2011-12-06 Adaptively performing smoothing operations
PCT/US2011/063793 WO2012096729A1 (en) 2011-01-10 2011-12-07 Adaptively performing smoothing operations

Publications (1)

Publication Number Publication Date
ES2891175T3 true ES2891175T3 (es) 2022-01-26

Family

ID=46455221

Family Applications (1)

Application Number Title Priority Date Filing Date
ES11802249T Active ES2891175T3 (es) 2011-01-10 2011-12-07 Realizar de manera adaptativa operaciones de suavizado

Country Status (7)

Country Link
US (3) US9807424B2 (es)
EP (2) EP2664138A1 (es)
JP (2) JP5823538B2 (es)
KR (2) KR101540167B1 (es)
CN (2) CN103299625B (es)
ES (1) ES2891175T3 (es)
WO (2) WO2012096730A1 (es)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2452499A1 (en) * 2009-07-06 2012-05-16 Thomson Licensing Methods and apparatus for spatially varying residue coding
US9807424B2 (en) 2011-01-10 2017-10-31 Qualcomm Incorporated Adaptive selection of region size for identification of samples in a transition zone for overlapped block motion compensation
US8724854B2 (en) * 2011-04-08 2014-05-13 Adobe Systems Incorporated Methods and apparatus for robust video stabilization
US9143795B2 (en) 2011-04-11 2015-09-22 Texas Instruments Incorporated Parallel motion estimation in video coding
US9369723B2 (en) * 2011-07-14 2016-06-14 Comcast Cable Communications, Llc Preserving image quality in temporally compressed video streams
US20130083840A1 (en) * 2011-09-30 2013-04-04 Broadcom Corporation Advance encode processing based on raw video data
US9883203B2 (en) * 2011-11-18 2018-01-30 Qualcomm Incorporated Adaptive overlapped block motion compensation
US9544612B2 (en) 2012-10-04 2017-01-10 Intel Corporation Prediction parameter inheritance for 3D video coding
US9813730B2 (en) * 2013-12-06 2017-11-07 Mediatek Inc. Method and apparatus for fine-grained motion boundary processing
US10230980B2 (en) 2015-01-26 2019-03-12 Qualcomm Incorporated Overlapped motion compensation for video coding
US10306229B2 (en) 2015-01-26 2019-05-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US10250904B2 (en) * 2015-05-05 2019-04-02 Avago Technologies International Sales Pte. Limited Apparatus and method for overlapped motion compensation for video coding
CN108028926B (zh) * 2015-08-20 2021-08-24 日本放送协会 图像编码装置、图像解码装置
US10212444B2 (en) 2016-01-15 2019-02-19 Qualcomm Incorporated Multi-type-tree framework for video coding
US11223852B2 (en) 2016-03-21 2022-01-11 Qualcomm Incorporated Coding video data using a two-level multi-type-tree framework
US10623774B2 (en) 2016-03-22 2020-04-14 Qualcomm Incorporated Constrained block-level optimization and signaling for video coding tools
US10560712B2 (en) 2016-05-16 2020-02-11 Qualcomm Incorporated Affine motion prediction for video coding
KR20180021942A (ko) 2016-08-22 2018-03-06 광운대학교 산학협력단 보안 카메라용 영상 코덱에서 블록 분할 정보 전송 방법 및 장치
WO2018037853A1 (ja) * 2016-08-26 2018-03-01 シャープ株式会社 画像復号装置及び画像符号化装置
US10609423B2 (en) 2016-09-07 2020-03-31 Qualcomm Incorporated Tree-type coding for video coding
KR20190029748A (ko) * 2016-09-22 2019-03-20 엘지전자 주식회사 영상 코딩 시스템에서 인터 예측 방법 및 장치
US10448010B2 (en) 2016-10-05 2019-10-15 Qualcomm Incorporated Motion vector prediction for affine motion models in video coding
US10951912B2 (en) 2016-10-05 2021-03-16 Qualcomm Incorporated Systems and methods for adaptive selection of weights for video coding
US10848788B2 (en) 2017-01-06 2020-11-24 Qualcomm Incorporated Multi-type-tree framework for video coding
US10645408B2 (en) * 2017-09-17 2020-05-05 Google Llc Dual deblocking filter thresholds
US11877001B2 (en) 2017-10-10 2024-01-16 Qualcomm Incorporated Affine prediction in video coding
WO2019078581A1 (ko) * 2017-10-16 2019-04-25 디지털인사이트주식회사 영상 부호화/복호화 방법, 장치 및 비트스트림을 저장한 기록 매체
US11425418B2 (en) * 2017-11-01 2022-08-23 Vid Scale, Inc. Overlapped block motion compensation
US11388398B2 (en) 2018-01-11 2022-07-12 Qualcomm Incorporated Video coding using local illumination compensation
CN115695789A (zh) * 2018-01-15 2023-02-03 三星电子株式会社 编码方法及其设备以及解码方法及其设备
EP4221201A1 (en) 2018-01-29 2023-08-02 InterDigital VC Holdings, Inc. Encoding and decoding with refinement of the reconstructed picture
US10715810B2 (en) 2018-02-20 2020-07-14 Qualcomm Incorporated Simplified local illumination compensation
KR20200097811A (ko) * 2018-02-22 2020-08-19 엘지전자 주식회사 영상 코딩 시스템에서 블록 분할 구조에 따른 영상 디코딩 방법 및 장치
CN111989926B (zh) 2018-02-26 2024-05-07 交互数字Vc控股公司 用于通用obmc的方法和装置
CN114554197A (zh) 2018-04-16 2022-05-27 联发科技股份有限公司 视频编解码系统中具有重叠块运动补偿的视频处理的方法及装置
KR20210028651A (ko) * 2018-07-17 2021-03-12 파나소닉 인텔렉츄얼 프로퍼티 코포레이션 오브 아메리카 비디오 코딩을 위한 움직임 벡터 예측
CN111147850B (zh) 2018-11-02 2022-10-11 北京字节跳动网络技术有限公司 用于基于历史的运动矢量预测的表维护
EP3847814A4 (en) 2018-11-06 2021-07-14 Beijing Bytedance Network Technology Co. Ltd. POSITION DEPENDENT STORAGE, MOVEMENT INFORMATION
WO2020094051A1 (en) 2018-11-06 2020-05-14 Beijing Bytedance Network Technology Co., Ltd. Signaling of side information for inter prediction with geometric partitioning
WO2020103936A1 (en) * 2018-11-22 2020-05-28 Beijing Bytedance Network Technology Co., Ltd. Pruning method for inter prediction with geometry partition
US11323748B2 (en) 2018-12-19 2022-05-03 Qualcomm Incorporated Tree-based transform unit (TU) partition for video coding
CN113170166B (zh) 2018-12-30 2023-06-09 北京字节跳动网络技术有限公司 具有几何分割的帧间预测在视频处理中有条件的应用
US20200213595A1 (en) * 2018-12-31 2020-07-02 Comcast Cable Communications, Llc Methods, Systems, And Apparatuses For Adaptive Processing Of Non-Rectangular Regions Within Coding Units
US11122297B2 (en) * 2019-05-03 2021-09-14 Google Llc Using border-aligned block functions for image compression
CN114097228B (zh) 2019-06-04 2023-12-15 北京字节跳动网络技术有限公司 具有几何分割模式编解码的运动候选列表
WO2020244546A1 (en) * 2019-06-05 2020-12-10 Beijing Bytedance Network Technology Co., Ltd. Motion information derivation for inter prediction
EP3984215A4 (en) 2019-07-14 2022-08-24 Beijing Bytedance Network Technology Co., Ltd. TRANSFORM BLOCK SIZE RESTRICTION IN VIDEO CODING
WO2021057996A1 (en) * 2019-09-28 2021-04-01 Beijing Bytedance Network Technology Co., Ltd. Geometric partitioning mode in video coding
WO2021196220A1 (zh) * 2020-04-03 2021-10-07 Oppo广东移动通信有限公司 一种帧间预测方法、编码器、解码器及存储介质

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2853553B2 (ja) 1994-02-22 1999-02-03 日本電気株式会社 動画像符号化方式
US5649032A (en) 1994-11-14 1997-07-15 David Sarnoff Research Center, Inc. System for automatically aligning images to form a mosaic image
US5818969A (en) 1995-05-12 1998-10-06 Intel Corporation Intelligent start for motion estimation search
GB2317525B (en) * 1996-09-20 2000-11-08 Nokia Mobile Phones Ltd A video coding system
FI106071B (fi) 1997-03-13 2000-11-15 Nokia Mobile Phones Ltd Mukautuva suodatin
US6868114B2 (en) 2001-01-18 2005-03-15 The Titan Corporation Interference suppression in a spread spectrum communications system using non-linear frequency domain excision
US6728415B2 (en) * 2001-03-30 2004-04-27 Hewlett-Packard Development Company, L.P. Method and apparatus for image processing using adaptive convolution filters
US6983078B2 (en) 2001-05-01 2006-01-03 Hewlett-Packard Development Company, L.P. System and method for improving image quality in processed images
EP1404136B1 (en) 2001-06-29 2018-04-04 NTT DoCoMo, Inc. Image encoder, image decoder, image encoding method, and image decoding method
US7110455B2 (en) * 2001-08-14 2006-09-19 General Instrument Corporation Noise reduction pre-processor for digital video using previously generated motion vectors and adaptive spatial filtering
WO2003021936A2 (en) 2001-09-05 2003-03-13 Emblaze Semi Conductor Ltd Method for reducing blocking artifacts
US8107535B2 (en) 2003-06-10 2012-01-31 Rensselaer Polytechnic Institute (Rpi) Method and apparatus for scalable motion vector coding
US7539248B2 (en) 2004-04-29 2009-05-26 Mediatek Incorporation Adaptive de-blocking filtering apparatus and method for MPEG video decoder
JP2007536817A (ja) 2004-05-04 2007-12-13 クゥアルコム・インコーポレイテッド 動作補償されたフレームレートアップコンバージョンのための方法および装置
CN1981536A (zh) 2004-05-04 2007-06-13 高通股份有限公司 运动补偿帧速率上调方法和设备
US20080309817A1 (en) 2004-05-07 2008-12-18 Micronas Usa, Inc. Combined scaling, filtering, and scan conversion
WO2005124664A2 (en) 2004-06-14 2005-12-29 Precoad, Inc. Image clean-up and pre-coding
KR100621584B1 (ko) 2004-07-15 2006-09-13 삼성전자주식회사 스무딩 필터를 이용하는 비디오 디코딩 방법 또는 비디오디코더
UA96121C2 (ru) * 2004-10-05 2011-10-10 Вектормакс Корпорейшн Система и способ сжатия и формирования потока видеоданных
JP4191729B2 (ja) 2005-01-04 2008-12-03 三星電子株式会社 イントラblモードを考慮したデブロックフィルタリング方法、及び該方法を用いる多階層ビデオエンコーダ/デコーダ
KR100679035B1 (ko) 2005-01-04 2007-02-06 삼성전자주식회사 인트라 bl 모드를 고려한 디블록 필터링 방법, 및 상기방법을 이용하는 다 계층 비디오 인코더/디코더
EP3229472B1 (en) 2005-09-26 2020-07-01 Mitsubishi Electric Corporation Moving image coding apparatus
US9258519B2 (en) * 2005-09-27 2016-02-09 Qualcomm Incorporated Encoder assisted frame rate up conversion using various motion models
GB0600141D0 (en) 2006-01-05 2006-02-15 British Broadcasting Corp Scalable coding of video signals
US7974478B2 (en) * 2006-08-24 2011-07-05 Dell Products L.P. Methods and apparatus for reducing storage size
US9014280B2 (en) 2006-10-13 2015-04-21 Qualcomm Incorporated Video coding with adaptive filtering for motion compensated prediction
AU2007331763B2 (en) 2006-12-12 2011-06-30 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Encoder, decoder and methods for encoding and decoding data segments representing a time-domain data stream
US8804829B2 (en) * 2006-12-20 2014-08-12 Microsoft Corporation Offline motion description for video generation
CN103501440B (zh) 2007-04-12 2017-03-01 汤姆森特许公司 用于视频编码器中的快速几何模式判定的方法和设备
US8428133B2 (en) * 2007-06-15 2013-04-23 Qualcomm Incorporated Adaptive coding of video block prediction mode
US8169216B2 (en) 2007-07-20 2012-05-01 Medical College Of Georgia Research Institute, Inc. System and method for synthesizing crossing ADC distributions via reassembly of multiple k-spaces
WO2009045682A2 (en) * 2007-09-28 2009-04-09 Athanasios Leontaris Treating video information
US20100208827A1 (en) * 2007-10-16 2010-08-19 Thomson Licensing Methods and apparatus for video encoding and decoding geometerically partitioned super macroblocks
JP5259726B2 (ja) 2007-11-30 2013-08-07 ドルビー ラボラトリーズ ライセンシング コーポレイション モーション推定の時間的平滑化
WO2010017166A2 (en) 2008-08-04 2010-02-11 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
KR101543298B1 (ko) 2008-10-13 2015-08-10 에스케이 텔레콤주식회사 동영상 부호화/복호화 장치 및 그를 위한 가변 단위의 적응적 중첩 블록 움직임 보상 장치 및 방법
JP5826747B2 (ja) 2009-06-26 2015-12-02 トムソン ライセンシングThomson Licensing 適応的な幾何学的な分割を使用した映像符号化及び復号化の方法及び装置
KR101749269B1 (ko) 2009-06-30 2017-06-22 삼성전자주식회사 적응적인 인루프 필터를 이용한 동영상 부호화와 복호화 장치 및 그 방법
US8879632B2 (en) 2010-02-18 2014-11-04 Qualcomm Incorporated Fixed point implementation for geometric motion partitioning
JP5705833B2 (ja) 2010-04-13 2015-04-22 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 画像符号化方法および画像復号化方法
JP2012070277A (ja) 2010-09-24 2012-04-05 Jvc Kenwood Corp 動画像符号化装置、動画像符号化方法及び動画像符号化プログラム
US20120147961A1 (en) 2010-12-09 2012-06-14 Qualcomm Incorporated Use of motion vectors in evaluating geometric partitioning modes
US9807424B2 (en) 2011-01-10 2017-10-31 Qualcomm Incorporated Adaptive selection of region size for identification of samples in a transition zone for overlapped block motion compensation
US8340458B2 (en) * 2011-05-06 2012-12-25 Siemens Medical Solutions Usa, Inc. Systems and methods for processing image pixels in a nuclear medicine imaging system

Also Published As

Publication number Publication date
CN103299624B (zh) 2016-05-25
EP2664137B1 (en) 2021-09-08
US9807424B2 (en) 2017-10-31
CN103299625A (zh) 2013-09-11
US20180103273A1 (en) 2018-04-12
JP2014506443A (ja) 2014-03-13
CN103299625B (zh) 2017-09-22
KR101540167B1 (ko) 2015-08-06
US20120177114A1 (en) 2012-07-12
EP2664137A1 (en) 2013-11-20
JP2014506444A (ja) 2014-03-13
KR20130119472A (ko) 2013-10-31
US9071851B2 (en) 2015-06-30
CN103299624A (zh) 2013-09-11
JP5752809B2 (ja) 2015-07-22
US10257543B2 (en) 2019-04-09
KR101540168B1 (ko) 2015-07-28
EP2664138A1 (en) 2013-11-20
US20120177120A1 (en) 2012-07-12
WO2012096729A1 (en) 2012-07-19
KR20130105912A (ko) 2013-09-26
WO2012096730A1 (en) 2012-07-19
JP5823538B2 (ja) 2015-11-25

Similar Documents

Publication Publication Date Title
ES2891175T3 (es) Realizar de manera adaptativa operaciones de suavizado
ES2866894T3 (es) Predicción de coeficientes de filtro a partir de filtros fijos para codificación de video
ES2677100T3 (es) Filtrado de bucle alrededor de los límites de segmento o de límites de mosaico en la codificación de video
JP6903644B2 (ja) ビデオコーディングのために位置依存の予測組合せを使用する改善されたビデオイントラ予測
JP6054407B2 (ja) タイル境界を越えるループフィルタリング制御
ES2688359T3 (es) Filtro de desplazamiento de banda central adaptativo para codificación de vídeo
AU2012328924C1 (en) Determining boundary strength values for deblocking filtering for video coding
US20120147961A1 (en) Use of motion vectors in evaluating geometric partitioning modes
JP2018078569A (ja) ビデオコード化のためのlcuベースの適応ループフィルタ処理
JP6158337B2 (ja) 深度マップコーディング
JP5955955B2 (ja) リーフレベルコード化単位のサブセットについての変換係数のシンタックス要素の信号伝達
JP2019519141A (ja) フィルタ処理情報のシグナリング
JP2018509074A (ja) コーディングツリーユニット(ctu)レベル適応ループフィルタ(alf)
CN116193131B (zh) 一种用于视频编码的方法、电子装置及存储介质
JP2015514362A (ja) ビデオ・コーディングのためのインタ・レイヤ・テクスチャ予測
TW202013963A (zh) 視訊編碼及解碼