【问题标题】:Build a colorbar from a grayscale image从灰度图像构建颜色条
【发布时间】:2015-09-01 08:22:37
【问题描述】:

我有一个表示强度的 8 位灰度图像。我想根据强度值用颜色显示它(要清楚,像这样http://www.matthiaspospiech.de/files/matlab/plot/pcolor/pcolor-example-simple.png)。

我尝试使用 HSV 比例(H 在 (0->85) 或 (85->140) 或 (140->255) 中,然后返回 RGB,但它似乎不起作用。有没有想法?这是我的代码:(它在ij 上循环运行,img 是灰度图像,

grey = img[j*w+i];                                                                                             

H = (grey * 360.0) / 255 ;
X = 1-((int)abs((int)(h/60.0) % 2) - 1);

if(BETWEEN(H,0,60) || BETWEEN(H,300,360)) r = 1.0;
else if(BETWEEN(H,60,120) || BETWEEN(H,240,300)) r = X;
else r = 0;

if(BETWEEN(H,60,180)) g = 1.0;
else if(H >= 240) g = 0;
else g = X;

if(BETWEEN(H,180,300)) b = 1.0;
else if(H < 120) b = 0;
else b = X;

R = (int)(r*255.0);
G = (int)(g*255.0);
B = (int)(b*255.0);

(最终目标是在带有 OpenImaj 的 Java 程序中使用它,所以如果有人对此有所了解,也可以:)

【问题讨论】:

  • 如果你想在 Java 中做,为什么要使用 C++ 和 C 标签?
  • 因为我现在在 C/C++(使用 SDL)中测试它更容易:)
  • 正如给定的那样,它既不是 java,也不是 c 或 c++。请选择一个语言标签,不要只指定所有可用的。
  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
  • 如给定的,它可以是 Java 或 C/C++(因为它实际上是 C/C++),我只选择了代码中有用的部分

标签: java c++ c colors


【解决方案1】:

以HSB系统为例。将 S 设置为 100(完全饱和)。将 B 设置为 100(最大亮度)。我想你的灰色在 [0,255] 中,将 H 设置为 (1-(grey/255.0))*240。

这将大致产生类似于给定图片的内容。当 gray=0 时,H 为 240°,因此呈蓝色,当 gray=255 时,H 将为 0°,因此呈红色...

您也可以修改 B 以获得明亮或深色...

如果您的 API 中没有 HVB 到 RGB 的转换,可以在网络上找到。

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2013-05-08
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多