Размытие в формате LAB - PullRequest
       50

Размытие в формате LAB

0 голосов
/ 05 октября 2019

Как можно применить размытие по Гауссу к изображению в формате (CIE) LAB? RGB можно размыть с помощью rgb_blurred = skimage.filters.gaussian(lab), но это не работает на LAB (из-за его первого канала). Есть ли способ смазать изображения, не преобразовав их сначала в rgb, а затем преобразовав их обратно?

1 Ответ

1 голос
/ 06 октября 2019

Из документов :

Многомерный фильтр реализован в виде последовательности одномерных сверточных фильтров.

Поэтому выМожно также применить фильтр к изображениям Lab. Изображения хранятся в виде массива numpy, поэтому, если вы хотите применить фильтр только к некоторым каналам, нет проблем с использованием стандартной индексации numpy. Фактически, размытие каналов a и b мало влияет на визуальное впечатление. Эффект происходит от размытия канала L:

from skimage import data    
from skimage.filters import gaussian
from skimage.color import rgb2lab, lab2rgb
import matplotlib.pyplot as plt

img = data.astronaut()
lab = rgb2lab(img)
blurred = gaussian(lab, 5)
lab[:,:,0] = gaussian(lab[:,:,0], 5, preserve_range=True)

fig, ax = plt.subplots(1,3,figsize=(20,20))
ax[0].imshow(img)
ax[1].imshow(lab2rgb(blurred))
ax[2].imshow(lab2rgb(lab))
ax[0].set_title('Original')
ax[1].set_title('Blurred (entire image)')
ax[2].set_title('Blurred (L channel only)')

enter image description here

Обратите внимание, что для параметра preserve_range необходимо установить значение Trueпри применении фильтра к одному каналу, иначе результат будет в диапазоне от 0.0 до 1.0.

...