Преобразование из 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" в гугле

Другие вопросы по тегам