Что означает значение ячейки в композитном растре?

9

Когда я создаю составной растр в QGIS с помощью инструмента GRASS r.composite и затем щелкаю по определенной ячейке, я получаю эти значения в синих / зеленых / красных / составных растрах: синий = 124, зеленый = 124, красный = 172, составной = 15861.

Я знаю, что синий / зеленый / красный представляют значения яркости данных полос. Что представляет собой 15861 и как рассчитывается?

Джим О'Лири
источник
1
Вероятно, это целочисленное значение, представляющее альфа-композит: docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm
WhiteboxDev
1
Какую версию QGIS и Grass вы используете? Также, пожалуйста, укажите ваши настройки, так как они влияют на работу (и, следовательно, расчет r.composite). Интересно, что я последовательно получаю только RGB и никакой композитной полосы в 2.4.
MappaGnosis
Я использую QGIS 2.2 в Windows 7 с графическим интерфейсом GRASS 6.4.3. Для настроек я использую 32 для количества значений для красного, зеленого и синего. Учебник, который я использую, - это курс Академии FOSS4G по дистанционному зондированию. Учебный документ находится по адресу foss4geo.files.wordpress.com/2014/08/module-3-lab2.pdf .
Джим О'Лири
2
Пожалуйста, прочитайте инструкцию к r.composite . Если вы используете уровни интенсивности «по умолчанию» для каждого компонента (то есть 32), вы должны получить немного другие значения RGB по сравнению с «входным» RGB. Вы можете использовать r.what с -rпараметром ( Output color values as RRR:GGG:BBB) для запроса комбинации RGB ячейки. Также посмотреть на r.what.color . [Ссылки на GRASS6, поскольку эта версия используется ОП].
Никос Александрис
1
Проверьте также эту ветку : lists.osgeo.org/pipermail/grass-user/2015-January/071739.html .
Никос Александрис

Ответы:

1

Число 124 в качестве двоичного байта (восемь цифр) равно 01111100. Для представления RGB-тройки из трех байтов потребуется трижды восемь или 24 таких бита. По умолчанию r.compositeуменьшает это значение до 15 бит, отбрасывая наименее значимые биты в каждой полосе. Таким образом, он обрезает 01111100 до 01111, что равно 15. (Эквивалентно, он делит 124 на 8 и игнорирует остаток.) ​​Очевидно, что эти три пятибитных результата объединяются в порядке B, G, R для формирования 15-битного числа (представляет значения в диапазоне от 0 до 2 ^ 15-1 = 32767, что достаточно мало, чтобы сохранить таблицу цветов до приемлемого размера). Таким образом, эти значения представляют три полосы изображения, каждая из которых имеет только пять битов точности, а не исходные восемь.

В примере с вопросом вычисления выполняются так:

  1. Синий = 124 преобразуется в 124/8 = 15 (плюс оставленный остаток 4). В двоичном виде это 01111.

  2. Зеленый = 124 преобразуется в 124/8 = 15 (плюс оставленный остаток 4). В двоичном виде это 01111.

  3. Красный = 172 преобразуется в 172/8 = 21 (плюс оставшийся остаток 4). В двоичном виде это 10101.

  4. Цифры объединяются в 01111 01111 10101. Это 15-значное двоичное число представляет значение 15861 = (15 * 32 + 15) * 32 + 21.

r.composite может выполнить больше обработки, чем эта, и может сделать это немного по-разному в зависимости от предоставленных вами опций, но эти операции показывают основной способ преобразования байта в пятибитное значение.

Вы можете приблизительно отменить процедуру, используя последовательные деления на 32:

  1. 15861/32 = 495 плюс остаток от 21. (Умноженный на 8, этот остаток от 21 дает 168, что лишь немного меньше, чем исходный 172 для красной полосы.)

  2. 495/32 = 15 плюс остаток 15. (Умноженный на 8, этот остаток 15 дает 120, что лишь немного меньше, чем исходное значение 124 для зеленой полосы.)

  3. Нам осталось 15, что при умножении на 8 дает 120, что лишь немного меньше, чем первоначальное значение 124 для синей полосы.

Ссылка

r.compositeстраница руководства по адресу https://grass.osgeo.org/grass72/manuals/r.composite.html .

Whuber
источник