Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
LOW-LATENCY VIDEO ENCODING AND DECODING METHOD
Document Type and Number:
WIPO Patent Application WO/2023/285469
Kind Code:
A1
Abstract:
The invention relates to a method for encoding a video stream with a view to obtaining a low-latency video stream. The encoding method comprises multiple steps, in particular a wavelet transform step (110) for each colour space of each video frame of the video stream, a luminance approximation step (120) in order to reduce (130) the colorimetric information of each item of colour information, a step of reducing the number of data by detecting (140) motion with respect to past frames of the video stream, and then coding the pixels to be updated using a table of coordinates, an optional step of removing data through loss of low-impact information (values of solitary pixels, low amplitudes, definition), a step (180) of identifying and rating strips and of repetition, and a final step (200) of lossless compression using a Deflate lossless compression algorithm.

Inventors:
BOUILLOUX MATTHIEU (FR)
Application Number:
PCT/EP2022/069479
Publication Date:
January 19, 2023
Filing Date:
July 12, 2022
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
TOWARDS CONSEIL (FR)
International Classes:
H04N19/63; H04N19/124; H04N19/132; H04N19/137; H04N19/169; H04N19/182; H04N19/503
Other References:
WESTERINK P H ET AL: "Subband coding of image sequences at low bit rates", SIGNAL PROCESSING. IMAGE COMMUNICATION, ELSEVIER SCIENCE PUBLISHERS, AMSTERDAM, NL, vol. 2, no. 4, 1 December 1990 (1990-12-01), pages 441 - 448, XP026678001, ISSN: 0923-5965, [retrieved on 19901201], DOI: 10.1016/0923-5965(90)90029-H
KAZUNARI IRIE ET AL: "DESIGN OF A PERFECT RECONSTRUCTIVE SUBBAND IMAGE CODING SCHEME", ELECTRONICS & COMMUNICATIONS IN JAPAN, PART I - COMMUNICATIONS, WILEY, HOBOKEN, NJ, US, vol. 75, no. 10, 1 October 1992 (1992-10-01), pages 67 - 78, XP000367692, ISSN: 8756-6621
SEELMANN G ED - WERNER R: "PROGRESSIVE FARBFERNSEHSTANDBILDUBERTRAGUNG MIT 64 KBIT/S UBERTRAGUNGSBITRATE", 1 January 1985, WEGE ZUM INTEGRIERTEN KOMMUNIKATIONSNETZ. BERLIN, 25 - 27 MAR., 1985; [NTG FACHTAGUNGEN], BERLIN, VDE VERLAG, DE, PAGE(S) 304 - 315, XP000041103
JIN TAE KIM ET AL: "SUBBAND CODING USING HUMAN VISUAL CHARACTERISTICS FOR IMAGE SIGNALS", IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS, IEEE SERVICE CENTER, PISCATAWAY, US, vol. 11, no. 1, 1 January 1993 (1993-01-01), pages 59 - 64, XP000377997, ISSN: 0733-8716, DOI: 10.1109/49.210544
KONDO T ET AL: "ADAPTIVE DYNAMIC RANGE CODING SCHEME FOR FUTURE HDTV DIGITAL VTR", SIGNAL PROCESSING OF HDTV, 3. TURIN, SEPT. 4 - 6, 1991; [PROCEEDINGS OF THE INTERNATIONAL WORKSHOP ON HDTV AND BEYOND], AMSTERDAM, ELSEVIER, NL, vol. WORKSHOP 4, 4 September 1991 (1991-09-04), pages 43 - 50, XP000379937
ANONYMOUS: "YUV, Wikipedia, The Free Encyclopedia", INTERNET ARCHIVE WAYBACK MACHINE, 19 December 2018 (2018-12-19), pages 1 - 11, XP055776674, Retrieved from the Internet [retrieved on 20210216]
Attorney, Agent or Firm:
BRINGER IP (FR)
Download PDF:
Claims:
REVENDICATIONS

1. Procédé d’encodage d’un flux vidéo caractérisé en ce qu’il comprend, pour chaque trame vidéo dudit flux vidéo, les étapes d’encodage suivantes : une étape ( 110) de transformée en ondelettes à deux dimensions pour chaque espace de couleur rouge, vert et bleu de chaque trame vidéo du flux vidéo, de sorte à obtenir à chaque répétition une image (12) sous-échantillonnée et trois sous-bandes (14, 16, 18) représentant respectivement des détails horizontaux, verticaux et diagonaux permettant une reconstruction de la trame vidéo d’origine à partir de l’image (12) sous-échantillonnée, ladite transformée en ondelettes étant réalisée une fois sur la trame puis N-l fois sur chaque image sous-échantillonnée avec N supérieur ou égal à deux, l’image sous- échantillonnée obtenue à la dernière répétition formant l’image réduite ; une étape (120) de calcul d’une approximation d’une luminance de chaque pixel de chaque image (12) réduite, par pondération de chaque valeur de couleur de chaque pixel avec un coefficient de pondération prédéterminé et constant pour chaque couleur, pour obtenir un tableau de luminance approximée pour chaque pixel ; une étape (130) de réduction des valeurs de couleur rouge et bleu de chaque pixel de chaque image (12) réduite par soustraction de l’approximation de la luminance à la valeur de couleur initiale du pixel, pour obtenir respectivement un tableau de chrominance rouge et un tableau de chrominance bleu pour chaque pixel ; une étape (140) de détection de mouvement entre la trame encodée et au moins une trame précédente dans le flux vidéo, comprenant :

- une sous-étape (142) de calcul, pour chaque pixel, d’une ou plusieurs des valeurs de comparaison suivantes :

- une première valeur de comparaison étant la moyenne des approximations de luminance du pixel dans la trame encodée et dans les trois trames précédentes du flux vidéo ;

- une deuxième valeur de comparaison étant la valeur absolue de la différence entre l’approximation de la luminance de la trame encodée et de la trame précédente du flux vidéo ;

- une troisième valeur de comparaison étant la valeur absolue de la différence entre l’approximation de la luminance de la trame encodée et l’approximation de la luminance de la trame située deux trames avant dans le flux vidéo ;

- une quatrième valeur de comparaison étant la valeur absolue de la différence entre l’approximation de la luminance de la trame encodée et la première valeur de comparaison ;

- une cinquième valeur de comparaison étant la valeur absolue de la différence entre la deuxième valeur de comparaison et la troisième valeur de comparaison ;

- une sous-étape (144) de création d’un tableau de coordonnées comprenant les pixels à modifier pour lesquels au moins une des valeurs de comparaison est supérieure à un seuil prédéfini parmi un ensemble de seuils prédéfinis comprenant au moins un seuil prédéfini ; une étape (190) de regroupement, dans un tableau dit tableau complet, d’au moins le tableau de coordonnées, le tableau de luminance approximée, le tableau de chrominance rouge et du tableau de chrominance bleu et, pour une définition d’image supérieure à la définition de l’image réduite, d’au moins deux sous- bandes représentant les détails horizontaux et verticaux ; une étape (200) de compression sans perte dudit tableau complet par un algorithme de compression sans perte.

2. Procédé d’encodage selon la revendication 1, caractérisé en ce que l’étape (110) de transformée en ondelettes utilise des ondelettes de Haar pour chaque répétition.

3. Procédé d’encodage selon l’une des revendications 1 ou 2, caractérisé en ce que l’approximation de la luminance est calculée en utilisant les coefficients de pondération suivants : coefficient égal à 0,25 pour la valeur rouge, coefficient égal à 0,6875 pour la valeur verte, coefficient égal à 0,065 pour la valeur bleue.

4. Procédé d’encodage selon la revendication 1, caractérisé en ce que la sous-étape (144) de création du tableau de coordonnées comprend une sous-étape (146) de définition des pixels à modifier selon les critères suivants : un critère de mouvement entrant, un pixel étant à modifier selon ce critère si la deuxième valeur de comparaison est supérieure à la troisième valeur de comparaison, et si la quatrième valeur de comparaison est supérieure à un premier seuil prédéfini ou la cinquième valeur de comparaison est supérieure à un deuxième seuil prédéfini ; un critère de mouvement sortant, un pixel étant à modifier selon ce critère si la deuxième valeur de comparaison est inférieure à la troisième valeur de comparaison, et si la quatrième valeur de comparaison est supérieure à un troisième seuil prédéfini ou la cinquième valeur de comparaison est supérieure à un quatrième seuil prédéfini ; un critère de correction d’erreur, un pixel étant à modifier selon ce critère si le pixel de même coordonnée n’a pas été sélectionné comme étant à modifier dans la trame précédente du flux vidéo et si la deuxième valeur de comparaison est supérieure à un cinquième seuil prédéfini.

5. Procédé d’encodage selon l’une des revendications 1 à 4, caractérisé en ce qu’il comprend une étape (180) d’encodage du tableau de luminance approximée, du tableau de chrominance rouge et/ou du tableau de chrominance bleu selon les sous-étapes suivantes, pour chaque tableau encodé : une sous-étape de détection d’une suite de valeurs de pixel du tableau encodé contenues dans un intervalle prédéterminé, ladite suite de valeurs formant une bandelette ; une sous-étape d’encodage d’une valeur d’identification d’un début de la bandelette ; une sous-étape d’encodage de la valeur minimale de pixel de la bandelette ; une sous-étape d’encodage de la valeur de chaque pixel auquel est soustraite la valeur minimale ; si au moins trois pixels se suivant ont la même valeur, une sous-étape d’encodage d’une valeur de répétition suivie du nombre de répétition en remplacement de la valeur de chacun des pixels répétés.

6. Procédé d’encodage selon l’une des revendications 1 à 5, caractérisé en ce que l’algorithme de compression sans perte est l’algorithme Deflate ou un dérivé.

7. Procédé d’encodage selon l’une des revendications 1 à 6, caractérisé en ce que le tableau de coordonnées comprend au moins un groupe de définition des pixels à modifier comprenant une valeur correspondant au nombre de pixels à ne pas modifier et au nombre de pixels à modifier dans l’image sous- échantillonnée, dans l’ordre de lecture de la trame.

8. Procédé d’encodage selon la revendication 7, caractérisé en ce qu’il comprend une étape (150) de suppression de données par suppression des groupes de définition comprenant un nombre de pixel à modifier inférieur à un sixième seuil prédéfini.

9. Procédé d’encodage selon l’une des revendications 1 à 8, caractérisé en ce qu’il comprend une étape (160) de réduction de données par modification de la valeur d’un pixel à modifier par la valeur du pixel à modifier précédent si la différence de valeur entre le pixel à modifier et le pixel à modifier précédent est inférieure à un septième seuil prédéfini.

10. Procédé d’encodage selon l’une des revendications 1 à 9, caractérisé en ce qu’il comprend une étape (170) de réduction de la définition des valeurs de pixel à modifier.

11. Procédé de décodage d’un flux vidéo encodé par un procédé d’encodage selon l’une des revendications 1 à 10 comprenant, pour chaque trame vidéo dudit flux vidéo, les étapes de décodage suivantes : une étape (410) de décompression sans perte du flux vidéo encodé par un algorithme de décompression sans perte ; une étape (420) de lecture, pour chaque trame, du tableau complet ; une étape (430) de génération d’une trame par modification des pixels à modifier selon la trame précédente et le tableau de coordonnées, par les valeurs définies dans le tableau d’entiers ; une étape (440) de reconstruction d’une image réduite pour chaque espace de couleur à partir des valeurs de luminance approximée, de chrominance bleu et de chrominance rouge ; une étape (450) de transformée en ondelettes inverse à partir de l’image réduite et des sous-bandes représentant les détails horizontaux et verticaux disponibles dans le flux vidéo encodé.

12. Dispositif d’encodage d’un flux vidéo, caractérisé en ce qu’il comprend un module de réception d’un flux vidéo brut et un module d’encodage du flux vidéo brut pour obtenir un flux vidéo encodé, ledit module d’encodage étant configuré pour mettre en œuvre les étapes d’un procédé d’encodage selon l’une des revendications 1 à 10.

Description:
DESCRIPTION

TITRE DE L’INVENTION : PROCÉDÉ D’ENCODAGE ET DÉCODAGE

VIDÉO À FAIBLE LATENCE

Domaine technique de l’invention L’invention concerne un procédé d’encodage et de décodage vidéo, en particulier pour le traitement de flux vidéo à faible latence de type flux vidéo en direct, pour des applications telle qu’une diffusion en continu et en direct ou une visioconférence.

Arrière-plan technologique Les normes de codage actuelles pour les flux vidéo sont particulièrement utilisées pour la transmission de flux vidéo de haute qualité avec un débit relativement faible, mais peu de normes de codage cherchent à optimiser l’encodage et le décodage d’un flux vidéo avec pour objectif d’obtenir une latence faible pour permettre G utilisation pour des flux vidéo en direct point à point. En particulier, les principaux formats d’encodage et de décodage vidéo, notamment le format AVI de l’Alliance for Open Media et les formats H.264 et H.265 du groupement MPEG sont concentrés sur une restitution des formats à haute- définition avec une compression efficace, ce qui nécessite d’importantes ressources de calcul. De plus, ces formats n’ont pas pour objectif une réduction de la latence, notamment car ils utilisent des prédictions utilisant des trames futures dans l’étude du mouvement des trames actuelles, ce qui retarde le calcul de la trame actuelle, généralement d’un quart de seconde ou d’une demi-seconde. En outre, la qualité d’encodage est déterminée en amont et le flux n’est pas adaptable de façon simple.

Les inventeurs ont cherché à proposer un procédé d’encodage et un procédé de décodage permettant d’obtenir des débits comparables aux normes de codage H.264 et H.265 avec une meilleure fidélité de l’information contenue dans l’image et avec une faible latence et utilisant peu de ressources et avec un flux adaptable, pour une utilisation pour une diffusion en continu de faible latence, en particulier pour une diffusion point à point. Objectifs de l’invention

L’invention vise à fournir un procédé d’encodage vidéo pour un flux vidéo à faible latence.

L’invention vise en particulier à fournir, dans au moins un mode de réalisation, un procédé d’encodage vidéo permettant l’obtention d’un flux vidéo recomposable totalement ou partiellement pour permettre un débit binaire adaptable à partir d’un traitement unique.

L’invention vise aussi à fournir, dans au moins un mode de réalisation de l’invention, un procédé d’encodage vidéo permettant d’obtenir une fidélité élevée dans le rendu de l’information contenue dans l’image, en particulier les textes et les contours.

L’invention vise aussi à fournir, dans au moins un mode de réalisation de l’invention, un procédé d’encodage vidéo permettant d’obtenir un taux de compression élevé.

L’invention vise aussi à fournir, dans au moins un mode de réalisation de l’invention, un procédé d’encodage vidéo permettant un traitement rapide pour un encodage de flux en direct, en consommant peu de ressources de calcul.

Exposé de l’invention

Pour ce faire, l’invention concerne un procédé d’encodage d’un flux vidéo caractérisé en ce qu’il comprend, pour chaque trame vidéo dudit flux vidéo, les étapes d’encodage suivantes : une étape de transformée en ondelettes à deux dimensions pour chaque espace de couleur rouge, vert et bleu de chaque trame vidéo du flux vidéo, de sorte à obtenir à chaque répétition une image sous- échantillonnée et trois sous-bandes représentant respectivement des détails horizontaux, verticaux et diagonaux permettant une reconstruction de la trame vidéo d’origine à partir de l’image sous- échantillonnée, ladite transformée en ondelettes étant réalisée une fois sur la trame puis N-l fois sur chaque image sous-échantillonnée avec N supérieur ou égal à deux, l’image sous-échantillonnée obtenue à la dernière répétition formant l’image réduite ; une étape de calcul d’une approximation d’une luminance de chaque pixel de chaque image réduite, par pondération de chaque valeur de couleur de chaque pixel avec un coefficient de pondération prédéterminé et constant pour chaque couleur, pour obtenir un tableau de luminance approximée pour chaque pixel ; une étape de réduction des valeurs de couleur rouge et bleu de chaque pixel de chaque image réduite par soustraction de l’approximation de la luminance à la valeur de couleur initiale du pixel, pour obtenir respectivement un tableau de chrominance rouge et un tableau de chrominance bleu pour chaque pixel ; une étape de détection de mouvement entre la trame encodée et au moins une trame précédente dans le flux vidéo, comprenant : o une sous-étape de calcul, pour chaque pixel, d’une ou plusieurs des valeurs de comparaison suivantes :

une première valeur de comparaison étant la moyenne des approximations de luminance du pixel dans la trame encodée et dans les trois trames précédentes du flux vidéo ;

une deuxième valeur de comparaison étant la valeur absolue de la différence entre l’approximation de la luminance de la trame encodée et de la trame précédente du flux vidéo ;

une troisième valeur de comparaison étant la valeur absolue de la différence entre l’approximation de la luminance de la trame encodée et l’approximation de la luminance de la trame située deux trames avant dans le flux vidéo ;

une quatrième valeur de comparaison étant la valeur absolue de la différence entre l’approximation de la luminance de la trame encodée et la première valeur de comparaison ;

une cinquième valeur de comparaison étant la valeur absolue de la différence entre la deuxième valeur de comparaison et la troisième valeur de comparaison; o une sous-étape de création d’un tableau de coordonnées comprenant les pixels à modifier pour lesquels au moins une des valeurs de comparaison est supérieure à un seuil prédéfini parmi un ensemble de seuils prédéfinis comprenant au moins un seuil prédéfini ; une étape de regroupement, dans un tableau dit tableau complet, d’au moins le tableau de coordonnées, le tableau de luminance approximée, le tableau de chrominance rouge et du tableau de chrominance bleu et, pour une définition d’image supérieure à la définition de l’image réduite, d’au moins deux sous- bandes représentant les détails horizontaux et verticaux ; une étape de compression sans perte dudit tableau complet par un algorithme de compression sans perte.

Un procédé d’encodage selon l’invention permet, grâce à une pluralité d’optimisations, d’obtenir un flux avec un débit binaire restitué élevé avec une fidélité élevée de l’information contenue dans l’image. Le procédé d’encodage est particulièrement adapté à l’encodage de flux en direct à faible latence, grâce au traitement rapide des données. La réduction de poids du flux et la conservation de sa cohérence sont permises par une approche de l’information par sa description simplifiée. On applique au flux une approche similaire à une vectorisation dynamique appliquée à un signal vidéo.

L’utilisation de la transformée en ondelettes permet de limiter les traitements aux images sous-échantillonnées, la trame vidéo complète étant reconstituée en fin de traitement par les sous-bandes représentant les détails de l’image.

La perte appliquée au flux vidéo devient un élément de simplification et d’optimisation du signal ainsi qu’un facteur de compression. Les différentes simplifications permettent en outre la simplification d’étapes de calcul, en particulier les calculs sur des valeurs entières et la réduction des amplitudes de valeurs, ce qui réduit les ressources de calcul nécessaires. L’objectif est que le procédé d’encodage et de décodage soit à la portée d’une exécution dans un navigateur Web, et de préférence sans utilisation de carte graphique, au moins pour certains niveaux de définition d’image.

En particulier, le flux vidéo encodé est recomposable pour permettre un débit binaire adaptable à partir d’un traitement unique. Il présente en outre une fidélité élevée dans le rendu de l’information contenue dans l’image, via une sélection précise des critères permettant la réduction de la taille des données à stocker. En particulier, l’étape de calcul d’approximation de la luminance et l’étape de réduction des valeurs permettent de réduire le nombre d’informations à stocker et permettent de s’assurer d’une cohérence globale du flux vidéo malgré la réduction de la précision de chaque information unitaire. En outre, la fidélité est supérieure aux procédés utilisant la transformée en cosinus discrète (DCT pour Discrète Cosine Transform en anglais) qui dégrade les textes et les contours.

L’étape de détection de mouvement permet d’identifier les zones géométriques constitutives du flux vidéo à mettre à jour dans la restitution du flux.

Le taux de compression élevé est obtenu grâce à la prise en compte des mouvements entre deux trames et grâce à la structure particulière de stockage des données relatives aux pixels à modifier et à la valeur desdits pixels modifiés, ladite structure étant optimisée pour être compressée par des algorithmes de compression sans perte.

Le tableau complet comprend des informations différentes selon la définition souhaitée de chaque trame du flux vidéo. Pour une définition minimale, c’est-à-dire égale à la définition de l’image réduite, seuls les tableaux de coordonnée, de luminance approximée, de chrominance rouge et de chrominance bleu sont transmis dans le tableau complet. Pour chaque doublement de la définition, le tableau complet comprend en outre les sous-bandes représentant les détails horizontaux et verticaux obtenus à la dernière répétition de la transformée en ondelettes, soit N sous-bandes horizontales et N sous-bandes verticales pour N doublement de définition. Les sous-bandes représentant les détails diagonaux peuvent ne pas être transmises car elles contiennent peu d’informations.

Les différentes valeurs de comparaison permettent d’obtenir des critères pertinents de définition d’un mouvement dans une trame par rapport à la ou les trames précédentes, dans un temps limité et en nécessitant peu de ressources.

Avantageusement et selon l’invention, l’étape de transformée en ondelettes utilise des ondelettes de Haar pour chaque répétition.

Selon cet aspect de l’invention, l’utilisation d’une transformée par ondelettes de Haar permet l’obtention d’un algorithme facilement implémentable et utilisable pour l’encodage du flux vidéo.

Avantageusement et selon l’invention, l’approximation de la luminance est calculée en utilisant les coefficients de pondération suivants : coefficient égal à 0,25 pour la valeur rouge, coefficient égal à 0,6875 pour la valeur verte, coefficient égal à 0,065 pour la valeur bleue.

Selon cet aspect de l’invention, l’approximation de la luminance est ainsi calculée de façon simple tout en restant proche de la définition classique de la luminance. Les coefficients sont choisis pour accélérer le traitement de l’encodage grâce à G utilisation de quotients basés sur des multiples d’un seizième, respectivement quatre seizièmes pour le coefficient affecté à la valeur rouge, onze seizièmes pour le coefficient affecté à la valeur verte et un seizième pour le coefficient affecté à la valeur bleue.

Avantageusement et selon l’invention, la sous-étape (144) de création du tableau de coordonnées comprend une sous-étape (146) de définition des pixels à modifier selon les critères suivants : - un critère de mouvement entrant, un pixel étant à modifier selon ce critère si la deuxième valeur de comparaison est supérieure à la troisième valeur de comparaison, et si la quatrième valeur de comparaison est supérieure à un premier seuil prédéfini ou la cinquième valeur de comparaison est supérieure à un deuxième seuil prédéfini ; un critère de mouvement sortant, un pixel étant à modifier selon ce critère si la deuxième valeur de comparaison est inférieure à la troisième valeur de comparaison, et si la quatrième valeur de comparaison est supérieure à un troisième seuil prédéfini ou la cinquième valeur de comparaison est supérieure à un quatrième seuil prédéfini ; un critère de correction d’erreur, un pixel étant à modifier selon ce critère si le pixel de même coordonnée n’a pas été sélectionné comme étant à modifier dans la trame précédente du flux vidéo et si la deuxième valeur de comparaison est supérieure à un cinquième seuil prédéfini.

Selon cet aspect de l’invention, le critère de mouvement entrant (ou débutant) permet de détecter une augmentation de la valeur du pixel suffisamment importante pour être encodée comme équivalent à un début de mouvement, le critère de mouvement sortant (ou finissant) permet de détecter une diminution de la valeur du pixel suffisamment importante pour être encodée comme équivalent à une fin de mouvement, et le critère de correction d’erreur permet de corriger une erreur du fait de l’approximation des critères de mouvement entrant et sortant par rapport à une technique classique de détection de mouvement par dérivée seconde, qui est plus consommatrice de ressources.

En utilisant les mêmes valeurs pour le premier seuil prédéfini et le troisième seuil prédéfini d’une part, et pour le deuxième seuil prédéfini et le quatrième seuil prédéfini d’autre part, il est possible de réunir les critères de mouvement entrant et sortant dans un même critère de mouvement.

Avantageusement, un procédé selon l’invention comprend une étape d’encodage du tableau de luminance approximée, du tableau de chrominance rouge et/ou du tableau de chrominance bleu selon les sous-étapes suivantes, pour chaque tableau encodé : une sous-étape de détection d’une suite de valeurs de pixel du tableau encodé contenues dans un intervalle prédéterminé, ladite suite de valeurs formant une bandelette ; une sous-étape d’encodage d’une valeur d’identification d’un début de la bandelette ; une sous-étape d’encodage de la valeur minimale de pixel de la bandelette ; une sous-étape d’encodage de la valeur de chaque pixel auquel est soustraite la valeur minimale ; si au moins trois pixels se suivant ont la même valeur, une sous-étape d’encodage d’une valeur de répétition suivie du nombre de répétition en remplacement de la valeur de chacun des pixels répétés.

Selon cet aspect de l’invention, la formation de bandelette permet de réduire la quantité de données nécessaire (le nombre de bits) pour stocker l’information. Cette utilisation de bandelette est pertinente du fait de la succession des traitements précédents qui permettent de réduire l’intervalle des valeurs stockées, par seuillage des valeurs et par lissage des valeurs.

Une bandelette comprend une série de valeurs proches, c’est-à-dire qui peuvent être exprimées dans un nombre de bit limité par rapport à une valeur minimale de la série. Par exemple, pour un codage sur quatre bits, on utilise une valeur sur quatre bits pour stocker la valeur d’identification de la bandelette (par exemple la valeur quatorze indique qu’une bandelette débute), une valeur sur quatre bits est utilisée pour indiquer une répétition (par exemple la valeur quinze indique qu’une répétition suit et la valeur suivante indique le nombre de répétitions), et il reste quatorze valeurs sur quatre bits (par exemple de zéro à treize) pour exprimer la valeur de chaque pixel par rapport à la valeur minimale. Une bandelette comprend alors des valeurs qui se suivent s’étendant dans l’intervalle [valeur minimale ; valeur minimale + 13]. Avantageusement et selon l’invention, l’algorithme de compression sans perte est l’algorithme Deflate ou un dérivé.

Selon cet aspect de l’invention, l’algorithme de compression Deflate utilise l’algorithme LZ77 et le codage de Huffman pour obtenir un taux de compression important avec une faible puissance de calcul nécessaire pour l’encodage et le décodage. La structure particulière des données obtenues par le procédé selon l’invention permet d’obtenir une structure de donnée remarquablement comparable à une série de phrases, comprenant des motifs et des répétitions, ce qui entraîne que l’algorithme Deflate est particulièrement efficace sur cette structure de données. Le taux de compression du flux vidéo est donc particulièrement optimisé par cette compression sans perte. D’autres algorithmes de compression dérivés peuvent être utilisés, en particulier les algorithmes efficaces sur les structures de données comparable à une série de phrase, notamment les algorithmes utilisant des arbres de codage tel que mis en œuvre dans le codage de Huffman.

Avantageusement et selon l’invention, ledit tableau de coordonnées comprend au moins un groupe de définition des pixels à modifier comprenant une valeur correspondant au nombre de pixels à ne pas modifier et au nombre de pixels à modifier dans l’image sous-échantillonnée, dans l’ordre de lecture de la trame.

De par sa répartition statistique, le tableau de coordonnées peut en outre être noté de façon dynamique sur 4, 8, 12, 16 ou 20 bits, suivant les intervalles [0,7] [8,63] [64, 512] [512, 4096] [4096, 65536]

Avantageusement, un procédé d’encodage selon cette dernière variante de l’invention comprend une étape de suppression de données par suppression des groupes de définition comprenant un nombre de pixel à modifier inférieur à un sixième seuil prédéfini.

Selon cet aspect de l’invention, cette suppression permet de réduire le nombre de groupe de définition à encoder en supprimant les groupes comprenant un nombre réduit de pixel, pour lesquels une modification de la valeur des pixels aurait un impact limité sur le flux vidéo. Par exemple, le groupe de pixel est supprimé si le nombre de pixel à modifier dans le groupe est strictement inférieur à deux, les pixels solitaires sont supprimés (le sixième seuil est égal à un dans cet exemple).

Lorsqu’un groupe de définition est supprimé, le groupe de définition suivant est mis à jour pour additionner le nombre de pixels à ne pas modifier et le nombre de pixel à modifier du groupe de définition supprimé à la valeur correspondant au nombre de pixels à ne pas modifier.

Avantageusement, un procédé d’encodage selon l’invention comprend une étape de réduction de données par modification de la valeur d’un pixel à modifier par la valeur du pixel à modifier précédent si la différence de valeur entre le pixel à modifier et le pixel à modifier précédent est inférieure à un septième seuil prédéfini.

Selon cet aspect de l’invention, la réduction de donnée permet d’uniformiser des valeurs de pixel proches, correspondant à des variations de faible amplitude,

Avantageusement, un procédé d’encodage selon l’invention comprend une étape de réduction de la définition des valeurs de pixel à modifier.

Selon cet aspect de l’invention, la réduction de la définition permet de réduire la taille des données à conserver pour encoder le flux vidéo. Par exemple, une réduction de la définition des valeurs de pixels peut être réalisée en divisant par deux l’ensemble des valeurs de pixel à modifier, de sorte à ce que l’intervalle entre la valeur minimale et la valeur maximale que peuvent prendre les pixels est réduit et donc peut être encodé avec un bit en moins.

L’invention concerne également un procédé de décodage d’un flux vidéo encodé par un procédé d’encodage selon l’invention comprenant, pour chaque trame vidéo dudit flux vidéo, les étapes de décodage suivantes : une étape de décompression sans perte du flux vidéo encodé par un algorithme de décompression sans perte ; une étape de lecture, pour chaque trame, du tableau complet ; une étape de génération d’une trame par modification des pixels à modifier selon la trame précédente et le tableau de coordonnées, par les valeurs définies dans le tableau d’entiers ; une étape de reconstruction d’une image réduite pour chaque espace de couleur à partir des valeurs de luminance approximée, de chrominance bleu et de chrominance rouge ; une étape de transformée en ondelettes inverse à partir de l’image réduite et des sous-bandes représentant les détails horizontaux et verticaux disponibles dans le flux vidéo encodé.

Un procédé de décodage selon l’invention permet donc le décodage du flux vidéo. Le décodage nécessite peu de puissance de calcul et peut donc être réalisé avec une faible latence, trame par trame et au fur et à mesure de la réception du flux. Malgré les différentes approximations utilisées lors de l’encodage, le flux vidéo décodé est fidèle au flux vidéo avant l’encodage. La transformée en ondelettes inverse s’effectue en fonction du nombre de sous-bandes reçues qui peut différer selon la définition de l’image souhaitée, comme explicité plus haut.

Avantageusement et selon l’invention, le procédé de décodage peut comprendre une étape finale d’ajout de flou gaussien. Cette étape est destinée à réduire la formation de tramage dans les images du flux vidéo qui peut apparaître du fait de l’utilisation de la transformée en ondelettes, notamment par l’utilisation d’ ondelettes de Haar.

L’invention concerne également un dispositif d’encodage d’un flux vidéo, caractérisé en ce qu’il comprend un module de réception d’un flux vidéo brut et un module d’encodage du flux vidéo brut pour obtenir un flux vidéo encodé, ledit module d’encodage étant configuré pour mettre en œuvre les étapes d’un procédé d’encodage selon l’invention.

L’invention concerne également un procédé d’encodage, un procédé de décodage et un dispositif d’encodage, caractérisés en combinaison par tout ou partie des caractéristiques mentionnées ci-dessus ou ci-après.

Liste des figures

D'autres buts, caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante donnée à titre uniquement non limitatif et qui se réfère aux figures annexées dans lesquelles :

[Fig. 1] est une vue schématique d’un procédé d’encodage selon un mode de réalisation de l’invention ;

[Fig.2] est une vue schématique d’une transformation en ondelettes du procédé d’encodage selon un mode de réalisation de l’invention ;

[Fig. 3] est une vue schématique d’une portion d’une trame vidéo telle qu’elle est enregistrée dans un procédé d’encodage selon un mode de réalisation de l’invention.

[Fig. 4] est une vue schématique d’un procédé de décodage selon un mode de réalisation de l’invention.

Description détaillée d’un mode de réalisation de l’invention

Sur les figures, les échelles et les proportions ne sont pas strictement respectées et ce, à des fins d’illustration et de clarté.

En outre, les éléments identiques, similaires ou analogues sont désignés par les mêmes références dans toutes les figures.

La figure 1 représente schématiquement un procédé 10 d’encodage selon un mode de réalisation de l’invention, permettant d’encoder chaque trame d’un flux vidéo. Chaque trame (frame en anglais) ou image du flux vidéo forme une matrice comprenant les valeurs de chaque pixel qui compose la trame. Dans le mode de réalisation décrit, chaque pixel est codé sur 8 bits soit un octet dans la trame originale destinée à être encodée.

Le procédé 100 d’encodage comprend, pour chaque trame vidéo du flux vidéo, un ensemble d’étape permettant d’obtenir un flux vidéo encodé.

Le procédé 100 d’encodage comprend une étape 110 de transformée en ondelettes à deux dimensions pour chaque espace de couleur rouge, vert et bleu de chaque trame vidéo du flux vidéo. En référence avec la figure 2 représentant une telle transformation en ondelettes, l’étape permet d’obtenir à chaque répétition, à partir d’une trame 10 d’origine dans un des espaces de couleur, une image 12 sous- échantillonnée et trois sous-bandes, une première sous-bande 14 représentant des détails horizontaux, une deuxième sous-bande 16 représentant des détails verticaux et une troisième sous-bande 18 représentant des détails diagonaux. Les trois sous- bandes permettent une reconstruction de la trame vidéo d’origine à partir de l’image sous-échantillonnée 12.

La transformée comprend une étape intermédiaire comprenant deux sous- bandes intermédiaires relatives aux détails horizontaux, une première sous-bande 20 intermédiaire correspondant à la moyenne des pixels de la trame 10 d’origine deux à deux suivant l’axe horizontal, et une deuxième sous-bande 22 intermédiaire correspondant à une erreur correspondant à l’erreur entre la trame 10 d’origine et l’image 12 sous-échantillonnées dans le sens horizontal. L’étape suivante correspond à la même opération dans le sens vertical, où l’image 12 sous- échantillonnée correspond à la moyenne des pixels de la première sous-bande 20 intermédiaire deux à deux suivant l’axe vertical, la première sous-bande 14 correspondant à la moyenne des pixels de la deuxième sous-bande 20 intermédiaire deux à deux suivant l’axe vertical, la deuxième sous-bande 16 correspondant à l’erreur de la première sous-bande 20 intermédiaire et l’image 12 sous- échantillonnées dans le sens vertical, et la troisième sous-bande 18 correspondant à l’erreur de la deuxième sous-bande 22 intermédiaire et l’image 12 sous- échantillonnées dans le sens vertical. Pour chaque pixel, on ne conserve pour chaque couleur que la partie entière du calcul. Les valeurs sont recentrées pour conserver uniquement des données sous forme d’entiers non-signés.

Les premières, deuxièmes et troisième sous-bandes 14, 16, 18 peuvent avoir leur notation recentrée sur des entiers non-signés, en particulier sur 8 bits, afin d’améliorer l’efficacité du traitement.

Dans certains modes de réalisation, l’information contenue dans la troisième sous-bande 18 peut être supprimée pour gagner en compression, car l’information transmise par cette troisième sous-bande 18 est faible par rapport aux autres sous- bandes.

Selon le taux de compression souhaité, ladite transformée en ondelettes est effectuée une fois sur la trame 10 d’origine, puis répétée N-l fois sur chaque image 12 sous-échantillonnée, de sorte à atteindre un total de N répétitions de la transformée, avec N supérieur ou égal à deux. La transformée en ondelettes est effectuée par exemple par ondelettes de Haar. L’image sous-échantillonnée obtenue à la dernière répétition est appelée image réduite.

Une fois la transformée en ondelettes obtenue, le procédé comprend une étape 120 de calcul d’une approximation d’une luminance de chaque pixel de chaque image 12 réduite, par pondération de chaque valeur de couleur de chaque pixel avec un coefficient de pondération prédéterminé et constant pour chaque couleur.

En particulier, on peut utiliser les coefficients de pondération suivants : coefficient égal à 0,25=4/16 pour la valeur rouge, coefficient égal à 0,6875=11/16 pour la valeur verte, coefficient égal à 0,065=1/16 pour la valeur bleue.

Ces coefficients de pondération permettent de simplifier le calcul de la luminance, en utilisant des valeurs proches des valeurs classiques de calcul de la luminance mais permettant des calculs simplifiés grâce aux multiples de seizièmes.

Les valeurs de luminance approximée pour chaque pixel sont stockées dans un tableau de luminance approximée.

L’approximation de la luminance ainsi calculée permet en outre la mise en œuvre dans le procédé d’encodage d’une étape 130 de réduction des valeurs de couleur rouge et bleu de chaque pixel de chaque trame par soustraction de l’approximation de la luminance à la valeur de couleur initiale du pixel, pour obtenir respectivement un tableau de chrominance rouge et un tableau de chrominance bleu pour chaque pixel.

En particulier, avec L(x) l’approximation de la luminance, Xrouge une valeur de couleur rouge d’un pixel, Xbleu une valeur de couleur bleue d’un pixel et Xvert une valeur de couleur verte d’un pixel, on obtient :

L(x) = ((4 * Xrouge) + (11 * Xvert) + Xbleu) / 16), avec L(x) calculé en valeur absolue et ramené à une valeur entière dans l’intervalle [0 ; 255] pour être encodé dans un octet, et la réduction des valeurs Xrouge et Xbleu prenant la forme de deux fonctions f : f(Xrouge) = 128 + ((L(x) - Xrouge) / 2), et f (Xbleu) = 128 + ((L(x) - Xbleu) / 2), le résultat étant calculé en valeur absolue et ramené à une valeur entière dans l’intervalle [0 ; 255] pour être encodé dans un octet.

Ainsi, malgré une réduction de précision de l’information unitaire, la cohérence de l’ensemble est conservée. Les valeurs ainsi obtenues sont dans un intervalle réduit entre une valeur minimale et une valeur maximale. En outre, la différence de valeurs de couleur entre deux pixels différents est réduite ce qui peut permettre d’encoder des valeurs de couleur proches par répétition d’une même valeur.

Le procédé 100 d’encodage comprend ensuite une étape 140 de détection de mouvement entre la trame encodée et au moins une trame précédente dans le flux vidéo. Cette étape 140 de détection de mouvement permet de sélectionner uniquement les pixels correspondant à un mouvement, c’est-à-dire les pixels dont la valeur se modifie de façon suffisamment importante d’une trame à l’autre dans le flux vidéo. L’objectif est de ne pas encoder la valeur d’un pixel qui n’a pas été modifié d’une trame à l’autre pour réduire le nombre d’information à encoder. Pour réduire la latence, les calculs ne s’effectuent pas à partir de trames futures du flux vidéo.

L’étape 140 de détection de mouvement comprend notamment une sous- étape 142 de calcul, pour chaque pixel, d’une ou plusieurs des valeurs de comparaison. En particulier, la sous-étape 142 de calcul d’au moins une valeur de comparaison, pour chaque pixel, comprend le calcul d’une ou plusieurs des valeurs de comparaison suivantes : une première valeur de comparaison, notée avg(x), étant la moyenne des approximations de luminance L(x) du pixel dans l’image réduite de la trame encodée et dans les images réduites des n trames précédentes du flux vidéo, avec par exemple n=3 ; une deuxième valeur de comparaison, notée ml(x), étant la valeur absolue de la différence entre l’approximation de la luminance de l’image réduite de la trame encodée et de l’image réduite de la trame précédente du flux vidéo ; une troisième valeur de comparaison, notée m2(x), étant la valeur absolue de la différence entre l’approximation de la luminance de la l’image réduite de la trame encodée et l’approximation de la luminance de l’image réduite de la trame située deux trames avant dans le flux vidéo ; une quatrième valeur de comparaison, notée m3(x), étant la valeur absolue de la différence entre l’approximation de la luminance de la l’image réduite de la trame encodée et la première valeur de comparaison ; une cinquième valeur de comparaison, notée m4(x) étant la valeur absolue de la différence entre la deuxième valeur ml(x) de comparaison et la troisième valeur m2(x) de comparaison.

L’étape 140 de détection de mouvement comprend en outre une sous-étape 144 de création d’un tableau de coordonnées comprenant les pixels à modifier selon certains critères par exemple les pixels pour lesquels au moins une des valeurs de comparaison est supérieure à un seuil prédéfini parmi un ensemble de seuils prédéfinis comprenant au moins un seuil prédéfini, ledit tableau de coordonnées comprenant par exemple au moins un groupe de définition des pixels à modifier comprenant une valeur correspondant au nombre de pixels à ne pas modifier et au nombre de pixels à modifier, dans l’ordre de lecture de la trame. Les seuils prédéfinis sont par exemple les suivants : un premier seuil si, par exemple égal à 4 dans un mode de réalisation préférentiel ; un deuxième seuil avgl, par exemple égal à 2 dans un mode de réalisation préférentiel ; un troisième seuil s2, par exemple égal à 6 dans un mode de réalisation préférentiel ; un quatrième seuil avg2, par exemple égal à 3 dans un mode de réalisation préférentiel ; un cinquième seuil adj, par exemple égal à 10 dans un mode de réalisation préférentiel.

Les comparaisons des valeurs de comparaison avec les différents seuils sont de préférence combinées pour détecter des types de mouvements particuliers, de sorte à préciser les critères définissant les pixels à modifier. En particulier, la sous- étape 144 de création du tableau de coordonnées comprend une sous-étape 146 de définition des pixels à modifier selon les critères suivants : un critère de mouvement entrant, un pixel étant à modifier selon ce critère si la deuxième valeur de comparaison est supérieure à la troisième valeur de comparaison, et si la quatrième valeur de comparaison est supérieure à un premier seuil prédéfini ou la cinquième valeur de comparaison est supérieure à un deuxième seuil prédéfini. En résumé, le critère peut être écrit selon la formule suivante :

(m4(x) > si OU m3(x) > avgl) ET ml(x) > m2(x) un critère de mouvement sortant, un pixel étant à modifier selon ce critère si la deuxième valeur de comparaison est inférieure à la troisième valeur de comparaison, et si la quatrième valeur de comparaison est supérieure à un troisième seuil prédéfini ou la cinquième valeur de comparaison est supérieure à un quatrième seuil prédéfini. En résumé, le critère peut être écrit selon la formule suivante :

(m4(x) > s2 OU m3(x) > avg2) ET ml(x) < m2(x) un critère de correction d’erreur, un pixel étant à modifier selon ce critère si le pixel de même coordonnée n’a pas été modifié dans la trame précédente du flux vidéo et si la deuxième valeur de comparaison est supérieure à un cinquième seuil prédéfini. En résumé, le critère peut être écrit selon la formule suivante :

(pixel modifié à T-l) ET ml(x) > adj

Le tableau de coordonnées est composé des pixels à modifier dans l’image réduite, et est par exemple formé de groupes de définition comprenant une valeur correspondant au nombre de pixels à ne pas modifier et une valeur correspondant au nombre de pixels à modifier. Il forme ainsi une table séquentielle comme suit : [ [ Nombre de pixels à ne pas modifier, Nombre de pixels à modifier ], [ Nombre de pixels à ne pas modifier, Nombre de pixels à modifier ], etc. ].

Le procédé 100 d’encodage comprend ensuite plusieurs étapes optionnelles, permettant d’augmenter le taux de compression si nécessaire par ajout de pertes représentatives de données à faible impact.

Par exemple, le procédé 100 d’encodage comprend une étape 150 de suppression de données par suppression des groupes de définition comprenant un nombre de pixel à modifier inférieur à un sixième seuil prédéfini. En particulier, le seuil peut être égal à 2, ce qui permet de supprimer les groupes de définition à pixel solitaire, c’est-à-dire comprenant uniquement un pixel à modifier. Si un groupe de définition est modifié, le groupe de définition suivant est mis à jour pour inclure les pixels du groupe de définition modifié dans le terme correspondant aux pixels à ne pas modifier.

Le procédé 100 d’encodage peut comprendre également une étape 160 de réduction de données par modification de la valeur d’un pixel à modifier par la valeur du pixel à modifier précédent si la différence de valeur entre le pixel à modifier et le pixel à modifier précédent est inférieure à un septième seuil prédéfini.

Ainsi, on peut réunir des valeurs proches de pixels à modifier pour faciliter l’encodage des valeurs de pixels à modifier pour obtenir des répétitions.

Le procédé peut également comprendre une étape 170 de réduction de la définition des valeurs de pixel à modifier. En particulier, la valeur des pixels à modifier peut être encodée sur un nombre de bits inférieur au nombre de bit initial sur la trame matricielle, par exemple 6 bits au lieu de 8 bits. La perte de données est peu significative du fait des traitements précédents.

Le procédé 100 d’encodage comprend ensuite une étape 180 d’encodage du tableau de luminance approximée, du tableau de chrominance rouge et/ou du tableau de chrominance bleu selon les sous-étapes suivantes, pour chaque tableau encodé : une sous-étape de détection d’une suite de valeurs de pixel du tableau encodé contenues dans un intervalle prédéterminé, ladite suite de valeurs formant une bandelette ; une sous-étape d’encodage d’une valeur d’identification d’un début de la bandelette ; une sous-étape d’encodage de la valeur minimale de pixel de la bandelette ; une sous-étape d’encodage de la valeur de chaque pixel auquel est soustraite la valeur minimale ; si au moins trois pixels se suivant ont la même valeur, une sous-étape d’encodage d’une valeur de répétition suivie du nombre de répétition en remplacement de la valeur de chacun des pixels répétés.

L’étape 180 d’encodage dans un tableau d’entier permet ainsi de réduire les données à stocker à une valeur de chaque pixel par rapport à une valeur minimale stockée indépendamment de manière unique pour chaque bandelette. La figure 3 représente schématiquement une portion 300 d’une trame vidéo telle qu’elle est enregistrée dans un procédé d’encodage selon un mode de réalisation de l’invention. La portion 300 comprend ici deux lignes 302, 304 de huit pixels dont les valeurs sont représentées comme comprises entre Vmin et Vmax.

La trame vidéo telle qu’encodée à ce stade du procédé d’encodage fait apparaître des bandelettes 306 regroupant une suite de valeurs contenues dans un intervalle prédéterminé, par exemple une différence maximale de treize entre la valeur maximale et la valeur minimale des pixels de la bandelette, pour pouvoir être encodé sur quatre bits en conservant deux bits pour la notation du début de bandelette et des répétitions. Les valeurs qui ne peuvent pas être regroupées dans une bandelette sont encodées de façon classique, la valeur du pixel étant enregistrée telle quelle.

Le procédé 100 d’encodage comprend ensuite une étape 190 de regroupement, dans un tableau dit tableau complet, d’au moins le tableau de coordonnées, le tableau de luminance approximée, le tableau de chrominance rouge et du tableau de chrominance bleu et, pour une définition d’image supérieure à la définition de l’image réduite, d’au moins deux sous-bandes représentant les détails horizontaux et verticaux. En particulier, pour une définition d’image égale à la définition de l’image réduite, seuls les tableaux de coordonnée, de luminance approximée, le tableau de chrominance rouge et du tableau de chrominance bleu sont encodés, pour une définition deux fois plus importante (en largeur et en hauteur), deux sous-bandes représentant les détails horizontaux et verticaux sont ajoutées, et pour une définition N fois plus importante (le maximum permis par la répétition des N transformées en ondelettes), l’intégralité des sous-bandes représentant les détails horizontaux et verticaux sont ajoutées.

Enfin, le procédé 100 d’encodage comprend une étape 200 de compression sans perte dudit tableau complet par un algorithme de compression sans perte. La compression sans perte s’effectue de préférence grâce à un algorithme de type Deflate, particulièrement adapté au format de donnée du tableau complet.

La figure 4 représente schématiquement un procédé 400 de décodage selon un mode de réalisation de l’invention. Le procédé comprend les étapes de décodages suivantes : une étape (410) de décompression sans perte du flux vidéo encodé par un algorithme de décompression sans perte ; une étape (420) de lecture, pour chaque trame, du tableau complet ; une étape (430) de génération d’une trame par modification des pixels à modifier selon la trame précédente et le tableau de coordonnées, par les valeurs définies dans le tableau d’entiers ; une étape (440) de reconstruction d’une image réduite pour chaque espace de couleur à partir des valeurs de luminance approximée, de chrominance bleu et de chrominance rouge ; - une étape (450) de transformée en ondelettes inverse à partir de l’image réduite et des sous-bandes représentant les détails horizontaux et verticaux disponibles dans le flux vidéo encodé.

Si des valeurs de pixels ont été réunies sous forme de bandelette, ces bandelettes sont interprétées lors de l’étape de lecture du tableau complet.