void ColorSpace::XYZtoLab (CoImage* pIn, CoImage* pOut) { assert (pIn->GetType() == MAT_Tfloat); assert (pOut->GetType() == MAT_Tfloat); float* prX = pIn->m_matX.data.fl[0]; float* prY = pIn->m_matY.data.fl[0]; float* prZ = pIn->m_matZ.data.fl[0]; float* pbR = pOut->m_matX.data.fl[0]; float* pbG = pOut->m_matY.data.fl[0]; float* pbB = pOut->m_matZ.data.fl[0]; for (int i = 0; i < pIn->GetHeight() * pIn->GetWidth(); i ++) { XYZtoLab(prX[i], prY[i], prZ[i], &pbR[i], &pbG[i], &pbB[i]); } }
void ColorSpace::RGBtoLab (BYTE bR, BYTE bG, BYTE bB, float *prL, float *pra, float *prb) { float rX, rY, rZ; RGBtoXYZ(bR, bG, bB, &rX, &rY, &rZ); XYZtoLab(rX, rY, rZ, prL, pra, prb); }
void Image::RGBtoLab(pixel4b *source, pixel3f *destination) { RGBtoXYZ(source, destination); XYZtoLab(destination); }