Продолжая тему. Я сталкивался, по большей части, с медицинскими изображениями. От обычных фотографий до многомерных объёмных стеков. С
ГИС особо не работал, можно начать
отсюда.
То изображение, которое вы представили, является одноканальным. Его ещё могут называть серым (градации серого), полутоновым (grayscale). Каждый канал это просто матрица точек с разными интенсивностями. Вы сами привели пример. Чтобы получить цветное изображение, требуется три канала. См.
RGB. Привычные нам фотографии имеют три канала в цветовой схеме RGB, каждый из которых содержит данные в uint8. Четвёртый канал (альфа-канал) добавляется для получения прозрачности, когда изображения накладывается друг на друга. Цветовые пространства и их математическое представление довольно обширная тема, обратитесь к литературе. Можно начать с RGB.
А теперь то, о чём вы спрашивали.
uint16 представляет 2
16 = 65536 (0...65535) возможных значений пиксела изображения. int16 то же самое, только отсчёт идёт не от нуля, а от -32768 до 32767.
uint8 представляет 2
8 = 256 (0...255) возможных значений, по аналогии. Для обработки изображений удобнее
unsigned int, так как положительные значения естественны: матрица камеры получает свет различной интенсивности (положительные значения) или его отсутствие (ноль). Так устроен
АЦП фотоматрицы.
Получается, что uint16 позволяет хранить больше (чем uint8) данных в одном пикселе (ячейке матрицы). В 65536/256 = 256 раз больше. Возникает вопрос: есть ли у вас данные, требующие такого диапазона? А если есть, то что вы с ними будете делать? Обрабатывать конечно лучше с большей точностью. А вот отображать всё равно придётся в uint8 на канал. Монитор не отобразит все 16 бит, не все форматы изображений такую глубину поддерживают, как поведёт себя браузер не имею понятия.
Резюме: обрабатывать с максимальной точностью. Картинки для браузера конечного пользователя отдавать в восьмибитном jpg (если не страшны артефакты) или png (если нужна прозрачность или максимальная сохранность данных).