Число 124 як двійковий байт (вісім цифр) - 01111100. Щоб представити RGB-трійку з трьох байтів, знадобиться три рази вісім або 24 таких біт. За замовчуванням r.composite
зменшує це лише до 15 біт, відкидаючи найменш значущі біти в кожному діапазоні. Таким чином, він обрізає від 01111100 до 01111, що дорівнює 15. (рівнозначно він ділить 124 на 8 і ігнорує решту.) Мабуть, ці три п’ятибітові результати об'єднані в порядку B, G, R, щоб утворити 15-бітове число (представляє значення між 0 і 2 ^ 15-1 = 32767, що є достатньо малим, щоб зберегти таблицю кольорів до керованого розміру). Ці значення, отже, представляють три смуги зображення, кожна з яких має лише п’ять біт точності, а не початкові вісімки.
У прикладі запитання розрахунки проходять так:
Синій = 124 перетворюється на 124/8 = 15 (плюс занедбану залишок 4). У двійковій це 01111.
Зелений = 124 перетворюється на 124/8 = 15 (плюс занедбану залишок 4). У двійковій це 01111.
Червоний = 172 перетворюється на 172/8 = 21 (плюс занедбану залишок 4). У двійковій це 10101.
Цифри об'єднані в 01111 01111 10101. Це 15-розрядне двійкове число представляє значення 15861 = (15 * 32 + 15) * 32 + 21.
r.composite
може зробити більше обробки, ніж це, і це може зробити це трохи інакше, залежно від параметрів, які ви надаєте, але ці операції показують основний спосіб перетворення байту в п'ятибітове значення.
Ви можете приблизно змінити процедуру, використовуючи послідовні поділи на 32:
15861/32 = 495 плюс залишок на 21. (Помноживши на 8, цей залишок на 21 дає 168, що лише трохи менше, ніж початковий 172 для червоної смуги.)
495/32 = 15 плюс залишок на 15. (Помноживши на 8, цей залишок на 15 дає 120, що лише трохи менше, ніж початковий 124 для зеленої смуги.)
Нам залишається 15, що при множенні на 8 дає 120, що лише трохи менше, ніж початкові 124 для синьої смуги.
Довідково
r.composite
сторінка керівництва за адресою https://grass.osgeo.org/grass72/manuals/r.composite.html .