【问题标题】:How to create an image with any arbitrary number of channels? (Python)如何创建具有任意数量通道的图像? (Python)
【发布时间】:2016-03-21 12:32:07
【问题描述】:

我正在开发一个 Python 项目,Anaconda 发行版,需要创建和处理具有任意数量通道的图像。比如RGB有三个通道

(R,G,B)

而且我需要有任意数量的用户定义通道,可能多达 90 个左右(实际上是元素通道,来自 X 射线荧光数据):

(Fe, P, K, S, Si, ...)

每个通道只是一个灰度图像(显然)。

到目前为止,我一直在使用PIL Image 模块,除了这个特殊的任务之外,它工作得很好。 PIL 不支持使用已定义的图像模式,只有少数模式可供选择,没有一个超过 4 个通道 (CMYK)

文档非常简短地说明了这一点,说:

但是,PIL 不支持用户自定义模式;如果您要处理上面未列出的波段组合,请使用 Image 对象序列。

这似乎含糊不清,我不确定我是否确切知道如何实现它。一系列图像对象?意思是一系列对象,每个对象都有PIL 支持的图像模式?看起来效率低下且丑陋。

我怎样才能做到这一点?除了PIL,还有其他我可以使用的包吗?

如果真的归结为它,我不需要 渲染图像,我可以使用“像素”数据进行处理,但最终它仍然会很好结果有一个图像。

【问题讨论】:

  • 嗨,我想看看 PIL 的实现,看看它们是如何改变 3 和 4 通道的。希望限制存在只是因为它不能将超过四个通道渲染为图像。
  • ImageMagick 的第 7 版将支持图像中的任意数量的通道,但要到明年年初...

标签: python image-processing colors python-imaging-library anaconda


【解决方案1】:

也许简单的 numpy 数组就足够了?

【讨论】:

  • 对于我的程序的主要目的,是的,存储在数组中的像素数据就足够了。这只是向用户更好地展示结果的问题。
【解决方案2】:

使用 numpy,您可以存储具有多个通道的图像(此处显示 3 个频道):

import numpy as np
num_channels = 3
random_image = np.random.randint(0,256, (300,400,num_channels))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多