Hi,
Back from travel, sorry for the delay.
Using 1.15 seems to give good results. With the XYZ values
you provide, I do obtain RGB=(16, 15, 21) for black and
(245, 10, 194) for the magenta.
I used icctrans -t3 -o R300_Tesco_20050929.icm -i *xyz
Marti.
----- Original Message -----
From: "Alastair M. Robinson" <[EMAIL PROTECTED]>
To: <lcms-user@lists.sourceforge.net>
Sent: Thursday, September 29, 2005 2:19 AM
Subject: [Lcms-user] Problems with XYZ -> Printer Profile transform
Hi,
I'm trying to do a direct transform of XYZ values from my colorimeter
into RGB values from a printer profile, but I'm getting very odd results...
The program I'm using is included below, and the profile can be found at
http://www.blackfiveservices.co.uk/R300_Tesco_20050929.icm (generated
using Argyll)
When I sample a black square from the target used to generate the
printer profile, I get:
XYZ: X: 0.0231488, Y: 0.0225699, Z: 0.0167407
RGB: R: 95, G: 143, B: 133
A magenta square comes out as:
XYZ: X: 0.289546, Y: 0.142001, Z: 0.0952269
RGB: R: 131, G: 227, B: 159
If I use sRGB instead of my printer profile I get reasonable values, and
the printer profile works fine for sRGB->Printer use, so I'm totally
baffled as to why this is happening...
Can anyone shed any light on this?
(I'm using LCMS-1.14 BTW)
All the best,
--
Alastair M. Robinson
--------------------------------------------------------------------------------
#include <iostream>
#include <stdlib.h>
#include "CSCMTLib.h"
#define PACKAGE_NAME
#include <lcms.h>
using namespace std;
#ifdef WIN32
#define sleep _sleep
#endif
void DumpModes()
{
MeasMode modes;
CSDGetSupportedModes(&modes);
cout << "Currently attached ColorMouse supports:" << endl;
if(modes&CMReflectionMode)
cout << " Reflective" << endl;
if(modes&CMTransmissionMode)
cout << " Transmissive" << endl;
if(modes&CMIncidentMode)
cout << " Incident" << endl;
if(modes&CMMonitorMode)
cout << " Monitor" << endl;
}
bool InitCM()
{
cout << "Initialising" << endl;
CSDOpen();
if (CSDInit (FALSE, 1) != CSCMNoErr)
{
CSDClose();
CSDOpen();
if (CSDInit (FALSE, 2) != CSCMNoErr)
{
CSDClose();
throw "Cannot find ColorMouse on COM1 or COM2.";
}
}
cout << "Done - setting capture modes" << endl;
CSDPlaySound (TRUE);
if (CSDSetMesData (CMXYZMode) != CSCMNoErr)
{
if (CSDSetMesData (CMSpecMode) != CSCMNoErr)
{
CSDClose();
throw "Only CM2S and CM2C are supported by this program.";
}
}
else
CSDSetWhitePoint (cIllumD50 | cObs2deg);
cout << "Done" << endl;
}
bool PollButton()
{
Boolean pressed;
sleep(10);
CSDButtonPressed(&pressed);
return(pressed);
}
void WaitButton()
{
while(!PollButton());
}
void GetMeasurement(double *vals)
{
MeasData meas;
int err=CSDMeasure(&meas);
if(err != CSCMNoErr)
{
if (err!=-1)
cerr << "Measurement error" << endl;
return;
}
vals[0]=meas.data.xyz.cieX;
vals[1]=meas.data.xyz.cieY;
vals[2]=meas.data.xyz.cieZ;
}
int main(int argc,char **argv)
{
InitCM();
DumpModes();
cmsHPROFILE xyz=cmsCreateXYZProfile();
cmsHPROFILE rgb=cmsOpenProfileFromFile("R300_Tesco_20050929.icm","r");
cmsHTRANSFORM
trans=cmsCreateTransform(xyz,TYPE_XYZ_DBL,rgb,TYPE_RGB_8,INTENT_ABSOLUTE_COLORIMETRIC,0);
cout << "Begin measuring..." << endl;
while(1)
{
double src[3];
double lab[3];
unsigned char dst[3];
unsigned char chk[3];
WaitButton();
GetMeasurement(src);
cout << "XYZ: X: " << src[0] << ", Y: " << src[1] << ", Z: " << src[2] << endl;
cmsDoTransform(trans,src,dst,1);
cout << "RGB: R: " << int(dst[0]) << ", G: " << int(dst[1]) << ", B: " << int(dst[2])
<< endl;
}
return(0);
}
--------------------------------------------------------------------------------
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.13/126 - Release Date: 09/10/2005
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.344 / Virus Database: 267.11.13/126 - Release Date: 09/10/2005
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user