Извлечение компонента L * из изображения после преобразования из RGB в LAB - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь взять изображение RGB, преобразовать его в цветовое пространство LAB (он же CIE L * a * b *) и извлечь компонент L *.

Вот мой код:

from skimage import io, color
from scipy import misc
import matplotlib.pyplot as plt
import cv2

img = misc.imread("/Users/zheyuanlin/Desktop/opencv_tests/parrots.png", mode='RGB')
img_resized = misc.imresize(img, (256, 256), 'bilinear') # resized to 256x256

img_cielab = color.rgb2lab(img_resized, illuminant='D50')

# Rescale due to range of LAB values being L (0-100), a (-128-127), b (-128-127)
cielab_scaled = (img_cielab + [0, 128, 128]) / [100, 255, 255] 

cie_l, cie_a, cie_b = cv2.split(cielab_scaled)


""" Display the image """
plt.imshow(cie_l)
plt.show()

Это изображение, полученное: This is the image shown by plt

Вот пример компонента L *того же изображения из исследовательской работы, которую я нашел в Google: enter image description here

Я не знаю, почему мое выглядит таким зеленым, кто-нибудь знает проблему с моим кодом?Спасибо!

1 Ответ

0 голосов
/ 05 июня 2018

Отображаемое изображение идентично изображению на бумаге.Но у pyplot есть цветовая карта по умолчанию, которая добавляет синий, зеленый и желтый к полутоновому изображению.

Чтобы изменить используемую цветовую карту, используйте функцию set_cmap :

plt.set_cmap('gray')
...