如何使用 Scikit-Image 库从 Python 中的 RGB 图像中提取绿色通道?
How to extract green channel from RGB image in Python using Scikit-Image library?
我对 Python 中用于图像处理的 scikit-image (skimage
) 库非常陌生(几分钟前开始!)。我已经使用 imread
读取了 numpy.ndarray
中的图像文件。该数组是三维的,其中第三维的大小为 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)
我得到的图像看起来不只是绿色!
您提取的只是一个通道,它显示每个像素有多少绿色。这最终将被可视化为灰度图像,其中较暗的像素表示这些点上没有太多 "greenness",而较亮的像素表示这些点上有大量 "greenness"。
如果我正确地解释了您所说的内容,您希望可视化每种颜色的 "green"。在这种情况下,将红色和蓝色通道都设置为零,并保持绿色通道不变。
所以:
green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0
请注意,我已经复制了您的原始图像并更改了频道,而不是修改原始图像,以备不时之需。但是,如果您只想提取绿色通道并将其可视化为我上面提到的灰度图像,那么使用 green_image
变量的设置执行上述操作就可以了。
我对 Python 中用于图像处理的 scikit-image (skimage
) 库非常陌生(几分钟前开始!)。我已经使用 imread
读取了 numpy.ndarray
中的图像文件。该数组是三维的,其中第三维的大小为 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)
我得到的图像看起来不只是绿色!
您提取的只是一个通道,它显示每个像素有多少绿色。这最终将被可视化为灰度图像,其中较暗的像素表示这些点上没有太多 "greenness",而较亮的像素表示这些点上有大量 "greenness"。
如果我正确地解释了您所说的内容,您希望可视化每种颜色的 "green"。在这种情况下,将红色和蓝色通道都设置为零,并保持绿色通道不变。
所以:
green_image = rgb_image.copy() # Make a copy
green_image[:,:,0] = 0
green_image[:,:,2] = 0
请注意,我已经复制了您的原始图像并更改了频道,而不是修改原始图像,以备不时之需。但是,如果您只想提取绿色通道并将其可视化为我上面提到的灰度图像,那么使用 green_image
变量的设置执行上述操作就可以了。