FR2803156A1 - Telecopieur couleur comportant un microprocesseur secondaire de traitement d'images - Google Patents

Telecopieur couleur comportant un microprocesseur secondaire de traitement d'images Download PDF

Info

Publication number
FR2803156A1
FR2803156A1 FR9916250A FR9916250A FR2803156A1 FR 2803156 A1 FR2803156 A1 FR 2803156A1 FR 9916250 A FR9916250 A FR 9916250A FR 9916250 A FR9916250 A FR 9916250A FR 2803156 A1 FR2803156 A1 FR 2803156A1
Authority
FR
France
Prior art keywords
color
space
microprocessor
lab
lpcci
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR9916250A
Other languages
English (en)
Other versions
FR2803156B1 (fr
Inventor
De Stanislas Crevoisier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sagem SA
Original Assignee
Sagem SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sagem SA filed Critical Sagem SA
Priority to FR9916250A priority Critical patent/FR2803156B1/fr
Publication of FR2803156A1 publication Critical patent/FR2803156A1/fr
Application granted granted Critical
Publication of FR2803156B1 publication Critical patent/FR2803156B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/40Picture signal circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • H04N1/6016Conversion to subtractive colour signals
    • H04N1/6019Conversion to subtractive colour signals using look-up tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Image Communication Systems (AREA)

Abstract

Le télécopieur couleur comprend des circuits de traitement comportant un microprocesseur central (1) avec au moins une mémoire de programmes de traitement (2) et une mémoire de travail (3), télécopieur et il comprend en outre un microprocesseur secondaire (6) de traitement de données couleur associé au microprocesseur central (1) et à une mémoire de travail dédiée (7) agencée pour recevoir des tables de changement d'espace couleurs, le microprocesseur secondaire couleur (6) étant commandé par des programmes stockés dans la mémoire de programmes (2) du microprocesseur central (1).

Description

<Desc/Clms Page number 1>
Pour télécopier une image en couleur, il faut d'abord l'analyser, ou la scanner, et, avant de la transmettre en ligne, il faut la coder, la traiter.
Inversement, pour recevoir une télécopie en couleur, il faut d'abord procéder à un traitement des données de l' image reçues, avant d'imprimer l'image. Un télécopieur classique comporte aussi bien un scanner qu'une imprimante. Par contre, pour le traitement d'image, il faut aujourd'hui faire usage d'un ordinateur, par exemple un terminal PC, d'ailleurs équipé d'un modem, qu'on associe donc à un télécopieur pour proposer de la télécopie couleur.
La présente invention vise à s'affranchir d'un ordinateur dans le traitement des télécopies couleur et propose, à cet effet, un télécopieur couleur comprenant des moyens de traitement comportant un microprocesseur central avec au moins une mémoire de programmes de traitement et une mémoire de travail, télécopieur caractérisé par le fait qu' il comprend en outre un microprocesseur secondaire de traitement de données couleur associé au microprocesseur central et à une mémoire de travail dédiée agencée pour recevoir des tables de changement d'espace couleurs, le microprocesseur secondaire couleur étant agencé pour être commandé par des programmes stockés dans la mémoire de programmes du microprocesseur central.
Dans un équipement de traitement de données couleur, de nombreux changements d'espace de représentation des couleurs sont souvent nécessaires pour adapter au mieux l'espace au traitement.
Ainsi, et à titre d'exemple, un document peut être scanné en RVB (rouge, vert, bleu), affiché sous PC en SRVB (s pour standard), comprimé en mode CIELab (espace luminance, axe a, axe b, du Comité International de l'Eclairage) transmis en mode YCrCb (mode Lab version TB) et imprimé en mode CMJN (Cyan, Magenta, Jaune, Noir).
Les espaces de représentation associés à un scanner et à une imprimante sont des espaces dits dépendants, car ils dépendent des caractéristiques structurelles de ces éléments. Les autres espaces sont des espaces indépendants qui ne dépendent d'aucun élément matériel. Dans un
<Desc/Clms Page number 2>
équipement de traitement de données couleurs, on utilise donc des tables de passage d'espaces dépendants vers des espaces indépendants et inversement.
Stocker toutes les tables de changement d'espace de représentation des couleurs dans la mémoire de programmes du microprocesseur central nécessiterait une mémoire de taille prohibitive.
Aussi, dans la forme de réalisation préférée du télécopieur couleur de l'invention, le microprocesseur central est agencé pour, à l'initialisation du télécopieur, calculer toutes les tables de changement d'espace couleur et stocker, dans la mémoire de programmes de traitement du microprocesseur central, la table de passage de l'espace dépendant de représentation des couleurs du scanner vers un espace indépendant de représentation et la table de passage d'un autre espace indépendant de représentation vers l' espace dépendant de représentation des couleurs de l' imprimante et, dans la mémoire de travail dédiée du microprocesseur secondaire couleur, toutes les autres tables de changement d'espace couleur.
L'invention sera mieux comprise à l'aide de la description suivante d'une forme de réalisation préférée d'un télécopieur couleur selon l'invention, en référence à la figure unique annexée, qui en est un schéma par blocs et en référence au programme CEC.cpp de changement d'espace couleur en annexe.
Le télécopieur représenté comporte un microprocesseur central 1 relié à une mémoire morte ROM 2 de programmes de traitement, à une mémoire vive RAM de travail, à un scanner 4 et à une imprimante 5. Les circuits classiques de relations homme-machine et de transmission des télécopies n'ont pas été représentés.
Au microprocesseur 1 est en outre relié un microprocesseur secondaire 6 associé, de traitement d'images et, notamment, de données couleur, luimême relié à une mémoire vive de travail RAM 7 dédiée, prévue pour recevoir des tables 72 de changement d'espace couleurs. Le
<Desc/Clms Page number 3>
microprocesseur 1 est concerné par toutes les fonctions autres que le traitement d'images. Le microprocesseur secondaire couleur 6 est commandé par des programmes, ou codes de commandes, stockés dans une zone 26 de la mémoire de programmes 2 du microprocesseur central 1. La représentation du dessin n'est que schématique et, en pratique, un bus relie les divers circuits représentés et offre ainsi une possibilité de liaison directe entre ceux-ci.
Comme évoqué au début, le télécopieur doit pouvoir effectuer un grand nombre de changements d'espace de représentation des couleurs, chacun adapté à une opération déterminée : analyse par le scanner 4, dans l'espace dépendant qui lui est propre, compression, transmission, impression par l' imprimante 5 dans un autre espace dépendant adapté à celle-ci.
Les espaces dépendants liés à un dispositif, scanner 4 (RVB) et imprimante 5 (CMJN), sont spécifiés, dans une zone 21 de la mémoire morte ROM 2, par une matrice ou table de transformation, de changement d'espace couleur, permettant de faire passer des données d'image couleur de l'espace dépendant considéré à un espace indépendant (CIELab, YCrCb et autres), ou inversement. Deux espaces indépendants quelconques sont mutuellement liés par une table de transformation qui, indépendante de tout élément matériel, a été conçue pour ne pas présenter de distorsions et a donc pu être définie par un algorithme.
De ce fait, seules sont stockées en mémoire morte 2, dans la zone 21 de changement d'espace couleur, les tables de transformation mettant en jeu au moins un espace dépendant (RVB, CMJN), c' est-à-dire la table de passage de l' espace dépendant de représentation des couleurs du scanner 4 vers un espace indépendant de représentation d'image et la table de passage d'un autre espace indépendant de représentation d'image vers l' espace dépendant de représentation des couleurs de l' imprimante 5. A titre d'exemple, le programme CEC.cpp en annexe fait passer les données de l'espace indépendant Lab à l'espace CMJN. Toutes les autres tables, de transformation entre espaces indépendants (CIELab, YCrCb), sont représentées, dans une zone 22 de la mémoire 2, par uniquement
<Desc/Clms Page number 4>
l' algorithme permettant de les reconstituer par calcul . En pratique ici, ce calcul de toutes les tables de changement d'espace couleur indépendant intervient systématiquement, à l' initialisation du télécopieur, et les tables correspondantes sont stockées dans la zone 72 de la mémoire RAM 7. Le microprocesseur 6 dispose ainsi de ces tables en temps réel.
Il est aussi prévu de calculer et stocker de même une table redondante représentant globalement une matrice de passage direct de l'espace dépendant RVB du scanner 4 à l'espace dépendant CMJN de l'imprimante 5, afin de limiter la tâche de traitement en cas de copie locale.
Un espace de référence de couleurs comporte ici 256 valeurs par composante de référence. L'espace RVB par exemple peut ainsi être représenté par un cube d'arête de longueur 256, à trois axes, R, V, B.
Le passage de données de couleur d'un premier espace à un second espace s'effectue en trois étapes. Dans une première étape, on divise chaque axe du premier espace, ici R, V, B, en 2N + 1 segments, par exemple en 33 segments si N=5, ce qui définit 333volumes élémentaires cubiques d'arête égale à 8 unités. Dans une deuxième étape, on détermine par des tables ou algorithmes de transformation, telles que rotation et translation ou autres, les positions des sommets des cubes élémentaires du premier espace dans le second espace visé. On obtient ainsi des volumes élémentaires correspondants dans le second espace, dont la forme peut différer de celle d'un cube. La deuxième étape permet ainsi de placer tout point du premier espace, entraîné avec le cube le contenant, dans une position approximative correspondante du second espace. Dans une troisième étape, la position exacte du point du premier espace transféré dans le second espace est déterminée, à partir de tables en mémoire morte 2, par interpolation tétraédrique d'après la position du point dans le cube de départ le contenant. Pour ce faire, la position relative du point (3 valeurs de 0 à 8 selon les 3 axes respectifs R, V, B) étant repérée par rapport aux sommets du cube, il est déterminé une position relative homologue par rapport aux sommets de l'espace élémentaire constituant la transformée du cube considéré. On notera que, d'une façon générale, les espaces considérés sont des espaces vectoriels dont le nombre de vecteurs
<Desc/Clms Page number 5>
propres peut être quelconque et que les volumes élémentaires tridimensionnels de l' exemple ci-dessus pourraient, dans un autre exemple, avoir un autre nombre de dimensions. Un volume élémentaire peut donc être défini comme étant une portion de l' espace vectoriel considéré, dans laquelle toutes les variables, spécifiant des positions par rapport aux vecteurs propres, varient mais ne présentent qu'une variation élémentaire.
<Desc/Clms Page number 6>
CEC.cpp // Ce programme effectue un changement d'espace // colorimétrique Lab -> CMJN à l'aide de tables // // d'interpolation codées sur 8 bits.
// // // Par Stanislas de Crevoisier, octobre 1998 (Stan3.cpp) // Modifié le 04/03/99 pour le module "imprimante", SdC // // Modifié le 15/10/99 pour le projet "calibration", SdC // /////////////////////////////////////////////////////////////// #include "stdafx. h" #include <math.h> #include "calibration.h" #include "imprimante.h" #include "conversion.h" #include "TablesCEC. h" //Variables globales typedef struct taglpcci { int offset[10)[4]; unsigned short lpCoeff[32768][5]; unsigned short lpProfil[35937][4]; } CCECONVERTINFO, *LPCCECONVERTINFO ; // Eléments relatifs à la grille fine (LUT complète) unsigned char pas; unsigned char taille~cube; unsigned char taille~imp,taille~scan; unsigned char lsb, lsb2, msb,mask~lsb; unsigned short n~coins~1D, n~coins~2D;
Figure img00060001

//CString ctiemin~coeffs="C:\\Program Files\\DevStudio\\MyProjects\\Calibration\\Aide à la calibration\\"; CString chemin~coeffs; //Détermination des variables globales void calculer~variables (void) { switch(taille~imp) ( case 9 : lsb = 5; break ; case 17 : lsb = 4; break ; case 33 : lsb = 3; break; ) lsb2 = (lsb 1); msb = 8 - lsb; n~coins~ID = taille~imp; n~coins~2D = taille~imp * taille~imp; mask~lsb = (l lsb) - 1;
<Desc/Clms Page number 7>
taille~cube = mask~lsb + 1; } //chargement des profils Lab 8 bits LPCCECONVERTINFO charger~profils(LPCCECONVERTINFO lpcci, CString nom~fichier) ( int a,b,taille;
FILE *fichier; fichier=fopen(nom~fichier, "rb"); if(fichier==NULL) {
CString strMsg; strMsg="Erreur d'ouverture du profil imprimante";
MessageBox(NULL,strMsg, NULL, MB~ICONINFORMATION MB~OK) ; return 0 ; } //On récupère la taille des tables fseek(fichier, OL, SEEK~END); taille = ftell(fichier); fseek (fichier, OL, SEEK~SET); switch(taille) { case 2916 : taille~imp = 9; break ; case 19652 : taille~imp = 17; break ; case 143748 : taille~imp = 33; break ; default :
CString strMsg; strMsg="Erreur de taille des tables imprimante";
MessageBox(NULL,strMsg, NULL, MB~ICONINFORMATION MB~OK) ; return 0 ; } calculer~variables();
Figure img00070001

for(a=0;a<(taille~imp*taille~imp*taille~imp);a++) { for(b=0;b<4;b++) { lpcci->lpProfil[a][b]=fgetc(fichier); fclose(fichier); return lpcci; } //chargement des coefficients 16 bits LPCCECONVERTINFO charger~coeffs(LPCCECONVERTINFO lpcci) { int a,b ;
CString nom~fichier;
FILE *fichier;
<Desc/Clms Page number 8>
//fichier=fopen("Coefs3.don", "r"); //fichier=fopen("Coeffl6b.don", "r"); switch(taille-imp) ( case 9 : nom~fichier = chemin~coeffs + "Coeffs9x9x9.don"; break ; case 17 : nom~fichier = chemin~coeffs + "Coeffsl7xl7xl7.don"; break ; case 33 : nom~fichier = chemin~coeffs + "Coeffs33x33x33.don"; break ; } fichier = fopen(nom fichier,"rb"); if(fichier==NULL) (
CString strMsg; strMsg="Erreur d'ouverture du fichier de coefficients";
MessageBox(NULL,strMsg, NULL, MB~ICONINFORMATION MB~OK) ; return 0 ; } for(a=0;a<(l (lsb*3) ) ;a++) ( for(b=O;b<5;b++) { lpcci->lpCoeff[a][b]=fgetc(fichier);
Figure img00080001

lpcci->lpCoeff[a][b]+=(fgetc(fichier)<<8) ; fclose(fichier); return lpcci; } //procédure de détermination des offsets LPCCECONVERTINFO charger~offsets(LPCCECONVERTINFO lpcci) { int q = n~coins~lD; int offset[8]; int type[10]; // initialisations pour trouver les offsets Il Il est plus rapide de calculer une table pour toutes les combinaisons // Lors du traitement de chaque pixel on fait 4 indirections // à la place de 5 indirections et 8 tests de masquage ' offset[0] = 0; // coordonnées de A dans le cube offset[1] = 1; // coordonnées de B dans le cube offset[2] = q+1; // coordonnées de C dans le cube offset[3] = q; // coordonnées de D dans le cube offset[4] = q*q; // coordonnées de E dans le cube offset[5] = q*q+l; // coordonnées de F dans le cube offset[6] = q*q+q+l; // coordonnées de G dans le cube offset[7] = q*q+q; // coordonnées de H dans le cube type[0] = Oxlb;
<Desc/Clms Page number 9>
type[l] = 0x72; type[2] = Ox4e; type[3] = Oxd8; type[4] = 0x5a; type[5] = Oxbl; type[6] = 0x27; type [7] = Oxe4; type[8] = 0x8d; type[9] = Oxa5; for (int nType = 0; nType < 10; nType++) { char tetra = type[nType]; int m = 1; int nOffset = 0; for (int sommet = 0 ; < 8; sommet ++, m = 1) { if (tetra & m) ( lpcci->offset[nType][nOffset] = offset[sommet]; nOffset ++ ; return Ipcci; ) struct CMJNQUADRUPLE calcul(LPCCECONVERTINFO lpcci,struct LABTRIPLE Lab) ( int L,a,b; struct CMJNQUADRUPLE CMJN ; int i,j,tmp; long x,aux[4]; int sommets,offsetCoef,type,coef; unsigned short lpCoeff[4]; unsigned short IpProfil[4]; //+pratiques que les pointeurs...
//Boucle écrite par CCE for(i=O;i<l;i++) //Fausse boucle pour traitements ultérieurs.
{
L=(int)(Lab.L); a=(int)(Lab.a); b=(int)(Lab.b); aux[0]=0; aux[1]=0; aux[2]=0; aux[3]=0; offsetCoef = (L & mask~lsb) # ((a & mask~lsb) lsb) # ((b & mask~lsb) lsb2); x= (long) n~coins~2D*(b lsb) + n~coins~lD*(a lsb) + (L lsb); for(j=O;j<4;j++) lpCoeff[j] = lpcci->lpCoeff[offsetCoef][j]; type=lpcci->lpCoeff[offsetCoef][4];
Figure img00090001

for (sommets=0; sommets<4;sommets++) { tmp=(lpcci->offset(type](sommets]+x); for(j=O;j<4;j++) ( lpProfil[j]=lpcci->lpProfil[tmp][j];
<Desc/Clms Page number 10>
} coef=lpCoeff[sommets];
Figure img00100001

aux[0] += (long)(lpProfil[0]*coef); aux[l] += (long(lpProfil[1]*coef); aux[2] += (long)(lpProfil[2]*coef); aux[3] += (long)(lpProfil[-3]*coef): }
CMJN.c = (unsigned char)(aux[0] 15);
CMJN.m = (unsigned char)(aux[1] 15); CMJN. j = (unsigned char)(aux[2] 15);
CMJN.n = (unsigned char)(aux[3] 15); } return CMJN ; } //Permet d'appeler les différentes fonctions définies plus haut...
//Réalise la conversion de tables : //RVB->Lab et Lab->CMJN en RVB->CMJN CString cec(CString nom~profil~scanner, CString nom~profil~imp) (
FILE *ficl, *fic2, *fic~sRGB, *fic~YCC;
LPCCECONVERTINFO lpcci = new(CCECONVERTINFO); int r,v,b ; unsigned int valeur[3]; struct RGBTRIPLE2 RGB, XYZ; struct LABTRIPLE Lab; struct CMJNQUADRUPLE CMJN ;
CString nom~profil~copie~locale;
CString nom~profil~cmjn~srgb, nom~profil~cmjn~ycc; chemin~coeffs.LoadString(IDS~BASE~DIRECTORY); //détermination de la structure lpcci //printf("Initialisation du changement d'espace colorimetrique...");
Figure img00100002

lpcci=charger profils(lpcci,nom-profil~imp); if(lpcci == NULL) return "erreur" ; lpcci=charger~coeffs(lpcci); if(lpcci == NULL) return "erreur" ; lpcci=charger~offsets(lpcci); if(lpcci == NULL) return "erreur" ; //chargement de la LUT 16 bits RVB->Lab //printf("OK\nChargement du profil scanner...\n");
Figure img00100003

if((ficl=fopen(nomrofil scanner,"rb"))==NULL) (
CString strMsg; strMsg="Erreur d'ouverture du profil scanner";
MessageBox(NULL,strMsg, NULL, MB~ICONINFORMATION # MB~OK) ; return "erreur"; ) //On récupère la taille des tables fseek (ficl, OL, SEEK~END); r = ftell(ficl); fseek (ficl, OL, SEEK~SET); switch(r)
<Desc/Clms Page number 11>
{ case 2187 : taille~scan = 9; break ; case 14739 : taille~scan = 17; break ; case 107811 : taille~scan = 33; break ; default :
CString strMsg; strMsg="Erreur de taille des tables du profil scanner";
MessageBox(NULL,strMsg, NULL, MB-ICONINFORMATION # MB~OK) ; return "erreur" ; } nom~profil~copie~locale = nom~profil~scanner.SpanExcluding("."); nom~profil~cmjn~srgb = nom~profil~scanner.SpanExcluding("~"); nom~profil~cmjn~ycc = nom~profil~cmjn~srgb + "~ycc~cmjn.raw"; nom~profil~cmjn~srgb = nom~profil~cmjn~srgb + "~srgb~cmjn.raw";
Figure img00110001

nom profil copie locale += "cmjn.raw"; if((fic2=fopen(nom~profil~copie~locale,"wb"))==NULL) {
CString strMsg; strMsg="Erreur d'ouverture du profil copie locale";
MessageBox(NULL,strMsg, NULL, MB-ICONINFORMATION # MB~OK) ; return "erreur"; }
Figure img00110002

if((fic-sRGB=fopen(nom profil cmjn-srgb,"wb"))==NULL) {
CString strMsg; strMsg="Erreur d'ouverture du profil sRGB -> CMJN";
MessageBox(NULL,strMsg, NULL, MB~ICONINFORMATION # MB~OK) ; return "erreur"; }
Figure img00110003

if((fic-YCC=fopen(nom profil çmjn ycc,"wb"))==NULL) {
CString strMsg; strMsg="Erreur d'ouverture du profil YCrCb-> CMJN" ;
MessageBox(NULL,strMsg, NULL, MB~ICONINFORMATION # MB~OK); return "erreur" ; } //printf("OK\nCreation de la table RVB->CMJN...");
Figure img00110004

for(r=O;r<(taille~scan*taille~scan*taille~scan);r++) { for(b=O;b<3;b++) ( valeur[b]=fgetc(ficl);
Figure img00110005

////valeur[bJ+=(fgetc(ficl) 8); } RGB. red = valeur[0]; RGB. green = valeur [1] ; RGB. blue = valeur(2]; XYZ = sRGB2XYZ(RGB); //Lab.L=(float)valeur[O]; //Lab.a=(float)valeur[l];
<Desc/Clms Page number 12>
//Lab.b=(float)valeur[2];
Lab = XYZ2Lab(XYZ.red,XYZ.green,XYZ.blue);
Lab.L = (float)(Lab.L*2.55); if(Lab.L > 255)
Lab. L = 255; if(Lab.L<0)
Lab. L = 0;
Lab.a= (float)((Lab.a+85)*255.0/170.0);
Lab. b = (float)((Lab.a+75)*255.0/200.0); if(Lab.a > 255)
Lab.a= 255 ; if(Lab.a<0)
Lab.a = 0; if(Lab.b > 255)
Lab. b = 255; if(Lab.b<0)
Lab. b = 0;
CMJN=calcul(lpcci,Lab); fputc(CMJN.c,fic2); fputc(CMJN.m,fic2); fputc(CMJN.j,fic2); fputc(CMJN.n,fic2); } //Création des tables sRGB -> CMJN et YCC -> CMJN //Elles sont 33x33x33 par défaut for(b=0;b<257;b+=8) ( if(b == 256) b = 255; for(v=O;v<257;v+=8) { if(v == 256) v = 255; for (r=0;r<257;r+=8) { if(r == 256) r = 255;
RGB. red = r;
RGB. green = v;
RGB. blue = b; //sRGB -> CMJN
XYZ = sRGB2XYZ(RGB);
Lab = XYZ2Lab (XYZ.red, XYZ.green, XYZ.blue) ;
CMJN=calcul(lpcci,Lab); fputc(CMJN.c,fic~sRGB); fputc(CMJN.m,fic~sRGB); fputc (CMJN.j,fic~sRGB); fputc(CMJN.n,fic~sRGB); //YCC-> CMJN
RGB = YCrCb2sRGB(RGB);
XYZ = sRGB2XYZ(RGB);
Lab = XYZ2Lab(XYZ.red, XYZ.green, XYZ.blue) ;
CMJN=calcul(lpcci,Lab); fputc(CMJN.c,fic YCC); fputc (CMJN.m,fic~YCC); fputc(CMJN.j,fic~YCC); fputc (CMJN.n,fic~YCC);
<Desc/Clms Page number 13>
fclose(ficl); fclose(fic2); fclose(fic~sRGB); fclose(fic~YCC); return nom~profil~copie~locale; } //RVB->Lab et Lab->CMJN en RVB->CMJN int format~tables~imp(CString nom~profil~imp) {
FILE *fichier;
LPCCECONVERTINFO lpcci = new(CCECONVERTINFO); int r,v,b ; struct LABTRIPLE Lab; struct CMJNQUADRUPLE CMJN ; //RGBTRIPLE2 RGB ; ////// chemin~coeffs.LoadString(IDS~BASE~DIRECTORY); //détermination de la structure lpcci //printf("Initialisation du changement d'espace colorimetrique...");
Figure img00130001

lpcci=charger~profils(lpcci,nom profil-imp); if(lpcci == NULL) return 0 ; lpcci=charger~coeffs(lpcci); if(lpcci == NULL) return 0 ; lpcci=charger~offsets(lpcci); if(lpcci == NULL) return 0 ;
Figure img00130002

if((fichier=fopen(nom profil imp,"wb"))==NULL) {
CString strMsg; strMsg="Erreur d'ouverture du profil imprimante";
MessageBox(NULL,strMsg, NULL, MB-ICONINFORMATION # MB~OK); return 0 ; } //Création des tables Lab->CMJN au bon format for (b=0;b<257;b+=taille~cube) { if (b == 256) b = 255;
Figure img00130003

for(v=O;v<257;v+=taille cube) ( if(v == 256) v = 255; for(r=0;r<257;r+=taille~cube) { if(r == 256) r = 255; //RGB.red = r;///// //RGB. green = v;///// //RGB. blue = b;///// //RGB = sRGB2XYZ(RGB);/////
<Desc/Clms Page number 14>
//Lab = XYZ2Lab(RGB.red, RGB. green, RGB.blue);/////
Lab. L = (float)r;
Lab.a= (float) v;
Lab. b = (float)b;
Lab = conversionOasis~ICC(Lab);
CMJN=calcul(lpcci,Lab); fputc(CMJN.c,fichier); fputc(CMJN.m,fichier); fputc (CMJN,j,fichier); fputc(CMJN.n,fichier); } } } fclose(fichier); return 1 ; }

Claims (2)

  1. REVENDICATIONS 1.- Télécopieur couleur comprenant des moyens de traitement comportant un microprocesseur central (1) avec au moins une mémoire de programmes de traitement (2) et une mémoire de travail (3), télécopieur caractérisé par le fait qu' il comprend en outre un microprocesseur secondaire (6) de traitement de données couleur associé au microprocesseur central (1) et à une mémoire de travail dédiée (7) agencée pour recevoir des tables de changement d'espace couleurs, le microprocesseur secondaire couleur (6) étant agencé pour être commandé par des programmes stockés dans la mémoire de programmes (2) du microprocesseur central (1).
  2. 2. - Télécopieur selon la revendication 1, dans lequel le microprocesseur central (1) est agencé pour, à l'initialisation du télécopieur, calculer toutes les tables de changement d'espace couleur et stocker, dans la mémoire (2) de programmes de traitement du microprocesseur central (1), la table de passage de l'espace dépendant de représentation des couleurs du scanner (4) vers un espace indépendant de représentation et la table de passage d'un autre espace indépendant de représentation vers l' espace dépendant de représentation des couleurs de l' imprimante (5) et, dans la mémoire de travail dédiée (7) du microprocesseur secondaire couleur (6), toutes les autres tables de changement d'espace couleur.
FR9916250A 1999-12-22 1999-12-22 Telecopieur couleur comportant un microprocesseur secondaire de traitement d'images Expired - Fee Related FR2803156B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9916250A FR2803156B1 (fr) 1999-12-22 1999-12-22 Telecopieur couleur comportant un microprocesseur secondaire de traitement d'images

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9916250A FR2803156B1 (fr) 1999-12-22 1999-12-22 Telecopieur couleur comportant un microprocesseur secondaire de traitement d'images

Publications (2)

Publication Number Publication Date
FR2803156A1 true FR2803156A1 (fr) 2001-06-29
FR2803156B1 FR2803156B1 (fr) 2002-11-22

Family

ID=9553629

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9916250A Expired - Fee Related FR2803156B1 (fr) 1999-12-22 1999-12-22 Telecopieur couleur comportant un microprocesseur secondaire de traitement d'images

Country Status (1)

Country Link
FR (1) FR2803156B1 (fr)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0534871A2 (fr) * 1991-09-27 1993-03-31 Eastman Kodak Company Procédé et appareil pour l'interception sélective d'une opération de rendu graphique pour réaliser une modification des données d'image
EP0581590A2 (fr) * 1992-07-31 1994-02-02 Canon Kabushiki Kaisha Méthode de traitement de couleur
WO1994024626A1 (fr) * 1993-04-16 1994-10-27 Data Translation, Inc. Peripherique video pour ordinateur
US5489921A (en) * 1993-04-08 1996-02-06 Linotype-Hell Ag Method for generating uniform color area definitions with addition and removal operators
EP0703701A2 (fr) * 1990-09-28 1996-03-27 Eastman Kodak Company Système de traitement d'image en couleur servant à préparer un module de transformation d'images composites pour effectuer une pluralité de transformation d'images sélectionnées

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0703701A2 (fr) * 1990-09-28 1996-03-27 Eastman Kodak Company Système de traitement d'image en couleur servant à préparer un module de transformation d'images composites pour effectuer une pluralité de transformation d'images sélectionnées
EP0534871A2 (fr) * 1991-09-27 1993-03-31 Eastman Kodak Company Procédé et appareil pour l'interception sélective d'une opération de rendu graphique pour réaliser une modification des données d'image
EP0581590A2 (fr) * 1992-07-31 1994-02-02 Canon Kabushiki Kaisha Méthode de traitement de couleur
US5489921A (en) * 1993-04-08 1996-02-06 Linotype-Hell Ag Method for generating uniform color area definitions with addition and removal operators
WO1994024626A1 (fr) * 1993-04-16 1994-10-27 Data Translation, Inc. Peripherique video pour ordinateur

Also Published As

Publication number Publication date
FR2803156B1 (fr) 2002-11-22

Similar Documents

Publication Publication Date Title
US6825876B1 (en) Digital camera device with methodology for efficient color conversion
US7199900B2 (en) Color conversion coefficient preparation apparatus, color conversion coefficient preparation method, storage medium, and color conversion system
US6094454A (en) Multi-spectral image compression and transformation
US7620239B2 (en) Color determination device and color determination method
US5719956A (en) Image processing apparatus with separate color conversion for CMY signals and K signal
US6310696B1 (en) Color gamut displaying method, an image processing method, and apparatus utilizing these methods
US6198842B1 (en) Multi-spectral image compression with bounded loss
JP4865771B2 (ja) 画像処理装置、画像形成装置、画像処理方法、画像処理プログラム及びコンピュータ読み取り可能な記録媒体
JPH0877341A (ja) カラー画像処理装置及び方法
EP0886236A3 (fr) Pipe-line de traitement de données configurable
JPH11127340A (ja) 画像処理装置および画像処理方法
US6922197B2 (en) Method of generating color separation table
US20060087709A1 (en) Image processing apparatus and method
CN101291387B (zh) 图像文件创建装置、方法,图像处理装置、方法及系统
Hardeberg et al. Color printer characterization using a computational geometry approach
US7843600B2 (en) Information processing apparatus
FR2803156A1 (fr) Telecopieur couleur comportant un microprocesseur secondaire de traitement d&#39;images
US7123378B2 (en) Image processing apparatus, method and program enabling high-precision color conversion
WO2001054397A2 (fr) Appareil photographique numerique perfectionne et technique de conversion des couleurs efficace
JP4048482B2 (ja) カラースキャナシステム
Triantaphillidou et al. Digital image file formats
JP2705541B2 (ja) 印刷装置およびこれに用いる変換テーブルの作成方法
JP2005005802A (ja) カラー画像処理装置、カラー画像処理方法、プログラムおよび記録媒体
JP4360328B2 (ja) カラー画像処理装置
JP4683109B2 (ja) 色判定装置及び色判定方法

Legal Events

Date Code Title Description
CA Change of address
CD Change of name or company name
TP Transmission of property
TP Transmission of property
ST Notification of lapse

Effective date: 20110831