Brightness контраст

Визуальная настройка растровых слоёв в CesiumJS строится на параметрах постобработки изображений, применяемых к ImageryLayer. Эти параметры позволяют управлять восприятием данных на глобусе без изменения исходных тайлов. Основные регуляторы — яркость (brightness), контраст (contrast), гамма (gamma), насыщенность (saturation) и оттенок (hue).

Механизм работает на уровне шейдеров WebGL: каждый пиксель текстуры проходит через математическое преобразование, задаваемое параметрами слоя. Это обеспечивает высокую производительность даже при работе с большим количеством источников данных.


Модель цветокоррекции в ImageryLayer

Каждый слой изображений в CesiumJS представлен объектом ImageryLayer. Для него доступны свойства цветокоррекции:

  • brightness
  • contrast
  • gamma
  • hue
  • saturation
  • alpha

Эти параметры не изменяют исходные данные, а влияют только на финальное отображение.

Пример создания слоя:

const layer = viewer.imageryLayers.addImageryProvider(
  new Cesium.IonImageryProvider({ assetId: 2 })
);

После добавления слоя параметры могут быть изменены напрямую.


Яркость (brightness)

Яркость определяет линейное усиление интенсивности пикселей. Значение 1.0 соответствует оригинальному изображению.

Диапазон:

  • меньше 1.0 — затемнение
  • больше 1.0 — осветление

Формально применяется линейная операция:

color' = color × brightness

Пример настройки:

layer.brightness = 1.3;

При увеличении яркости усиливаются светлые области, однако возможна потеря деталей в пересвеченных зонах.


Контраст (contrast)

Контраст изменяет разницу между тёмными и светлыми участками изображения. В CesiumJS параметр реализуется как масштабирование отклонения цвета от среднего уровня.

Типовая интерпретация:

  • 1.0 — без изменений
  • < 1.0 — снижение контраста (сглаживание)
  • > 1.0 — усиление контраста

Математическая модель:

color' = (color - 0.5) × contrast + 0.5

Пример применения:

layer.contrast = 1.4;

Высокий контраст усиливает границы объектов, но может привести к потере плавных переходов в растровых данных.


Гамма-коррекция (gamma) и её связь с контрастом

Хотя гамма не является прямым параметром контраста, она часто используется совместно для корректной визуализации спутниковых снимков.

color' = color^(1 / gamma)

Пример:

layer.gamma = 0.8;

Низкие значения делают изображение светлее в тенях, высокие — затемняют средние тона.


Насыщенность (saturation)

Контраст цветности управляет интенсивностью цветового компонента.

layer.saturation = 1.5;

Интерпретация:

  • 0.0 — полностью серое изображение
  • 1.0 — оригинальные цвета
  • > 1.0 — усиление цветовой насыщенности

При увеличении насыщенности контраст между цветами усиливается, но возможны артефакты в естественных текстурах.


Оттенок (hue)

Hue выполняет вращение цветового круга, изменяя общий тон изображения.

layer.hue = 0.25;

Диапазон обычно нормализован в пределах [0, 1], где значение соответствует смещению по цветовому кругу.


Совместное применение параметров

Все параметры применяются последовательно в одном пиксельном шейдере. Порядок имеет значение:

  1. Применение гаммы
  2. Коррекция яркости
  3. Коррекция контраста
  4. Изменение насыщенности
  5. Сдвиг оттенка

Такой пайплайн позволяет комбинировать эффекты без необходимости пересчёта текстур.


Практика настройки визуальной читаемости данных

В задачах геоинформационной визуализации параметры яркости и контраста используются для:

  • улучшения различимости рельефа
  • выделения урбанизированных зон
  • повышения читаемости спутниковых снимков в облачных условиях
  • нормализации данных от разных источников

Пример адаптации слоя под слабоконтрастные данные:

layer.brightness = 1.2;
layer.contrast = 1.35;
layer.gamma = 0.9;

Динамическое управление параметрами

CesiumJS позволяет изменять параметры в реальном времени, что используется в интерфейсах аналитических панелей и визуальных регуляторов.

Пример анимации контраста:

let value = 1.0;

viewer.scene.preRender.addEventListener(() => {
  value += 0.01;
  if (value > 2.0) value = 0.5;
  layer.contrast = value;
});

Ограничения цветокоррекции

Цветокоррекция в CesiumJS имеет ряд особенностей:

  • применяется только к растровым слоям
  • не влияет на 3D-геометрию и модели
  • не изменяет исходные данные тайлов
  • зависит от производительности GPU

При работе с несколькими слоями каждый слой имеет собственный набор параметров, что позволяет создавать сложные композиции визуализации.


Комбинации слоёв и визуальная интерференция

При наложении нескольких ImageryLayer итоговый результат зависит от порядка слоёв и их прозрачности:

layer.alpha = 0.6;
layer2.alpha = 0.4;

В сочетании с контрастом и яркостью это может приводить к усилению или подавлению отдельных информационных признаков.


Влияние на восприятие геоданных

Изменение яркости и контраста напрямую влияет на интерпретацию географической информации:

  • изменение границ водных объектов
  • усиление текстур почвы
  • визуальное выделение инфраструктуры
  • подавление шумов спутниковых снимков

При аналитической работе важна стабильность параметров, поскольку субъективная настройка может искажать выводы.


Производственная оптимизация

Поскольку все операции выполняются на GPU, параметры brightness и contrast:

  • не создают дополнительной нагрузки CPU
  • не требуют пересборки текстур
  • масштабируются линейно по количеству пикселей

Это делает их предпочтительными для интерактивных систем визуализации больших географических данных.