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

Таким образом, альфа-канал (англ. Alpha channel) представляет собой пустое пространство, или просто прозрачность.

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

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

Альфа-смешение

править

Альфа-смешение (англ. Alpha blending) ― техника создания эффекта полупрозрачности путём объединения исходного пикселя с пикселем, уже находящимся во фрейм-буфере. Каждому пикселю обычно ставятся в соответствие значения красного, зелёного и синего компонентов цвета (RGB). Если ставится в соответствие ещё и альфа-значение, то говорят, что пиксели имеют альфа-канал (компонент A).

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

Расчёт результирующего цвета

править

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

 

или в иной записи:

 

Обозначения:

  •   — яркость фонового пикселя;
  •   — яркость накладываемого пикселя;
  •   — непрозрачность накладываемого пикселя;
  •   ― результат.

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

Поддержка и использование

править

Альфа-канал, также известный как маска-канал, — это просто способ объединить переходную прозрачность с изображением. Формат 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. Дата обращения: 26 июня 2015. Архивировано 1 июля 2015 года.
  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. Дата обращения: 29 июня 2015. Архивировано 1 июля 2015 года.
  4. Альфа-смешение. Дата обращения: 29 июня 2015. Архивировано 4 марта 2016 года.
  5. rus-linux.net Архивная копия от 27 августа 2011 на Wayback Machine (лицензия GFDL)
  6. htmlbook.ru — CSS — opacity. Дата обращения: 26 июня 2013. Архивировано 7 июня 2018 года.

Литература

править
  • 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