Кіріспе

Блоктық қысқарту коды (BTC) – сұр түсті кескіндер үшін жоғалтулы кескінді сығыстыру техникасының бір түрі. Ол бастапқы кескіндерді блоктарға бөледі, содан кейін әр блоктан сұр түстердің санын азайту үшін кванттаушыны қолданады, осы ретте орташа және стандартты ауытқу сақталады. Бұл танымал аппараттық DXTC техникасының алғашқы нұсқасы, бірақ BTC сығыстыру әдісі DXTC-ден бұрын-ақ түсті кескіндерге бейімделген, осыған ұқсас тәсілді қолдана отырып – Түсті Ұялы Сығыстыру (Color Cell Compression). BTC бейне сығыстыру үшін де қолданылған. BTC-ні алғаш рет Пердью университетінің профессорлары Митчелл мен Делп ұсынды. BTC-нің тағы бір түрі – Абсолюттік Моментті Блоктық Қысқарту Коды (AMBTC), онда стандартты ауытқудың орнына бірінші абсолюттік момент орташа мәнмен бірге сақталады. AMBTC есептеу жағынан BTC-ге қарағанда қарапайым және әдетте Орташа Квадраттық Қателік (MSE) төмен болады. AMBTC-ні Максимо Лема мен Роберт Митчелл ұсынды. 8 биттік бүтін сандар берілу немесе сақталу кезінде қолданылса, 4×4 пикселдік кіші блоктарды пайдалану 4:1 сығылу қатынасын қамтамасыз етеді. Үлкен блоктар жоғары сығылуға мүмкіндік береді ("a" және "b" мәндері көбірек пиксельдерге таралады), бірақ алгоритмнің ерекшелігіне байланысты блок көлемі ұлғайған сайын сапасы да төмендейді. BTC алгоритмі Mars Pathfinder ғарыш кемесінің кескіндерін сығыстыру үшін қолданылды.

Декодер

Декодерлік жағынан, біз "a" және "b" мәндерін 1 және 0 пиксельдерге қайта тағайындауымыз керек. Бұл бізге келесі блокты береді:

Көріп отырғанымыздай, блок "a" және "b" екі мәнімен бүтін сан ретінде қайта құрылды (өйткені кескіндерлер қалқыма нүктелі сандарды сақтау үшін арналмаған). Теорияны қарастырып отырғанда, бұл қайта құрылған блоктың орташа және стандартты ауытқуын есептеуге ыңғайлы сәт. Олар бастапқы орташа мән мен стандартты ауытқуға тең болуы керек. Бүтін сандарды пайдалануды естен шығармаңыз, әйтпесе үлкен кванттау қатесі туындауы мүмкін, себебі біз кодтаушыда барлық мәндерді бүтін сандарға кванттадық.