Преобразование из RGB в LAB Цветовое пространство - есть ли понимание диапазона значений L*A*B*?
Мне не удалось найти документацию по диапазону значений L*A*B* при преобразовании изображения из RGB в LAB в OpenCV (Python). Нужны подтверждения того, что мое понимание правильное, так как цифры довольно своеобразные. Мои результаты по легкости были от 0 до 255, но для a и b я получил 42-226 и 20-223 соответственно. Я понимаю, что эти значения не должны иметь заранее заданный диапазон, но может ли кто-нибудь пролить свет на то, почему эти диапазоны были выбраны?
Для чего стоит попытаться создать цветовые гистограммы в пространстве LAB, и мне нужно было знать диапазон значений, чтобы хранить значения бинов эффективным способом.
import cv2
import numpy as np
import sys
import urllib
print cv2.__version__ # 2.4.7
print sys.version # 2.7.5+ (default, Sep 19 2013, 13:48:49) \n[GCC 4.8.1]
# Load an image that contains all possible colors.
request = urllib.urlopen('http://www.brucelindbloom.com/downloads/RGB16Million.png')
image_array = np.asarray(bytearray(request.read()), dtype=np.uint8)
image = cv2.imdecode(image_array, cv2.CV_LOAD_IMAGE_COLOR)
# I was uncertain if it was BGR or RGB but in this case it doesn't matter because
# of my input image.
lab_image = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
l_channel,a_channel,b_channel = cv2.split(lab_image)
# Print the minimum and maximum of lightness.
print np.min(l_channel) # 0
print np.max(l_channel) # 255
# Print the minimum and maximum of a.
print np.min(a_channel) # 42
print np.max(a_channel) # 226
# Print the minimum and maximum of b.
print np.min(b_channel) # 20
print np.max(b_channel) # 223
Спасибо!
2 ответа
Глядя на документацию OpenCV (прокрутите вниз до места, где определено преобразование для RGB L CIE L*a*b*), мы увидим, что значения масштабируются в диапазоне 0-255:
L ← L * 255/100; а ← а + 128; б ← б + 128
И в дополнение: цветовое пространство LAB охватывает весь воспринимаемый спектр цветов, а RGB - нет. Таким образом, вы не увидите весь диапазон значений при конвертации из RGB.
На самом деле нет определенных ограничений a*
а также b*
, -127 to 127
это просто соглашения, чтобы легко соответствовать 8-битному кодированию La b *...
Следуя спецификациям CIE, L*
может варьироваться между 0 and 116
Однако фотошоп и другие останавливаются на 100
Причина, по которой обычно можно определять значения между -127 and 127
является то, что это в целом соответствует gamut of real colors
, увидеть "gamut real colors Pointer"
в гугле