FR 2681962 A1 19930402 FR 9112277 A 19910930 PROCEDE ET CIRCUIT DE TRAITEMENT DE DONNEES PAR TRANSFORMEE COSINUS La présente invention concerne un procédé et un circuit de traitement numérique de signal pour accomplir une fonction de transformation appelée "transformation cosinus discrète", souvent désignée dans la littérature technique par le sigle anglo-saxon DCT. Ce type de transformation fait correspondre une matri- ce (un bloc) de valeurs numériques de sortie ou coefficients à une matrice de valeurs numériques d'entrée Cette transformation est particulièrement utile pour effectuer de la compression d'images pour une transmission à un débit plus élevé que celui qui serait possible si les signaux correspondants étaient envo- yés sans transformation. La transformation cosinus n'effectue en elle-même aucune compression d'information; c'est un codeur placé en aval du circuit de transformation qui fait la compression Mais le circuit de transformation facilite la compression en fournissant à l'entrée du codeur des informations faciles à comprimer Ce circuit de transformation trouve son application la plus cou- rante dans la transmission numérique d' images en noir et blanc ou en couleurs et c 'est en se référant à cet exemple que la présente invention sera décrite Ainsi, la matrice de valeurs numériques d'entrée correspondra à une matrice de pixels Pour réaliser la transformation cosinus, on décompose l'image ou la trame que l'on cherche à transmettre en blocs de N rangées et n colonnes, chaque point du bloc correspondant à un pixel repré- senté par une valeur numérique codée par exemple sur huit bits. Cette valeur correspond par exemple à la luminance ou à une composante de chrominance du pixel. Au bloc de nxn pixels, la transformation cosinus fait correspondre un bloc de nxn coefficients On appelera f(x,y) la valeur du pixel de coordonnées x et y dans le bloc On appelera F(u,v) le coefficient calculé selon la transformation cosinus et placé à l'intersection de la ligne u et de la colonne v dans le bloc transformé Dans le cas le plus courant n= 8 et x, y, u et v sont compris entre O et 7. Dans toute la description suivante, on considérera seulement ce cas particulier de blocs de 8 x 8 pixels L'homme de l'art pourra facilement déduire ou trouver dans des ouvrages spécialisés les formules correspondantes pour des blocs de nxn pixels Ainsi, dans le cas particulier considéré, une transfor- mation cosinus s'explicite par la relation suivante 7 7 F(u,v) = ( 1/K) > 7 f(x,y)-c(u)-cosl( 2 x+ 1)uri/161 x=O y=O c(v)- cosl( 2 y+l)vn/16 l( 1) Dans cette formule: K est un coefficient de normalisation qui s'exprime comme une puissance entière de 2; x,y sont les coordonnées spatiales d'un pixel du bloc de départ; u et v sont les coordonnées spatiales d'un coefficient du bloc transformé; f(x,y) est la valeur d'un pixel du bloc de départ; F(u,v) est la valeur d'un coefficient de la transformée; c(u), c(v) = 1/12 pour u,v = O = 1 pour u,v 0. La puissance de calcul de l'opérateur DCT à réaliser dépend du nombre de blocs à traiter par seconde Pour des images de télévision classiques ou haute définition, il faut traiter plusieurs centaines de kiloblocs par seconde et pour cela, on a recours à des circuits intégrés spécialisés mettant en oeuvre des fonctions algorithmiques complexes, tels que l'algorithme de Byong Gi Lee Ces circuits permettent d'effectuer des traite- ments extrêmement rapides mais présentent l'inconvénient de nécessiter de nombreux composants pour effectuer en parallèle diverses opérations et occupent donc une surface importante sur un circuit intégré. Par habitude, on utilise également de tels circuits quand le problème à résoudre est plus simple et que l'on cherche seulement à traiter un plus faible nombre de blocs par seconde, ce qui est par exemple le cas dans des applications de traite- ment d'image du type visiophone pour lesquelles un traitement de l'ordre de 10 kiloblocs par seconde semble suffisant. Ainsi, un objet de la présente invention est de pré- voir un procédé et un circuit de traitement d'informations par transformée cosinus discrète réalisable sous forme de circuit25 intégré de faible dimension. Pour atteindre cet objet, la présente invention pré- voit un procédé de traitement de données par transformation cosinus discrète (DCT) faisant correspondre à un tableau f(x,y) de Nx N données un tableau F(u,v) de Nx N coefficients selon la30 relation suivante: N-1 N-1 F(u,v) = ( 1/K) G 7 f(x,y) p(x,u)-p(y,v) x=O y=O o K est une puissance de 2 constante, x,y désignent les coordonnées d'une donnée dans le tableau de données, u,v désignent les coordonnées d'un coefficient dans le tableau de coefficients, p(x,u) = c(u)-cosl( 2 x+ l)ui/2 Nl p(y,v) = c(v)-cosl( 2 y+ 11)vr/2 Nl c(u), c(v) = 112 pour u,v = O = 1 pour u,v 0. Ce procédé consiste à déterminer séquentiellement chaque coeffi- cient F(u,v) pour un couple de coordonnées u,v en réalisant les étapes suivantes: rechercher dans une table pour un premier couple x,y la valeur absolue et le signe du coefficient P=p(x,u)-p(y,v); multiplier la valeur absolue de P par f(x,y); introduire le résultat de la multiplication additivement ou soustractivement dans un accumulateur ( 17) en fonction dudit signe; et répéter l'opération pour toutes les valeurs du couple x,y et extraire le résultat fourni par l'accumulateur. Selon un mode de réalisation de la présente invention, 1 'étape de recherche dans une table se décompose en les étapes suivantes: rechercher dans une première table adressée par x et u le signe de p(x, u) et le terme n(x,u) (compris entre 1 et N-l), avec: p(x,u) = Sgnlp(x, u)l-jcosln(x,u)ni/2 Nl 1; rechercher dans une deuxième table adressée par y et v le signe de p(y,v) et le terme n(y,v) (compris entre 1 et n- l), avec p(y,v) = Sgnlp(y,v)l 1 cosln(y,v)T/2 Nl; et rechercher dans une troisième table adressée par n(x,u) e n(y,v) la valeur absolue du coefficient P.30 Sous un autre aspect, ce procédé consiste à déterminer séquentiellement chaque coefficient F(u,v) pour un couple de coordonnées u,v en réalisant les étapes suivantes: rechercher dans une table pour quatre couples x,y correspondant à des positions 2 à 2 symétriques par rapport aux axes èntraux du tableau de données, la valeur absolue du coefficient P=p(x,u)- p(y,v); combiner additivement et/ou soustractivement pour ces quatre couples les valeurs des données correspondantes, le signe de chaque opération étant déterminé en fonction de la position relative des quatre données; multiplier la valeur combinée par ladite valeur du coefficient P; introduire le résultat de la multiplication dans un accumulateur; et répéter l'opération pour toutes les valeurs des couples x,y, x et y variant entre O et (N/2)-l. Selon une autre approche, la présente invention pré- voit un procédé de traitement par transformée cosinus discrète (DCT) des données (f(x,y)) d'un bloc de Nx N données stocké dans une mémoire o chaque case du bloc correspond à des coordonnées x,y, pour fournir un coefficient (F(u,v)) d'un bloc de coeffi- cients, ce procédé comprenant les étapes suivantes: adresser une case de la mémoire; envoyer le contenu de la case à une première entrée d'un multiplieur; mémoriser dans une première table, pour toutes les valeurs de paramètres n(x,u) et de n(y,v) compris entre 1 et N-1, les valeurs de P=cosln(x,u)tr/2 Nl- cosln(y,v)u/2 N 1; mémoriser dans des deuxièmes tables les valeurs du signe des fonctions cosinus en fonction des valeurs de u et de x d'une part, de v et de y d'autre part ainsi que les valeurs de n(x,u) et de n(y,v) et utiliser ces valeurs pour adresser la première table; multiplier à chaque temps d'horloge une valeur d'une case du bloc de données par une valeur de la première table; et cumuler le résultat des multiplications additivement ou soustractivement en fonction des signes déter- minés par les deuxièmes tables pour toutes les valeurs de x et de y. La présente invention prévoit aussi un circuit de traitement de données par transformée cosinus discrète faisant correspondre à un tableau f(x,y) de Nx N données un tableau F(u,v) de Nx N coefficients, comprenant une mémoire du tableau de données; une mémoire des produits P = Icosln(x,u)T/2 Nlcosln(y,v)r/2 Nll; avec: p(x,u) = Sgnlp(x,u)li cosln(x,u)rf/2 Nl p(y,v) = Sgnlp(y,v)l cosln(y,v)u/2 Nl o n(x,u) et n(y,v) sont des entie S compris entre 1 et N-1; une table des signes de p(x,u) et p(y,v) et des valeurs de n(x,u) et de n(y,v) adressant la mémoire des produits; un géné- rateur de coordonnées fournissant séquentiellement des couples de valeur (u,v) et, pour chaque couple (u,v), toutes les valeurs des couples (x,y); un multiplieur effectuant le produit de P par une combinaison des données de la mémoire de données; et un totaliseur effectuant une soutraction ou une addition du résul- tat de la multiplication avec les résultats précédents en fonc- tion du signe fourni par la table de signes. Réciproquement, la présente invention prévoit un circuit de traitement de coefficients par transformée cosinus discrète inverse faisant correspondre à un tableau de Nx N coefficients (F(u,v)) un tableau de Nx N données (f(x,y)) selon la relation suivante: f(x,y)= 1/K F(uv) c(u)-cosl( 2 x+l)u/16 l-c(v)-cosl( 2 y+l)v/16 l u v o K est une puissance de 2 constante, x,y désignent les coordonnées d'une donnée dans le tableau de données, u,v les coordonnées d'un coefficient dans le tableau de coefficients, c(u), c(v) = 1 J 2 pour u,v = O = 1 pour u,v É 0. Ce circuit comprend une mémoire du tableau de coefficients; une mémoire des produits P = cosln(x,u)n/2 Nl-cosln(y, v)T/2 Nl, o n(x,u) et n(y,v) sont des entiers compris entre 1 et (N/2)-l; une table des signes de cosln(x,u)rr/2 Nl et de cos En(y,v)n/2 Nl, et de n(x,u) et de n(y,v); un générateur de coordonnées four- nissant séquentiellement des couples de valeurs (x,y) correspon- dant au ler quadrant du tableau de données ainsi que des signaux par(u) et par(v) égaux à + 1 ou -1 selon que u et v sont pair ou impair et, pour chaque couple (x,y), toutes les valeurs des cou- ples (u,v); un multiplieur effectuant le produit de P par une combinaison des coefficients de la mémoire de coefficients; et quatre totaliseurs effectuant une soutraction ou une addition du résultat de la multiplication avec les résultats précédents en fonction du signe fourni par la table de signes et des valeurs de par u et de par v pour fournir respectivement f(x,y), f(x',y), f(x,y') et f(x',y'), o x'=N-1-x et y'=N-l-y. Ces objets, caractéristiques et avantages ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite en relation avec les figures jointes parmi lesquelles: la figure 1 représente un premier mode de réalisation de la présente invention; la figure 2 est un schéma illustratif d'un bloc destiné à faire comprendre le procédé mis en oeuvre dans un deuxième mode de réalisation de la présente invention; la figure 3 représente un deuxième mode de réalisation de la présente invention; la figure 4 représente un tableau de valeurs de coefficients pour diverses valeurs de u et de x; et la figure 5 représente un circuit de détermination de transformée cosinus discrète inverse. La présente invention se base sur une analyse de la formule ( 1) cidessus de la transformée cosinus discrète (DCT). Alors que les procédés de l'art antérieur et les circuits pour les mettre en oeuvre visaient essentiellement à effectuer en parallèle le plus grand nombre d'opérations possibles au coût d'une multiplication des composants électroniques utilisés, la présente invention vise à réaliser ces opérations en série de la façon la plus simple possible et en utilisant le moins de compo- sants électroniques possibles tout en obtenant une puissance de calcul suffisante pour traiter des séquences d'images comprenant par exemple de l'ordre de quelques dizaines de kiloblocs par seconde. La formule ( 1) ci-dessus peut se réécrire F(u,v) = 1/K f(x,y) P(x,u,y,v) x y o P(x,u,y,v) = p(x,u)p(y,v) avec: p(x,u) = c(u)-cosl( 2 x+l)un/16 l = Sgnlp(x,u)l-jcosln(x,u)rr/16 l| ( 2) et p(y,v) = c(v)-cosl( 2 y+l)vn/16 l = Sgnlp(y,v)-I cosln(y, v)n/16 l 1 ( 3) o n(x,u) ou n(y,v) = 1 à 7 et Sgnlp(x,u)l ou Sgnlp(y,v)l = + 1 désigne le signe de p. Dans ces formules, en effet: si u= 0, le cosinus est égal à 1 et p(x,u)=c(u)=l/J 2 =cos 4 ir/16, si uÉ 0, c(u)= 1 et p(x,u)=cosll( 2 x+ 1)u I/16 l. Il en est de même pour c(v) et p(y,v). Ceci signifie que p(x,u) ou p(y,v)) est toujours égal à la valeur absolue du cosinus d'un arc du premier quadrant multiple de n T/16 affectée d'un signe positif ou négatif En conséquence, chaque valeur de F(u,v) correspond à la somme de 64 produits de f(x,y) par un coefficient P du type valeur absolue de cosln(x,u)Tr/16 l-cosln(y, v)n/16 l affecté d'un signe positif ou négatif Par ailleurs, I Pl prend 49 valeurs différentes. Ainsi, la présente invention propose de mémoriser dans des tables, d'une part, le signe, d'autre part, la valeur absolue de chacun des produits cos Ln(x,u)i T/16 l-cosln(y,v)n/16 l pour servir de base au traitement de DCT Plus particulièrement, la présente invention propose d'utiliser dans un premier étage de mémoire deux tables dont l'une reçoit la valeur courante de x et de u et fournit n(x,u) et Sgn(x,u) et dont l'autre reçoit la valeur courante de y et de v et fournit n(y,v) et Sgn(y,v) Les valeurs de n(x,u) et de n(y,v) servent ensemble d'adresse à un deuxième étage de mémoire qui contient les valeurs absolues de P (produits de cosinus) En reprenant les expressions précédentes, on notera que, dans le cas particulier considéré de blocs 8 x 8, les tables sont de relativement petites dimensions ( 64 mots de 4 bits pour chacune des premières tables et 49 mots de typiquement 12 bits pour le deuxième étage de mémoire). La figure 1 est un schéma sous forme de blocs repré- sentant un premier mode de réalisation de circuit de DCT selon la présente invention. Les pixels du bloc x,y à traiter sont mémorisés dans une mémoire 1 qui contient initialement les 64 pixels du bloc 8 * 8 à traiter En pratique, pour éviter les pertes de temps lors de la mémorisation du bloc suivant, on aura intérêt à doubler la capacité de cette mémoire et à la munir d'un double accès. Pendant que l'on traite un bloc, le suivant sera acquis simulta- nément selon des techniques classiques. Une mémoire morte 3 contient tous les produits P = |P(x,u,y,v)J = |cosln(x,u)n/161-cosln(y,v)rr/16 l, c'est-à-dire 41 coefficients Un générateur de coordonnées y, x, u, v fournit séquentiellement les 64 combinaisons de valeurs de u et v et, pour chaque couple (u,v), balaye en 64 coups d'hor- loge les 64 valeurs possibles de x,y, c'est-à-dire les 64 pixels de la mémoire de bloc 1 On notera que l'ordre de balayage des coordonnées x,y est quelconque, mais que l'ordre de balayage des couples (u,v) sera choisi en fonction de l'ordre que l'on veut obtenir en sortie du circuit Par exemple, si l'on veut fournir une sortie conforme à la norme CCITT H 261, le balayage de la matrioe u,v se fera en zigzag. Une table 7 fournit pour chaque couple x,u la valeur correspondante du signe de p(x,u) (appelé ci-après Sgn Ep(x,u)l ou plus simplement Sgn(x, u)) Cette table fournit également la moitié n(x,u) de l'adresse de la mémoire 3 Une table 9 remplit des fonctions similaires pour y et v. Pour chaque couple x,y, un multiplieur 11 fournit le produit de la valeur f(x,y) du pixel en cours par P Ce produit est envoyé à un totalisateur 13, qui, tous les 64 coups d'horlo- ge, fournit pour un couple u,v, -la valeur du coefficient F(u,v) correspondant Le totalisateur 13 comprend un additionneur- soustracteur 15 et un accumulateur 17 L'accumulateur 17 stocke pendant 64 coups d'horloge la somme algébrique des sorties de l'additionneur 15 Cet additionneur reçoit sur une première entrée le résultat partiel accumulé dans l'accumulateur 17 et sur sa deuxième entrée le produit en cours P-f(x,y) affecté du signe (+) ou (-) selon la sortie d'un circuit de détermination de signe 19 qui fournit le produit algébrique de Sgn(x, u) et de Sgn(y,v) obtenu aux sorties des tables 7 et 9. Avec le circuit de la figure 1, il faut 64 coups d'horloge pour calculer chaque coefficient F(u,v) et donc 64-64 = 4096 coups d'horloge pour calculer les 64 coefficients de la DCT d'un bloc L'élément dont le fonctionnement est le plus lent parmi les circuits de la figure 1 est le multiplieur 11. Une technologie qui autorise qu'une multiplication soit effec- tuée en une période d'une horloge à 16 M Hz permettra une puis- sance de calcul d'environ 4 kiloblocs par seconde. D'autre part, pour se faire une idée plus précise de l'encombrement du circuit de la figure 1, on notera que pour un bloc 8-8, le générateur de coordonnées fournit chacune des coor- données sur 3 bits, et que, si les pixels de la mémoire de blocs sont définis sur 8 bits, pour ne pas perdre en définition, la valeur de P doit être définie sensiblement sur 12 bits. il Dans un deuxième mode de réalisation de la présente invention, on cherche à augmenter la vitesse possible de fourni- ture des coefficients F(u,v) en utilisant encore un seul multi- plieur réalisant l'opération de multiplication d'un nombre de 11 bits par un nombre de 12 bits en un temps d'une horloge à 16 M Hz Pour cela, on se base sur une analyse plus détaillée des coefficients p Il est alors possible de noter que ces coeffi- cients répondent à la propriété suivante: Soit x' = 7-x; alors: p(x', u) = + p(x,u) si u est pair p(x,u) si u est impair. En utilisant la notation par(u) pour désigner la parité de u, cette expression peut s'écrire p(x',u) = par(u)-p(x,u) o par(u) = + 1 si u est pair -1 si u est impair. Ainsi, en reprenant l'expression ( 1) ci-dessus et en tenant compte de la remarque précédente, on peut écrire: F(u,v)=( 1/K) P(u,x,v,y) {f(x, y)+par(u)f(x',y) x/2 y/2 +par(v)lf(x,y')+ par(u)f(x',y')l) ( 4) Commae le montre la figure 2, oette expression signifie que, pour quatre pixels deux à deux symétriques par rapport aux axes centraux du tableau de pixels x,y, c'est-à-dire les pixels (x,y) (x',y) (x,y') (x',y'), le coefficient multiplicatif P sera le même sous réserve que les données correspondant aux pixels soient affectées d'un signe positif ou négatif selon leur empla- cement Par contre, la somme double ne porte plus que sur 4 x 4 = 16 termes au lieu de 8 x 8 = 64 comme cela a été indiqué précédemment. On en tire deux conclusions, d'une part que les dimensions des mémoires 7 et 9 de la figure 1 peuvent être réduites, d'autre part qu'il est possible d'effectuer le calcul d'un coefficient F(u,v) en seulement 16 coups d'horloge au lieu de 64 Ainsi, on multiplie par 4 la rapidité du calcul pour arriver à des rapi- dités de l'ordre de 16 kblocs/s, c'est-à-dire une rapidité bien suffisante pour le traitement d'informations de visiophone comme cela a été indiqué précédemment. La figure 3 représente schématiquement un circuit mettant en oeuvre ce deuxième mode de réalisation de la présente invention Conmme le circuit de la figure 1, le circuit de la figure 3 comprend une mémoire de bloc 1, une mémoire de coef- ficients P 3, un générateur de données 5, des tables 7 et 9 fournissant respectivement les valeurs n(x,u) et n(y,v) pour l'adressage de la ROM 3 et fournissant aussi les signes de p(x,u) et p(y,v) à un circuit 19 qui fournit le signe de P La valeur absolue de P est fournie à un multiplieur 11 dont la sortie va à un totalisateur 13 qui fournit cycliquement les valeurs successives F(u,v). La différence essentielle avec le circuit de la figure 1 est que le générateur de coordonnées 5 adresse simulta- nément quatre pixels dans la mémoire 1, à savoir les pixels f(x,y), f(x', y), f(x,y') et f(x',y') Un circuit de sommation 21 fournit la valeur de f(x,y)+par(u)f(x',y)+par(v)l(f(x,y')+par(u)f(x',y')l. La sortie du circuit 21 est envoyée à la deuxième entrée du multiplieur 11. Dans la réalisation décrite, le circuit de sommation 21 comprend trois additionneurs/soustracteurs Le premier, 23, fournit f(x,y)+par(u)-f(x', y) et revoit l'entrée par(u) en provenance du générateur de coordonnées 5 De même, le deuxième, 24, fournit f(x,y')+par(u) f(x',y') et reçoit l'entrée par(u) en provenance du générateur de coordonnées 5 Le troisième, 25, fournit le résultat final et revoit le signal par(v) du généra- teur de coordonnées 5. Dans ce mode de réalisation, pour chaque couple de valeurs u,v, on balayage seulement quatre valeurs de y et quatre valeurs de x ce qui réduit de la façon indiquée précédemment la durée du fonctionnement au coût de 1 'addition du circuit de sommation 21 Le circuit 21 ne comprenant que des additionneurs est particulièrement simple à réaliser et occupera une faible surfaoe sur un circuit intégré. Pour aider à la compréhension de la présente inven- tion, la figure 4 représente le tableau des valeurs de n(x,u) et de Sgn(x,u) correspondant à chacune des huit valeurs de u et des quatre valeurs de x balayées (rappelons que N a été défini dans les formules ( 2) et ( 3)). TRANSFORMEE COSINUS DISCRETE INVERSE La transformée cosinus discrète inverse 8 x 8 s'écrit: f(x,y)=l/K F(u, v)-c(u) cosl( 2 x+l)u/16 l-c(v)-cosl( 2 y+l)vn/16 l u v Cette équation a la même forme que l'équation ( 1) de détermination de la DCT directe Ainsi, le circuit de la figure 1 permet sans modification d'effectuer un calcul de DCT inverse, en commutant f(x,y) et F(u,v). Par contre, le circuit de la figure 3 qui tire partie d'une factorisation du coefficient P n'est pas réversible Néan- moins, une structure correspondante permettant d'accélérer d'un facteur 4 le fonctionnement du circuit par rapport à celui de la figure 1 peut s'adapter au cas du calcul de la DCT inverse. En effet, on remarque qu'un même produit F(u,v)-p(x,u) p(y,v) entre, au signe près, dans le calcul de la somme de 4 pixels. Autrement dit, 1 ' opérateur de transformée cosinus discrète inverse peut calculer simultanément quatre pixels en 64 coups d'horloge pour retrouver les mêmes performances que le calcula- teur de DCT directe En notant comme précédemment x'= 7-x et30 y'= 7-y, on a les relations ( 5) ci- dessous: f(x,y) = 1/K Sgn(x,u,y,v)-F(u,v) 1 P(x,u,y,v)J u v f(x',y) = 1/K _ par(u)-Sgn(x,u,y,v)-F(u,v)-l P(x,u,y,v)J u v f(x,y') = 1/K 7 Épar(v) Sgn(x,u,y,v) F(u,v)-1 P(x,u,y,v)1 u v f(x',y') = 1/K 7 Épar(u)-par(v)-Sgn(x,u,y,v)-F(u,v)-1 P(x,u,y,v)J u v Un circuit permettant de tirer partie de ces relations est illustré en figure 5. En figure 5, des éléments similaires à ceux des figures précédentes sont désignés par les mêmes références Ce circuit comprend une mémoire de bloc 1 mais, au lieu d'être des blocs de pixels f(x,y), il s'agit maintenant de blocs de coef- ficients F(u,v) Comme précédemment, la mémoire morte ROM 3 contient des valeurs de P, c'est-à-dire des valeurs absolues de produits de cosinus de ni-/16, et est associée à un générateur de coordonnées 5 et à des tables de détermination de valeur des termes n(x,u) et n(y,v) 7 et 9 Le multiplieur 11 reçoit direc- tement, d'une part, la valeur F(u,v) en provenance de la mémoire de bloc 1, d'autre part, P en provenance de la ROM 3 Le résul- tat de la multiplication est envoyé simultanément à quatre tota- lisateurs 31, 32, 33, 34 pour lesquels le choix entre une addi- tion et une soustraction est déterminé en fonction de la sortie Sgn du circuit 19 et des valeurs des parités de u et de v telles que fournies à la sortie du générateur de coordonnées 5 Les sorties des quatre totalisateurs étant fournies simultanément, elles sont temporairement mémorisées dans des registres 35, 36, 37, 38 avant d'être fournies à une ligne de sortie 40 à un rythme approprié. Toutefois, les sorties de pixels sur la ligne 40 sont fournies dans un ordre imposé par la satisfaction des équations ( 5) C'est-à-dire que l'on obtient séquentiellement des pixels correspondant à quatre positions 2 à 2 symétriques par rapport aux axes centraux de la matrice de pixels Ceci ne correspond généralement pas à un ordre de balayage souhaité de la matrice de pixels On devra donc parfois disposer un permuteur de sortie 41 destiné à remettre les pixels dans un ordre souhaité sur une sortie 42. Par ailleurs, en ce qui concerne le calcul de la DCT inverse, on notera que les opérations de DCT sont généralement effectuées dans le but de réaliser ensuite une quantification des coefficients pour ne transmettre que les coefficients de 5 plus grande amplitude Ainsi, quand on veut faire l'opération de transformation inverse, on se trouve généralement devant des matrices de coefficients F(u,v) dont la plupart des termes sont nuls On peut donc utiliser divers procédés pour éviter de faire subir un cycle de calcul par un circuit du type de celui de la10 figure 1 ou de la figure 5 aux coefficients nuls Ceci peut être réalisé, par exemple, en modifiant la mémoire de blocs et le générateur de coordonnées de la façon suivante. La mémoire de blocs devient une mémoire de liste de coefficients Les coefficients non nuls d'un même bloc y sont stockés à des adresses mémoire successives sous la forme d'une liste de longueur variable Chaque mot de cette mémoire contient d'une part F(u,v), c'est-à-dire la valeur d'un coefficient, d'autre part les coordonnées u,v de ce coefficient ( 3 bits chacun), et enfin un bit de fin de liste fb. Le générateur de coordonnées continue à délivrer x et y mais par contre, les valeurs de u et v sont fournies par la sortie de la mémoire de blocs Enfin, la mémoire de blocs doit être adressée de façon à balayer 64 fois (dans le cas de la figure 1) ou seize fois (dans le cas de la figure 5) une liste avant de passer à une liste suivante. REVENDICATIONS 1 Procédé de traitement de données par transformation cosinus discrète (DCT) faisant correspondre à un tableau f(x,y) de Nx N données un tableau F(u,v) de Nx N coefficients selon la relation suivante: N-1 N-1 F(u,v) = ( 1/K) f(x,y) p(x,u)-p(y,v) x=O y=O o K est une puissance de 2 constante, x,y désignent les coordonnées d'une donnée dans le tableau de données, u,v désignent les coordonnées d'un coefficient dans le tableau de coefficients, p(x,u) = c(u)-cosl( 2 x+ 1)un/2 Nl p(y,v) = c(v) -cos l ( 2 y+l)vlr/2 Nl c(u), c(v) = 1 J 2 pour u,v = O = 1 pour u,v 0, caractérisé en ce qu'il consiste à déterminer séquentiellement chaque coefficient F(u,v) pour un couple de coordonnées u,v en réalisant les étapes suivantes: rechercher dans une table pour un premier couple x,y la valeur absolue et le signe du coefficient P=p(x,u)-p(y,v); multiplier la valeur absolue de P par f(x,y); introduire le résultat de la multiplication additive- ment ou soustractivement dans un accumulateur ( 17) en fonction dudit signe; et répéter 1 'opération pour toutes les valeurs du couple x,y et extraire le résultat fourni par l'accumulateur. 2 Procédé de traitement de données selon la revendi- cation 1, caractérisé en ce que l'étape de recherche dans une table se décompose en les étapes suivantes: rechercher dans une première table adressée par x et u le signe de p(x,u) et le terme n(x,u) (compris entre 1 et N-l), avec: le signe avec: p(x,u) = Sgnlp(x,u)l- lcosln(x,u)nr/2 Nl; rechercher dans une deuxième table adressée par y et v de p(y,v) et le terme n(y,v) (compris entre 1 et n-1), p(y,v) = Sgnlp(y,v)l Jcosln(y, v)n/2 NlI; et rechercher dans une troisième table adressée par n(x,u) et n(y,v) la valeur absolue du coefficient P. 3 Procédé de traitement de données par transformation cosinus discrète (DCT) faisant correspondre à un tableau f(x,y) de Nx N données un tableau F(u,v) de Nx N coefficients selon la relation suivante: N-1 N- 1 F(u,v) = ( 1/K) f(x,y)-p(x,u) p(y,v) x= O y=O o K est une puissance de 2 constante, x,y désignent les coordonnées d'une donnée dans le tableau de données, u,v désignent les coordonnées d'un coefficient dans le tableau de coefficients, p(x,u) = c(u)-cosl( 2 x+l)uu/2 Nl p(y,v) = c(v)-cosl( 2 y+l)vn/2 Nl c(u), c(v) = 112 pour u,v = O = 1 pour u,v É 0, caractérisé en ce qu'il consiste à déterminer séquentiellement chaque coefficient F(u,v) pour un couple de coordonnées u,v en réalisant les étapes suivantes:30 rechercher dans une table pour quatre couples x,y correspondant à des positions 2 à 2 symétriques par rapport aux axes centraux du tableau de données, la valeur absolue du coef- ficient P=p(x,u)p(y,v); combiner additivement et/ou soustractivement pour ces quatre couples les valeurs des données correspondantes, le signe de chaque opération étant déterminé en fonction de la position relative des quatre données; multiplier la valeur combinée par ladite valeur du coefficient P; introduire le résultat de la multiplication dans un accumulateur; et répéter 1 ' opération pour toutes les valeurs des couples x,y, x et y variant entre O et (N/2)-1. 4 Procédé de traitement par transformée cosinus discrète (DCT) des données (f(x,y)) d'un bloc de Nx N données stocké dans une mémoire ( 1) o chaque case du bloc correspond à des coordonnées x,y, pour fournir un coefficient (F(u,v)) d'un bloc de coefficients, caractérisé en oe qu'il comprend les étapes suivantes: adresser une case de la mémoire ( 1); envoyer le contenu de la case à une première entrée d'un multiplieur ( 11); mémoriser dans une première table ( 3), pour toutes les valeurs de paramètres n(x,u) et de n(y,v) compris entre 1 et N-i, les valeurs absolues de P=cosln(x,u)r T/2 Nl -coslln(y,v)rn/2 Nl; mémoriser dans des deuxièmes tables ( 7, 9) les valeurs du signe des fonctions cosinus en fonction des valeurs de u et de x d'une part, de v et de y d'autre part ainsi que les valeurs de n(x,u) et de n(y,v) et utiliser ces valeurs pour adresser la première table; multiplier à chaque temps d'horloge une valeur d'une case du bloc de données par une valeur de la première table; et cumuler le résultat des multiplications additivement ou soustractivement en fonction des signes déterminés par les deuxièmes tables pour toutes les valeurs de x et de y. Circuit de traitement de données par transformée cosinus discrète faisant correspondre à un tableau f(x,y) de Nx N données un tableau F(u, v) de Nx N coefficients, selon la relation suivante: N-1 N-1 F(u,v) = ( 1/K) f(x,y) p(x,u) p(y,v) x= O y= O o K est une puissance de 2 constante, x,y désignent les coordonnées d'une donnée dans le tableau de données, u,v les coordonnées d'un coefficient dans le tableau de coefficients, p(x,u) = c(u)-cosl( 2 x+ 1)un/2 Nl p(y,v) = c(v)-cos Ll( 2 y+l)vn/2 Nl c(u), c(v) = 142 pour u,v = O = 1 pour u,v É 0, caractérisé en ce qu'il comprend une mémoire ( 1) du tableau de données; une mémoire ( 3) des produits P = lcosln(x,u)rf/2 Nlcosln(y,v)r/2 NlI; avec: p(x,u) = Sgnlp(x,u)l cosln(x,u)n/2 Nl, p(y,v) = Sgnlp(y,v)l cosln(y,v)n/2 Nl, o n(x,u) et n(y,v) sont des entiers compris entre 1 et N-1; une table ( 5, 9, 19) des signes de p(x,u) et p(y,v) et des valeurs de n(x,u) et de n(y,v) adressant la mémoire ( 3) des produits; un générateur de coordonnées ( 5) fournissant séquen- tiellement des couples de valeur (u,v) et, pour chaque couple (u,v), toutes les valeurs des couples (x,y); un multiplieur ( 11) effectuant le produit de P par une combinaison des données de la mémoire de données; et un totaliseur ( 13) effectuant une soutraction ou une addition du résultat de la multiplication avec les résultats précédents en fonction du signe fourni par la table de signes. 6 Circuit selon la revendication 5, caractérisé en ce que ladite combinaison correspond à une valeur de données f(x,y). 7 Circuit selon la revendication 5, caractérisé en ce que ladite combinaison correspond à {f(x,y)+par(u)f(x',y)+par(v)lf(x,y')+par(u)f(x',y')l)}, o x' = N-l-x, y' = N-l-y, par(u) et par(v) = + 1 ou -1, selon que u ou v est pair ou impair. 8 Circuit selon la revendication 7, caractérisé en ce que ladite combinaison est fournie par un circuit ( 21) compre- nant un premier additionneur/soustracteur ( 23) recevant f(x,y), f(x'y) et par(u) et fournissant f(x,y)+par(u)f(x'y), un deuxième additionneur/soustracteur recevant f(x,y'),f(x',y') et par(u) et fournissant f(x,y')+par(u)f(x',y'), et un troisième addition- neur/soustracteur ( 25) recevant les sorties des deux premiers additionneurs et fournissant le résultat du premier plus le résultat du deuxième multiplié par par(v). 9 Circuit de traitement de coefficients par transfor- mée cosinus discrète inverse faisant correspondre à un tableau de Nx N coefficients (F(u,v)) un tableau de Nx N données (f(x,y)) selon la relation suivante: f(x,y)= 1/K F(uv)Àc(u)-cosl( 2 x+l)u/16 l-c(v)-cosl( 2 y+l)vn/16 l u v o K est une puissance de 2 constante, x,y désignent les coordonnées d'une donnée dans le tableau de données, u,v les coordonnées d'un coefficient dans le tableau de coefficients, c(u), c(v) = 1 J 2 pour u,v = O = 1 pour u,v É 0, caractérisé en ce qu'il comprend: une mémoire ( 1) du tableau de coefficients; une mémoire ( 3) des produits P = cosln(x,u)n/2 Nl-cosln(y,v)r/2 Nl, o n(x,u) et n(y,v) sont des entiers compris entre 1 et (N/2)-l; une table ( 5, 9, 19) des signes de cosln(x,u)r/2 Nl et de cosln(y,v)nir/2 Nl, et de n(x, u) et de n(y,v); un générateur de coordonnées ( 5) fournissant séquen- tiellement des couples de valeurs (x,y) correspondant au ler quadrant du tableau de données ainsi que des signaux par(u) et par(v) égaux à + 1 ou -1 selon que u et v sont pair ou impair et, pour chaque couple (x, y), toutes les valeurs des couples (u,v); un multiplieur ( 11) effectuant le produit de P par une combinaison des coefficients de la mémoire de coefficients; et quatre totaliseurs ( 13) effectuant une soutraction ou une addition du résultat de la multiplication avec les résultats précédents en fonction du signe fourni par la table de signes et des valeurs de par u et de par v pour fournir respectivement f(x,y), f(x',y), f(x,y') et f(x',y') o: x' = N-l-x y' = N-l-y. Circuit selon la revendication 9, caractérisé en ce que la mémoire ( 1) du tableau de coefficients contient seule- ment des coefficients non nuls, chaque mot de la mémoire conte- nant une valeur de coefficient non nul suivie des coordonnées u,30 v de ce coefficient.