您好,我想做的是使用 C# 或 C++ 将灰度图像 (Bitmap
) 转换为假色/伪色。
在做研究时,我刚刚找到了两个未完成的答案,例如http://www.emgu.com/forum/viewtopic.php?f=7&t=4132和 https://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/