Альфа-канал

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Пример работы альфа-композитных операторов over, in, out, atop и xor

В компьютерной графике альфа-композиция (англ. Alpha compositing) обозначает процесс комбинирования изображения с фоном с целью создания эффекта частичной прозрачности. Этот метод часто применяется для многопроходной обработки изображения по частям с последующей комбинацией этих частей в единое двумерное результирующее изображение. Таким образом, альфа канал представляет собой пустое пространство, или просто прозрачность.

Термин альфа-канал (англ. Alpha channel)[1] впервые введён в оборот Алви Смитом в конце 1970-х и детально проработан в статье Томаса Портера и Тома Даффа 1984 года.[2]

В компьютерных играх, чтобы показать прозрачность того или иного объекта, используются текстуры с альфа-каналом.

Альфа-смешение[править | править вики-текст]

Альфа-смешение (англ. Alpha blending) - техника создания эффекта полупрозрачности путем объединения исходного пиксела с пикселом, уже находящимся во фрейм-буфере. Каждому пикселу обычно ставится в соответствие значения красного, зеленого и синего компонентов цвета (R,G,B). Если ставится в соответствие еще альфа-значение, то говорят что пикселы имеют альфа-канал(компонент A в схеме RGBA). Альфа-значение определяет степень прозрачности конкретного пиксела. Объекты могут иметь различную прозрачность, например 8-битный альфа-канал может представлять 256 уровней прозрачности от 0 (всё растровое изображение прозрачное) до 255 (всё растровое изображение непрозрачное).[3] Альфа-смешение есть процесс комбинирования двух объектов на экране с учетом их альфа-каналов. Альфа-смешение используется для: антиалиасинга, прозрачности, создания теней, зеркал, тумана.[4]

Расчет результирующего цвета[править | править вики-текст]

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

Result = Background * (1 − Alpha) + Foreground * Alpha

или (иная запись)

Result = Background + (ForegroundBackground) * Alpha

где

Background — яркость фонового пикселя,
Foreground — яркость накладываемого пикселя,
Alpha ∈ [0..1] — непрозрачность накладываемого пикселя.

Вторая приведённая запись отображает следующий смысл: значение Alpha указывает относительное положение на отрезке [Background..Foreground].

Использование в web-дизайне, поддержка в формате PNG и других[править | править вики-текст]

Альфа-канал, также известный как маска-канал, это просто способ объединить переходную прозрачность с изображением. Формат GIF поддерживает простую бинарную прозрачность (когда любой пиксель может быть либо полностью прозрачным, либо абсолютно непрозрачным). Формат PNG позволяет использовать 254 или 65534 уровня частичной прозрачности.

Все три типа PNG изображений («TrueColor», «GrayScale» и индексированная палитра) могут содержать альфа-информацию, хотя обычно она применяется лишь с «TrueColor» изображениями. Вместо того, чтобы сохранять три байта для каждого пикселя (красный, зелёный и синий, RGB), сохраняются четыре: красный, зелёный, синий и альфа, таким образом получается RGBA.

Такая переходная прозрачность позволяет создавать «спецэффекты», хорошо выглядящие на любом фоне. Например, эффекта фотовиньетки, для портрета, можно добиться путём установки полностью непрозрачной центральной области (то есть для лица и плеч), прозрачной остальной обстановки и с созданием плавного перехода между двумя этими различными областями. Соответственно, портрет будет плавно осветляться на белом фоне, и затемняться на чёрном. Ещё один спецэффект с прозрачностью — это отбрасывание тени.

Прозрачность наиболее важна для маленьких изображений, обычно используемых на web-страницах, вроде цветных (круглых) маркеров или причудливого текста. Альфа-смешивание позволяет использовать другой эффект, а именно сглаживание (anti-aliasing), создавая иллюзию гладких кривых на сетке прямоугольных пикселей, плавно изменяя их цвета, что позволяет добиться округлых изображений, хорошо отображаемых как на белом, так и на любом другом фоне. Таким образом одно и то же изображение может быть многократно использовано в нескольких местах без «призрачного» эффекта, свойственного GIF-изображениям.[5]

Windows XP поддерживает 32-битные значки (иконки) — 24-бита цвета RGB и 8-битный альфа канал. Это позволяет отображать значки со сглаженными (размытыми) краями и тенью, которые сочетаются с любым фоном.

CSS3 также, позволяет использовать цветовую модель RGBA и HSLA, где значение альфа принимает значения от 0 до 1 (рациональные числа). Также существует параметр прозрачности — Opacity[6]. Альфа-канал также используется в SVG.

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

Примечания[править | править вики-текст]

  1. MSDN. Direct3D 11. BC7 Format.
  2. Thomas Porter and Tom Duff, Compositing Digital Images, Computer Graphics, 18(3), July 1984, 253—259. DOI:10.1145/800031.808606
  3. MSDN. Alpha blending
  4. Альфа-смешение
  5. rus-linux.net (лицензия GFDL)
  6. htmlbook.ru — CSS — opacity

Литература[править | править вики-текст]

  • Thomas Porter, Tom Duff: Compositing Digital Images. In SIGGRAPH 1984 Proceedings. S. 253–259. ACM, New York 1984, ISBN 0-89791-138-5 (PDF, 730 KB)
  • Alvy Ray Smith: Alpha and the History of Digital Compositing. Technical Memo 7, 1995 (PDF, 40 KB)
  • Alvy Ray Smith: Digital Paint Systems: An Anecdotal and Historical Overview. IEEE Annals of the History of Computing 23, 2 (Apr–Jun 2001): 4–30, ISSN 1058-6180

См. также[править | править вики-текст]