我有一个像素数组与我想要转换为RGB图像相关联的强度(作为0和1之间的浮点数)。如何在C++中创建伪彩色图像?
最简单的方法是将每个值乘以255,并将其赋值给R + G + B以获得灰度图像,但我认为使用整个颜色范围来显示更细微的差异会更好。
据我所知,这被称为伪/彩色图像,但我很难找到它的算法。现在,我使用此代码,但我想知道是否有一个更聪明的/更快的方式做到这一点:
if(intensity <= 0.25) {
p->r = 0;
p->g = 0;
p->b = (intensity) * 4 * 255;
return;
}
if(intensity <= 0.5) {
p->r = 0;
p->g = (intensity - 0.25) * 4 * 255;
p->b = 255;
return;
}
if(intensity <= 0.75) {
p->r = 0;
p->g = 255;
p->b = (0.75 - intensity) * 4 * 255;
return;
}
if(intensity <= 1.0) {
p->r = (intensity - 0.75) * 4 * 255;
p->g = (1.0 - intensity) * 4 * 255;
p->b = 0;
return;
}
此外,是否有任何标准的调色板,我应该为这个使用?
那么那些应该可能是别的如果是,一件事...... – FrustratedWithFormsDesigner 2010-10-05 13:23:07
我在ifs中使用return,所以应该使它们变得没有必要。 – Nils 2010-10-05 13:39:35
噢,没关系。没有真正习惯于这种编码stlye。 – FrustratedWithFormsDesigner 2010-10-05 13:53:10