Indeksowany kolor

2-bitowy indeksowany kolorowy obraz. Kolor każdego piksela jest reprezentowany przez liczbę; każdy numer ( indeks ) odpowiada kolorowi w tabeli kolorów ( paleta ).

W informatyce kolor indeksowany jest techniką zarządzania kolorami obrazów cyfrowych w ograniczony sposób w celu zaoszczędzenia pamięci komputera i przechowywania plików , przy jednoczesnym przyspieszeniu odświeżania ekranu i przesyłania plików. Jest to forma kompresji kwantyzacji wektorowej .

Kiedy obraz jest zakodowany w ten sposób, informacje o kolorze nie są przenoszone bezpośrednio przez dane dotyczące pikseli obrazu , ale są przechowywane w oddzielnej części danych zwanej tabelą wyszukiwania kolorów (CLUT) lub paletą : tablicą specyfikacji kolorów. Każdy element w tablicy reprezentuje kolor, indeksowany przez jego pozycję w tablicy. Każdy piksel obrazu nie zawiera pełnej specyfikacji swojego koloru, a jedynie jego indeks do palety . Ta technika jest czasami nazywana pseudokolorem lub kolorem pośrednim , ponieważ kolory są adresowane pośrednio.

Historia

Wczesne systemy wyświetlania grafiki, które wykorzystywały 8-bitowy indeksowany kolor z buforami ramek i tabelami wyszukiwania kolorów, obejmują SuperPaint firmy Shoup (1973) oraz bufor klatek wideo opisany w 1975 roku przez Kajiya, Sutherlanda i Cheadle'a. Obsługują one paletę 256 kolorów RGB. SuperPaint używał rejestru przesuwnego , podczas gdy Kajiya i in. system używał o swobodnym dostępie .

Kilka wcześniejszych systemów używało 3-bitowego koloru, ale zazwyczaj traktowało bity jako niezależne czerwone, zielone i niebieskie bity włączania / wyłączania, a nie łącznie jako indeks w CLUT.

Rozmiar palety

Sama paleta przechowuje ograniczoną liczbę różnych kolorów; 4, 16 lub 256 to najczęstsze przypadki. sprzęt karty graficznej architektury docelowej , więc nie jest przypadkiem, że te liczby są dokładnymi potęgami dwójki (kod binarny ): 2 2 = 4, 2 4 = 16 i 2 8 = 256. Podczas gdy 256 wartości można zmieścić w pojedynczym 8- bitowym bajcie (a wtedy pojedynczy indeksowany kolorowy piksel również zajmuje jeden bajt), indeksy pikseli z 16 (4-bitowe, półbajt ) lub mniej kolorów można spakować razem w jeden bajt (dwa półbajty na bajt, jeśli stosuje się 16 kolorów, lub cztery 2-bitowe piksele na bajt, jeśli używa się 4 kolorów). Czasami można użyć wartości 1-bitowych (2-kolorowych), a następnie w jednym bajcie można spakować do ośmiu pikseli; takie obrazy są uważane za obrazy binarne (czasami określane jako bitmapa lub obraz dwupoziomowy ), a nie za indeksowany obraz kolorowy.

Jeśli przezroczysta kolorystyka ma na celu prostą nakładkę wideo , jedna pozycja palety jest specjalnie zarezerwowana do tego celu i jest dyskontowana jako dostępny kolor. Niektóre maszyny, takie jak MSX , miały przezroczysty kolor zarezerwowany przez sprzęt.

Indeksowane kolorowe obrazy o rozmiarach palet przekraczających 256 wpisów są rzadkie. Praktyczny limit wynosi około 12 bitów na piksel, 4096 różnych indeksów. Użycie indeksowanych 16 bpp lub więcej nie zapewnia korzyści wynikających z natury indeksowanych obrazów kolorowych, ponieważ rozmiar palety kolorów w bajtach jest większy niż same nieprzetworzone dane obrazu. Ponadto przydatne są bezpośrednie tryby RGB Highcolor od 15 bpp wzwyż.

Jeśli obraz ma wiele subtelnych odcieni kolorów, konieczne jest wybranie ograniczonego repertuaru kolorów w celu przybliżenia obrazu za pomocą kwantyzacji kolorów . Taka paleta jest często niewystarczająca do dokładnego przedstawienia obrazu; trudne do odtworzenia cechy, takie jak gradienty , będą wyglądać blokowo lub jako paski ( kolorowe pasy ). W takich przypadkach zwykle stosuje się dithering , który miesza piksele o różnych kolorach we wzory, wykorzystując tendencję ludzkiego wzroku do rozmycia razem pobliskich pikseli, co daje wynik wizualnie bliższy oryginałowi.

Oto typowy indeksowany obraz z 256 kolorami i własną paletą (pokazany jako prostokąt próbek):

Adaptative 8bits palette sample image.png   Adaptative 8bits palette.png

Kolory i palety

Sposób kodowania kolorów w mapie palety kolorów danego indeksowanego obrazu kolorowego zależy od platformy docelowej.

Wczesne techniki kolorystyczne

Wiele wczesnych komputerów osobistych i domowych miało bardzo ograniczone palety sprzętowe , które mogły generować bardzo mały zestaw kolorów. W takich przypadkach wartość każdego piksela jest odwzorowywana bezpośrednio na jeden z tych kolorów. Dobrze znane przykłady to Apple II , Commodore 64 i IBM PC CGA , z których wszystkie zawierały sprzęt, który mógł wytworzyć stały zestaw 16 kolorów. W takich przypadkach obraz może zakodować każdy piksel za pomocą 4 bitów, bezpośrednio wybierając kolor do użycia. Jednak w większości przypadków sprzęt wyświetlający obsługuje dodatkowe tryby, w których tylko podzbiór tych kolorów może być użyty na jednym obrazie, co jest przydatną techniką oszczędzania pamięci. Na przykład tryb rozdzielczości 320 × 200 CGA mógł wyświetlać tylko cztery z 16 kolorów jednocześnie. Ponieważ palety były całkowicie zastrzeżone, obraz wygenerowany na jednej platformie nie może być bezpośrednio wyświetlany poprawnie na innej.

Inne maszyny z tej epoki miały możliwość generowania większego zestawu kolorów, ale generalnie pozwalały na użycie tylko podzbioru tych kolorów na jednym obrazie. Przykłady obejmują paletę 256 kolorów na 8-bitowych komputerach Atari lub 4096 kolorów terminala VT241 w ReGIS tryb graficzny. W takich przypadkach często obraz pozwalał na wyświetlenie tylko niewielkiego podzbioru całkowitej liczby kolorów w jednym czasie, do 16 jednocześnie na Atari i VT241. Ogólnie rzecz biorąc, te systemy działały identycznie jak ich mniej kolorowi bracia, ale kluczową różnicą było to, że w palecie było zbyt wiele kolorów, aby można je było bezpośrednio zakodować w danych pikselowych, biorąc pod uwagę ograniczoną ilość pamięci wideo . Zamiast tego użyli tabeli wyszukiwania kolorów (CLUT), gdzie dane każdego piksela wskazywały na wpis w CLUT, a CLUT został skonfigurowany pod kontrolą programu. Oznaczało to, że dane obrazu CLUT musiały być przechowywane razem z nieprzetworzonymi danymi obrazu, aby móc poprawnie odtworzyć obraz.

RGB

Palety sprzętowe oparte na komponentowych kolorach wideo, takie jak YPbPr lub podobne, zostały generalnie zastąpione w połowie lat 80. przez bardziej elastyczny model kolorów RGB , w którym dany kolor można uzyskać poprzez zmieszanie różnych ilości trzech podstawowych kolorów: czerwonego, zielonego i niebieski. Chociaż łączna liczba różnych kolorów zależy od liczby poziomów na podstawowy i od danej implementacji sprzętowej ( 9-bitowy RGB zapewnia 512 kombinacji, 12 - bitowy RGB zapewnia 4096 itd.), w tym modelu przetworniki analogowo-analogowe (DAC) może generować kolory — upraszczając projektowanie sprzętu — podczas gdy oprogramowanie może traktować liczbę poziomów w sposób abstrakcyjny i zarządzać kolorami RGB w sposób niezależny od urządzenia. Dzięki przechowywaniu kolorów w formacie RGB w paletach indeksowanych plików graficznych, dowolny obraz może zostać wyświetlony (poprzez odpowiednie przekształcenia) na dowolnym takim systemie, niezależnie od zastosowanej głębi kolorów w implementacji sprzętowej.

Obecnie sprzęt wyświetlający i formaty plików obrazów , które zajmują się obrazami w kolorze indeksowanym, zarządzają kolorami prawie wyłącznie w formacie RGB, de facto standardowym kodowaniem jest tak zwany truecolor lub 24-bitowy RGB , z 16 777 216 różnymi możliwymi kolorami . Jednak indeksowane obrazy kolorowe nie są naprawdę ograniczone do 24-bitowego kodowania kolorów RGB; palety obrazów mogą zawierać dowolny typ kodowania kolorów. Na przykład PDF obsługuje kolory indeksowane w innych przestrzeniach kolorów, zwłaszcza CMYK i Adobe Distiller domyślnie konwertuje obrazy na kolory indeksowane, gdy całkowita liczba kolorów w obrazie jest równa lub mniejsza niż 256. W przypadku korzystania z RGB formaty plików TIFF i PNG mogą opcjonalnie przechowywać trójki RGB z dokładnością do 16 bitów (65 536 poziomów na komponent), co daje w sumie 48 bitów na piksel. Proponowane rozszerzenie standardu TIFF dopuszcza palety kolorów innych niż RGB, ale nigdy nie zostało to zaimplementowane w oprogramowaniu ze względów technicznych. Tabela map kolorów w formacie pliku BMP tryb kolorów indeksowanych przechowuje swoje wpisy w kolejności BGR zamiast RGB i ma (w obecnej wersji) dodatkowy nieużywany bajt do wypełnienia w celu dostosowania do 32-bitowego wyrównania słów podczas przetwarzania, ale zasadniczo nadal jest to 24-bitowe kodowanie kolorów RGB . (Wcześniej wersja formatu BMP wykorzystywała trzy bajty na 24-bitowy wpis tabeli mapy kolorów, a wiele plików w tym formacie nadal jest w obiegu, więc wiele nowoczesnych programów odczytujących pliki BMP obsługuje obie odmiany).

Układy bitów pikseli

Z wyjątkiem trybów graficznych o bardzo niskiej rozdzielczości, wczesne komputery domowe i osobiste rzadko implementowały projekt „adresowalny dla wszystkich pikseli” - to znaczy możliwość niezależnej zmiany pojedynczego piksela na dowolny z dostępnych kolorów. Ich ograniczenia wynikały z zastosowania oddzielnych atrybutów kolorów lub obszarów pamięci RAM kolorów , co prowadziło do kolizji atrybutów efekty. Ponadto bity pikseli i / lub linie skanowania pamięci wideo były zwykle ułożone w dziwny sposób, wygodny dla sprzętu generatora wideo (oszczędzając w ten sposób koszty sprzętu na konkurencyjnym cenowo rynku), ale czasami stwarzały trudności dla osób piszących programy graficzne . Bity piksela w obrazach z indeksowanymi kolorami i wszystkimi pikselami adresowalnymi nie zawsze są ciągłe w pamięci wideo lub plikach obrazów ( tj . Adapter graficzny (EGA) i macierz grafiki wideo (VGA) dla Kompatybilne z IBM PC lub buforem wideo Amigi są ułożone jako seria płaszczyzn bitowych (w konfiguracji zwanej planarną ), w której powiązane bity pojedynczego piksela są podzielone na kilka niezależnych map bitowych . W ten sposób bity pikseli są koncepcyjnie wyrównane wzdłuż osi Z 3D. (Koncepcja „głębokości” nie jest tym samym, co głębia pikseli ).

Wczesne formaty plików graficznych, takie jak PIC , przechowywały niewiele więcej niż pusty zrzut pamięci bufora wideo danej maszyny.

Niektóre formaty plików obrazów z indeksowanymi kolorami, takie jak Graphics Interchange Format (GIF), umożliwiają układanie linii skanowania obrazu w sposób przeplatany (nie w porządku liniowym), co pozwala na wyświetlanie wersji obrazu o niskiej rozdzielczości podczas jego pobierania , aby użytkownik komputera mógł zapoznać się z jego zawartością w ciągu kilku sekund przed pojawieniem się całego obrazu. Oto przykład typowego pobierania z przeplotem w pionie w czterech krokach:

IndexedColorSample InterleavedDownload (Caerulea3 crop).png

Jak widać tutaj, obraz został podzielony na cztery grupy linii: grupa A zawiera co czwartą linię, grupa B zawiera linie bezpośrednio następujące po liniach z grupy A, grupa C zawiera również linie następujące bezpośrednio po liniach z grupy B, a grupa D zawiera pozostałe linie, które znajdują się pomiędzy liniami grupy C (bezpośrednio powyżej) i liniami grupy A (bezpośrednio poniżej). Są one przechowywane w pliku w kolejności A, C, B, D, tak że podczas przesyłania pliku druga odebrana grupa (C) linii leży pośrodku między liniami pierwszej grupy, dając najbardziej jednolity przestrzennie i rozpoznawalny możliwy obraz, składający się tylko z dwóch grup linii. Tę samą technikę można zastosować w przypadku większej liczby grup (np. ośmiu), w którym to przypadku na każdym etapie następna wysyłana grupa zawiera linie leżące w środkach lub w pobliżu środków pozostałych pasm, które nie są jeszcze wypełnione danymi obrazu. Ta metoda, z czterema lub ośmioma grupami linii, była powszechnie stosowana we wczesnej sieci World Wide Web w drugiej połowie lat 90. Zamiast pozostawiać widoczne tło (czarne), jak na powyższej ilustracji, częściowy obraz był często prezentowany na ekranie przez zduplikowanie każdej linii w celu wypełnienia przestrzeni pod nią aż do następnej odebranej linii obrazu. Końcowym rezultatem był ciągły obraz o zmniejszonej rozdzielczości pionowej, który zwiększał się do pełnej rozdzielczości w ciągu kilku sekund, gdy nadchodziły późniejsze części danych obrazu.

Zalety

Indeksowane kolory oszczędzają dużo pamięci, miejsca do przechowywania i czasu transmisji: przy użyciu truecolor każdy piksel potrzebuje 24 bitów lub 3 bajtów. Typowe VGA 640×480 rozdzielczość nieskompresowanego obrazu truecolor 640×480×3 = 921 600 bajtów (900 KiB). Ograniczając kolory obrazu do 256, każdy piksel potrzebuje tylko 8 bitów, czyli 1 bajt każdy, więc przykładowy obraz potrzebuje teraz tylko 640 × 480 × 1 = 307 200 bajtów (300 KiB), plus 256 × 3 = 768 dodatkowych bajtów do przechowywania sama mapa palety (zakładając RGB), około jednej trzeciej oryginalnego rozmiaru. Mniejsze palety (4-bitowe 16 kolorów, 2-bitowe 4 kolory) mogą upakować piksele jeszcze bardziej (do jednej szóstej lub jednej dwunastej), oczywiście kosztem dokładności kolorów.

Indeksowany kolor był szeroko stosowany we wczesnych komputerach osobistych i sprzęcie kart graficznych w celu obniżenia kosztów (głównie poprzez wymaganie mniejszej liczby drogich wówczas układów pamięci RAM ), ale także do wygodnego zarządzania obrazami przy procesorach o ograniczonej mocy (rzędu 4 do 8 MHz ), przechowywanie plików ( kasety i dyskietki o małej gęstości ). Godne uwagi systemy grafiki komputerowej intensywnie (lub nawet wyłącznie) wykorzystujące palety pseudokolorów w latach 80. to CGA , EGA i VGA (np. z IBM PC ), Atari ST oraz Amiga OCS i AGA .

Pliki obrazów wymieniane przez sieć CompuServe na początku lat 90. były enkapsulowane w formacie GIF . Później HTML wykorzystywały GIF wraz z innymi indeksowanymi formatami plików obsługującymi kolory, takimi jak PNG , do szybkiej wymiany obrazów o ograniczonych kolorach i przechowywania ich w ograniczonej przestrzeni dyskowej.

Większość formatów plików graficznych , które obsługują indeksowane obrazy kolorowe, często obsługuje również pewien schemat kompresji , zwiększając ich zdolność do przechowywania obrazów w mniejszych plikach.

Ciekawe kolorowe i artystyczne efekty można łatwo uzyskać, zmieniając paletę kolorów indeksowanych obrazów kolorowych, na przykład w celu uzyskania kolorowych obrazów w tonacji sepii . Ze względu na odrębny charakter powiązanego elementu palety indeksowanych obrazów kolorowych, są one idealne do ponownego mapowania obrazów w skali szarości na fałszywe kolory za pomocą palet fałszywych kolorów .

Prostą nakładkę wideo można łatwo uzyskać dzięki technice przezroczystego koloru .

Manipulując rejestrami sprzętowymi kolorów ( tabela wyszukiwania kolorów lub CLUT) karty graficznej w trybach grafiki z indeksowanymi kolorami, można uzyskać pełnoekranowe efekty animacji kolorów bez przerysowywania obrazu — to znaczy przy niskim koszcie czasu procesora; pojedyncza zmiana wartości rejestrów wpływa jednocześnie na cały ekran. Animacja z mapą kolorów, znana również jako kolarstwo kolorów , jest szeroko stosowana w demoscenie . Ekran logo rozruchowego systemu Microsoft Windows w systemach Windows 95, 98, ME i 2000 Professional (który wykorzystuje tryb wyświetlania kolorów VGA 320x200x256, ponieważ jest to największy wspólny mianownik na wszystkich komputerach) wykorzystuje tę technikę do przewijania paska gradientu u dołu ekranu ; obraz jest obrazem statycznym bez przepisywania pikseli po pierwszym wyświetleniu. Niestandardowe obrazy ekranu rozruchowego mogą dotykać cyklicznych kolorów, aby animować inne części obrazów.

Niedogodności

Główną wadą używania kolorów indeksowanych jest ograniczony zestaw jednoczesnych kolorów na obraz. Małe 4- lub 16-kolorowe palety są nadal akceptowane w przypadku małych obrazów ( ikon ) lub bardzo prostych grafik, ale przy odtwarzaniu rzeczywistych obrazów stają się prawie bezużyteczne. Niektóre techniki, takie jak kwantyzacja kolorów , antyaliasing i dithering , połączone razem, mogą tworzyć indeksowane 256-kolorowe obrazy porównywalne z oryginałem do akceptowalnego poziomu.

4 kolory 16 kolorów 256 kolorów Prawdziwy kolor
Screen color test Amiga 4colors.png Screen color test VGA 16colors.png Screen color test VGA 256colors.png RGB 24bits palette sample image.jpg

Indeksowane obrazy kolorowe są w dużym stopniu zależne od własnych palet kolorów. Z wyjątkiem kilku dobrze znanych palet o stałym kolorze (takich jak paleta Color Graphics Adapter — CGA), surowe dane obrazu i/lub tabele map kolorów nie mogą być niezawodnie wymieniane między różnymi plikami obrazów bez pośredniego mapowania. Ponadto, jeśli oryginalna paleta kolorów dla danego indeksowanego obrazu zostanie utracona, przywrócenie jej może być prawie niemożliwe. Oto przykład tego, co się stanie, gdy indeksowany obraz kolorowy (poprzednia papuga) zostanie powiązany z nieprawidłową paletą kolorów:

Incorrect 8bits palette sample image.png

Tryby graficzne z indeksowanymi kolorami dla kart graficznych mają limit 16 lub 256 kolorów narzucony przez sprzęt. Indeksowane obrazy kolorowe z bogatymi, ale niekompatybilnymi paletami mogą być dokładnie wyświetlane tylko pojedynczo, tak jak w pokazie slajdów . Gdy konieczne jest wyświetlenie wielu obrazów razem, jak w mozaice miniatur , często używana jest wspólna lub wzorcowa paleta , która obejmuje jak najwięcej różnych odcieni w jednym zestawie, ograniczając w ten sposób ogólną dostępność dokładnych kolorów.

Poniższy obraz to mozaika czterech różnych indeksowanych kolorowych obrazów renderowanych za pomocą jednej wspólnej palety głównej 6-8-5 poziomów RGB plus 16 dodatkowych odcieni szarości. Zwróć uwagę na ograniczoną gamę kolorów używanych dla każdego obrazu i liczbę niewykorzystanych pozycji palety.

IndexedColorSample (Mosaic).png

Wiele urządzeń wyświetlających z indeksowanymi kolorami nie osiąga limitu 24-bitowego dla pełnej palety RGB. Na przykład karta VGA dla komputerów IBM PC zapewnia tylko 18-bitową paletę RGB z 262 144 różnymi możliwymi kolorami zarówno w 16-, jak i 256-indeksowanych kolorowych trybach graficznych.

Niektóre programy do edycji obrazów umożliwiają zastosowanie korekcji gamma do palety plików obrazów z indeksowanymi kolorami. Ogólnie stosowanie korekcji gamma bezpośrednio do mapy kolorów jest złą praktyką ze względu na utratę oryginalnych wartości kolorów RGB. Lepiej zastosować korekcję gamma w sprzęcie wyświetlającym (większość nowoczesnych kart graficznych obsługuje tę funkcję) lub jako aktywny krok pośredni oprogramowania do renderowania poprzez zarządzanie kolorami, który zachowuje oryginalne wartości kolorów. Tylko wtedy, gdy indeksowane obrazy kolorowe są przeznaczone dla systemów, które nie mają żadnej kalibracji kolorów i nie są przeznaczone do obsługi różnych platform, korekcja gamma może zostać zastosowana do samej tabeli kolorów.

Formaty plików obrazów obsługujące kolory indeksowane

Oto niektóre z najbardziej reprezentatywnych formatów plików graficznych obsługujących tryby kolorów indeksowanych. Niektóre z nich obsługują inne tryby (np. truecolor), ale tutaj wymieniono tylko tryby kolorów indeksowanych.

UWAGA: większość formatów obsługuje również tabelę kolorów z mniejszą liczbą kolorów niż maksymalna, jaką może zaoferować dana głębia bitowa.
Akronim Pełne imię i nazwisko Twórca rozszerzenie DOS-a 1-bitowy (2) 2-bitowy (4) 3-bitowy (8) 4-bitowy (16) 5-bitowy (32) 6-bitowy (64) 7-bitowy (128) 8-bitowy (256) Kompresja
PCX Plik obrazu pędzla PC Firma ZSoft .pcx Tak Tak NIE Tak NIE NIE NIE Tak RLE
ILBM Przeplatana mapa bitowa Sztuka elektroniczna .lbm , .iff Tak Tak Tak Tak Tak Tak* ( tryb EHB , 64 kolory) Tak* Tak* Nieskompresowany, RLE
GIF-y Format wymiany grafiki Compuserve gif Tak Tak Tak Tak Tak Tak Tak Tak LZW
TGA TARGA Format pliku Prawdziwa wizja .tga , .vda , .icb , .vst NIE NIE NIE NIE NIE NIE NIE Tak Nieskompresowany, RLE
SPRZECZKA Oznaczony format pliku obrazu Aldusa .tif Tak Tak Tak Tak Tak Tak Tak Tak Nieskompresowane, DEFLATE , LZW , PackBits , CCITT Group 3 fax , CCITT Group 4 fax , JPEG , inne, mniej popularne (**)
BMP Bitmapa niezależna od urządzenia Microsoftu .bmp , .dib , .rle Tak NIE NIE Tak NIE NIE NIE Tak Nieskompresowany, RLE (***)
PSD Dokument Photoshopa Systemy Adobe .psd NIE NIE NIE NIE NIE NIE NIE Tak PackBity
PNG Przenośna Grafika Sieciowa Grupa Rozwoju PNG png Tak Tak NIE Tak NIE NIE NIE Tak SIADAĆ
* Tryby 64- (prawda, nie EHB), 128- i 256-kolorowe dostępne tylko dla chipsetu AGA Amiga.
** Natywna obsługa zastrzeżonych schematów kompresji.
*** RLE z opcjonalnymi zastrzeżonymi przeskokami Delta.

Notatki

Zobacz też

  •   Julio Sanchez i Maria P. Canton (2003). Podręcznik grafiki komputerowej . Prasa CRC. ISBN 0-8493-1678-2 .

Linki zewnętrzne