¿Cuál es la relación matemática entre el espacio de imagen RGB a LAB?

El código para la conversión de RGB a CIE LAB y viceversa está disponible gratuitamente en C, MATLAB, python y muchos otros formatos.

Realicemos ingeniería inversa del script MATLAB en Matlab Central para ver cómo ocurre la conversión.

Los valores RGB (0 a 255) se normalizan primero al rango de 0 a 1.

A continuación, se usa una matriz de transformación para convertir RGB a XYZ.

La matriz de transformación está disponible en el código adjunto a continuación.

A continuación, los valores XYZ se normalizan al punto blanco D65.

Estos valores normalizados se comparan con un umbral preestablecido.

A continuación, estos valores intermedios se convierten en sus homólogos LAB utilizando la expresión dada en el código a continuación.

Los valores LAB se ordenan finalmente en una matriz cuadrada.

El script MATLAB (por Mark Ruzon) se adjunta a continuación como referencia.

  función [L, a, b] = RGB2Lab (R, G, B)
 % RGB2LAB Convierte una imagen de RGB a CIELAB
 %
 % función [L, a, b] = RGB2Lab (R, G, B)
 % función [L, a, b] = RGB2Lab (I)
 % función I = RGB2Lab (...)
 %
 % RGB2Lab toma matrices rojas, verdes y azules, o una sola imagen M x N x 3, 
 % y devuelve una imagen en el espacio de color CIELAB.  Los valores RGB pueden ser
 % entre 0 y 1 o entre 0 y 255. Los valores para L están en el
 % rango [0,100] mientras que ayb están aproximadamente en el rango [-110,110].  los
 El% de salida es de tipo doble.
 %
 % Esta transformación se basa en la Recomendación UIT-R BT.709 utilizando el D65
 % de referencia de punto blanco.  El error al transformar RGB -> Lab -> RGB es
 % aproximadamente 10 ^ -5.  
 %
 % Ver también LAB2RGB.

 % Por Mark Ruzon del código C por Yossi Rubner, 23 de septiembre de 1997.
 % Actualizado para MATLAB 5 el 28 de enero de 1998.
 % Actualizado para MATLAB 7 30 de marzo de 2009.

 si nargin == 1
   B = doble (R (:,:, 3));
   G = doble (R (:,:, 2));
   R = doble (R (:,:, 1));
 final

 si max (max (R))> 1.0 ||  max (max (G))> 1.0 ||  max (max (B))> 1.0
   R = doble (R) / 255;
   G = doble (G) / 255;
   B = doble (B) / 255;
 final

 % Establecer un umbral
 T = 0,008856;

 [M, N] = tamaño (R);
 s = M * N;
 RGB = [remodelar (R, 1, s);  remodelar (G, 1, s);  remodelar (B, 1, s)];

 % RGB a XYZ
 MAT = [0.412453 0.357580 0.180423;
        0.212671 0.715160 0.072169;
        0,019334 0,119193 0,950227];
 XYZ = MAT * RGB;

 % Normalizar para el punto blanco D65
 X = XYZ (1, :) / 0.950456;
 Y = XYZ (2, :);
 Z = XYZ (3, :) / 1.088754;

 XT = X> T;
 YT = Y> T;
 ZT = Z> T;

 Y3 = Y. ^ (1/3); 

 fX = XT. * X. ^ (1/3) + (~ XT). * (7.787. * X + 16/116);
 fY = YT. * Y3 + (~ YT). * (7.787. * Y + 16/116);
 fZ = ZT. * Z. ^ (1/3) + (~ ZT). * (7.787. * Z + 16/116);

 L = remodelar (YT. * (116 * Y3 - 16.0) + (~ YT). * (903.3 * Y), M, N);
 a = remodelar (500 * (fX - fY), M, N);
 b = remodelar (200 * (fY - fZ), M, N);

 si nargout <2
   L = gato (3, L, a, b);
 final

Bienvenido al sitio web de Bruce Lindbloom

Vaya al enlace y encuéntrelo usted mismo. Sin embargo, para RGB a Lab y viceversa, una etapa intermedia será XYZ.

Matemáticas | EasyRGB

Vaya desde RGB-XYZ y luego XYZ-LAB.

More Interesting

Cómo encontrar los ceros de [matemáticas] x ^ 3-x ^ 2-1 [/ matemáticas]

Cómo encontrar los valores mínimo y máximo para [matemáticas] f (x) = x / (1 + x ^ 2) [/ matemáticas] sin puntos críticos y derivadas

¿De cuántas maneras hay para colocar los números 4 y 5 en una matriz 4 × 4 de tal manera que la suma de los elementos de cualquier fila o columna sea un número primo?

¿Qué es Uttarayana y Dakshinayana?

Cómo hacer sumas con factoriales

A menudo se afirma que el análisis complejo es una de las ramas más útiles y bellas de las matemáticas, y que posee una elegancia ausente del análisis real. ¿Hay alguna razón profunda por la cual este sería el caso?

Si 1/50 es un quincuagésimo, ¿cómo se dice 1/52? ¿Un cincuenta segundos? Cincuenta y dos?

¿Qué puedo hacer, como estudiante de matemáticas, para hacerme un analista de datos?

¿Cómo manejaste capítulos como la combinatoria?

En la fórmula de Black-Scholes, ¿por qué usas la raíz cuadrada del tiempo? Más específicamente, ¿cuál es el significado matemático del sqrt (t) frente a alguna otra función del tiempo?

Hay 4 nos. tal que la suma de todos los d cuatro nos. así como la suma de cada dos nos. Es un cuadrado perfecto. Encuentra d nos.

¿Qué temas de matemáticas debo estudiar para convertirme en desarrollador de juegos?

¿Alguna vez has llorado por las matemáticas?

¿Cómo se capacitan los estudiantes de la India que participan en Olimpiadas Matemáticas?

¿Cuáles son las aplicaciones de la vida real de los polinomios?