如何使用Scikit-Image库从Python中的RGB图像中提取绿色通道?

时间:2015-04-18 14:51:54

标签: python image image-processing scikit-image imread

我非常擅长使用Python中的scikit-image(skimage)库进行图像处理(几分钟前开始!)。我使用imread来读取numpy.ndarray中的图像文件。该阵列是3维的,其中第三维的尺寸是3(即,对于图像的红色,绿色和蓝色分量中的每一个,一个)。

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

我尝试将绿色频道提取为:

green_image = rgb_image[:,:,1]

但是当我将此图像矩阵写入输出文件时:

imsave("green_output_image.jpg",green_image)

我得到的图片看起来并不是真的绿色!

1 个答案:

答案 0 :(得分:18)

你提取的只是一个通道,它会显示每个像素有多少绿色。这将最终被可视化为灰度图像,其中较暗的像素表示没有多少"绿色"在那些点和较亮的像素表示存在大量的绿色"在那些点上。

如果我正确地解释你说的话,你希望想象出"绿色"每种颜色。在这种情况下,将红色和蓝色通道都设置为零并保持绿色通道不变。

所以:

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

请注意,我已制作了原始图片的副本并更改了频道,而不是根据需要修改原始频道。但是,如果您只想提取绿色通道并将其视为灰度图像,如上所述,那么使用green_image变量的设置执行上述操作就可以了。