c# - 在 C# 或 C++ 中将灰度图像转换为假色/伪色

标签 c# c++ image-processing colors

您好,我想做的是使用 C# 或 C++ 将灰度图像 (​​Bitmap) 转换为假色/伪色。

在做研究时,我刚刚找到了两个未完成的答案,例如http://www.emgu.com/forum/viewtopic.php?f=7&t=4132https://stackoverflow.com/a/20468006/2798895

什么是伪色可以在这里找到:https://en.wikipedia.org/wiki/False_color#Pseudocolor

有什么解决这个问题的建议吗?

最佳答案

通常的方法是对值进行基于表格的转换以获得颜色。

举个简单的例子,让我们假设一个简单的双色渐变,从冷端的蓝色(我假设强度为 0)到热端的红色(我假设强度为256).

为此,我们可能会编写一个类似这样的转换表:

struct triplet {
    char r, g, b;
};

static const int count = 256;

std::vector<triplet> table;

for (int i=0; i<count; i++) 
    table.push_back({i, 0, count-i});

有了这个构建,我们可以很容易地将输入从强度转换为伪色:

pseudocolor = table[intensity];

如果你想要一个更复杂的渐变,比如从蓝色到绿色到黄色再到红色,你可能想要从 HLS 或 HSV 等颜色模型开始,然后从该颜色模型转换为 RGB 以生成你的颜色值。这使得在通过一系列阴影时计算具有大致相同饱和度和亮度水平的值变得更加容易。

关于c# - 在 C# 或 C++ 中将灰度图像转换为假色/伪色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40249692/

相关文章:

image-processing - 它如何计算opencv中的形状伸长率?

java - 向导式图像处理App架构

c# - 根据光标位置和当前选择以编程方式更改 WPF 文本框的文本

c# - 在 C# 中从二进制值转换为 double 值时出错

C++ fscanf() 返回 -1 并且不覆盖变量

c++ - 继承,覆盖和虚函数,以避免重复代码

php - 广东!将 png 图像转换为 jpeg 并使 alpha 默认为白色而不是黑色

c# - 如何强制执行 C#/.NET 的代码样式,例如 IDE0058、IDE0059 和 IDE0060?

c# - 使用 nHibernate 和 Json.Net 公开部分对象

c++ - 如何在 C++ 中从我的 Tracker 类创建一个 Tracker 对象?