【问题标题】:Preserve Color-Depth of imported Images保留导入图像的颜色深度
【发布时间】:2017-06-04 09:42:51
【问题描述】:

当使用

导入图像时
loadImage("...")

命令,像这样遍历像素:

img.loadPixels(); 
int w = img.width;
int h = img.height;
for (int y = 0; y < h; y++) {
  for (int x = 0; x < w; x++) {
    int loc = x + y*w;
    float r = red(img.pixels[loc]);
    float g = green(img.pixels[loc]);
    float b = blue(img.pixels[loc]);
    println(r + ", " + g + ", " + b);
  }
}

即使图像文件的每个通道的深度为 16 位,RGB 值似乎总是介于 0 和 255 之间,其中值应该介于 0 和 65535 之间。 是否可以保持正确的颜色深度?

【问题讨论】:

  • 你不能把数字乘以65535/255吗?
  • 这是行不通的,因为即使数字 r g 和 b 存储为浮点数,它们基本上都是整数,因此乘法实际上并不能恢复原始深度。
  • red()green()blue() 函数返回标准化值。也许尝试直接访问pixels[loc] 值而不是通过颜色函数传递它?
  • 好点,但它似乎也不起作用,因为内部像素[]数据已经以 32 位颜色格式提供,每个 A、R、G 和 B 为 8 位。我开始认为有必要编写自定义 loadImage(...) 函数。
  • 这是什么语言?

标签: image-processing processing color-depth


【解决方案1】:

你还没有说 loadImage 命令来自哪个库。 可能有 16 位版本,但不太可能。 24 位是一种标准,适用于除了非常高端的工作之外的所有工作。

我建议你看看我的 TIFF 加载器(它和 loadImage 一样,返回 24 位图像),然后修改它以返回 16 位通道。这并不难,只是不丢弃较大通道图像(浮点和16位)的低位的情况。

这是 TIFF 加载程序: https://github.com/MalcolmMcLean/tiffloader

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-21
    • 2012-11-28
    • 2018-01-19
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多