Как извлечь зеленый канал из изображения RGB в Python с помощью библиотеки Scikit-Image?

Я чрезвычайно новичок в scikit-image (skimage) библиотека в Python для обработки изображений (запущена несколько минут назад!). Я использовал imread для чтения файла изображения в numpy.ndarray. Массив имеет 3 измерения, где размер третьего измерения равен 3 (а именно по одному для каждого из красных, зеленых и синих компонентов изображения).

rgb_image = imread("input_rgb_image.jpg")
rgb_image.shape # gives (1411L, 1411L, 3L)

Я попытался извлечь зеленый канал Как:

green_image = rgb_image[:,:,1]

но когда я пишу эту матрицу изображений в выходной файл as:

imsave("green_output_image.jpg",green_image)

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

1 ответов


то, что вы извлекаете, - это всего лишь один канал, и это показывает, сколько зеленого цвета имеет каждый пиксель. В конечном итоге это будет визуализировано как изображение в оттенках серого, где более темные пиксели означают, что в этих точках не так много "зелени", а более светлые пиксели означают, что в этих точках есть большое количество "зелени".

Так:

green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0

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