Komponowanie alfa - Alpha compositing

Tego spektrum kolorów obrazu był kanał alfa spada do zera przy jej podstawie, gdzie miesza się z tłem.

W dziedzinie grafiki komputerowej , a tworzenie kompozycji lub a mieszanie jest sposób łączenia jednego obrazu w tle w celu stworzenia pozoru, częściowej lub całkowitej przejrzystości . Często przydatne jest renderowanie elementów obrazu (pikseli) w osobnych przejściach lub warstwach, a następnie łączenie powstałych obrazów 2D w jeden, ostateczny obraz zwany kompozycją . Kompozycja jest szeroko stosowana w filmach, gdy łączy się elementy obrazu renderowanego komputerowo z materiałem na żywo . Mieszanie alfa jest również używane w grafice komputerowej 2D, aby umieścić zrasteryzowane elementy pierwszego planu na tle.

Aby prawidłowo połączyć elementy obrazu obrazów, konieczne jest zachowanie skojarzonej matówki dla każdego elementu oprócz jego koloru. Ta matowa warstwa zawiera informacje o pokryciu — kształt rysowanej geometrii — co umożliwia odróżnienie części obrazu, na których coś zostało narysowane, od części, które są puste.

Chociaż najbardziej podstawową operacją łączenia dwóch obrazów jest umieszczenie jednego na drugim, istnieje wiele operacji lub trybów mieszania , które są używane.

Opis

Aby przechowywać informacje matowe , koncepcja kanału alfa została wprowadzona przez Alvy'ego Raya Smitha pod koniec lat 70. XX wieku i w pełni rozwinięta w pracy z 1984 r. przez Thomasa Portera i Toma Duffa . W obrazie 2D kombinacja kolorów jest przechowywana dla każdego elementu obrazu (piksela). Dodatkowe dane dla każdego piksela są przechowywane w kanale alfa o wartości z zakresu od 0 do 1. Wartość 0 oznacza, że ​​piksel jest w pełni przezroczysty i nie dostarcza żadnych informacji o pokryciu; tzn. nie ma okluzji w oknie piksela obrazu, ponieważ geometria nie nakładała się na ten piksel. Wartość 1 oznacza, że ​​piksel jest całkowicie nieprzezroczysty, ponieważ geometria całkowicie zachodzi na okno piksela.

Dzięki istnieniu kanału alfa możliwe jest wyrażenie operacji składania obrazu za pomocą algebry składania . Na przykład, biorąc pod uwagę dwa obrazy A i B, najczęstszą operacją komponowania jest łączenie obrazów tak, aby A pojawił się na pierwszym planie, a B pojawił się w tle. Można to wyrazić jako A nad B. Oprócz over , Porter i Duff zdefiniowali operatory składania w , przetrzymywane przez (wyrażenie odnosi się do maty podtrzymującej i jest zwykle skracane do ), atop i xor (oraz łazik z operatorami odwrotnymi , rin , rout i rtop ) z rozważenia możliwości mieszania kolorów dwóch pikseli, gdy ich pokrycie jest koncepcyjnie nałożone prostopadle:

Alpha compositing.svg

Na przykład operator over można uzyskać, stosując następujący wzór do każdego piksela:

Tu , i oznaczają elementów kolorowych pikseli w rezultacie obraz A i obrazu B, odpowiednio, zastosowanie do każdego kanału (czerwony / zielony / niebiesko), indywidualnie, przy czym , i są wartościami alfa odpowiednich pikseli.

Przez operatora jest w rzeczywistości, zwykłe działanie malowania (patrz algorytm malarza ). Bruce A. Wallace wyprowadził operator nad w oparciu o fizyczny model reflektancji / przepuszczalności , w przeciwieństwie do podejścia geometrycznego Duffa. W i z operatorami są alfa komponowanie równoważnik przycinania . Oba używają tylko kanału alfa drugiego obrazu i ignorują składniki koloru.

Proste kontra mnożone wcześniej

Jeśli w obrazie używany jest kanał alfa, dostępne są dwie typowe reprezentacje: prosta (nieskojarzona) alfa i wstępnie pomnożona (skojarzona) alfa.

W przypadku straight alpha komponenty RGB reprezentują kolor obiektu lub piksela, niezależnie od jego krycia.

W przypadku wstępnie pomnożonej alfa , składowe RGB reprezentują emisję obiektu lub piksela, a alfa oznacza okluzję. Przez operatora staje się:

Bardziej oczywistą zaletą tego jest to, że w pewnych sytuacjach może zapisać późniejsze mnożenie (np. jeśli obraz jest wielokrotnie używany podczas późniejszego komponowania). Jednak najważniejsze zalety korzystania z premultiplied alpha to poprawność i prostota, a nie wydajność: premultiplied alpha umożliwia prawidłowe filtrowanie i mieszanie. Ponadto wstępnie zwielokrotnione alfa umożliwia zakodowanie na tym samym obrazie regionów o regularnym mieszaniu alfa i regionów z addytywnym trybem mieszania .

Zakładając, że kolor piksela jest wyrażany za pomocą prostych (nie wstępnie zwielokrotnionych) krotek RGBA , wartość piksela (0, 0,7, 0, 0,5) oznacza piksel, który ma 70% maksymalnej intensywności zieleni i 50% krycia. Gdyby kolor był całkowicie zielony, jego RGBA byłoby (0, 1, 0, 0,5).

Jeśli jednak ten piksel używa wstępnie pomnożonej wartości alfa, wszystkie wartości RGB (0, 0,7, 0) są mnożone lub skalowane pod kątem okluzji przez wartość alfa 0,5, która jest dodawana do wyniku (0, 0,35, 0, 0,5). W tym przypadku wartość 0,35 dla kanału G faktycznie wskazuje na 70% intensywność emisji zielonej (przy 50% okluzji). Czysta zielona emisja będzie zakodowana jako (0, 0,5, 0, 0,5). Wiedza o tym, czy plik wykorzystuje prostą czy wstępnie pomnożoną alfa, jest niezbędna do prawidłowego przetwarzania lub kompilacji, ponieważ wymagane są inne obliczenia. Całkowicie dopuszczalne jest również posiadanie ekspresowej emisji trypletu RGBA bez okluzji, takiej jak (0,4, 0,3, 0,2, 0,0). Pożary i płomienie, poświaty, rozbłyski i inne podobne zjawiska mogą być reprezentowane tylko za pomocą powiązanej / wstępnie zwielokrotnionej alfa.

Jedyna istotna różnica polega na dynamicznym zakresie reprezentacji kolorów w obliczeniach numerycznych o skończonej precyzji (co ma miejsce we wszystkich aplikacjach): wstępnie pomnożone alfa ma unikalną reprezentację dla przezroczystych pikseli, unikając konieczności wybierania „czystego koloru” lub wynikających z tego artefaktów, takich jak jako obrzeża krawędzi (patrz następne akapity). W skojarzonym / wstępnie zwielokrotnionym obrazie alfa, RGB reprezentuje wielkość emisji, podczas gdy alfa jest okluzją. Wstępnie pomnożone alfa ma kilka praktycznych zalet w porównaniu z normalnym mieszaniem alfa, ponieważ interpolacja i filtrowanie dają prawidłowe wyniki.

Zwykła interpolacja bez wstępnie pomnożonej wartości alfa prowadzi do wycieku informacji RGB z całkowicie przezroczystych (A=0) regionów, nawet jeśli ta informacja RGB jest idealnie niewidoczna. Podczas interpolacji lub filtrowania obrazów z ostrymi granicami między regionami przezroczystymi i nieprzezroczystymi może to skutkować obramowaniem kolorów, które nie były widoczne na oryginalnym obrazie. Błędy występują również w obszarach półprzezroczystości, ponieważ komponenty RGB nie są prawidłowo ważone, co powoduje niepoprawnie wysoką wagę koloru bardziej przezroczystych (niższych alfa) pikseli.

Mnożenie wstępne może zmniejszyć dostępną względną precyzję wartości RGB w przypadku używania reprezentacji liczb całkowitych lub stałoprzecinkowych dla składników koloru, co może spowodować zauważalną utratę jakości, jeśli informacje o kolorze zostaną później rozjaśnione lub jeśli kanał alfa zostanie usunięty. W praktyce zwykle nie jest to zauważalne, ponieważ podczas typowych operacji składu, takich jak OVER, wpływ mało precyzyjnych informacji o kolorach w obszarach o niskiej wartości alfa na końcowy obraz wyjściowy (po kompozycji) jest odpowiednio redukowany. Ta utrata precyzji ułatwia również kompresję wstępnie zwielokrotnionych obrazów przy użyciu pewnych schematów kompresji, ponieważ nie rejestrują one zmian kolorów ukrytych w przezroczystych obszarach i mogą przydzielić mniej bitów do zakodowania obszarów o niskiej wartości alfa. Te same „ograniczenia” niższych głębi bitowych kwantyzacji, takie jak 8 bitów na kanał, występują również w obrazach bez alfa, w wyniku czego ten argument jest problematyczny.

Korekcja gamma

Mieszanie alfa, nie uwzględniające korekcji gamma
Mieszanie alfa z uwzględnieniem korekcji gamma.

Wartości RGB typowych obrazów cyfrowych nie odpowiadają bezpośrednio fizycznym natężeniom światła, ale są raczej kompresowane przez funkcję korekcji gamma :

Ta transformacja lepiej wykorzystuje ograniczoną liczbę bitów w zakodowanym obrazie, wybierając ten, który lepiej pasuje do nieliniowej percepcji luminancji przez człowieka.

W związku z tym programy komputerowe, które zajmują się takimi obrazami, muszą dekodować wartości RGB do przestrzeni liniowej (poprzez cofnięcie kompresji gamma), mieszać liniowe natężenia światła i ponownie zastosować kompresję gamma do wyniku:

W połączeniu ze wstępnie zwielokrotnioną wartością alfa, wstępne zwielokrotnienie odbywa się w przestrzeni liniowej, przed kompresją gamma. Daje to następującą formułę:

Zwróć uwagę, że tylko składniki koloru podlegają korekcji gamma; kanał alfa jest zawsze liniowy.

Inne metody przejrzystości

Chociaż używane do podobnych celów, przezroczyste kolory i maski obrazu nie pozwalają na płynne mieszanie nałożonych pikseli obrazu z pikselami tła (dozwolone są tylko całe piksele obrazu lub całe piksele tła).

Podobny efekt można osiągnąć za pomocą 1-bitowego kanału alfa, jak w 16-bitowym trybie kolorów RGBA w formacie pliku obrazu Truevision TGA oraz w powiązanych z nimi kartach graficznych TARGA i AT-Vista/NU-Vista. . Ten tryb przeznacza 5 bitów na każdy podstawowy kolor RGB ( 15-bitowy RGB ) plus pozostały bit jako „kanał alfa”.

Przezroczystość drzwi ekranowych może być używana do symulowania częściowej okluzji, gdy dostępna jest tylko 1-bitowa alfa.

W niektórych zastosowaniach pojedynczy kanał alfa nie jest wystarczający: na przykład witraż wymaga osobnego kanału przezroczystości dla każdego kanału RGB, aby oddzielnie modelować przezroczystość czerwoną, zieloną i niebieską. Można dodać więcej kanałów alfa w celu uzyskania dokładnej filtracji widmowej kolorów.

Analityczne wyprowadzenie operatora over

Trzecie podejście można znaleźć zaczynając od dwóch bardzo prostych założeń. Dla uproszczenia użyjemy tutaj notacji skróconej do reprezentowania operatora over .

Pierwszy Zakłada się, że w przypadku, gdy tło jest nieprzezroczysty (tj ), operator na reprezentuje wypukłą kombinacji z i :

Drugim założeniem jest to, że operator musi przestrzegać zasady asocjacji:

Załóżmy teraz, że i mają zmienne przezroczystości, natomiast jest nieprzejrzysty. Jesteśmy zainteresowani znalezieniem

Z reguły asocjacyjnej wiemy, że musi być prawdziwe:

Wiemy, że jest nieprzezroczyste, a co za tym idzie, że jest nieprzezroczyste, więc w powyższym równaniu każdy operator można zapisać jako kombinację wypukłą:

Stąd widzimy, że reprezentuje to równanie postaci . Ustawiając i otrzymujemy

co oznacza, że ​​wyprowadziliśmy analitycznie wzór na wynik alfa i kolor wyjściowy .

Jeszcze bardziej zwięzłą reprezentację daje zauważenie, że :

Operatora spełnia wszystkie wymagania stawiane nie przemiennego monoid , gdzie element neutralny jest tak dobrana, że (czyli pierwszego elementu może być dowolną krotka z ).

Zobacz też

Bibliografia

Linki zewnętrzne