Обновить
2041 оттенок несерого, или Как впихнуть невпихуемое.
2041 оттенок несерого, или Как впихнуть невпихуемое.

Легко обозначить на диаграмме четыре цвета! И 16 — не проблема. Все 256 оттенков серого, пожалуй, человеческий глаз уже не различит. А как различить тысячу и более?

На помощь приходят они! Палитры «в стиле тепловизора». Как же их получить?

Попробуем сначала тривиальное решение. Повторим один канал от 0 до 255 четыре раза подряд, а при помощи другого — различим эти повторы. Бррр, и некрасиво, и отличающиеся на единичку цвета часто похожи друг на друга меньше, чем отличающиеся на 256.

Нет, нужно что-то непрерывное! Давайте сначала перейдём от чёрного к зелёному, потом — к красному, потом — к белому, потом — к синему? Уже лучше! Но всё-таки белый светлее синего, а зелёный — красного, и хотя синие звёзды таки горяче́е — синий цвет зрение воспринимает как холодный…

Да, вот теперь лучше! Чёрный — синий, синий — зелёный, зелёный — красный, красный — жёлтый, жёлтый — белый! Прекрасные дополнительные диапазоны таились в комбинациях нескольких каналов сразу! А можно ли ещё больше?

От чёрного до серого — 128, от серого до светло-синего — 128, от него до чисто синего — 128, потом до зелёного 256 и потом до сине-зелёного, и только от него уже к красному, и потом от него сначала к пурпуру, а только от пурпура — к жёлтому и потом — к белому! Хорошо, но светло-синий светлее синего, а между сине-зелёным и красным — явный грязно-тёмный провал.

Ладно, пусть будет от чёрного — к серому, от него — к синему, от него — к светло-синему, а от него уже — к зелёному, а в переходе от сине-зелёного к красному пусть сначала быстро разгорается красный и медленно затухает сине-зелёный, а потом — наоборот! Две тысячи уникальных оттенков, плавно нарастающих по «психологической температуре»!

На самом деле даже 2041, но это я пожадничал со стартовым серым. В максимуме он слишком светлый для начала диапазона и вообще слишком похож на другие цвета из серединки. Код этого варианта я приведу целиком, можете на свои вкусы дорабатывать:

	int c,x=0;
	for (c=0;c<192;c++,x++)
	{
		Test[y][x][0]=c;
		Test[y][x][1]=c;
		Test[y][x][2]=c;
	}
	for (c=0;c<192;c++,x++)
	{
		Test[y][x][0]=191-c;
		Test[y][x][1]=191-c;
		Test[y][x][2]=192+c/3;
	}
	for (c=1;c<128;c++,x++)
	{
		Test[y][x][0]=c;
		Test[y][x][1]=c;
		Test[y][x][2]=255;
	}
	for (c=1;c<256;c++,x++)
	{
		Test[y][x][0]=127-c/2;
		Test[y][x][1]=127+c/2;
		Test[y][x][2]=255-c;
	}
	for (c=1;c<256;c++,x++)
	{
		Test[y][x][0]=0;
		Test[y][x][1]=255;
		Test[y][x][2]=c;
	}
	for (c=1;c<256;c++,x++)
	{
		int Br = 127-abs(c-128);
		Test[y][x][0]=c  +Br/4;
		Test[y][x][1]=255-c +Br/4;
		Test[y][x][2]=255-c +Br/2;
	}
	for (c=1;c<256;c++,x++)
	{
		Test[y][x][0]=255;
		Test[y][x][1]=0;
		Test[y][x][2]=c;
	}
	for (c=1;c<256;c++,x++)
	{
		Test[y][x][0]=255;
		Test[y][x][1]=c;
		Test[y][x][2]=255-c;
	}
	for (c=1;c<256;c++,x++)
	{
		Test[y][x][0]=255;
		Test[y][x][1]=255;
		Test[y][x][2]=c;
	}

Тут мы, конечно, вступили на скользкую тропку первого (лобового) варианта. Некоторые цвета почти повторяются, разница только в одном канале, который их позволяет различить «как старший разряд». Но в целом вроде ничего вопиющего?

А гость нашей программы — профессиональная логарифмическая палитра, цельнотянутая из какого-то научного журнала то ли конца 80-х, то ли начала 90-х, когда тепловизоры только завоёвывали свою экологическую нишу (увы, авторство по этой причине вряд ли удастся установить, она очень долго переходила из рук в руки). Обратите внимание, как в ней идут цвета: первые несколько отличаются очень сильно, а последние — на какую-то несчастную единичку в одном разряде одного канала. Вот она — работа профессионалов!

А какие палитры для приведения одноканального HDR (с неподвластным глазу SNR) к трёхканальному обычному изображению (с подвластным глазу SNR) знаете вы?

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии6
ЕЖЕДНЕВНЫЙ ХАБР | 12 АВГ 2026
Охват39K

Мир, рассчитанный на рост, заканчивается

Некоторые графики объясняют происходящее лучше, чем десяток книг с прогнозами. Вот, например.

Это структура демографической нагрузки в Европе с 1950 года. В 1950-м на сто человек трудоспособного возраста приходился 41 ребёнок и 12 пожилых. В 2023-м - 24 ребёнка и 31 пожилой. Сама нагрузка почти не сдвинулась: 53 иждивенца тогда, 55 сейчас. Перевернулась её структура.

Раньше большинство тех, кого содержало работающее общество, только собирались войти в экономику. Теперь всё большая доля иждивенцев из неё, наоборот, выходит. За этим сдвигом проявляется смена модели, на которой держится почти всё, что мы считаем устройством нормальной жизни.

Мир, рассчитанный на рост, заканчивается

Публикации