[0001] La présente invention a pour objet un procédé de production d'un flux JPEG. Le domaine
de l'invention est celui de l'acquisition/numérisation d'image et de leur encodage
au format JPEG. Plus particulièrement le domaine de l'invention est celui des scanners
avancés tel qu'un scanner recto verso par exemple. De tels scanners sont utilisés
par des copieurs multifonctions, des scanners et/ou des télécopieurs.
[0002] On remarque ici qu'un flux JPEG est destiné à être incorporé dans un fichier JPEG.
Un fichier JPEG est alors composé d'un en-tête immédiatement suivi d'un flux JPEG.
[0003] Un but de l'invention est de permettre à un scanner de numériser un document recto
verso en utilisant le moins de mémoire possible.
[0004] Dans l'état de la technique on connaît des scanners recto verso qui permettent de
produire une version numérique d'un document sans qu'un utilisateur ait à intervenir
pour l'analyse du verso.
[0005] Ces scanners recto verso sont de deux types. Un premier type comporte deux capteurs,
la feuille passant entre les deux capteurs. Un deuxième type comporte un seul capteur
et un mécanisme de retournement du document à numériser. Avec ce deuxième type, le
dispositif d'acquisition commence à scanner le verso par le bas de la page, lorsque
le recto est numérisé.
[0006] Pour ces deux types de scanner, un encodage en JPEG est un encodage par bloc dans
lequel chaque bloc dépend du précédent, sauf le premier, et que le premier est celui
correspondant au coin supérieur droit de l'image, alors il faut attendre d'avoir une
image numérique de tout le verso avant de pourvoir commencer à l'encoder en JPEG.
C'est-à-dire qu'il faut prévoir en mémoire de quoi stocker une image de type bitmap
couleur à une résolution compatible avec l'application qui a besoin de numériser l'image.
Cette image de type bitmap pourra ensuite être encodée en JPEG de manière à être compressée
et exploitée par ladite application. Pour une image couleur en vraie couleur, chaque
pixel est codé par 3 chiffres, chaque chiffre étant codé sur 8 bits soit 1 octet.
On aboutit donc à un fichier très volumineux. La résolution standard d'un fax étant
de 1728 points en largeur (21 cm) pour 7.7 points par mm en hauteur, on arrive, pour
une page de A4 à :

soit plus de 11 Mo juste pour stocker l'image en mémoire.
[0007] Cette image doit ensuite être à nouveau parcourue pour pouvoir être compressé au
format JPEG.
[0008] Il y a donc à la fois un gaspillage de mémoire et de temps de traitement. En effet,
tout le temps nécessaire pour la numérisation est perdu car les informations requises
pour commencer la compression ne sont pas encore disponibles. Pour l'encodage en JPEG,
on parle aussi de compression car il s'agit bien d'une réduction, avec perte, de la
taille du fichier original.
[0009] L'invention résout ces problèmes en procédant à une production d'un flux JPEG en
commençant par la fin du fichier. Pour réaliser cela le procédé selon l'invention
commence par allouer un espace mémoire destiné à recevoir le flux JPEG final. Le procédé
selon l'invention comporte alors des étapes d'acquisition d'information, de réorganisation
de l'information et enfin de traitement de l'information. Les étapes de traitement
comportent elle des étapes de découpage en bloc de l'information, de détermination
d'un ordre de traitement des blocs, de traitement des blocs. Une particularité de
l'invention et qu'un bloc ne peut être écrit dans la mémoire destinée à recevoir le
flux JPEG que lorsque le suivant à été traité par les étapes précédentes. En effet
seule la connaissance du résultat de ce traitement du bloc suivant permet de terminer
le traitement d'un bloc.
[0010] Il faut ici être particulièrement attentif à la notion de suivant. En effet ici nous
avons parlé de suivant dans l'ordre du traitement. Dans l'invention on commence en
fait par traiter les derniers blocs de l'image. Le bloc suivant dans l'ordre de traitement
est donc le précédent dans l'ordre de l'image, cet ordre de l'image correspondant
à l'ordre défini par la norme JPEG utilisée.
[0011] L'invention a donc pour objet un procédé de production d'un flux JPEG pour une image
produite par des moyens d'acquisition produisant des lignes de P pixels, ladite image
étant acquise en commençant par sa partie inférieure, procédé
caractérisé en ce qu'il comporte les étapes suivantes mise en oeuvre par des moyens de traitement connectés
aux moyens d'acquisition:
- allocation d'une zone de mémoire pour y écrire le flux JPEG produit,
- acquisition et lecture de N premières lignes produites par les moyens d'acquisition
non déjà lues et enregistrement de ces lignes dans au moins une mémoire de traitement,
ladite mémoire de traitement étant structurée comme une table de N lignes,
- réorganisation des lignes dans les au moins une mémoire de traitement,
- structuration d'au moins la mémoire de traitement en blocs,
- détermination d'un ordre de traitement des blocs, cet ordre étant l'inverse de l'ordre
de traitement des blocs dans un procédé de production normal d'un flux JPEG, les blocs
sont alors numérotés de 1 à K,
- traitement des blocs selon le principe suivant :
- DCT et quantification bloc x, mémorisation du résultat x sous la forme d'un tableau
de coefficients :

- DCT et quantification bloc x-1, mémorisation du résultat sous la forme d'un tableau
de coefficients

- encodage puis écriture à la fin de la zone mémoire allouée de

- une fois tous les blocs traités, alignement du flux JPEG obtenu sur l'entête d'un
fichier JPEG.
[0012] Dans une variante le procédé selon l'invention est aussi
caractérisé en ce que N et le nombre de mémoire de traitement varient selon la nature des moyens d'acquisition,
selon qu'ils sont noir et blanc ou couleurs, et selon le format du flux JPEG à produire,
selon en particulier le sous échantillonnage appliqué.
[0013] Dans une variante le procédé selon l'invention est aussi
caractérisé en ce que pour une image en noir et blanc, ou monochrome, le nombre de mémoire de traitement
vaut 1 et que N est l'un des nombres de l'ensemble formé par {4, 8, 16}.
[0014] Dans une variante le procédé selon l'invention est aussi
caractérisé en ce que pour une image en couleur le nombre de mémoire de traitement vaut 3.
[0015] Dans une variante le procédé selon l'invention est aussi
caractérisé en ce que N varie selon que la mémoire de traitement correspond à des informations de luminance
ou de chrominance, pour la chrominance N vaut 16, pour la luminance N vaut 8 ou 4.
[0016] Dans une variante le procédé selon l'invention est aussi
caractérisé en ce que la réorganisation dépend d'un format de sous échantillonnage et/ou d'un ordre d'acquisition
des informations par les moyens d'acquisition.
[0017] Dans une variante le procédé selon l'invention est aussi
caractérisé en ce que l'alignement est réalisé par un décalage vers la gauche du flux obtenu, décalage
du nombre de bit nécessaires pour que le premier bit du flux corresponde au début
d'un octet en mémoire.
[0018] L'invention sera mieux comprise à lecture de la description qui suit et à l'examen
des figures qui l'accompagnent. Celles-ci sont présentées à titre indicatif et nullement
limitatif de l'invention. Les figures montrent :
- figure 1 : une illustration de moyens utiles à la mise en oeuvre du procédé selon
l'invention.
- figure 2 : une illustration d'étape du procédé selon l'invention.
[0019] La figure 1 montre un dispositif 101 d'acquisition d'images. Classiquement le dispositif
101 est un scanner produisant des fichiers exploitable par un dispositif de traitement
auquel il est connecté. Ce cas de figure est par exemple celui d'un scanner connecté
à un ordinateur via un réseau ou tout autre moyen de connexion. Un autre cas de figure
est celui d'un dispositif fac-simile devant produire une version électronique d'un
document pour l'émettre via un réseau télématique. D'une manière générique on parlera
de l'appareil 101.
[0020] La figure 1 montre que l'appareil 101 comporte des moyens 102 d'acquisition d'information,
une mémoire 103 de programmes, un microprocesseur 104, une unité 105 facultative de
stockage de masse, une mémoire 106 d'enregistrement d'un flux JPEG, ou d'un fichier
JPEG, et une mémoire 107 de travail. Les éléments 102 à 107 sont interconnectés via
un bus 108.
[0021] Les moyens 102 sont classiquement un « multi capteurs », c'est-à-dire une barre de
capteurs d'une longueur correspondant au standard selon lequel l'appareil 101 doit
travailler. Par exemple en Europe occidental le standard le plus répandu pour les
documents est le format A4. En général ces documents sont numérisés en mode portrait.
La barre de capteurs adaptés pour ce type de mode a une largeur d'environ de 21cm.
Dans la pratique, les barres de capteurs permettant de scanner en mode portrait ou
paysage ont une largeur d'environ 29,7cm.
[0022] Dans le reste de la description, on considère un scanner en mode portrait et donc
une barre de capteurs ayant une largeur de 21 cm. Dans un mode de réalisation préféré,
le scanner est un dispositif couleur. Cette barre de capteurs à une résolution d'au
moins 1728 points pour être compatible avec les applications de fac-simile. Le capteur
produit donc des lignes, chaque ligne comportant 1728 triplets de valeurs : une valeur
de luminance et deux valeurs de chrominance. Si la barre de capteurs produit des triplets
selon un standard RVB alors ces triplets sont transformés en luminance et chrominances,
il s'agit en effet du mode de codage qui donne les meilleurs taux de compression avec
la compression JPEG.
[0023] La mémoire 103 comporte plusieurs zones, chacune comportant des codes instruction
correspondant à une fonctionnalité de l'appareil 101. Ainsi lorsque l'on prête une
action à un dispositif, celle-ci est en fait effectuée par un microprocesseur du dispositif
commandé par des codes instruction enregistrés dans une mémoire de programme dudit
dispositif. De même lorsque l'on prête une action à un programme cette action correspond
à la mise en oeuvre par un microprocesseur, connecté à une mémoire dans laquelle est
enregistré le programme, de tout ou partie des codes instruction formant ledit programme.
[0024] Seules les zones de la mémoire 103 intéressant le plus directement l'invention sont
représentées.
[0025] La mémoire 103 comporte une zone 103a comportant des codes instruction correspondant
à la mise en oeuvre du procédé selon l'invention.
[0026] La mémoire 103 comporte une zone 103b comportant des codes instruction permettant
au microprocesseur 104 de piloter les moyens 102 d'acquisition.
[0027] La mémoire 105 permet, dans une variante de l'invention, d'enregistrer le ou les
fichiers JPEG produits.
[0028] La mémoire 106 est une mémoire destinée à recevoir le flux JPEG au fur et à mesure
de sa création. Cette mémoire est remplie par la fin.
[0029] La mémoire 107 est une mémoire de travail, elle permet de réorganiser les données
produites par les moyens d'acquisition.
[0030] La mémoire 107 se subdivise en fait en 3 zones de travail :
- une zone 107a pour la luminance,
- une zone 107b pour la première chrominance,
- une zone 107c pour la deuxième chrominance.
[0031] La zone 107a est plus importante, c'est-à-dire comporte plus de lignes, que les zones
107b et 17c, cela correspond à un sous échantillonnage effectué conformément à la
norme JPEG.
[0032] La représentation des mémoires/zone de travail n'est qu'une illustration d'implantation
de composants et d'enregistrement de données. Dans la pratique ces mémoires sont unifiées
ou distribuées selon des contraintes de taille de la base de données et/ou de rapidité
des traitements souhaités.
[0033] Dans le cas d'un traitement de données issues d'un capteur produisant des données
en noir et blanc, une seule zone de travail est requise.
[0034] Dans le cas de la description on considère une image couleur. La capacité de la zone
107a est N = 16 lignes. Les capacités des zones 107b et 107c sont N / 2 = 8 lignes
ou N / 4 = 4 lignes.
[0035] La figure 2 montre une étape 201 d'allocation. Cette étape intervient alors que le
recto d'un document biface a déjà été scanné et que l'appareil 101 s'apprête à effectuer
le traitement du verso. Ce verso est présenté de manière inversée à la barre de capteurs
102. La mémoire alloué correspond à la place qu'occupera le flux JPEG complet une
fois produit. Dans l'exemple de la figure 1 la mémoire 106 comporte aussi une zone
correspondant à l'entête du fichier JPEG qui intégrera le flux JPEG, mais cela est
une variante de l'invention. La mémoire 106 a une capacité de stockage de préférence
supérieure ou sensiblement égale à la taille standard JPEG d'un fac-simile couleur
de format A4. La taille standard JPEG d'un fac-simile couleur de format A4 est d'environ
500 Ko.
[0036] Une fois la mémoire 106 allouée, c'est-à-dire que cette espace mémoire ne peut plus
être utilisée que par le procédé selon l'invention, on passe à une étape 202 d'acquisition.
[0037] Dans l'étape 202 les moyens 102 d'acquisition produisent séquentiellement des lignes
au fur et à mesure que les moyens 102 sont présentés devant le verso du document à
numériser. Ces lignes sont enregistrées, au fur et à mesure de leur production dans
une mémoire tampon 250 liée au moyen 102. Cette mémoire 250 tampon est, par exemple,
une mémoire tournante ayant une certaine capacité en ligne, capacité supérieure à
N. Le principe est alors que les lignes produites par les moyens d'acquisition doivent
être traitées rapidement par les moyens 103-104 de traitement de telle sorte que les
nouvelles lignes acquises via les moyens d'acquisition n'écrasent les lignes les plus
anciennes dans ladite mémoire 250 tampon.
[0038] L'étape 202 se déroule parallèlement à une étape 203 de réorganisation. Dans l'étape
203 le microprocesseur lit dans la mémoire 250 tampon des moyens 102, les N lignes
les plus anciennes non encore traitées.
[0039] Ces N lignes sont ensuite écrites dans les mémoires de traitement. L'intégralité
des informations de luminance sont enregistrées dans la mémoire 107a. Les informations
de chrominance sont sous échantillonnées selon la norme JPEG.
[0040] Si on considère que les lignes sont lues dans la mémoire tampon de bas en haut et
de la gauche vers la droite, alors le résultat de cette lecture est écrit dans les
mémoires de travail de haut en bas et de la droite vers la gauche. Cela a pour effet
d'inverser le renversement à la présentation à l'envers du verso devant les moyens
102. On note ici que ce renversement peut être prévu par les moyens 102, dans ce cas
la réorganisation de l'étape 203 est un simple sous échantillonnage, les données étant
écrites dans l'ordre dans lequel elles sont lues.
[0041] A la fin de l'étape 203 la mémoire 107a comporte 16 lignes de luminance, la mémoire
107b comporte 8 lignes de première chrominance et la mémoire 107c comporte 8 lignes
de deuxième chrominance. Cela est lié au mode de sous échantillonnage choisi pour
illustrer l'invention. Le nombre de lignes, en particulier de chrominance, peut changer
d'une mise en oeuvre à l'autre de l'invention.
[0042] La réorganisation des lignes peut être au moins de deux natures :
- soit un déplacement des informations en mémoire pour que leur lecture se fasse selon
un ordre naturel, par adresse de mémoire croissante par exemple, par indice de tableau
croissante ;
- soit par la détermination d'un ordre de lecture des informations, cet ordre permettant
alors d'ordonner les informations ans les déplacer en mémoire.
[0043] Après l'étape 203 le microprocesseur 104 passe à une étape 204 de découpage en K
blocs des mémoires de travail. Dans notre exemple il s'agit de blocs de 8 x 8. Ce
qui convient parfaitement avec la longueur d'une ligne (1728 = 216 x 8) et avec le
nombre de lignes, 16 ou 8 selon que l'on considère luminance ou chrominance. Si la
résolution de la ligne ne correspondait pas à un multiple entier de la taille d'un
bloc, alors la ligne serait virtuellement agrandi du nombre de point manquant pour
atteindre le multiple le plus proche.
[0044] Dans la description la zone 107a est donc découpé en 2 lignes de K=216 blocs, les
mémoires 107b et 107c comporte chacune une ligne de 216 blocs.
[0045] Le microprocesseur passe alors à une étape 205 dans laquelle il traite les blocs
dans un ordre spécifique. Cet ordre est l'ordre inverse de celui qui serait appliqué
s'il s'agissait d'une procédure de production d'un flux JPEG selon la norme.
[0046] Dans notre exemple le traitement va donc commencer par 2 blocs de deuxième chrominance,
puis 2 blocs de première chrominance, puis 4 blocs de luminance.
[0047] Dans une étape 206 les résultats de ces traitements sont mémorisés pour le traitement
des blocs suivants.
[0048] Dans une étape 207 les résultats des ces traitements sont compressés, pour chaque
bloc, selon la norme JPEG puis écrit, en partant de la fin dans la mémoire 106. Le
résultat de la compression est une séquence de bits. L'écriture dans la mémoire 106
se fait donc via un alignement sur le dernier bit écrit.
[0050] Bien sur les DCT (Discret Cosinus Transform, pour transformée en cosinus discret)
et quantification ne sont effectué qu'une fois par bloc, c'est l'utilité de l'étape
de mémorisation des résultats.
[0051] La DCT et la quantification sont bien connus de l'état de l'art, il suffit de se
référer à la page Internet suivante par exemple : http://fr.wikipedia.org/wiki/Compression_JPEG.
[0052] De l'étape 207 le microprocesseur passe à une étape 208 dans laquelle il teste si
les moyens 102 ont produits de nouvelles lignes. Si oui alors il passe à l'étape 203,
sinon il passe à une étape 209 de fin.
[0053] Dans l'étape 209 de fin il faut écrire, selon l'étape 207 le dernier bloc traité,
c'est-à-dire le premier bloc de l'image redressée. Dans ce cas le microprocesseur
encode puit écrit :

[0054] Comme précédemment décrit l'écriture des données compressées se fait par une écriture
avec alignement sur le bit. Hors, la mémoire 106 a été alloué en nombre d'octets.
Il n'est donc pas garanti que le nombre total de bits écrit lors de la production
du flux JPEG corresponde à un nombre d'octet. En d'autres terme les premiers bits
du premier octet du flux JPEG produit via les étapes décrites ne correspondent pas
forcément à des informations pertinentes c'est-à-dire appartenant à l'image compressée.
Il faut donc aligné ce flux sur l'octet pour pouvoir l'intégrer à un fichier JPEG,
c'est-à-dire juste derrière une entête d'un fichier JPEG.
[0055] La manière la plus simple de réaliser un tel alignement est de décalé tous les octets
écrit d'un certain nombre de bits vers la gauche. Dans la mesure ou on connaît le
nombre de bits écrits, le certain nombre est lui aussi connu. Cela impose cependant
de relire puis de réécrire et de décaler vers la gauche tout le flux JPEG. Cela peut
aussi être fait lors d'un transfert du résultat de la compression vers l'unité de
stockage 105.
[0056] Il existe un autre moyen de réaliser cette opération à moindre frais. Pour le dernier
bloc écrit, il suffit d'altérer un des coefficients ACi de manière à ce que le résultat
de la compression de ce bloc produise le nombre de bits requis pour obtenir un flux
directement aligné sur l'octet. On s'épargne ainsi toute la relecture du flux à seule
fin d'aligner ledit flux sur l'octet.
1. Procédé de production d'un flux JPEG pour une image produite par des moyens (102)
d'acquisition produisant des lignes de P pixels, ladite image étant acquise en commençant
par sa partie inférieure, procédé
caractérisé en ce qu'il comporte les étapes suivantes mise en oeuvre par des moyens (103-104) de traitement
connectés aux moyens d'acquisition:
- allocation (201) d'une zone de mémoire(106) pour y écrire le flux JPEG produit,
- acquisition (202) et lecture de N premières lignes produites par les moyens d'acquisition
non déjà lues et enregistrement de ces lignes dans au moins une mémoire (250) de traitement,
ladite mémoire de traitement étant structurée comme une table de N lignes,
- structuration (204) d'au moins la mémoire de traitement en blocs,
- détermination (205) d'un ordre de traitement des blocs, cet ordre étant l'inverse
de l'ordre de traitement des blocs dans un procédé de production normal d'un flux
JPEG, les blocs sont alors numérotés de 1 à K,
- traitement des blocs selon le principe suivant :
- DCT et quantification bloc x, mémorisation du résultat x sous la forme d'un tableau
de coefficients :

- DCT et quantification bloc x-1, mémorisation du résultat sous la forme d'un tableau
de coefficients

- encodage puis écriture à la fin de la zone mémoire allouée de

- une fois tous les blocs traités, alignement (209) du flux JPEG obtenu sur l'entête
d'un fichier JPEG.
2. Procédé selon la revendication 1, caractérisé en ce que N et le nombre de mémoire de traitement varient selon la nature des moyens d'acquisition,
selon qu'ils sont noir et blanc ou couleurs, et selon le format du flux JPEG à produire,
selon en particulier le sous échantillonnage appliqué.
3. Procédé selon la revendication 2, caractérisé en ce que pour une image en noir et blanc, ou monochrome, le nombre de mémoires de traitement
vaut 1.
4. Procédé selon la revendication 3, caractérisé en ce que N est l'un des nombres de l'ensemble formé par {4, 8, 16}.
5. Procédé selon la revendication 2, caractérisé en ce que pour une image en couleur le nombre de mémoire de traitement vaut 3.
6. Procédé selon la revendication 5, caractérisé en ce que N varie selon que la mémoire de traitement correspond à des informations de luminance
ou de chrominance, pour la chrominance N vaut 8 ou 4, pour la luminance N vaut 16.
7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que la réorganisation dépend d'un format de sous échantillonnage et/ou d'un ordre d'acquisition
des informations par les moyens d'acquisition.
8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que l'alignement est réalisé par un décalage vers la gauche du flux obtenu, décalage
du nombre de bits nécessaires pour que le premier bit du flux corresponde au début
d'un octet en mémoire.