【问题标题】:How to extract green channel from RGB image in Python using Scikit-Image library?如何使用 Scikit-Image 库从 Python 中的 RGB 图像中提取绿色通道?
【发布时间】:2015-06-25 11:11:21
【问题描述】:

我对 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)

我得到的图像看起来并不只有绿色!

【问题讨论】:

  • 哦。我的错。我认为我所做的只是制作了一个尺寸更小的新 RGB 图像。谢谢指点!
  • 奇怪的是,仅再次提取绿色会返回红色图像。这是我试图从中提取绿色通道的图像的链接:upload.wikimedia.org/wikipedia/commons/3/37/…
  • 好的。所以我应该将红色分量设置为零:rgb_image[:,:,0] = 0 等等....
  • 也看看教程herehere

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


【解决方案1】:

您提取的只是一个通道,它显示了每个像素有多少绿色。这最终将被可视化为灰度图像,其中较暗的像素表示这些点没有太多的“绿色”,而较亮的像素表示这些点有大量的“绿色”。

如果我正确地解释了您所说的话,您希望将每种颜色的“绿色”形象化。在这种情况下,将红色和蓝色通道都设置为零并保持绿色通道不变。

所以:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-26
    • 2019-09-26
    • 2019-12-15
    • 1970-01-01
    • 2022-12-06
    • 2012-02-21
    • 2017-11-28
    相关资源
    最近更新 更多