Кіріспе
Цифрлық кескіндердің түстерін шектеулі түрде басқару тәсілі. Компьютерде индекстелген түс – компьютер жадын және файлдарды сақтауды үнемдеу, сондай-ақ дисплейді жаңарту мен файлдарды беру жылдамдығын арттыру мақсатында цифрлық кескіндердің түстерін шектеулі түрде басқару тәсілі. Бұл векторлық кванттаудың бір түрі. Кескін осылай кодталғанда түс туралы ақпарат бейне пиксельдері арқылы тікелей берілмейді, оның орнына түс іздеу кестесі (CLUT) немесе палитра деп аталатын жеке деректерде сақталады: түс сипаттамаларының массиві. Массивтегі әр элемент өзінің орны бойынша индекстелген түсті көрсетеді. Әрбір кескін пикселі түсінің толық сипаттамасын қамтымайды, тек палитрадағы индексін ғана қамтиды. Бұл тәсіл кейде псевдотүс немесе жанама түс деп те аталады, себебі түстерге жанама жолмен жүгініледі.
In computing, indexed color is a technique to manage digital images' colors in a limited fashion, in order to save computer memory and file storage, while speeding up display refresh and file transfers. It is a form of vector quantization compression. When an image is encoded in this way, color information is not directly carried by the image pixel data, but is stored in a separate piece of data called a color lookup table (CLUT) or palette: an array of color specifications. Every element in the array represents a color, indexed by its position within the array. Each image pixel does not contain the full specification of its color, but only its index into the palette. This technique is sometimes referred as pseudocolor or indirect color, as colors are addressed indirectly.
Тарих
8 биттік индекстелген түстерді, фрейм буферлерін және түс іздеу кестелерін қолданған алғашқы графикалық дисплей жүйелеріне Шоуптың 1973 жылғы SuperPaint және Каджия, Сазерленд және Чидлдің 1975 жылы сипаттаған бейне фрейм буфері жатады. Бұл жүйелер 256 RGB түстің палитрасын қолдады. SuperPaint ауыстыру тізімдік фрейм буферін пайдаланса, ал Каджия және авторлар тобының жүйесі кездейсоқ кіруге болатын фрейм буферін қолданды. Алғашқы жүйелердің кейбіреулері 3 биттік түстерді қолданған, бірақ әдетте биттерді түс іздеу кестесіндегі индекс ретінде бірлесіп емес, дербес қызыл, жасыл және көк жағдайындағы қосу/өшіру биттері ретінде қарастырған.
Түстер мен палитралар
Түстердің берілген индекстелген түсті кескінінің түстер палитрасының картасында қалай кодталуы, мақсатты платформаға байланысты.
Ертедегі бояу әдістері
Көптеген ертедегі жеке және үй компьютерлерінде өте шектеулі аппараттық палитралар болды, олар өте аз түстер жиынтығын шығара алатын. Мұндай жағдайда, әрбір пикселдің мәні осы түстердің бірімен тікелей байланысты болатын. Белгілі мысалдарға Apple II, Commodore 64 және IBM PC CGA кіреді, олардың барлығы 16 түстің тұрақты жиынтығын шығаратын аппараттық құралдармен жабдықталған. Бұл жағдайларда, сурет әр пикселді 4 битпен кодтай алады, тікелей қолданылатын түсті таңдайды. Дегенмен, көп жағдайда дисплей аппараттары қосымша режимдерді қолдайды, онда бір суретте осы түстердің тек кіші бөлігі ғана пайдаланылуы мүмкін, бұл жадты үнемдеуге көмектесетін тиімді тәсіл. Мысалы, CGA-ның 320x200 ажыратымдылық режимі бір уақытта 16 түстің тек төртеуін ғана көрсетуге мүмкіндік береді. Палитралар толығымен меншік құқығында болғандықтан, бір платформада жасалған суретті басқа платформада дұрыс көрсету мүмкін емес. Бұл дәуірдегі басқа машиналар көбірек түстер жиынтығын шығара алатын, бірақ әдетте олардың тек бір бөлігін ғана бір суретте пайдалануға рұқсат етілді. Мысалы, Atari 8 бит машиналарындегі 256 түстік палитра немесе ReGIS графикалық режиміндегі VT241 терминалының 4096 түсі. Мұндай жағдайларда, сурет бір уақытта барлық түстердің шағын бөлігін ғана көрсетуге мүмкіндік беретін, Atari және VT241-де бір мезгілде 16 түске дейін. Жалпы, бұл жүйелер өздерінің түсті бауырларына ұқсас жұмыс істеді, бірақ басты айырмашылық – бейне жадының шектеулі көлемін ескере отырып, палитрада пиксел деректеріне тікелей кодтау үшін тым көп түс болды. Оның орнына, олар түс іздеу кестесін (CLUT) пайдаланды, онда әр пикселдің деректері CLUT-тағы жазбаға сілтеме жасайды, ал CLUT бағдарламалық басқару арқылы орнатылды. Бұл, суретті дұрыс қайта шығару үшін CLUT деректері шикі сурет деректерімен бірге сақталуы керек дегенді білдіреді.
RGB
YPbPr немесе осыған ұқсас компоненттік бейне түстеріне негізделген аппараттық палитралар 1980 жылдардың ортасында көбірек икемді RGB түс моделімен ауыстырылды, онда берілген түсті үш негізгі түстің – қызыл, жасыл және көк – әртүрлі мөлшерін араластыру арқылы алуға болады. Әр түрлі түстердің жалпы саны негізгі деңгейлер санына және берілген аппараттық жүзеге асыруға байланысты болса да (9 бит RGB 512 комбинацияны ұсынады, 12 бит RGB 4096 және т.б.), бұл модельде сандық-аналогтық түрлендіргіштер (DAC) түстерді жасайды – аппараттық дизайнды жеңілдетеді, ал бағдарламалық қамтамасыз ету деңгейлерді абстрактілі түрде пайдалана алады және RGB түстерін құрылғыға тәуелсіз түрде басқара алады. Индекстелген бейне файлдарының палитраларында RGB форматында сақталған түстермен кез келген бейне тиісті түрлендірулер арқылы кез келген жүйеде, аппараттық жүзеге асыруда қолданылатын түс тереңдігіне қарамастан, көрсетілуі мүмкін. Бүгінгі таңда индекстелген түсті бейнелерді басқаратын дисплейлік аппараттық және бейне файл форматтары түстерді RGB форматында дерлік басқарады, де-факто стандартты кодтау truecolor немесе 24 бит RGB деп аталады, онда 16 777 216 түрлі мүмкін түс бар. Алайда, индекстелген түсті суреттер 24 биттік RGB түс кодтамасына шын мәнінде шектелмейді; сурет палитралары кез келген түс кодтамасын ұстай алады. Мысалы, PDF файл форматы басқа түс кеңістіктерінде индекстелген түстерді қолдайды, атап айтқанда CMYK, және әдетте Adobe Distiller кескіндегі түстердің жалпы саны 256-ға тең немесе одан аз болған кезде кескіндерді индекстелген түстерге түрлендіреді. RGB пайдаланғанда, TIFF және PNG файл форматтары RGB үштігін 16 биттік дәлдігімен (бір компонентке 65 536 деңгей) сақтауды ұсынады, бұл жалпы 48 биттік пикселге әкеледі. TIFF стандартының ұсынылып отырған кеңейтілуі RGB емес түс палитраларын рұқсат етеді, бірақ бұл техникалық себептерден бағдарламалық жасақтамада ешқашан іске асырылмаған. BMP файл форматының түс картасының кестесі индекстелген түс режимінде RGB емес, BGR ретімен жазбаларды сақтайды және (қазіргі нұсқада) өңдеу кезінде 32 биттік сөзді сәйкестендіруге сәйкес келетін төсем үшін қосымша пайдаланылмаған байтқа ие, бірақ ол негізінен 24 биттік RGB түс кодтамасы болып табылады. (BMP форматының бұрынғы нұсқасы 24 биттік түс картасы кестесіне кіру үшін үш байтты қолданған, және бұл форматтағы көптеген файлдар әлі де айналыста, сондықтан BMP файлдарын оқитын көптеген заманауи бағдарламалар екі нұсқаны да қолдайды.)
Артықшылықтар
Индекстелген түс жадты, сақтау кеңістігін және беру уақытын үнемдейді: шынайы түс қолданғанда әр пиксельге 24 бит немесе 3 байт қажет. Типикалық 640×480 VGA ажыратымдылығындағы, шынайы түсті, сығылмаған кескіннің көлемі 640×480×3 = 921,600 байт (900 КиБ) болады. Кескін түстерін 256-ға дейін шектегенде, әр пиксельге тек 8 бит немесе 1 байт қажет, сондықтан мысал кескінге енді тек 640×480×1 = 307,200 байт (300 КиБ) қажет, сонымен қатар 256×3 = 768 қосымша байт палитраны сақтау үшін керек болады (RGB ескеретін болсақ), бұл бастапқы көлемнің шамамен үштен бірін құрайды. Кішкентай палитралар (4 бит – 16 түс, 2 бит – 4 түс) пиксельдерді одан да ықшамдауға мүмкіндік береді (алтыдан бір немесе он екіден бір бөлігіне дейін), бірақ бұл түс дәлдігінен айырылуға әкеледі. Индекстелген түс шығындарды азайту үшін (бастысы, сол кездегі қымбат RAM чиптерін аз қажет ету арқылы) ертедегі жеке компьютерлерде және дисплей адаптерлерінің аппараттық құралдарында кеңінен қолданылды, сонымен қатар шектеулі қуатты процессорлар (4-тен 8 МГц дейін) және файлдарды сақтау (кассеталық таспалар мен төмен тығыздықты дискеттер) үшін бейнелерді басқаруға да ыңғайлы болды. 1980 жылдары псевдотүсті палитраларды кеңінен (немесе тіпті тек) қолданған танымал компьютерлік графикалық жүйелерге CGA, EGA және VGA (IBM PC үйлесімділері үшін), Atari ST және Amiga OCS және AGA жатады. 1990 жылдардың басында CompuServe желісі арқылы алмасылған кескін файлдары GIF форматында сақталды. Кейін HTML веб-беттері GIF-ті және басқа индекстелген түстерді қолдайтын PNG сияқты файл форматтарымен бірге шектеулі түсті кескіндерді жылдам алмасу және оларды шектеулі сақтау кеңістігінде сақтау үшін пайдаланды. Индекстелген түсті кескіндерді қолдайтын көптеген кескін файл форматтары кейбір сығылу схемаларын да қолдайды, бұл кескіндерді кішкентай файлдарда сақтау мүмкіндігін арттырады. Индекстелген түсті кескіндердің түстер палитрасын өзгерту арқылы қызықты түсті және көркемдік эффекттерге оңай қол жеткізуге болады, мысалы, түсті сепия тоналы кескіндерді жасау үшін. Индекстелген түсті кескіндердің жеке палитра элементтерінің ерекшелігіне байланысты, олар жалған түсті палитраларды пайдалану арқылы сұр түсті кескіндерді жалған түсті кескіндерге түрлендіруге өте қолайлы. Түсті техниканы пайдаланып қарапайым бейне жабылуын оңай жүзеге асыруға болады. Индекстелген түсті графикалық режимдерде дисплей адаптерінің түсті аппараттық регистрлерін (түсті іздеу кестесі немесе CLUT) өзгерту арқылы толық экранды түсті анимациялық эффекттерге қол жеткізуге болады, яғни кескінді қайта сызбасыз, процессор уақытын аз шығындау арқылы; регистрлердің мәндерін бір рет өзгерткенде бүкіл экран бірден өзгереді. Түсті карта анимациясы, сондай-ақ түсті айналым деп те аталады, демосценада кеңінен қолданылады. Windows 95, 98, ME және 2000 Professional жүйелеріндегі Microsoft Windows жүктеу логотипі экраны (барлық компьютерлерде ең үлкен ортақ белгі болғандықтан VGA 320x200x256 түсті дисплей режимін қолданады) осы әдісті экраның төменгі жағындағы жылжымалы градиент жолағы үшін пайдаланады; кескін бастапқыда көрсетілгеннен кейін пикселдері қайта жазылмаған статикалық кескін болып табылады. Бастау экранының бейімделген кескіндері циклденген түстерді пайдаланып, кескіндердің басқа бөліктерін жандандыруға мүмкіндік береді.
Индекстелген түстерді қолдайтын кескін файл пішімдері
Бұл индекстелген түстер режимін қолдайтын ең көп таралған кескін файл форматтарының бірнешеуі. Олардың кейбіреулері басқа режимдерді де қолдайды (мысалы, шынайы түс), бірақ тізімде тек индекстелген түстер режимі ғана көрсетілген. ЕСКЕРТУ: Көптеген форматтар берілген биттік тереңдік ұсына алатын максималды түстер санынан кем түстерді қамтитын түстер кестесін де қолдайды. Аббревиатура Толық атауы Тұрақтысы DOS кеңейтімі 1 бит (2) 2 бит (4) 3 бит (8) 4 бит (16) 5 бит (32) 6 бит (64) 7 бит (128) 8 бит (256) Сығымдау PCX PC Paintbrush Image File ZSoft Corporation pcx RLE ILBM InterLeaved BitMap Electronic Arts lbm, iff Сығымдалмаған, RLE GIF Графикалық алмасу форматы Compuserve gif LZW TGA TARGA Файл форматы Truevision tga, vda, icb, vst Сығымдалмаған, RLE TIFF Tag(ged) Image File Format Aldus tif Сығымдалмаған, DEFLATE, LZW, PackBits, CCITT 3 тобындағы факс, CCITT 4 тобындағы факс, JPEG, басқалары сирек кездеседі (**) BMP Құрылғыға тәуелсіз Bitmap Microsoft bmp, dib, rle Сығымдалмаған, RLE (***) PSD Photoshop Document Adobe Systems psd PackBits PNG Portable Network Graphics PNG Development Group png DEFLATE
* 64 (шынайы, EHB емес), 128 және 256 түсті режимдер тек AGA Amiga чипсеті үшін қолжетімді. ** Меншікті сығымдау схемаларын туылған қолдауы. *** Міндетті Delta секірулерімен RLE.