Brevet FR2683694A1 — publié le 19930514

DISPOSITIF DE CODAGE DE SIGNAL VIDEO A ACTIVITE TEMPORELLE La présente invention concerne les dispositifs de codage numérique de signal vidéo représentant~des images successives constituées chacune d'une matrice de pixels ayant chacun au moins une valeur radiométrique (luminance et éventuellement chrominance) représentée par un multiplet. L'invention trouve une application particulièrement importante, bien que non exclusive, dans les codeursdécodeurs ou "codecs" destinés aux terminaux de visiophonie et il sera surtout fait référence à des dispositifs destinés à cet usage. Toutefois l'invention serait également applicable à d'autres domaines, tels que la télévision industrielle (TV, HDTV). La constitution générale d'un codec de visiophonie est définie dans le document CCITT n" 584 d'avril 1990 (norme H261) auquel on pourra se reporter. La partie codeur comprend un dispositif de codage de source traitant l'image par blocs, suivi d'un codeur statistique et d'un multiplexeur vidéo de mise des informations numériques sous forme d'un flot de bits ayant un format particulier. Le dispositif de codage est essentiellement constitué par une boucle de codage dont un diagramme fonctionnel simplifié est donné en figure 1. Ce dispositif de codage est prévu pour effectuer d'une part un codage par transformée (par transformation en cosinus discrète généralement) et d'autre part un codage prédictif à quantification adaptative de type MICD, également dénommé DPCM, associé à un système de prédiction de mouvement. Le dispositif est au surplus prévu pour effectuer, suivant une commande extérieure qu'il reçoit, soit une prédiction inter-images, avec éventuellement détermination d'un vecteur mouvement permettant une compensation de mouvement, soit un codage intra-bloc. Les opérations effectuées sur le signal vidéo numérisé appliqué sur l'entrée 10 comportent un codage par transformation 12 effectué sur l'ensemble des pixels d'un bloc à la fois d'une image individuelle (transformée en cosinus discrète à deux dimensions en général) suivi d'une quantification 14 fournissant des index de quantification q adressés à un multiplexeur vidéo. Le pas de quantification qz est fixé par un organe de commande de codage 16 et il est également transmis au multiplexeur. L'organe de commande de codage 16 permet également de passer d'un codage intra-image à un codage inter-image, la sélection étant faite à 1 issue d'une comparaison entre les résultats des deux modes. Le mode choisi est indiqué par un fanion p. I1 comporte une sortie 18 de commande de commutateurs 20 et 22 permettant de modifier la boucle de codage proprement dite. La boucle de codage à prédiction comprend après quantification 14, une quantification inverse 24 suivie d'une transformée inverse 26. Le résultat de la transformée inverse 26 est traité de deux façons différentes suivant le mode de fonctionnement sélectionné. Lorsque les commutateurs 20 et 22 sont dans la position montrée en figure 1, correspondant à un codage prédictif, l'erreur de prédiction évaluée quantifiée provenant de la transformation inverse est ajoutée en 28 à la sortie de boucle, obtenue à travers une mémoire d'image 30 et un filtre spatial de boucle 32. Enfin la sortie de boucle est soustraite du signal d'entrée en 34 de façon à ne soumettre que l'erreur de prédiction à la transformée en DCT. La mémoire d'image peut être complétée par des moyens de calcul permettant de déterminer le vecteur mouvement. Dans l'autre état du dispositif de codage, le signal vidéo d'entrée est directement soumis à la transformation en DCT. La norme mentionnée plus haut prévoit deux formats possibles d'image. I1 sera essentiellement question par la suite d'un seul des formats, consistant à fractionner l'image de 288 lignes de 352 pixels en blocs de 8x8 pixels de luminance, regroupés par quatre en macro-blocs. La norme prévoit, en mode intra-bloc et pour la luminance, un coefficient de quantification continu et 31 coefficients supplémentaires, le coefficient continu étant la transformée quantifiée linéairement et les autres étant obtenus par codage linéaire après seuillage. La présente invention vise notamment à fournir un dispositif de codage présentant une constitution générale du genre qui vient d'être défini, ayant une constitution plus simple que celle des dispositifs antérieurement connus, donc réalisable à un prix moindre. Dans ce but, elle utilise le fait qu'il est possible de décaler temporellement les opérations de transformation directe (DCT et quantification) et les opérations inverses. Elle propose en conséquence un dispositif de codage comportant un seul et même opérateur pour effectuer le codage et le décodage par transformation (permettant en conséquence d'effectuer soit la transformée en cosinus discrète, soit la transformée inverse) et un seul et même opérateur commandable pour effectuer la quantification et la quantification inverse, les opérations directe et inverse mettant en oeuvre des composants qui sont pour la plupart les mêmes. L'invention est susceptible d'être mise en oeuvre pour différents types d'images et d'algorithmes similaires en n'apportant que des adjonctions matérielles très limitées à un des opérateurs qui, dans la constitution traditionnelle, n'effectuent que l'une ou l'autre des opérations directe et inverse. L'invention sera mieux comprise à la lecture de la description qui suit de modes particuliers de réalisation donnés à titres d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent, dans lesquels - la figure 1, déjà mentionnée, est un schéma de principe montrant la constitution générale d'un codeur de source de terminal visiophonique - la figure 2 est un schéma d'ensemble d'un codeur du genre montré en figure 1, conforme à un mode particulier de réalisation de l'invention - les figures 3, 4 et 5 montrent la constitution de l'unité de traitement du codeur de la figure 2 et les flux de données dans trois conditions de fonctionnement en mode intra - la figure 6, similaire à la figure 3, correspond au fonctionnement en mode inter - la figure 7 montre une variante de réalisation. On supposera, dans la description qui sera maintenant donnée d'un dispositif de codage, que ce dernier est destiné à traiter des images fractionnées chacune en bloc de 8x8 pixels, groupés en macro-blocs de six blocs. Le dispositif de la figure 2 comporte une mémoire d'entrée 36 de capacité suffisante pour pouvoir stocker au moins les pixels de deux lignes sur quarante quatre macroblocs, c'est-à-dire sur toute la largeur de l'image. L'adressage de la mémoire 36 est prévu de façon à permettre de lire macro-bloc par macro-bloc. La mémoire est précédée d'un registre tampon R. D'autres registres, indiqués par la même référence, sont placés dans le dispositif pour constituer des tampons ou pour donner les retards nécessaires au synchronisme du fonctionnement. Les entrées-sorties de la mémoire d'entrée 36 sont reliées à une unité de traitement 38 assurant l'essentiel des fonctions, et notamment le codage MICD, les transformations directes et inverses et les opérations de seuillage. Cette unité sera décrite plus loin. Elle est reliée à une mémoire de macro-bloc 40 constituant mémoire de travail et elle fournit, sur sa sortie, le signal codé qui est envoyé au multiplexeur à travers une cellule 42 dont le rôle apparaîtra plus loin. Pour permettre le codage prédictif, l'unité 38 doit disposer d'une mémoire de macro-bloc prédit 30, destiné à être soustrait au macro-bloc en entrée et d'un filtre de boucle 32. Le dispositif comporte encore une mémoire de prédiction 44. Dans le cas d'un codage prédictif inter-bloc et de compensation de mouvement, une cellule 46 d'estimation de mouvement est prévue et montée de façon à pouvoir disposer à la fois d'éléments appartenant à l'image d'ordre i et d'éléments de l'image d'ordre i-i. La cellule 46 peut pour cela comporter deux entrées qui reçoivent, l'une des éléments de l'image d'ordre i provenant de l'entrée et stockés dans une mémoire de macro-bloc 48, l'autre des éléments de l'image d'ordre i-l, provenant de la sortie de l'unité 38 et stockés dans une mémoire 50 de macro-blocs, de capacité égale à neuf macro-blocs. Au cours d'un même cycle de fonctionnement, fournissant les données caractérisant un macro-bloc, différentes portions des codeurs travaillent en parallèle sur des données concernant des macro-blocs différents. il y a au cours d'un même cycle de fonctionnement une fraction du circuit travaillant sur le macro-bloc d'ordre N+1, une fraction travaillant sur le macro-bloc d'ordre N en effectuant toutes les transformations et une fraction travaillant sur le macro-bloc n-l (opérations finales de codage statistique et de mise en trame vidéo). Le fonctionnement au cours d'un cycle est cadencé par une base de temps non représentée. Elle divise l'intervalle de temps élémentaire alloué au traitement de chaque macro-bloc en P intervalles élémentaires. Pendant le premier intervalle élémentaire, les unités ou cellules 36, 46 et 44 sont reliées, alors que le filtre 32 et l'unité de traitement 38 sont séparées de 36 et 44. Pendant cet intervalle élémentaire, on mémorise un macro-bloc provenant de la mémoire d'entrée 36 dans la première mémoire de macro-bloc 48 associée à la cellule 46 (macro-bloc de l'image i). On mémorise en même temps neuf macro-blocs (le macro-bloc homologue de l'image i-l et ceux qui l'entourent) provenant de la mémoire de prédiction 44 dans la mémoire 50. Au cours du second intervalle élémentaire, on sépare les cellules 36 et 44 du circuit d'estimation 46, qui va mémoriser neuf macro-blocs provenant de la cellule 44 dans la mémoire de neuf macro-blocs i-l de la cellule 46. Ensuite à partir du deuxième intervalle de temps on déconnectera les cellules 36 et 44 et on traitera les données pendant les P-l autres intervalles. A l'issue de ces P-l autres intervalles élémentaires la cellule 46 fournit à la cellule de filtrage 32 ou à la mémoire de prédiction l'estimation de mouvement trouvée sur le macro-bloc en cours de traitement. Parallèlement à ces opérations, au cours des mêmes P-l intervalles élémentaires - la mémoire d'entrée 36 est reliée à l'unité de traitement 38, - la mémoire de prédiction 44 est reliée à la cellule de filtrage 32, et - la cellule 32 est reliée à l'unité de traitement. Les P-l intervalles élémentaires sont utilisés par ces cellules de façon différente selon que le fonctionnement est en mode intra ou inter, comme on le verra plus loin. Le choix du mode peut être effectué à partir de l'estimation faite par la cellule 46. Celle-ci doit alors évaluer les performances attendues de l'un et de l'autre. il faut pour cela disposer de la variance au niveau d'un bloc pour l'ensemble d'un macro-bloc et de la covariance, déterminée bloc à bloc pour toutes les correspondances possibles entre macro-blocs sur neuf macro-blocs. La comparaison est faite entre la variance à l'intérieur d'un macro-bloc et toutes les covariances possibles (ou le minimum de covariance). La sélection peut être faite globalement pour la totalité des blocs du macro-bloc considéré. La décision est injectée dans l'unité de traitement 38 avant le début des opérations correspondant au macro-bloc de l'image courante i. Le vecteur mouvement évalué par la cellule 46 est adressé à la mémoire 44 pour être inséré en 42 dans le multiplex vidéo. Dans un premier mode de réalisation, l'unité 38 a la constitution montrée sur les figures 3, 4 et 5. Pour plus de clarté, les flux de données correspondant respectivement au calcul de la DCT directe, aux opérations de seuillage, de quantification et quantification inverse, et au calcul de la DCT inverse sont montrés en traits épais respectivement sur les figures 3, 4 et 5 pour le mode intra. Sur la figure 6, les flux correspondant au mode inter sont indiqués respectivement par une ligne en traits pleins, une ligne en tirets et une ligne en traits mixtes. Sur les figures 3 à 5, où les composants correspondant à ceux déjà montrés en figure 2 portent le même numéro de référence, l'unité 38 comporte un commutateur d'entrée 52 commandé par le fanion p, pouvant fonctionner en additionneur, en soustracteur ou pouvant être transparent aux données d'entrée qu'il reçoit de la mémoire d'entrée 36, de la mémoire de macro-bloc prédit 30, ou de la sortie de la boucle. Le commutateur 52, dont l'état provoque le fonctionnement soit en mode inter, soit en mode intra, attaque un circuit de calcul de DCT à une dimension 56, permettant le calcul en ligne. Un second circuit de calcul de DCT 58 permet le calcul en colonne. Une mémoire de transposition 60 est prévue pour recevoir et restituer le résultat des calculs effectués dans les circuits 56 et 58. Enfin, les opérations de seuillage S, de quantification Q et de quantification inverse Q~1 sont effectuées dans une cellule 62, qui reçoit le pas de quantification g du circuit de commande 16. Le fonctionnement du dispositif est alors le suivant. Mode intra Dans le cas du mode intra, les soixante-quatre coefficients correspondant à un bloc complet sont traités ligne à ligne dans le circuit 56. Les coefficients obtenus sont stockés, en adressage direct, dans la mémoire de transposition 60. Deux choix différents peuvent être faits, suivant que l'on accepte une mémoire de grande capacité ou que l'on souhaite favoriser la simplicité de traitement. Dans le premier cas, la mémoire de transposition 60 a une capacité correspondant à un macro-bloc complet. La totalité des informations concernant tout un macro-bloc provenant de la mémoire d'entrée peut alors être pipelinée dans l'unité. Dans le second cas, on limite la capacité de la mémoire de transposition 60 au contenu d'un seul bloc. Mais dans ce cas le transfert à partir de la mémoire d'entrée 36 doit s'effectuer bloc par bloc. Le second circuit 58 de calcul des coefficients de transformée de Fourier achève le calcul de la transformée à deux dimensions, par calcul des coefficients colonne par colonne en utilisant des adresses transposées sur la mémoire 60 après stockage des résultats fournis par le circuit 56. Au fur et à mesure du calcul des coefficients, correspondant à tout un macro-bloc dans le premier cas, à un bloc complet dans le second, les coefficients sont stockés dans la mémoire de macro-bloc 40 dont la capacité doit être suffisante pour qu'elle puisse stocker tous les coefficients correspondant à un macro-bloc complet. A l'issue de ces opérations, correspondant aux flux de données montrés en traits épais sur la figure 3, on dispose de tous les coefficients d'un macro-bloc. Mais aucune quantification n'a encore été effectuée. Les flux de données lors du seuillage et de la quantification sont schématisés sur la figure 5. Dans un premier mode de réalisation, la mémoire de macro-bloc 40 est lue en adressage zig-zag par le circuit 62 pour effectuer les opérations de seuillage et de quantification. Les informations obtenues sont adressées à la cellule 42 et stockées de nouveau dans la mémoire de macro-bloc 40. On relit ensuite la mémoire de macro-bloc 40 en adressage direct pour effectuer cette fois, dans la cellule 62, la quantification inverse Q-1. Les informations retraitées peuvent être restockées dans la mémoire de macro-bloc 40 (lignes en tirets sur la figure 4) pour être utilisées dans la boucle de codage. il reste encore à calculer la transformée inverse DCT"1, nécessaire dans la boucle de codage. Pour cela le flux de données peut être celui schématisé en traits épais sur la figure 5. Les coefficients lus dans la mémoire de macrobloc 40 et envoyés vers le circuit 56 de calcul de DCT 56, dont la programmation a entre temps été changée pour qu'elle calcule la DCT-1. Les coefficients de sortie sont stockés en adressage direct dans la mémoire de transposition 60. Puis la transformation DCT-1 est encore effectuée sur les colonnes, par l'opérateur 58, également reprogrammé pour effectuer le calcul de la DCT-1 à une seule dimension. I1 est également possible de remplacer l'opérateur DCT paramétrable en direct ou inverse par deux opérateurs DCT et DCT-1 distincts, mis en parallèle et sélectionnés suivant le besoin. Les informations obtenues sont relues dans la mémoire 60 de transposition, en adressage transposé indiqué par la ligne 61 sur la figure 5. Les coefficients traités sont envoyés vers le commutateur 52, mis dans l'état transparent, et mémorisés dans la mémoire de prédiction 44. Mode inter Le passage du mode intra au mode inter, et réciproquement, est commandé par modification des fonctions du commutateur 52. Dans ce cas le commutateur est mis dans un état tel que les données représentatives des pixels d'un macro-bloc N provenant de la mémoire d'entrée 36 soient soustraites des données représentatives du macro-bloc prédit, stocké dans la mémoire 30. Le calcul des DCT (et des DCT-1) est le même qu' en mode intra. Dans une variante de réalisation, après calcul de la DCT-1, les données obtenues sont additionnées en 52 à celle provenant de la mémoire de macro-blocs prédits 30 avant stockage dans la mémoire de prédiction 44. L'unité de traitement 38 est susceptible de nombreuses variantes de réalisation. Celle montrée en figure 7 (où les organes correspondant à ceux de la figure 3 portent la même référence) comporte un seul circuit de calcul de DCT qui est alternativement utilisé pour calculer les DCT en ligne et en colonne (et les DCT-1 à une dimension correspondante). Le circuit unique de calcul 56 doit alors être parametrable en transformée directe/inverse. De même que précédemment, on peut remplacer cet opérateur unique pour les lignes et les colonnes, paramétrable en directe ou inverse, par deux opérateurs distincts DCT et DCT-1, en parallèle, chacun calculant, au moment souhaité, la transformée ligne, puis colonne. Dans la pratique, cette solution rend préférable d'opérer sur des blocs plutôt que sur des macro-blocs, en mode intra comme en mode inter. En mode intra, les données stockées dans la mémoire d'entrée 36, de capacité égale à deux rangées de macroblocs, arrivent par le commutateur 52, mis à l'état transparent, à l'unité de calcul 56. Les coefficients résultant du calcul de la DCT pour chacune des lignes d'un bloc sont chargés dans le bloc mémoire 66, formaté alors au niveau du bloc. Les coefficients résultant du calcul de lignes sont ensuite relus de manière transposée, comme indiqué en 68, et renvoyés au circuit de calcul 56, qui effectue alors la transformée en colonne. Les coefficients définitifs correspondant à l'ensemble d'un bloc sont rechargés dans le bloc mémoire 66. Les opérations de seuillage S et de quantification Q et de quantification inverse Q-l sont alors effectuées en série dans la cellule 62. Pour cela, le bloc mémoire 66 est lu en ordre zig-zag. Les données quantifiées provenant de l'opération de quantification sont adressées à la cellule 42, constituée par une mémoire tampon. Puis, pour permettre de constituer la boucle, les données quantifiées et déquantifiées provenant de 62 sont stockées dans la mémoire de bloc 66. I1 reste à effectuer la DCT inverse. Pour cela, les données lues dans la mémoire de bloc 66 sont envoyées vers le circuit de calcul 56, reprogrammé pour effectuer la transformée inverse en ligne. Les coefficients résultant de cette opération sont stockés en adressage direct dans la mémoire 66, constituant mémoire de transposition. Puis le circuit 56 est paramétré pour effectuer la transformée inverse sur les colonnes, avec lecture transposée dans la mémoire 66. Enfin, les coefficients finalement obtenus sont retournés (ligne 70) au commutateur 56 et mémorisés dans la cellule 44. En mode inter, les données fournies par un macrobloc d'ordre n stocké dans la mémoire d'entrée 36, sont soustraites des données représentatives du macro-bloc n + 1 dans le commutateur 52 avant d'être traitées par le circuit 56. Les opérations de DCT en ligne, puis en colonne, et les opérations de mémorisation sont identiques à celles du mode intra et les mêmes variantes sont possibles. A titre d'exemple on peut donner les caractéristiques suivantes pour un dispositif du genre montré en figures 2 à 5, destiné à un terminal de visiophonie. La mémoire d'entrée 36 doit stocker deux lignes de macro-blocs, soit 44 macroblocs, ce qui représente 6x64 coefficients par macro-bloc ; chaque coefficient étant codé sur 8 bits, la mémoire a une capacité minimale de 16 896 octets. La cellule 46 destinée à l'estimation de mouvement doit, dans le cas d'une scrutation limitée en amplitude à + 15, disposer de - un macro-bloc dans l'image i, - neuf macro-blocs dans l'image i - 1, ce qui correspond à une capacité de 3840 octets. Les besoins peuvent être réduits en diminuant l'amplitude, par exemple à 1920 octets pour une scrutation + 7. L'unité de traitement 38 a des besoins en mémoire différents suivant le mode de réalisation choisi. Dans le cas de deux circuits de calcul de DCT (figures 3 à 6), il faut - une mémoire de transposition 60 de 96 octets (pour 64 coefficients sur 12 bits) - une mémoire de macro-bloc 40 de 576 octets (pour 348 coefficients sur 12 bits). Dans le cas de la figure 7, il suffit d'une mémoire de transposition de 96 octets. La cellule de filtrage 32 peut, dans les hypothèses ci-dessus, comporter une mémoire interne de 400 octets et attaquer une mémoire de macro-bloc prédit 30 de 384 octets. La mémoire de prédiction 44 peut avoir une capacité correspondant à deux images complètes de 288 lignes, ce qui exige, en cas de codage des coefficients sur 12 bits, 304 128 octets. Enfin la mémoire 42 intervenant lors du codage statique doit avoir une capacité correspondant à un macrobloc, c'est-à-dire 384 octets. REVENDICATIONS 1. Dispositif de codage numérique de signal vidéo représentant des images successives constituées chacune d'une matrice de pixels ayant chacun au moins une valeur radiométrique (luminance et éventuellement chrominance) représentée par un multiplet numérique, comprenant une boucle de codage ayant des moyens pour effectuer une transformée de codage par transformée et des moyens de codage prédictif à quantification adaptative variable, pouvant être associé à une prédiction de mouvement, la dite boucle étant associée à des moyens de commande permettant de la configurer soit pour une prédiction inter-images, soit pour un codage intra-image, caractérisé en ce que les moyens de codage par transformée comprennent un même opérateur (56 ou 58) paramétrable pour effectuer la transformée et la transformée inverse, en ce que les moyens de codage prédictif comportent un même opérateur paramétrable (62) pour effectuer la quantification et la quantification inverse, et des moyens pour séquencer les opérations sur un même ensemble de pixels de l'image, constituant un bloc ou un macro-bloc d'image à deux dimensions. 2. Dispositif selon la revendication 1, caractérisé en ce que les moyens de codage par transformée comprennent un opérateur de transformée en cosinus discrète de ligne (56), une mémoire de transposition (60) à adressage direct en écriture et à adressage transposé en lecture, et un opérateur supplémentaire (58) de calcul des coefficients de la transformée en deux dimensions sur un bloc de pixels. 3. Dispositif selon la revendication 1, caractérisée en ce que les moyens de codage par transformée comprennent un opérateur unique (56) pour effectuer un calcul de DCT à une dimension sur chaque ligne d'un bloc, puis une transformée à une dimension en colonne permettant d'obtenir les coefficients pour l'ensemble du bloc, et un bloc de mémoire (66) à écriture directe et à lecture transposée permettant le stockage intermédiaire des coefficients des transformées en ligne. 4. Dispositif selon la revendication 2 ou 3, caractérisé en ce que lesdits opérateurs sont paramétrables en direct/inverse. 5. Dispositif selon la revendication 2 ou 3, caractérisé en ce qu'il comporte un opérateur direct et un opérateur inverse en parallèle, sélectionnés suivant les besoins. 6. Dispositif selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il comprend une mémoire d'entrée (36) de capacité suffisante pour stocker les pixels d'au moins deux lignes de blocs ou de macro-blocs sur toute la largeur de l'image, un commutateur (52) à plusieurs entrées et une sortie vers les moyens de codage par transformée, ledit commutateur (52) pouvant être mis dans les états additionneur, soustracteur et transparent, l'une des entrées étant reliée à la mémoire d'entrée (36), une autre entrée à une mémoire de pixels prédits d'un bloc ou macrobloc (30), et une troisième entrée à la sortie des moyens permettant d'effectuer la transformée de codage. 7. Dispositif selon la revendication 2 ou 3, caractérisé en ce que ledit opérateur paramétrable (62) de quantification et de quantification inverse comporte une entrée reliée à une mémoire (42) de stockage des coefficients de la transformée de codage par transformée sur les pixels d'un bloc ou d'un macro-bloc et une sortie reliable à une mémoire de bloc (66).