Convertir una imagen OpenCV BGR de 8 bits a CIE L * a * b *

Estoy tratando de convertir un dadoMat representando unRGB imagen con profundidad de 8 bits paraLaboratorio Utilizando la función proporcionada en la documentación:

cvtColor(source, destination, <conversion code>);

He intentado los siguientes códigos de conversión:

CV_RGB2Lab
CV_BGR2Lab
CV_LBGR2Lab

Cada vez he recibido resultados extraños, con un valor de "L" superior a 100 para algunas muestras, literalmente <107, 125, 130>.

También estoy usando Photoshop para verificar los resultados, pero dado que 107 está más allá del rango aceptado de 0 ≤ L ≤ 100, no puedo comprender cuál es mi error.

Actualizar: Publicaré mis resultados generales aquí: Dada una imagen (Mat) representada por BGR de 8 bits, la imagen se puede convertir de la siguiente manera:

cvtColor(source, destination, CV_BGR2Lab);

Se puede acceder a los valores de píxel de la siguiente manera:

int step = destination.step;
int channels = destination.channels();
for (int i = 0; i < destination.rows(); i++) {
    for (int j = 0; j < destination.cols(); j++) {
        Point3_<uchar> pixelData;
        //L*: 0-255 (elsewhere is represented by 0 to 100)
        pixelData.x = destination.data[step*i + channels*j + 0];
        //a*: 0-255 (elsewhere is represented by -127 to 127)
        pixelData.y = destination.data[step*i + channels*j + 1];
        //b*: 0-255 (elsewhere is represented by -127 to 127)
        pixelData.z = destination.data[step*i + channels*j + 2];
    }
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta