Кіріспе

Компьютерлік графикада түс кванттау немесе түс кескінін кванттау - түс кеңістіктеріне қолданылатын кванттау; бұл суретте қолданылатын түрлі-түсті түстердің санын азайтатын процесс, әдетте жаңа сурет түпнұсқа суретке мүмкіндігінше визуалды ұқсас болуы керек. Бит карталарда түстерді кванттауды орындау үшін компьютерлік алгоритмдер 1970-жылдардан бері зерттеледі. Түсті кванттау, әдетте, жад шектеулеріне байланысты, шектеулі сандағы түстерді ғана көрсете алатын құрылғыларда көптеген түстермен бейнелерді көрсету үшін өте маңызды және белгілі бір түрдегі бейнелерді тиімді сығыстыруға мүмкіндік береді. "Рыс кванттау" атауы негізінен компьютерлік графиканың ғылыми әдебиеттерінде қолданылады; қолданбаларда оптималданған палитраны құру, оптималданған палитраны құру немесе түс тереңдігін азайту сияқты терминдер қолданылады. Олардың кейбіреулері адастырушы, өйткені стандартты алгоритмдермен шығарылған палитралар мүмкіндігінше жақсы емес.

Алгоритмдер

Стандартты әдістердің көпшілігі түстердің кванттануын үш өлшемді кеңістікте нүктелерді топтау мәселесі ретінде қарастырады, мұнда нүктелер бастапқы кескінде кездесетін түстерді білдіреді, ал үш ось үш түстер арнасын білдіреді. Кез келген үш өлшемді кластерлеу алгоритмін түстерді кванттау үшін қолдануға болады және керісінше. Кластерлер орналастырылғаннан кейін, әдетте, әрбір кластердегі нүктелер орташаланып, осы кластердегі барлық түстер картаға түсірілетін өкілдік түсті алады. Үш түсті арналар әдетте қызыл, жасыл және көк болады, бірақ тағы бір танымал таңдау - Лабораториялық түстер кеңістігі, онда Евклидтік қашықтық қабылдау айырмашылығына сәйкес келеді. Түсті кванттау үшін ең танымал алгоритм, оны 1979 жылы Пол Хекберт ойлап тапты, ол медианды кесу алгоритмі. Бұл схеманың көптеген нұсқалары қолданылуда. Осы уақытқа дейін түстерді кванттаудың көпшілігі популяциялық алгоритм немесе популяциялық әдіс арқылы жасалды, ол негізінен тең көлемді диапазонның гистограммасын құрастырады және түстерді ең көп нүктелерді қамтитын диапазонға береді. Қазіргі заманғы танымал әдіс - октрелерді пайдалану арқылы кластерлеу, оны алғаш рет Герваутц пен Пургатхофер ойлап тапты және Xerox PARC зерттеушісі Дэн Блумберг жетілдірді. Егер палитра тұрақты болса, операциялық жүйелерде қолданылатын сияқты нақты уақыт түстер кванттау жүйелерінде жиі кездесетіндей, түстер кванттау әдетте "тікелей жол қашықтығы" немесе "ең жақын түстер" алгоритмі арқылы жасалады, ол тек бастапқы кескіндегі әр түсті алып, ең жақын палитраны табады, мұнда қашықтық үш өлшемді кеңістіктегі екі сәйкес нүкте арасындағы қашықтықпен анықталады. Басқаша айтқанда, егер түстер болса және , біз Евклидтік қашықтықты азайтамыз: Бұл түстер текшесін Вороной диаграммасына тиімді түрде ыдыратады, онда палитраның жазулары нүктелер болып табылады және жасушада барлық түстер бар, олар бір палитраның жазуына сәйкес келеді. Вороной диаграммаларын есептеу және берілген нүкте қай аймаққа жататынын анықтау үшін есептеу геометриясынан тиімді алгоритмдер бар; іс жүзінде индекстелген палитралар өте кішкентай, сондықтан олар әдетте артық. Түсті кванттау жиі дитерлеумен біріктіріледі, бұл тегіс градиенттерді кванттау кезінде пайда болатын жолақтар сияқты жағымсыз артефакттерді жоюға және көп сандағы түстердің көрінісін беруге мүмкіндік береді. Түсті кванттаудың кейбір заманауи схемалары палитраны таңдауды бір кезеңде дитерлеумен біріктіруге тырысады, оларды өз бетінше орындаудың орнына. Әртүрлі тәсілдермен басқа да аз қолданылады. 1995 жылы Олег Веревка ойлап тапқан Локалды K алгоритмі "резервтелген түстер" негізгі жиынтығы жүйеге орнатылған және әр түрлі түстер схемалары бар көптеген суреттер бір мезгілде көрсетілуі мүмкін терезелік жүйелерде пайдалану үшін жасалған. Бұл палитрада бастапқы болжамды жасайды, содан кейін оны қайталап жетілдіреді. Түсті кванттаудың алғашқы күндері k орта кластерлеу алгоритмі жоғары есептеу талаптары мен инициализацияға сезімтал болғандықтан жарамсыз деп танылды. 2011 жылы М. Эмре Селеби k ортасының түсі кванттандырушы ретінде қайта зерттеді. Ол k құралының тиімді іске асырылуы көптеген түсті кванттау әдістерінен артық екенін көрсетті. Жоғары сапалы, бірақ баяу NeuQuant алгоритмі бейнелерді 256 түске дейін азайтады, бұл Kohonen нейрондық желісін "кіріспе кескіндегі түстердің таралуын үйрету арқылы өзін-өзі ұйымдастыратын" жаттықтырады. Әр нейронның RGB кеңістігіндегі орнын алу көршілес түстердің ұқсас болатын жоғары сапалы түстер картасын береді". Бұл әсіресе градиенттері бар суреттер үшін тиімді. Соңында, жаңа әдістердің бірі - Бонн университетінің Пузича, Хелд, Кеттер, Бухман және Фелнер ойлап тапқан кеңістіктік түстерді кванттау, бұл палитра жасаумен және адамның қабылдауының оңайлатылған моделімен бірігіп, тіпті өте аз сандағы түстер үшін де визуалды әсерлі нәтижелер береді. Ол палитраны таңдауды кластерлеу проблемасы ретінде қарамайды, өйткені түпнұсқалық кескіндегі жақын орналасқан пикселдердің түстері пикселдің түсіне де әсер етеді. Үлгі суреттерін қараңыз.

Тарих және қолдану

Компьютерлердің алғашқы күндері бейне жадының шектеулі болуына байланысты бейне адаптерлері 2, 4, 16 немесе (әдетте) 256 түсті ғана қолдайтын; олар бейне жадыны көбірек түстерге емес, көбірек пикселдерге (жоғары резолюцияға) арнайтын. Түсті кванттау осы компромисті ақтауға көмектесті, өйткені 16 және 256 түстер режимдерінде көптеген жоғары түсті бейнелерді шектеулі визуалды нашарлатумен көрсетуге мүмкіндік берді. Көптеген операциялық жүйелер 256 түсті бейне режимінде жоғары түсті бейнелерді көру кезінде кванттау мен дитерлеуді автоматты түрде орындайды, бұл 256 түсті бейне режимдерімен шектелген бейне құрылғылары басым болған кезде маңызды болды. Қазіргі заманғы компьютерлер миллиондаған түстерді бірден көрсете алады, бұл адам көзімен ажыратуға болатыннан әлдеқайда көп, бұл қолданбаны негізінен мобильді құрылғылар мен мұрагерлік аппараттармен шектейді. Қазіргі кезде түстерді кванттау негізінен GIF және PNG кескіндерінде қолданылады. GIF, ұзақ уақыт бойы World Wide Web-дегі ең танымал жоғалтусыз және анимацияланған битмап форматы, тек 256 түске дейін қолдайды, бұл көптеген суреттер үшін кванттауды қажет етеді. Кейбір ерте веб-браузерлер бейнелерді веб-түстер деп аталатын белгілі бір палитраны қолдануға мәжбүр етті, бұл оптимизацияланған палитралармен салыстырғанда сапаның нашарлауына әкелді. PNG кескіндері 24 битті түстерді қолдайды, бірақ көбінесе түстерді кванттау арқылы визуалды нашарлатусыз файл өлшемін әлдеқайда кішірейтуге болады, өйткені PNG файлдары палитраланған кескіндер үшін пикселге аз бит пайдаланады. Камераның линзасы арқылы қол жетімді түстердің шексіз санын компьютер экранында көрсету мүмкін емес; сондықтан кез келген фотосуретті цифрлық бейнелеуге айналдыру міндетті түрде қандай да бір кванттауды қамтиды. Іс жүзінде, 24 битті түс адамдар түсіне алатын барлық түстерді жеткілікті түрде бейнелеу үшін жеткілікті түрде бай, жеткілікті түрде кішкентай қатесі бар, олар қол жетімді түстер кеңістігінде визуалды бірдей (егер адал ұсынылса). Алайда, түстердің цифрландыруы, камера детекторларында немесе экранда, міндетті түрде қол жетімді түстер кеңістігін шектейді. Нәтижесінде, түсті бейнелеу үшін қанша бит қолданылғанына қарамастан, қайта жаңғырту мүмкін емес көптеген түстер бар. Мысалы, әдеттегі RGB түстер кеңістігінде (компьютерлік мониторларда жиі кездесетін) адам көзі түсіне алатын жасыл түстердің толық спектрін қайта жасау мүмкін емес. Алғашқы компьютерлерде бірнеше түстер болғандықтан, әртүрлі кванттау алгоритмі өте әртүрлі көрінетін шығыс суреттерін шығарды. Нәтижесінде, көп уақыт күрделі алгоритмдерді жазуға жұмсалды.

Суретті қысу үшін кванттау

Көптеген кескін файл пішімдері индекстелген түстерді қолдайды. Бүкіл сурет палитрасы әдетте бүкіл сурет үшін 256 "өкіл" түстерді таңдайды, онда әр пиксель GIF және PNG файл пішімдеріндегідей палитрадағы түстердің кез келгеніне сілтеме жасайды. Блок палитрасы әдетте 4x4 пикселдің әрбір блогы үшін 2 немесе 4 түсті таңдайды, олар BTC, CCC, S2TC және S3TC-де қолданылады.

Редакторды қолдау

Көптеген битмап графикалық редакторларда түстерді кванттау үшін қолдау бар және көп түстерді бейнелерді аз түстерді бейне форматына түрлендіру кезінде автоматты түрде орындалады. Бұл нұсқалардың көпшілігі пайдаланушыға қажетті түстердің санын дәл орнатуға мүмкіндік береді. Мұндай қолдаудың мысалдары: Photoshop-тың Mode→Indexed Color функциясы белгілі бір суретке немесе бейнелерге сәйкес келетін палитраларды құру үшін тұрақты Windows жүйесі мен Веб-палитралардан бастап меншік меншікті Жергілікті және Жаһандық алгоритмдерге дейінгі сандық алгоритмдерді қамтамасыз етеді. Paint Shop Pro өзінің Colors→Decrease Color Depth диалогты диалогында үш стандартты түс кванттау алгоритмін ұсынады: медианды кесу, октри және белгіленген стандартты "веб қауіпсіз" палитра. GIMP 2.8-де Суретті индекстелген түстерге түрлендіру опциясы (Image→Mode→Indexed) 2 -ден 256 -ға дейінгі түстер санын таңдап, веб-оптимизацияланған палитраны пайдалану, қара және ақ палитраны (1 бит) пайдалану немесе жеке палитраны пайдалану арқылы оңтайлы палитраны құруға мүмкіндік береді. Ол палитрадан пайдаланылмаған түстерді алып тастауға мүмкіндік береді және әртүрлі дитерлеу опцияларын ұсынады: Жоқ, Флойд Штайнберг (нормалды), Флойд Штайнберг (түсті қан кетуді азайту) және орналастырылған, сондай-ақ мөлдірліктің дитерлеуін қосу мүмкіндігі. Түсті кванттау, сондай-ақ, постерлеу эффекттерін жасау үшін қолданылады, бірақ постерлеудің бір түсті кеңістікте қолданылатын түстердің санын азайтудың сәл басқа мақсаты бар және әдетте тұрақты палитраны қолданады. Кейбір векторлық графикалық редакторлар, сондай-ақ түстерді кванттауды пайдаланады, әсіресе растрлық векторлық техникалар үшін, олар шеттерді анықтау көмегімен битмап бейнелерінің ізін жасайды. Inkscape's Path→Trace Bitmap: Multiple Scans: Color function түстер ізін құру үшін октри кванттауды қолданады.