Brevet FR2725577A1 — publié le 19960412

PROCEDE DE CODAGE OU DE DECODAGE DE VECTEURS MOUVEMENT ET DISPOSITIF DE CODAGE OU DE DECODAGE METTANT EN OEUVRE LEDIT PROCEDE La présente invention concerne un procédé de codage de vecteurs mouvement dans un système de compression d'images. L'invention s'applique notamment, mais non uniquement, au codage d'images vidéo pour des canaux de télécommunication à débit inférieur à 64 kbit/s. L'invention concerne également un procédé de décodage, un dispositif de codage et un dispositif de décodage. Un dispositif de compression d'images, ou codeur, est décrit par exemple dans la Recommandation H.261 du Comité Consultatif International Télégraphique et Téléphonique (CCITT), notamment en référence à la figure 3 ("Codeur de source") de ce document. Le dispositif est basé sur un traitement de l'image par blocs ou macroblocs de pixels. Un bloc est composé d'une matrice de huit fois huit pixels, tandis qu'un macrobloc comprend quatre blocs. Un macro- bloc peut être codé suivant l'un des deux modes dits "inter" ou "intra", tous les blocs composant le macro-bloc étant codés suivant le même mode. Dans le cas du codage "intra", les blocs sont soumis à une transformation cosinus discrète, les coefficients ainsi obtenus étant quantifiés, puis codés suivant un procédé à code à longueur variable (codage "VLC'). Dans le cas du codage "inter", c'est la différence entre les blocs et des blocs de même position d'une image de référence qui est soumise à la transformation cosinus discrète. Pour améliorer les performances du codage en mode "inter", des procédés de compensation de mouvement sont mis en oeuvre. Un procédé de ce type permet de déterminer, dans l'image de référence ou une fenêtre de celle-ci, un macro-bloc qui permettra un codage "inter" efficace du macro-bloc à coder de l'image courante. Divers critères de sélection existent pour déterminer un tel macro-bloc dans l'image de référence. La position relative du macro-bloc de référence par rapport à la position du macro-bloc à coder dans l'image courante est déterminée 2 2725577 par ce que l'on appelle un vecteur mouvement ("Motion vector' en terminologie anglaise). Ce vecteur mouvement est transmis dans l'en-tête ("Header") du macro-bloc codé. Un décodeur possède lui aussi une mémoire comportant I'image de référence. Connaissant le vecteur mouvement et les coefficients correspondant au macro-bloc codé, il pourra restituer les valeurs des pixels du macro-bloc d'origine. Ces valeurs peuvent comporter des erreurs, notamment une erreur de quantification. Les vecteurs mouvement sont codés par différence par rapport à un vecteur prédiction. Ce vecteur est égal au vecteur mouvement du macro- bloc situé immédiatement à la gauche du macro-bloc à coder ou décoder. Les composantes horizontale H et verticale V d'un vecteur sont codées séparément. Selon un procédé connu, le vecteur prédiction est réinitialisé à (0,0) dans les deux cas suivants: -lorsque le macro-bloc immédiatement à gauche du macro-bloc à coder ou décoder a été codé en mode "intra", -lorsque le macro-bloc à coder est situé sur le bord gauche de I'image. L'invention a pour objet un procédé de codage différentiel d'un vecteur mouvement associé à un macro-bloc caractérisé en ce qu'il comprend les étapes: - de détermination des composantes dudit vecteur mouvement, - de détermination d'un vecteur prédiction dont chaque composante est égale à la valeur médiane des composantes correspondantes d'au moins trois vecteurs mouvement candidats, un vecteur mouvement candidat étant un vecteur associé à un macro-bloc précédemment codé, - de soustraction des composantes ainsi obtenues aux composantes du vecteur à coder. 3 2725577 Selon un mode de réalisation particulier, les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat est situé en dehors de l'image. Selon un mode de réalisation particulier, les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat a été codé en mode "intra". Selon un mode de réalisation particulier, les macro-blocs associés aux vecteurs mouvement candidats sont des macro-blocs adjacents au macro-bloc dont un vecteur est à coder. Selon un mode de réalisation particulier, les macro-blocs associés aux vecteurs mouvement candidats font partie des macro-blocs situés au dessus ou à gauche du macro-bloc dont un vecteur est à coder. Selon un mode de réalisation particulier, les macro-blocs associés aux vecteurs mouvement candidats comprennent le macro-bloc situé immédiatement à gauche, le macro-bloc situé immédiatement au dessus et le macro-bloc situé au dessus et à droite du macro-bloc dont un vecteur est à coder. L'invention a aussi pour objet un procédé de décodage d'un vecteurs mouvement codé par codage différentiel caractérisé en ce qu'il comprend les étapes: - d'extraction des différences de composantes correspondant à ce vecteur, - de détermination d'un vecteur prédiction dont chaque composante est égale à la valeur médiane des composantes correspondantes de vecteurs associés à au moins trois macro-blocs précédemment décodés, 4 2725577 - d'addition desdites différences de composantes aux composantes du vecteur prédiction. Selon un mode de réalisation particulier, les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat est situé en dehors de l'image. Selon un mode de réalisation particulier, les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat a été codé en mode "intra". Selon un mode de réalisation particulier, les macro-blocs associés aux vecteurs mouvement candidats sont des macro-blocs adjacents au macro-bloc dont un vecteur est à décoder. Selon un mode de réalisation particulier, les macro-blocs associés aux vecteurs mouvement candidats font partie des macro-blocs situés au dessus ou à gauche du macro-bloc dont un vecteur est à décoder. Selon un mode de réalisation particulier, les macro-blocs associés aux vecteurs mouvement candidats comprennent le macro-bloc situé immédiatement à gauche, le macro-bloc situé immédiatement au dessus et le macro-bloc situé au dessus et à droite du macro-bloc dont un vecteur est à décoder. L'invention a aussi pour objet un dispositif de compression d'images comportant un processeur d'estimation de mouvement produisant des vecteurs mouvement, caractérisé en ce que, lesdits vecteurs étant codés par rapport à un vecteur prédiction, ledit dispositif comprend: 2725577 - des moyens de détermination d'un vecteur prédiction dont chaque composante est égale à la valeur médiane des composantes correspondantes d'au moins trois vecteurs mouvement candidats, un vecteur mouvement candidat étant un vecteur associé à un macro-bloc précédemment codé, - des moyens de soustraction des composantes ainsi obtenues aux composantes du vecteur à coder, - des moyens de codage des valeurs obtenues par ladite soustraction. L'invention a aussi pour objet un dispositif de décompression d'images compressées à l'aide d'un procédé de compensation de mouvement, caractérisé en ce qu'il comprend: -un registre tampon recevant des données compressées, -des moyens de démultiplexage reliés audit registre, -des moyens de déquantification reliés aus moyens de démultiplexage, -des moyens de transformation inverse de coefficients démultiplexés et déquantifiés, -des moyens d'extraction de données concernant des vecteurs mouvement codés selon un codage différentiel par rapport à un vecteur prédiction, -des moyens de détermination du vecteur prédiction à partir de vecteurs mouvement correspondant à des macro-blocs précédemment décodés. Selon un mode de réalisation particulier, le dispositif de compression, respectivement de décompression met en oeuvre le procédé de codage, respectivement de décodage. L'invention sera mieux comprise à travers la description d'un exemple particulier préféré non limitatif, illustré par les figures parmi lesquelles: 6 2725577 -la figure 1 est un schéma fonctionnel d'un codeur d'images mettant en oeuvre l'invention, -la figure 2 représente la numérotation des macroblocs d'une image au format QFIC, -la figure 3 illustre le traitement de vecteurs candidats correspondant à des macro-blocs situés au delà des limites de l'image, -la figure 4 est un schéma fonctionnel d'un décodeur mettant en oeuvre le procédé conforme à l'invention. Un codeur d'images vidéo est représenté à la figure 1. Ce codeur comprend une entrée vidéo 1 alimentant un processeur de compensation de mouvement 10 (associé à une mémoire de référence 2), un soustracteur 3 et l'une des entrées d'un multiplexeur 4 à deux entrées. La seconde entrée du multiplexeur 4 est reliée à la sortie du soustracteur 3. La sortie du multiplexeur 4 est connectée à un processeur de transformation cosinus discrète (processeur DCT 5). En mode "intra", le soustracteur est inutilisé. Les valeurs de pixels sont transmis directement de l'entrée 1 au processeur DCT 5. En mode 'inter", c'est la différence entre le signal à l'entrée du dispositif et une partie de l'image de référence mémorisée dans la mémoire 2, qui est transmise au processeur DCT 5. La sortie du processeur DCT 5 est reliée à un circuit de quantification 6, dont la sortie est reliée d'une part à un circuit de déquantification 7 suivi d'un processeur DCT inverse 8, et d'autre part à un circuit de codage et de multiplexage 14. Le circuit de codage effectue notamment le codage VLC des différences de vecteurs mouvement, le codage VLC des coefficients de transformée DCT et l'assemblage des différentes données suivant la structure requise. Un bloc à coder est soumis à la transformation DCT, qu'il s'agisse d'un bloc "inter" ou "intra", c'est à dire comportant respectivement des valeurs de pixels ou de différences de valeurs de pixels. Les coefficients DCT obtenus sont quantifiés, puis codés suivant un codage VLC. De tels codages VLC, ainsi que les procédés associés (sens de balayage des blocs, codage de couples de coefficients et de 7 2725577 longueurs de suites de coefficients nuls) ne seront pas décrits de façon plus détaillée, étant bien connus de l'homme du métier. Les coefficients codés sont insérés dans le multiplex vidéo de façon appropriée. Les coefficients quantifiés sont soumis à une déquantification, puis à une transformation DCT inverse. Il s'agit là du procédé auquel seront soumis ces mêmes données dans le décodeur, les valeurs de pixels résultantes comportant au moins en partie les mêmes erreurs, notamment les erreurs de quantification. Dans le codeur, ces données décodées servent à mettre à jour l'image de référence stockée dans la mémoire 2. La sortie de la mémoire 2 est reliée à une entrée du soustracteur 3, éventuellement à travers un filtre spatial de boucle 9. La sortie du processeur DCT inverse 8 est reliée à la mémoire de référence 2 à travers un additionneur à deux entrées 11. La seconde entrée de l'additionneur 11 est reliée à la sortie d'un second multiplexeur 12 à deux entrées, dont l'une est connectée à la sortie du filtre de boucle 9, et dont l'autre n'est pas connectée, fournissant des valeurs de pixel nulles. En mode "intra", la sortie du multiplexeur 12 fournit les valeurs nulles. Les deux multiplexeurs 4 et 12 sont commandés simultanément par une unité de commande 13, qui gère également la quantification des coefficients, notamment en fonction du degré de remplissage du registre tampon vidéo (non-illustré). Le processeur de compensation de mouvement compare des macro-blocs en provenance de l'entrée 1 à des macro-blocs de l'image de référence, et détermine d'une part si un macro-bloc doit être codé en mode intra ou inter. Une telle décision peut être prise en évaluant la valeur d'une fonction d'erreur comme la somme des carrés des différences de pixels en cas de mode "inter" par rapport à des valeurs seuil. Le codage en mode "intra" est forcé de temps en temps s'il n'est pas choisi pendant un nombre donné d'images pour un même macro-bloc. Ceci est effectué pour limiter l'accumulation des erreurs de reconstruction dans la transformation DCT inverse. Par exemple, suivant 8 2725577 la recommandation H.261 mentionnée précédemment, un tel forçage est effectué au moins toutes les 132 transmissions d'un même bloc. La compensation ou l'estimation de mouvement est mise en oeuvre notamment au niveau du processeur 10. Il existe de nombreux procédés de recherche du meilleur vecteur mouvement et autant de variantes de celles ci: Comparaison exhaustive de blocs, procédés de comparaison hiérarchiques etc... Ces procédés peuvent être mis en oeuvre notamment par des microprocesseurs, des processeurs spécialisés... Selon le présent exemple, la structure d'échantillonnage de la luminance d'une image est de 144 lignes de 176 pixels, ce qui correspond à un format de 11 fois 9 macroblocs. Pour la chrominance et pour chacune des composantes couleur, le format est de 72 lignes de 88 pixels. Ceci correspond à une structure luminance chrominance dite 4:1:1. Ce format d'image est aussi appelé format QFIC (pour Quart de Format Intermédiaire Commun). On supposera, dans cet exemple, qu'un tel format d'image est disponible à l'entrée 1 du codeur. Par la suite, dans le but de simplifier les explications, il sera question uniquement de la luminance. La figure 2 donne la numérotation des macro-blocs de luminance. Les macro-blocs réels d'une image sont entourés de lignes continues. Par la suite, on désignera par macro-blocs adjacents d'un macro-bloc courant adjacent des macro-blocs 1, 12 et 23. 9 2725577 Le processeur 10 fournit pour chaque macro-bloc codé en mode uinter" un couple de composantes du vecteur mouvement associé à ce bloc. Suivant le présent exemple de réalisation, les composantes ont une précision d'un demi-pixel et sont limitées à l'intervalle [-16, + 15. 5]. Selon le présent exemple de réalisation, le circuit 14, qui comprend par exemple une mémoire et un microprocesseur programmé de façon adéquate, détermine pour chaque vecteur mouvement un vecteur prédiction. Les composantes Px et Py de ce vecteur prédiction sont soustraites aux composantes du vecteur mouvement à coder. Selon le présent exemple de réalisation, les composantes du vecteur prédiction sont calculées d'une façon explicitée par la figure 3. On désigne par MO le macro-bloc courant, c'est à dire le macro-bloc pour lequel on détermine un vecteur prédiction. On désigne d'autre part respectivement par MVix et MViy la première et la seconde composantes du vecteur mouvement associé au macro-bloc i. On désigne par M1 le macro-bloc immédiatement à gauche de MO, par M2 le macro-bloc immédiatement au dessus de MO, et par M3 le macro-bloc au dessus et à gauche de MO. Les vecteurs mouvement associés aux macro- blocs M1 à M3 sont appelés vecteurs candidats et sont désignés par MV1 à MV3. La figure 3a donne la disposition des macro-blocs M1 à M3 autour de MO. Un vecteur mouvement n'étant défini que pour des macro- blocs codés en mode 'inter", les composantes des vecteurs candidats sont supposés nuls dans les cas suivants: -lorsqu'un macro-bloc a été codé en mode "intra", -lorsqu'un macro-bloc se situe au-delà de la limite de l'image. Les figures 3b, 3c et 3d illustrent différents cas. Les couples (0,0) indiquent les macro-blocs pour lesquels le vecteur-candidat est considéré comme nul. La ligne en pointillés indique les limites de l'image. Une fois les composantes des trois vecteurs candidats déterminés, les composantes du vecteur prédiction sont calculées en 2725577 choisissant pour chaque composante de ce vecteur la valeur médiane des composantes correspondantes des vecteurs candidats. Par exemple, si les vecteurs candidats sont respectivement: MV1 = (-2;3), MV2 = (1;5), MV3 = (-1;7) alors le vecteur prédiction sera (Px; Py) = (-1; 5). On forme alors la différence entre ce vecteur prédiction et le vecteur mouvement MVO: MVDx = MVx-Px MVDy = MVy-Py Ces différences sont ensuite codées par codage VLC et introduites dans le multiplex vidéo. Etant donné que le calcul du vecteur prédiction exige la connaissance des vecteurs Ml à M3, ces vecteurs sont gardés en mémoire par le processeur 10. Lors du décodage, un vecteur prédiction est déterminé de façon similaire. Bien sûr, on procédera à une addition des composantes de ce vecteur avec les différences décodées. La figure 4 donne un schéma fonctionnel d'un décodeur. Les données reçues à partir d'un système de réception et de démodulation sont stockés dans un registre 15. Ce registre est nécessaire pour adapter la vitesse de transmission des données à leur utilisation effective. Les données sont démultiplexées par un démultiplexeur 16. Les coefficients sont décodés, subissent une quantification inverse (circuit 17), puis une transformation DCT inverse (circuit 18). Les blocs résultants sont ajoutés (par l'additionneur 19) au résultat de la prédiction dans le cas d'un codage en mode "inter". La mémoire de prédiction 21 est bien sûr mise à jour de façon appropriée. 1 1 2725577 Un processeur 20 se charge de commander la quantification et à décoder les données correspondant aux vecteurs mouvement. Il procède au décodage VLC des données, maintient en mémoire les vecteurs nécessaires au calcul du vecteur prédiction, effectue la détermination de ce vecteur puis ajoute à ses composantes les différences de composantes décodées. Les vecteurs mouvement ainsi rétablis sont utilisés de façon connue. Selon une variante de réalisation, des vecteurs mouvement sont associés aux macro-blocs codés en mode "intra". Ceci permet de compenser des erreurs de transmission qui pourraient entâcher les coefficients codés de ce macro-bloc. Dans ce cas, les vecteurs candidats correspondants ne sont pas considérés comme étant nuls. Il est bien évident que la présente invention ne se limite pas à l'exemple de réalisation décrit, mais s'applique dans d'autres systèmes de compression utilisant la compensation de mouvement. 12 2725577 Revendications 1. Procédé de codage différentiel d'un vecteur mouvement (MVO) associé à un macro-bloc (MO) caractérisé en ce qu'il comprend les étapes: - de détermination des composantes (MVOx, MVOy) dudit vecteur mouvement (MVO), - de détermination d'un vecteur prédiction dont chaque composante (Px, Py) est égale à la valeur médiane des composantes correspondantes d'au moins trois vecteurs mouvement candidats (MV1, MV2, MV3), un vecteur mouvement candidat étant un vecteur associé à un macro- bloc précédemment codé, - de soustraction des composantes ainsi obtenues aux composantes du vecteur à coder. 2. Procédé selon la revendication 1, caractérisé en ce que les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat est situé en dehors de l'image. 3. Procédé selon l'une des revendications 1 ou 2, caractérisé en ce que les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat a été codé en mode 'intra". 4. Procédé selon l'une des revendications précédentes, caractérisé en ce que les macro-blocs associés aux vecteurs mouvement candidats sont des macro-blocs adjacents au macro-bloc dont un vecteur est à coder. 13 2725577 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que les macro-blocs associés aux vecteurs mouvement candidats font partie des macro-blocs situés au dessus ou à gauche du macro-bloc dont un vecteur est à coder. 6. Procédé selon la revendication 5, caractérisé en ce que les macroblocs associés aux vecteurs mouvement candidats comprennent le macro- bloc situé immédiatement à gauche, le macro-bloc situé immédiatement au dessus et le macro-bloc situé au dessus et à droite du macro-bloc dont un vecteur est à coder. 7. Procédé de décodage d'un vecteurs mouvement (MVO) codé par codage différentiel caractérisé en ce qu'il comprend les étapes: - d'extraction des différences de composantes (MVDx, MVDy) correspondant à ce vecteur (MVO), - de détermination d'un vecteur prédiction dont chaque composante (Px, Py) est égale à la valeur médiane des composantes correspondantes de vecteurs associés à au moins trois macro-blocs précédemment décodés (IMV1, MV2, MV3), - d'addition desdites différences de composantes (MVDx, MVDy) aux composantes (Px, Py) du vecteur prédiction. 8. Procédé selon la revendication 7, caractérisé en ce que les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat est situé en dehors de l'image. 9. Procédé selon l'une des revendications 7 ou 8, caractérisé en ce que les composantes d'un vecteur mouvement candidat sont considérées comme nulles pour la détermination du vecteur prédiction lorsque le macro-bloc associé à ce vecteur mouvement candidat a été codé en mode "intra'. 14 2725577 10. Procédé selon l'une des revendications 7 à 9, caractérisé en ce que les macro-blocs associés aux vecteurs mouvement candidats sont des macro-blocs adjacents au macro-bloc dont un vecteur est à décoder. 11. Procédé selon l'une des revendications 7 à 10, caractérisé en ce que les macro-blocs associés aux vecteurs mouvement candidats font partie des macro-blocs situés au dessus ou à gauche du macro-bloc dont un vecteur est à décoder. 12. Procédé selon la revendication 11, caractérisé en ce que les macroblocs associés aux vecteurs mouvement candidats comprennent le macro- bloc situé immédiatement à gauche, le macro-bloc situé immédiatement au dessus et le macro-bloc situé au dessus et à droite du macro-bloc dont un vecteur est à décoder. 13. Dispositif de compression d'images comportant un processeur (10) d'estimation de mouvement produisant des vecteurs mouvement (MVO), caractérisé en ce que, lesdits vecteurs étant codés par rapport à un vecteur prédiction, ledit dispositif comprend: - des moyens (10) de détermination d'un vecteur prédiction dont chaque composante (Px, Py) est égale à la valeur médiane des composantes correspondantes d'au moins trois vecteurs mouvement candidats (MV1, MV2, MV3), un vecteur mouvement candidat étant un vecteur associé à un macro-bloc précédemment codé, - des moyens de soustraction (10) des composantes ainsi obtenues aux composantes du vecteur à coder, - des moyens de codage (14) des valeurs (MVDx, MVDy) obtenues par ladite soustraction. 14. Dispositif selon la revendication 13, caractérisé en ce qu'il met en oeuvre le procédé selon l'une des revendications 1 à 6. 2725577 15. Dispositif de décompression d'images compressées à l'aide d'un procédé de compensation de mouvement, caractérisé en ce qu'il comprend: - un registre tampon (15) recevant des données compressées, - des moyens de démultiplexage (16) reliés audit buffer (15), -des moyens de déquantification (17) reliés aux moyens de démultiplexage (16), -des moyens de transformation inverse (18) de coefficients démultiplexés et déquantifiés, -des moyens d'extraction (16) de données concernant des vecteurs mouvement codés selon un codage différentiel par rapport à un vecteur prédiction, -des moyens de détermination (20) du vecteur prédiction à partir de vecteurs mouvement correspondant à des macro-blocs précédemment décodés. 16. Dispositif selon la revendication 15, caractérisé en ce qu'il met en oeuvre le procédé selon l'une des revendications 7 à 12.