Из документов :
Многомерный фильтр реализован в виде последовательности одномерных сверточных фильтров.
Поэтому выМожно также применить фильтр к изображениям 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)')
Обратите внимание, что для параметра preserve_range
необходимо установить значение True
при применении фильтра к одному каналу, иначе результат будет в диапазоне от 0.0
до 1.0
.