Alfa kompozīcija

thumb|Šajā bildē alfa kanāls samazinās līdz 0.

Datorgrafikā **alfa kompozīcija** (angļu: *alpha compositing*) ir process, kas apvieno attēlu ar fonu, lai izveidotu daļēju vai pilnīgu caurspīdīgumu. Bieži vien ir lietderīgi renderēt attēla elementus atsevišķi un pēc tam apvienot iegūtos daudzos 2D attēlus vienā galīgajā attēlā, ko sauc par kompozīciju. Piemēram, kompozīcijas tiek plaši izmantotas, apvienojot datora renderētus attēla elementus ar tiešraidi.Lai pareizi apvienotu šos attēlu elementus, katram elementam ir nepieciešams paturēt tā saistītais *matte*. Šajā *matte* ir ietverta informācija par segumu — ģeometrijas formu, kura tiek zīmēta — kas ļauj atšķirt attēla daļas, kurās faktiski tika uzzīmēta ģeometrija, un citas tukšās attēla daļas.

## Apraksts
Lai glabātu *matte* informāciju, 1970. gados Alvijs Rejs Smits (angliski: Alvy Ray Smith) iepazīstināja sabiedrību ar alfa kanāla konceptu. 1984. gadā šo konceptu attīstīja Tomass Porters (angliski: Thomas Porter) un Toms Dafs (angliski: Tom Duff). 2D attēla elementā, kurā tiek saglabāta katra pikseļa krāsa, taču alfa kanālā tiek saglabāti papildu dati ar vērtību no 0 līdz 1. Vērtība 0 norāda uz to, ka pikselim nav nekāda informācija par segumu, tāpēc tas ir caurspīdīgs, tātad neviena ģeometrija neveidoja nevienu krāsu, jo ģeometrija nepārklāja šo pikseli. Vērtība 1 nozīmē, ka pikselis ir necaurspīdīgs, jo ģeometrija pilnībā pārklāj pikseli. Ja alfa kanāls tiek izmantots attēlās, ir pieejami divi raksturīgākie reprezentēšanas veidi: tiešā (nesaistīta) alfa un pirmsreizināšanas (saistītā) alfa. Izmantojot tiešo alfu RGB komponentes attēlo objekta vai pikseļa krāsu, neņemot vērā tā caurredzamību, taču ar pirmsreizināšanas alfu RGB komponentes attēlo objekta vai pikseļa krāsu, kas pielāgots tā caurredzamībai ar reizināšanas darbību. Pieņemot, ka pikseļu krāsa tiek izteikta, izmantojot tiešā (neaugošus) RGBA kortežus, pikseļa vērtība (0, 0,7, 0, 0,5) nozīmē pikseli, kam ir 70% no maksimālās zaļās krāsas intensitātes un 50% caurredzamības. Ja krāsa ir pilnīgi zaļa, tā RGBA būtu (0, 1, 0, 0,5). Tomēr, ja šis pikselis izmanto pirmsreizināšanas alfa kanālu, visas RGB vērtības (0, 0.7, 0) tiek reizinātas ar 0,5 un tad alfa tiek pievienota beigām, lai iegūtu (0, 0.35, 0, 0.5). Šajā gadījumā G kanāla 0,35 vērtība faktiski norāda 70% zaļu intensitāti (ar 50% caurredzamību). Pilnīgi zaļš tiek kodēts kā (0, 0,5, 0, 0,5). Šī iemesla dēļ, lai pareizi apstrādātu vai saliktu kompozīciju, ir svarīgi zināt, vai fails izmanto tiešo vai pirmsreizināšanas alfu.

## Alfa saplūšana ar gammas korekciju

thumb|Alfa saplūšana, neņemot vērā gammas korekciju

thumb|Alfa saplūšana, ņemot vērā gammas korekciju.

Datora attēlos saglabātās RGB vērtības faktiski nav reālās gaismas intensitātes, bet tās ir pārveidotas ar Gamma korekciju, lai optimizētu bitu izmantošanu, kodējot attēlu. Gamma korekciju var apkopot šādi:
* ļaut, lai displayed_{RGB} ir RGB intensitāte, kas tiek parādīta ekrānā (normalizētā intensitātē, t.i., no 0 līdz 1)
* ļaut, lai stored_{RGB} ir RGB intensitāte, kas datora atmiņā tiek glabāta kā biti (arī normalizētajās intensitātēs)
* ļauj, lai \gamma būtu "atšifrēšanas" gamma ar vērtību 2,2 no stored_{RGB} attēla (\gamma ir tipiska vērtība 2,2)

Tas dod šādu attiecību:

displayed_{RGB} = {stored_{RGB}} ^ {\gamma}

## Ārējās saites
* https://web.archive.org/web/20180523104217/http://dvd-hq.info/alpha_matting.php
* https://web.archive.org/web/20180613201515/http://www.cs.princeton.edu/courses/archive/fall00/cs426/papers/smith95a.pdf
* https://tomforsyth1000.github.io/blog.wiki.html#%5B%5BPremultiplied+alpha%5D%5D