У меня есть массив пикселей со связанной интенсивностью (как плавающий между 0 и 1), который я хотел бы преобразовать в изображение RGB.Как создать псевдо-цветное изображение в 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;
}
Кроме того, есть ли какие-либо стандартные цветовые палитры я должен использовать для этого?
Ну, вероятно, это должно быть 'else if's, с одной стороны ... – FrustratedWithFormsDesigner
Я использую return in ifs, так что это должно сделать их ненужными. – Nils
О да, неважно. На самом деле это не очень привычно. – FrustratedWithFormsDesigner