result = white - abs(white - base  blend):

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

result = base + blend - (2.0 * base * blend):

16.6.20. Прозрачность

Значение прозрачности в диапазоне [0, 1] также можно использовать для определения участия основного изображения в формировании результата. Значение result из любой приведенной ранее формулы можно впоследствии изменить таким образом:

finalColor = mix(base. result, opacity):

16.7. Свертка Свёртка - это общая операция обработки изображения, которая может использоваться для фильтрации изображения. Это происходит с помощью вычисления суммы исходного изображения и меньшего изображения, называемого ядром свёртки или свёрточным фильтром. В зависимости от выбора значений в ядре

16.7. Свертка операция свертки может выполнять размывку, увеличение резкости, уменьшение шума, выделение краев и другие полезные операции.

Математически дискретная двухмерная операция свёртки определена так:

licight-1 widlh-1

Н(х,у)= X £ F(x + i,y+j)G(i,j).

.7=0 1=0

В этом уравнении функция F представляет основное изображение, a G - ядро свёртки. Двойная сумма основана на ширине и высоте ядра свёртки. Значение конкретного пиксела в окончательном изображении вычисляется совмещением центра ядра свёртки с пикселом в той же точке, что и в основном изображении, и умножением значений из основного изображения на значения из ядра. Затем полученные значения суммируются.

Набор функций для работы с изображениями в OpenGL 1.5 включает в себя функции для свёртки, но реализация этой функциональности всегда ограничивает размер ядра (обычно это 3 х 3) и точность промежуточных операций. Гибкость языка шейдеров OpenGL позволяет задавать ядро практически любого размера и точность, соответствующую операциям над числами с плавающей запятой. Более того, операция свёртки может быть написана в шейдере OpenGL таким образом, чтобы выполнялось минимальное количество умножений (например, нулевые значения ядра вообще исключаются из вычислений).


⇐ Предыдущая| |Следующая ⇒