Как стать автором
Обновить
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

Публикации

Истории

Ближайшие события

25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область