Цвет. Его численное представление и дискриминация

   Внутри компьютера цвет представляется как целое число. В системе RGB (красный, зелёный, синий) на каждую компоненту цвета отводится по 8 бит. Одна и та же компонента может быть записана в двоичной системе так -
11111000, в 16-ричной системе так - F8, а в десятичной системе так - 248.

  Как вы видите на иллюстрации, такие три, одинаковые и не самые яркие компоненты, создают впечатление вполне белого цвета, трудно отличимого от самого яркого с компонентами  255,255,255.
  В целом числе, представляющем цвет, компоненты записываются в такой последовательности -  BGR. То есть, в старшие разряды числа помещается компонента синего цвета, за ней следует компонента зелёного цвета, а в младших разрядах числа находится компонента, задающая красный цвет.

  Дискриминация цвета в исходном изображении делается операцией AND – логическим умножением цвета на битовую маску, операцией, во время которой в биты цвета принудительно ставятся нули, если эти стоят в битах маски.
  Например, маска из единиц и нулей, показанная на иллюстрации, будучи логически умноженной на белый цвет, создаст цвет 248,248,248. И различия между этим цветом и цветом белым практически нет.
  А как изменятся компоненты цвета, если постепенно уменьшать количество единиц в старших битах маски и увеличивать количество нулей в её младших битах, вы можете видеть на цветных квадратах иллюстрации.

       КАК ЗАДАТЬ ДИСКРИМИНИРУЮЩУЮ ЦВЕТ МАСКУ

  Чтобы задать битовую маску, в программе используются 3 кнопки, задающие компоненты цвета. На иллюстрации, на этих кнопках установлено 666. Это значит, что единицы установлены только в двух старших битах каждой компоненты – 4 (самый старший бит) плюс 2 (бит правее от старшего) равняется 6 (два старших бита). Что касается остальных бит маски, то они все равны нулю.
  Аналогично, если на кнопках выставить 777, то маска получит единицы в трёх старших битах каждой компоненты и нули в битах более младших.
  Разумеется, цифры на кнопках можно устанавливать произвольно, дискриминируя биты каждой компоненты цвета отдельно. И во всех случаях, при цифрах от 0 до 7, младшие бита маски с первого по пятый будут заполнены нулями.
  Особый случай принят для цифр 8 и 9.
При цифре 8 единицы стоят в 4-х старших битах, в остальных битах - нули.
При цифре 9 на кнопке, единицы стоят только в 5-ти старших битах.
  Поскольку именно старшие биты определяют ощущение цвета, то такой регулировки вполне хватает.

  Практически дискриминация цвета делается так.
  Двумя кликами по диагональным углам обозначаем ту прямоугольную область, в которой мы будем дискриминировать цвет. Устанавливаем цвет ластика – синий (смысла в ластике тут никакого нет, просто таким способом мы устанавливаем опцию дискриминации). И затем, выставив цифры на кнопках цветовых компонент, кликаем кнопку «Ц» на левой панели.

  Что получилось, вы можете видеть на иллюстрации слева. Исходное изображение немного потемнело. Одновременно оно разбилось на однотонно окрашенные зоны, создав эффект граффити. Эти области теперь можно легко оконтурить, или перекрасить, залив другим цветом, придавая изображению свойства линотипии или гравюры.

  Очень похожая процедура может быть сделана путём логического сложения.
На опцию этого преобразования указывает розовый цвет ластика.
  Целое число, определяющее маску, сначала инвертируется (единицы заменяются нулями, а нули – единицами), а потом с помощью операции AND число логически умножается на белый цвет (делается это для того, чтобы выбить единицы из старших разрядов числа, тех разрядов, которые за цвет не отвечают).
  Затем маска путём операции OR накладывается на исходное изображение.
  Получается (см.иллюстрацию) почти то же, что и при дискриминации. В точности те же однотонно окрашенные области. Только все цвета не потемнели, а посветлели.

  В программе имеется возможность делать дискриминирующие цвет преобразования не только в прямоугольных областях, но и рисовать дискриминирующей кистью (кисть «Fill» с опцией #), выбирая для преобразования отдельные фрагменты изображения.

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

_________
2.02.2021


Рецензии
Здорово! Сразу с первого чтения мало что понимаю, но вижу, как умно и красиво всё устроено и описано. Спасибо, Дмитрий. Ваши материалы бесценны.

Ирина Петал   02.02.2021 15:22     Заявить о нарушении
Спасибо. Я старался писать популярно и подробно. Согласен с Вами, действительно, в компьютере многое устроено не просто умно, но и красиво.

Дмитрий Маштаков   02.02.2021 16:55   Заявить о нарушении
На это произведение написаны 2 рецензии, здесь отображается последняя, остальные - в полном списке.