【问题标题】:Converting a 12-bit grayscale image to 8-bit per channel color image in Python在 Python 中将 12 位灰度图像转换为每通道 8 位彩色图像
【发布时间】:2021-04-21 01:00:13
【问题描述】:

我正在寻找在 Python 中将 12 位 (0-4096) 灰度图像转换为 3 通道 8 位彩色图像以便将其传递到卷积神经网络方面的建议或最佳实践.

使用 8 位 RGB,我基本上有 24 位颜色,所以我认为没有理由在转换中丢失数据,尽管大多数其他帖子建议简单地将像素值除以 16 以将其压缩为 8 位然后以有损方式在所有三个通道上复制它。

我想出的一些想法包括创建某种渐变函数,将 12 位 uint 转换为渐变上的相应颜色,但我对 RGB 颜色空间的理解是,使用 Numpy 实现这一点会很棘手或其他此类库。

OpenCV / Scikit 等常用库是否提供此类功能?我在文档中找不到任何内容。其他想法包括使用某种中间颜色空间,例如 HSL/L*AB,但我对此知之甚少。

请注意,我最终尝试创建的是 8 位 RGB 图像,而不是 16 位 RGB 图像。只需尝试以在整个颜色范围内保留原始 12 位数据的方式对灰度图像进行着色。

希望有人能帮忙!

【问题讨论】:

标签: python opencv python-imaging-library scikit-image


【解决方案1】:

我的第一个问题是:为什么需要以任何特定方式将其转换为颜色?

如果您在这些图像上训练 CNN,则任何任意变换都应该起作用并为您提供类似的性能。您只需要以相同的方式转换训练图像和输入图像即可。

您可能只需拆分 16 位并将下半部分放入 R,将上半部分放入 G,然后将 B 保留为零。

这有点取决于这个 CNN 的黑盒程度。但是您始终可以使用我上面提到的转换运行几个训练/测试周期来测试它,然后使用“压缩”版本再次执行此操作。

【讨论】:

    猜你喜欢
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    相关资源
    最近更新 更多