Brevet FR2866997A1 — publié le 20050902

PROCEDE ET DISPOSITIF DE CODAGE D'UNE IMAGE La présente invention se rapporte à un procédé et à un dispositif de codage d'une image. L'invention appartient au domaine de la compression des images numériques et, plus généralement, au domaine du codage et de la compression de signaux numériques, qu'il s'agisse de signaux vidéo, audio, de données, etc. On connaît diverses façons de comprimer avec perte des images numériques. Par exemple, le document US-A-5 883 979 divulgue une technique de compression d'images qui utilise trois valeurs de quantification prédéterminées dans trois zones différentes d'une table de quantification JPEG. Le rapport entre ces valeurs est fixé par l'utilisateur. Cependant, cette technique présente l'inconvénient d'introduire dans les images des effets de blocs lorsque le taux de compression est élevé. Ces 15 effets de bloc sont très gênants visuellement. La présente invention a pour but de remédier à cet inconvénient. Dans ce but, la présente invention propose un procédé de codage d'une image divisée en une pluralité de blocs de données, chaque bloc subissant une transformée en fréquences, ce procédé étant remarquable en ce qu'il comporte des étapes consistant à : - choisir une pluralité de valeurs de pas de quantification; puis, pour une pluralité de fréquences du bloc courant, - comparer le pas de quantification courant avec un seuil prédéterminé ; et - si le pas de quantification courant dépasse le seuil, remplacer le pas par le seuil, de façon à obtenir un pas de quantification définitif. Ainsi, l'invention permet de coder une image numérique avec un taux de compression élevé sans introduire d'effet de bloc, tout en restant aussi près que possible du compromis compression/distorsion optimal. En outre, cette technique est compatible avec la norme JPEG et son exécution est très simple et très rapide. Dans un mode particulier de réalisation, la pluralité de fréquences précitée du bloc courant est constituée d'un ensemble de fréquences inférieures à une fréquence prédéterminée. Cela permet de n'affecter un seuil qu'aux fréquences responsables 5 des effets de bloc et, par voie de conséquence, de s'affranchir de ces effets de bloc. Dans un mode particulier de réalisation, le procédé comporte en outre une étape consistant à stocker la valeur du pas de quantification définitif dans une table de quantification. Dans un mode particulier de réalisation, les blocs sont de taille 8x8 pixels. Les deux modes particuliers de réalisation précédents permettent de faciliter la compatibilité du procédé conforme à la présente invention avec la norme JPEG. Dans un mode particulier de réalisation, l'étape de choix de la pluralité de valeurs de pas de quantification consiste à choisir une même valeur pour tous les pas de quantification. Cela permet d'optimiser le compromis compression-distorsion tout en évitant les effets de bloc. Dans le même but que celui indiqué plus haut, la présente invention propose également un dispositif de codage d'une image divisée en une pluralité de blocs de données, chaque bloc subissant une transformée en fréquences, ce dispositif étant remarquable en ce qu'il comporte - un module permettant à un utilisateur de saisir une pluralité de 25 valeurs de pas de quantification; - un module pour comparer, pour chaque fréquence du bloc courant, le pas de quantification courant avec un seuil prédéterminé ; et - un module remplacer le pas par le seuil, si le pas de quantification courant dépasse le seuil, le module de remplacement fournissant un pas de 30 quantification définitif. La présente invention vise aussi un appareil de communication comportant un dispositif de codage tel que ci-dessus. La présente invention vise aussi un moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, permettant la mise en oeuvre d'un procédé de codage tel que ci-dessus. La présente invention vise aussi un moyen de stockage d'informations amovible, partiellement ou totalement, lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, permettant la mise en oeuvre d'un procédé de codage tel que ci-dessus. La présente invention vise aussi un produit programme d'ordinateur pouvant être chargé dans un appareil programmable, comportant des séquences d'instructions pour mettre en oeuvre un procédé de codage tel que ci-dessus, lorsque ce programme est chargé et exécuté par l'appareil programmable. Les caractéristiques particulières et les avantages du dispositif de codage, de l'appareil de communication, des moyens de stockage et du produit programme d'ordinateur étant similaires à ceux du procédé de codage, ils ne sont pas répétés ici. D'autres aspects et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit d'un mode particulier de réalisation, donné à titre d'exemple non limitatif. La description se réfère aux dessins qui l'accompagnent, dans lesquels: - la figure 1 illustre le contexte général de la présente invention; - la figure 2 est un organigramme illustrant les principales étapes d'un procédé de codage conforme à la présente invention, dans un mode particulier de réalisation; et - la figure 3 représente schématiquement un dispositif adapté à mettre en oeuvre la présente invention, dans un mode particulier de réalisation. La figure 1 présente une mise en situation de l'invention. Une image numérique 1 est codée par un codeur 2 qui comporte un dispositif de codage conforme à l'invention. Ce codeur produit un fichier comprimé qui peut être transmis ou stocké (phase 3 sur le dessin). Le fichier comprimé est lu par un décodeur 4, qui produit une image décomprimée (c'est-à-dire décodée) 5. On rappelle les principales étapes du codage qui ne font pas partie de l'invention proprement dite. L'image de départ est divisée en blocs, de préférence de taille 8x8 pixels. En variante, on peut utiliser d'autres tailles de bloc, comme 4x4, 10X10, voire n'utiliser qu'un seul bloc dont la taille est celle de l'image. Un certain nombre d'étapes suivantes sont appliquées à tous les blocs. On applique ensuite au bloc courant une transformation en cosinus discret. Pour plus de détails sur cette opération, on se reportera utilement à l'ouvrage de W. B. PENNEBAKER et J. L. MITCHELL intitulé "JPEG: Stil/ Image Data Compression Standard', Van Nostrand Reinhold, 1993. En variante, il est possible d'appliquer d'autres types de transformations, comme par exemple une transformation en ondelettes. Puis le bloc courant est transformé en un bloc à une seule dimension, par application d'une technique connue en soi appelée "zigzag scan". Cette technique, décrite dans l'ouvrage de M. RABBANI et P. W. JONES intitulé "Digital Image Compression Techniques", SPIE Opt. Eng. Press, Bellingham, Washington, 1991, consiste à parcourir tous les échantillons du bloc par diagonales, en commençant en haut à gauche et en finissant en bas à droite. Le bloc initial se présente sous la forme d'un bloc de données à deux dimensions de 8x8 échantillons, ces échantillons étant issus de la transformation en cosinus discret. Les échantillons sont ordonnés en considérant les diagonales d'échantillons, orientées d'en bas à gauche vers en haut à droite, en commençant par la diagonale qui se trouve en haut à gauche, jusqu'à celle qui se trouve en bas à droite. A l'intérieur d'une diagonale, les échantillons sont parcourus, soit d'en bas à gauche vers en haut à droite, soit dans le sens inverse. Parmi ces deux sens possibles, le choix est fait selon le critère suivant: le sens doit être le sens opposé à celui utilisé pour parcourir la diagonale considérée précédemment. En suivant ce sens de parcours, on range les échantillons rencontrés dans un vecteur à une dimension de 64 échantillons. L'invention ne se limite pas à ce type de parcours. On peut également transformer le bloc courant en le parcourant dans l'ordre lexicographique, c'est-à-dire ligne par ligne, pour engendrer le nouveau bloc à une dimension. Toutefois, dans le mode préféré de réalisation, on utilise le zigzag scan. L'opération suivante consiste à quantifier le bloc courant, en utilisant une table de quantification dont l'élaboration va être décrite en détail ci-après en liaison avec la figure 2. Tous les échantillons du bloc courant vont être divisés par un pas de quantification Q présent dans la table, puis leur valeur sera arrondie à l'entier le plus proche. Le bloc quantifié est donc une liste de 64 coefficients entiers signés. Enfin, le bloc quantifié est codé par codage entropique, par exemple par codage de Huffman ou par codage arithmétique. Comme le montre la figure 2, une première étape El du procédé de codage conforme à la présente invention consiste, pour un utilisateur, à saisir, par exemple par l'intermédiaire d'un clavier, des pas de quantification initiaux. Dans le mode préféré de réalisation, le type de codage utilisé comporte une division de l'image en blocs de taille 8x8 pixels, avec une transformée en cosinus discret ou DCT (en anglais "Discrete Cosine Transform") 8x8 telle que celle utilisée dans la norme JPEG. Ainsi, la table de quantification finale comportera 64 pas de quantification correspondant respectivement aux 64 fréquences présentes dans un bloc DCT. En conséquence, les pas de quantification initiaux sont également au nombre de 64. Pour entrer ces pas de quantification, l'utilisateur peut être amené à consulter une fenêtre de dialogue dans laquelle des champs "pas de quantification" lui sont proposés. II entre une valeur pour chaque pas de quantification, dans chaque champ, puis ferme la fenêtre de dialogue. Dans le mode préféré de réalisation, on considère que tous les pas de quantification initiaux sont égaux. L'utilisateur entre donc une unique valeur, par exemple 10, et cette valeur sera considérée comme le pas de quantification initial de chacune des 64 fréquences du bloc courant. Comme le montre le bloc E4 sur le dessin, un tableau de seuils prédéterminés pour les pas de quantification est accessible par le logiciel de compression des images. Dans le cadre de l'invention, le tableau de seuils prédéterminés comporte en général un nombre de valeurs inférieur à 64, c'est-à-dire que certaines fréquences se voient attribuer un seuil et d'autres non. Dans le mode préféré de réalisation, le tableau comporte les valeurs suivantes: {9,10,10,11,11,11,00,00,00,...,00}. Le symbole.0 signifie qu'il n'y a pas de seuil. Ainsi, dans le mode préféré de réalisation, la première fréquence du bloc comporte un seuil de 9, la deuxième un seuil de 10, la troisième un seuil de 10, la quatrième un seuil de 11, la cinquième un seuil de 11, la sixième un seuil de 11, et aucun seuil n'est associé aux fréquences de la septième à la soixante-quatrième. En variante, le tableau de seuils peut se présenter sous la forme {9,10,10,11,11,11}, c'est-à-dire qu'un seuil est attribué uniquement aux 6 fréquences les plus basses du bloc courant. Ainsi, on peut choisir initialement une fréquence du bloc en deçà de laquelle toutes les fréquences auront un seuil associé, et au-delà de laquelle aucun seuil n'est associé aux fréquences. A l'issue de l'étape E1 d'entrée des pas de quantification initiaux, une étape E2 consiste à sélectionner la première fréquence, qui devient la fréquence courante. Puis lors d'un test E3, on compare la valeur du pas de quantification initial associé à la fréquence courante avec le seuil associé à la fréquence courante. Si la valeur du pas de quantification initial associé à la fréquence courante est inférieure ou égale au seuil associé à la fréquence courante (test E3 négatif), l'étape suivante E6 consiste à stocker la valeur du pas courant dans une table appelée la table de quantification. Sinon, l'étape suivante E5 consiste à stocker la valeur du seuil courant dans la table de quantification. Si aucun seuil n'est associé à la fréquence courante, le test E3 est suivi de l'étape E6. Les étapes E5 et E6 sont suivies d'un test E7, au cours duquel on teste si la fréquence courante est la dernière fréquence, c'est-à-dire la 64ème dans le mode préféré de réalisation. Si tel est le cas (test E7 positif), l'étape suivante est une étape E8 de codage de l'image. Sinon, l'étape suivante est une étape E9 de sélection de la fréquence suivante. Lors de l'étape E9, la fréquence qui suit la fréquence courante devient la nouvelle fréquence courante. Cette étape est suivie par le test E3 décrit ci-dessus. Quant à l'étape E8, elle consiste à effectuer le codage de l'image proprement dit, en utilisant la table de quantification finale construite précédemment. Ce codage est classique et est décrit par exemple dans l'ouvrage de W. B. PENNEBAKER et J. L. MITCHELL mentionné plus haut. Comme décrit plus haut, dans le cadre du mode particulier de réalisation considéré ici, on dispose de la liste de seuils suivante: {9,10,10,11,11, 11,00,00,00,...,00} et on suppose que le pas de quantification initial pour chaque fréquence est de 10. En conséquence, la table de quantification finale est: {9,10,10,10,...,10}. A titre d'exemple, si le pas de quantification initial pour chaque fréquence avait été de 15, la table finale aurait été : {9,10,10,11,11,11,15,15,15,...,15}. Grâce à la présente invention, les fréquences les plus basses ne pourront avoir une valeur supérieure à un certain seuil. Or la demanderesse a constaté que ces fréquences basses sont celles qui engendrent des effets de discontinuité entre blocs lorsque la quantification est trop importante. Conformément à l'invention, la quantification est limitée à des valeurs telles qu'aucun effet de bloc n'est engendré. Un dispositif 10 mettant en oeuvre le procédé de codage de l'invention est illustré sur la figure 3. Ce dispositif peut être par exemple un micro-ordinateur 10 connecté à différents périphériques, par exemple, une caméra numérique 107 (ou un scanner, ou tout moyen d'acquisition ou de stockage d'image) reliée à une carte graphique et fournissant des informations à traiter selon l'invention. Le dispositif 10 comporte une interface de communication 112 reliée à un réseau 113 apte à transmettre des informations numériques. Le dispositif 10 comporte également un moyen de stockage 108 tel que par exemple un disque dur. II comporte aussi un lecteur de disquettes 109. La disquette 110, comme le disque dur 108, peuvent contenir des données d'implantation logicielle de l'invention ainsi que le code de l'invention qui, une fois lu par le dispositif 10, sera stocké sur le disque dur 108. En variante, le programme permettant au dispositif de mettre en ceuvre l'invention pourra être stocké en mémoire morte 102 (appelée ROM sur le dessin). Il en est de même pour les méthodes de codage. En seconde variante, le programme pourra être reçu pour être stocké de façon identique à celle décrite précédemment par l'intermédiaire du réseau de communication 113. Le dispositif 10 est relié à un microphone 111 par l'intermédiaire d'une carte d'entrées/sorties 106. Les données à traiter selon l'invention seront dans ce cas du signal audio. Ce même dispositif possède un écran 104 permettant de visualiser les informations à traiter ou de servir d'interface avec l'utilisateur qui pourra paramétrer certains modes de traitement, à l'aide du clavier 114 ou de tout autre moyen (souris par exemple). L'unité centrale 100 (appelée CPU sur le dessin) exécute les instructions relatives à la mise en oeuvre de l'invention, instructions stockées dans la mémoire morte 102 ou dans les autres éléments de stockage. Lors de la mise sous tension, les programmes et méthodes de traitement stockés dans une des mémoires (non volatile), par exemple la ROM 102, sont transférés dans la mémoire vive RAM 103, qui contient alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. En variante, les méthodes de traitement peuvent être stockées dans différents endroits. En effet, il est possible d'améliorer l'invention en ajoutant de nouvelles méthodes transmises par le réseau de communication 113 ou par l'intermédiaire de disquettes 110. Bien entendu, les disquettes peuvent être remplacées par tout support d'information tel que CD-ROM ou carte mémoire. Le bus de communication 101 permet la communication entre les différents sous-éléments du micro-ordinateur 10 ou liés à lui. La représentation du bus 101 n'est pas limitative et notamment, l'unité centrale 100 est susceptible de communiquer des instructions à tout sous- élément du microordinateur 10 directement ou par l'intermédiaire d'un autre sous-élément du micro-ordinateur 10. Le dispositif décrit ici est susceptible de contenir tout ou partie du traitement décrit dans l'invention. REVENDICATIONS 1. Procédé de codage d'une image divisée en une pluralité de blocs de données, chaque bloc subissant une transformée en fréquences, ledit procédé étant caractérisé en ce qu'il comporte des étapes consistant à : choisir (El) une pluralité de valeurs de pas de quantification; puis, pour une pluralité de fréquences du bloc courant, - comparer (E3) le pas de quantification courant avec un seuil prédéterminé ; et - si le pas de quantification courant dépasse ledit seuil, remplacer (E5) ledit pas par ledit seuil, de façon à obtenir un pas de quantification définitif. 2. Procédé selon la revendication 1, caractérisé en ce que ladite pluralité de fréquences est constituée d'un ensemble de fréquences inférieures à une fréquence prédéterminée. 3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il comporte en outre une étape consistant à stocker la valeur du pas de quantification définitif dans une table de quantification. 4. Procédé selon la revendication 1, 2 ou 3, caractérisé en ce que les blocs sont de taille 8x8 pixels. 5. Procédé selon l'une quelconque des revendications 1 à 4, caractérisé en ce que l'étape de choix de ladite pluralité de valeurs de pas de quantification consiste à choisir une même valeur pour tous les pas de quantification. 6. Dispositif de codage d'une image divisée en une pluralité de blocs 25 de données, chaque bloc subissant une transformée en fréquences, ledit dispositif étant caractérisé en ce qu'il comporte: - des moyens permettant à un utilisateur de saisir une pluralité de valeurs de pas de quantification; - des moyens pour comparer, pour une pluralité de fréquences du bloc courant, le pas de quantification courant avec un seuil prédéterminé ; et - des moyens pour remplacer ledit pas par ledit seuil, si le pas de quantification courant dépasse ledit seuil, lesdits moyens de remplacement fournissant un pas de quantification définitif. 7. Dispositif selon la revendication 6, caractérisé en ce que ladite pluralité de fréquences est constituée d'un ensemble de fréquences inférieures à une fréquence prédéterminée. 8. Dispositif selon la revendication 6 ou 7, caractérisé en ce qu'il comporte en outre des moyens pour stocker la valeur du pas de quantification définitif dans une table de quantification. 9. Dispositif selon la revendication 6, 7 ou 8, caractérisé en ce que les blocs sont de taille 8x8 pixels. 10. Dispositif selon l'une quelconque des revendications 6 à 9, caractérisé en ce que les moyens de saisie de ladite pluralité de valeurs de pas de quantification sont adaptés à accepter une même valeur pour tous les pas de quantification. 11. Appareil de communication, caractérisé en ce qu'il comporte un dispositif de codage selon l'une quelconque des revendications 6 à 10. 12. Moyen de stockage d'informations lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé de codage selon l'une quelconque des revendications 1 à 5. 13. Moyen de stockage d'informations amovible, partiellement ou totalement, lisible par un ordinateur ou un microprocesseur conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre d'un procédé de codage selon l'une quelconque des revendications 1 à 5. 14. Produit programme d'ordinateur pouvant être chargé dans un appareil programmable, caractérisé en ce qu'il comporte des séquences d'instructions pour mettre en oeuvre un procédé de codage selon l'une quelconque des revendications 1 à 5, lorsque ce programme est chargé et exécuté par l'appareil programmable.