Кіріспе

түстерді іздеу кестелері
Компьютерлік графикада, қол жетімді түстердің шектеулі жиынтығы.

Компьютерлік графикада палитра – сурет жасау үшін қолданылатын түстердің жиынтығы. Кейбір жүйелерде палитра аппараттық құрылыммен анықталады, ал басқаларында ол динамикалық болып келеді, әдетте түстерді іздеу кестесі (CLUT) арқылы іске асырылады. CLUT – бұл сәйкестік кестесі, онда белгілі бір түстік кеңістіктің түс қайту диапазонынан таңдалған түстерге индекс беріледі, осы индекс арқылы оларға сілтеме жасауға болады. Түстерді индекс арқылы сілтемелеу, түстік кеңістіктегі нақты түстерді сипаттау үшін қажетті ақпараттан кем көлемде болады, бұл деректерді пайдалануды – өңдеуді, деректерді беру жылдамдығын, RAM пайдалануын және жадты – азайтуға мүмкіндік береді. CLUT сілтемелері арқылы көрсетілген суреттер индекстелген түсті суреттер деп аталады.

Сипаттама

2019 жылға қарай графикалық карталарда ең көп қолданылатын сурет түстер кеңістігі – пикселге 8 биттік түс тереңдігі бар RGB түс моделі. Бұл техниканы пайдалану арқылы, RGB арналарының әрқайсысындағы жарық деңгейін сипаттау үшін пикселге 8 бит жұмсалады, демек 24 бит әр пикселдің түсін толыққанды сипаттайды. Осылайша, мұндай аппараттық құралдың толық жүйелік палитрасы 224 түстен тұрады. CLUT арқылы кіші палитраларды қолданудың мақсаты – бір мезгілде өңделетін мүмкін болатын түстер жиынтығын азайту арқылы пикселге жұмсалатын биттер санын азайту (көбінесе бейімделу әдістері қолданылады). Әр мүмкін түске индекс тағайындалады, бұл әр түске түсті толыққанды сипаттау үшін қажетті ақпараттан кем көлемде сілтеме жасауға мүмкіндік береді. Мысалы, GIF файл форматында жиі қолданылатын 256 түсті палитраны қарастырайық, онда кескінді бейнелеу үшін 24 биттік түс кеңістігінен 256 түс таңдалып алынады, әрқайсысына 8 биттік индекс беріледі. Осылайша, жүйе RGB түс кеңістігіндегі кез келген түсті қайта жасай алады (егер 256 түстің шектеуі рұқсат берсе), пикселге арналған сақтау көлемі 24 биттен 8 битке дейін төмендейді.

Палитралардың мөлдірлігі

Индекстелген түстері бар кескінде бір палитра жазбасын қарапайым бейне жабу үшін мөлдір түс ретінде белгілеуге болады: белгілі бір кескінді фонға осылай қойып, жабысқан кескіннің бір бөлігі фонды жасырады, ал қалғаны жасырмайды. Фильмдер мен телешоулардың атаулары мен титрлерін біріктіру – бейне жабудың типолық қолданысы. Үстіне қойылатын кескінде (индекстелген түс деп есептесек) берілген палитра жазбасы мөлдір түсті білдіреді. Әдетте индекс нөмірі 0 болады, бірақ егер жабу бағдарламалық құралмен жасалса, басқа нөмірді таңдауға болады. Жобалау кезінде мөлдір түсті палитра жазбасына кездейсоқ (әдетте ерекше) түс тағайындалады. Мысалда, көрсету құрылғысының стандартты көрсеткіш стрелкасы қызғылт сары фонға салынған, сондықтан қызғылт сары аймақтар мөлдір аймақтарды (сол жақта) көрсетеді. Орындау кезінде жабысқан кескін фондық кескіннің үстіне кез келген жерге орналастырылады және пикселдің түс индексі мөлдір түс болса, фондық пиксел сақталады, әйтпесе ол ауыстырылады. Бұл техника көрсеткіштер үшін, типолық 2D бейне ойындарында кейіпкерлер, оқтар және т.б. (спрайттар), бейне титрлері және басқа бейне араластыру қолданбалары үшін қолданылады. Кейбір ерте компьютерлер, мысалы Commodore 64, MSX және Amiga, аппараттық деңгейде спрайттарды және/немесе толық экранды бейне жабуды қолдайды. Бұл жағдайларда мөлдір палитра жазбасының нөмірі аппараттық құралмен анықталады және ол 0 болады. Кейбір индекстелген түсті файл форматтары, мысалы GIF, белгілі бір палитра жазбасын мөлдір деп белгілеуге мүмкіндік береді, кез келген кескінге қолданылатын палитра жазбаларының ішінде еркін таңдауға болады. BMP файл форматы түс кестесінде альфа арна мәндері үшін орын қалдырады, бірақ қазіргі уақытта бұл орын кез келген мөлдірлік деректерін сақтау үшін қолданылмайды және нөлге теңестіріледі. Ал PNG палитра жазбаларында альфа арналарын қолдайды, бұл палитралы кескіндерде жартылай мөлдірлікті қамтамасыз етеді. Шын түсті кескіндермен жұмыс істегенде, кейбір бейне араластыру жабдықтары мөлдір түс ретінде RGB үштігін (0,0,0) қолдана алады (қызыл, жасыл, көк жоқ: қараның ең қара көлеңкесі, кейде осы жағдайда «суперқара» деп аталады). Жобалау кезінде ол «магиялық қызғылт» түсімен ауыстырылады. Сол сияқты, типолық десктоптық басылымдық бағдарламалық құралдар фотосуреттер мен иллюстрациялардан таза ақ RGB үштігін (255,255,255) қабылдауы мүмкін, бұл мәтін абзацтарының кескіннің шегінен өтуіне мүмкіндік береді, кескіннің нысандарында мәтінді ретсіз орналастыру үшін. 2D бояу бағдарламалары, мысалы Microsoft Paint және Deluxe Paint, кесу, көшіру және қою операцияларын орындағанда пайдаланушы белгілеген фондық түсті мөлдір түс ретінде қолдануы мүмкін. Бұл екеуі байланысты болғанымен (олар бірдей мақсаттар үшін қолданылады), кескіннің биттік маскалары мен альфа арналары палитраларды немесе мөлдір түстерді мүлдем қолданбайтын, бірақ кескінге қосылған қосымша екілік дерек қабаттарын қолданатын техникалар болып табылады.

Microsoft Windows-тың жүйелік жүйесі

Microsoft Windows қолданбалары Win32 API-нің арнайы функциялары арқылы 4 бит немесе 8 бит индекстелген түсті дисплей құрылғыларының палитрасын басқарады. Highcolor және Truecolor дисплей режимдерінде палитраларды қолдану сұрақ тудырады. Бұл API-лер «жүйе палитрасы» және көптеген «логикалық палитралар»пен жұмыс істейді. «Жүйе палитрасы» – түсті дисплейдің аппараттық тізілімдерінің RAM-дағы көшірмесі, негізінен физикалық палитра, және ол жүйенің бірегей, ортақ ресурсы болып табылады. Жүгірту кезінде ол әдепкі жүйе палитрасымен (көбінесе көптеген бағдарламалармен жақсы жұмыс істейтін «негізгі палитра») жүктеледі. Егер белгілі бір қолданба түсті графиканы және/немесе кескіндерді шығаруға ниеттенсе, ол өзінің «логикалық палитрасын» орната алады, яғни өзінің жеке түстер таңдауын (256-ға дейін). Қолданба экранға көрсетуге тырысатын әрбір графикалық элемент өзінің логикалық палитрасының түстерін пайдаланады деп есептеледі. Кез келген бағдарлама бір немесе бірнеше логикалық палитраларды еркін басқара алады, алдын ала күтілетін араласуларсыз. Шығыс жасау алдында бағдарлама өзінің логикалық палитрасын жүзеге асыруы керек: жүйе «логикалық» түстерді «физикалық» түстермен сәйкес келтіруге тырысады. Егер жоспарланған түс жүйе палитрасында болса, жүйе логикалық палитра индекстерін жүйелік палитра индекстерімен шамамен сәйкестендіреді (өйткені олар сирек үйлеседі). Егер жоспарланған түс әлі болмаса, жүйе ішкі алгоритмді қолданады, ол жүйе палитрасындағы ең аз пайдаланылатын түсті (әдетте, фондық терезеде қолданылатын) жойып, оны жаңа түспен ауыстырады. Жүйе палитрасындағы түстер саны шектеулі болғандықтан, алгоритм ұқсас түстерді біріктіруге тырысады және артық түстерді жасаудан қашады. Соңғы нәтиже экранға бір уақытта қанша қолданба өз түстерін көрсетуге тырысқанына байланысты. Алдыңғы терезеге әрқашан басымдық беріледі, сондықтан фондық терезелер әртүрлі әрекет етеді: бұзылудан бастап жылдам қайта суреттелуге дейін. Жүйе палитрасы өзгерген кезде жүйе әрбір қолданбаны хабардар ету үшін белгілі бір оқиғаны тудырады. Оқиға алынғаннан кейін терезе бір Win32 API функциясын пайдаланып жылдам қайта суреттелуі мүмкін. Бірақ бұл бағдарламалық кодта нақты көрсетілуі керек; сондықтан көптеген бағдарламалар осы оқиғаны дұрыс өңдей алмайды және олардың терезелері бұзылуы мүмкін. Қолданба жүйе палитрасын белгілі бір түстермен (нақты ретпен) жүктеуге мәжбүрлей алады, жүйені анимацияға арналған түстер екенін айтып «алдап» (физикалық палитрадағы түстердің жылдам өзгеруі). Жүйе содан кейін осы аппараттық палитра жазбалары палитра түсін басқару алгоритмі үшін бос емес деп есептейді. Соңғы нәтиже түс мәжбүрлеу бағдарламасының шеберлігіне, басқа бағдарламалардың мінез-құлқына (бұл мәселе стандартты жағдайда да бірдей) және операциялық жүйенің өзіне байланысты.