Source code for histomicstk.preprocessing.color_conversion.rgb_to_lab

import numpy as np

# define conversion matrices
_rgb2lms = np.array([[0.3811, 0.5783, 0.0402],
                     [0.1967, 0.7244, 0.0782],
                     [0.0241, 0.1288, 0.8444]])

_lms2lab = np.dot(
    np.array([[1 / (3**0.5), 0, 0],
              [0, 1 / (6**0.5), 0],
              [0, 0, 1 / (2**0.5)]]),
    np.array([[1, 1, 1],
              [1, 1, -2],
              [1, -1, 0]]),
)


[docs] def rgb_to_lab(im_rgb): """Transforms an image from RGB to LAB color space Parameters ---------- im_rgb : array_like An RGB image Returns ------- im_lab : array_like LAB representation of the input image `im_rgb`. See Also -------- histomicstk.preprocessing.color_conversion.lab_to_rgb, histomicstk.preprocessing.color_normalization.reinhard References ---------- .. [#] D. Ruderman, T. Cronin, and C. Chiao, "Statistics of cone responses to natural images: implications for visual coding," J. Opt. Soc. Am. A vol.15, pp.2036-2045, 1998. """ # get input image dimensions m = im_rgb.shape[0] n = im_rgb.shape[1] # calculate im_lms values from RGB im_rgb = np.reshape(im_rgb, (m * n, 3)) im_lms = np.dot(_rgb2lms, np.transpose(im_rgb)) im_lms[im_lms == 0] = np.spacing(1) # calculate LAB values from im_lms im_lab = np.dot(_lms2lab, np.log(im_lms)) # reshape to 3-channel image im_lab = np.reshape(im_lab.transpose(), (m, n, 3)) return im_lab