If you're seeing this message, it means we're having trouble loading external resources on our website.

Ако си зад уеб филтър, моля, увери се, че домейните *. kastatic.org и *. kasandbox.org са разрешени.

Основно съдържание

Компресия със загуби

Алгоримите за компресия със загуба са техники, които намаляват размера на файла, като съкращават по-маловажната информация.
Никой не обича да губи информация, но някои видове файлове са толкова големи, че просто няма достатъчно място, за да се съхраняват оригиналните данни, а и така или иначе не се и нуждаем от всички тези данни. Често такъв е случаят със снимки, видео и аудио записи – файлове, които се опитват да уловят красивата сложност на света, в който живеем.
Компютрите могат да уловят удивително количество детайли в една снимка, но колко от тези детайли може да възприеме човешкото око? Оказва се, че има доста детайли, които можем да премахнем. Алгоритмите за компресия със загуби се основават на находчиви начини за премахване на детайли, които хората не забелязват (твърде много).
Например тук имаме снимка на котка в шапка:
Снимка на сива котка със зелени очи, седяща в синя шапка върху сив стол
Източник на изображението: admiller, Flickr
Ето същата снимка, но с компресиран наполовина размер:
Можеш ли да забележиш разликата? Аз не мога на пръв поглед, а дори и да мога, с повече усилия, все пак ще си заслужава да се спести половината дисково пространство.
Да разгледаме някои от находчивите начини, чрез които алгоритмите за компресия със загуба премахват детайли, за да намалят размера на файла.

Изображения: Запази яркостта, осредни цвета

Човешкото око се справя по-добре с възприемането на разлики в яркостта, отколкото на разлики в цвета. Компресиращ алгоритъм може да се възползва от този факт, като запази яркостта, докато намалява количеството цветова информация – процес, известен като усредняване на цвета (chroma subsampling).
Да опитаме със снимката на котката в шапка. Първата стъпка е да отделим информацията за яркостта от хроматичната (цветната).
Това е версия на снимката само с информация за яркостта:
Това е снимка само с цветната информация:
Тази снимка е интересна, понеже и котката, и столът са относително безцветни – синьото на шапката е това, което се откроява в цветната версия. (Може би всички трябва да имаме черно-бели котки, за да спестяваме дисково пространство? Хмм...)
Нека увеличим един 8х2 сектор с хроматична информация от лявото око:
Всеки от тези пиксели е с леко различна хроматична стойност, така че имаме общо 16 стойности. Можем да усредним всеки 2х2 сектор и да променим цвета му на усреднения, така че да имаме общо 4 стойности:
Резултатът изглежда доста сходен с оригинала, но съдържа четвърт от оригиналната цветна информация. Ако направим същото с цялото изображение, можем да спестим много място без това да се отрази много на възприятието.
Усредняването на цвета е процес, използван в много алгоритми за компресиране на изображения, включително популярните формати JPEG и MPEG.
За да опростят детайлите в слоя на яркостта, тези алгоритми използват и процес, наречен дискретна косинусова трансформация (DCT), тук има добро обяснение.

Аудио: Отстраняване на недоловимите звуци

Човешкото ухо има ограничения за това какво може да чуе. Алгоритмите за компресиране на звук могат да анализират аудио файл и да отстраняват звуците, които са извън диапазаона, в който чуваме – процес, познат като възприятийно аудио кодиране.
Едно интересно ограничение на ушите ни е познато като времево маскиране. Получава се, когато внезапен звук може да маскира (скрие) други звуци за известно време, след като е прозвучал, и дори малко преди това!
Представи си песен със силен барабанен ритъм например. Ударите на ритъма маскират звуците за около 20 милисекунди преди да се случат и за до 200 милисекунди след това. Следната графика илюстрира маскиращия ефект:
Графика с времето в милисекунди по абсцисата и сила на звука в децибели по ординатата. Удар на барабан се случва от 140 до 200 милисекунди. Ефектът на предварително маскиране е стръмна крива, водеща нагоре до удара от 100 до 140 милисекунди. След-маскиращият ефект е по-полегата крива, от 200 до 350 милисекунди.
Областите, защриховани в сиво, показват периодите на пред-маскиране и след-маскиране.
Компютърът вижда тези скрити звуци в записания аудио файл, но нашите уши не могат да ги чуят, така че алгоритмите за аудио компресия могат спокойно да отстранят тази информация или да я представят с по-малко битове.
Алгоритмите за компресия могат да използват и други ограничения в естествения ни слухов процес, като границата за високи честоти и едновременното маскиране. Ако искаш да научиш повече, можеш да проучиш завладяващата област на психоакустиката.

Качество на компресията

Когато използваме алгоритми за компресия без загуби, можем винаги да възстановим 100% от оригиналните данни. При алгоритмите за компресия със загуби губим някакъв процент от оригиналните данни – може би 5%, може би 10%, може би 70%. Колко губим? Можем да го решим в зависимост от това за какво използваме данните.
Да разгледаме снимката на котка в шапка от преди малко. Ако планираме да поставим тази снимка в презантация за проект за мода за котки и да я прожектираме на голям екран, може би ще искаме да запазим колкото може повече детайли. В този случай можем да използваме или алгоритъм за компресиране без загуби (като PNG), или алгоритъм за компресиране със загуби (като JPEG) и да определим високо качество (например 100%). Приложенията за редакция на снимки често предоставят тези възможности.
Екранна снимка за настройки на файл от менюто "Експорт" на Adobe Photoshop. За опцията "Формат" е избран "JPEG". За опцията "Качество" плъзгачът е поставен на "100%".
При 100% качество, снимката с размер 400х300 заема 169 KB място:
Снимка на сива котка със зелени очи, седяща в синя шапка върху сив стол.
А ако искаме да използваме тази снимка в интернет сайт и потребителите на сайта са в друга държава с бавни интеренет връзки? Колкото по-малък е файлът, толкова по-бързо е свалянето. Искаме те да видят снимката, но в този случай високото качество не е важно, колкото скоростта на сваляне. Със сигурност ще искаме да използваме алгоритъм за компресиране със загуби и можем да зададем по-ниско качество при експортирането. Алгоритъмът може да пренастрои вътрешните си лостчета, за да опрости детайлите още повече.
Екранна снимка за настройки на файл от менюто "Експорт" на Adobe Photoshop. За опцията "Формат" е избран "JPEG". За опцията "Качество" плъзгачът е поставен на "60%".
При 60% качество снимката заема до 48 KB:
Снимка на сива котка със зелени очи, седяща в синя шапка върху сив стол.
Така все още изглежда доста добре – определено е използваемо при интернет сайт с бавни връзки. Колко надолу можем да слезем? Ето я снимката при качество 1%:
Снимка на сива котка със зелени очи, седяща в синя шапка върху сив стол.
Определено не е идеална – зеленото на очите изглежда се размива в козината и има артефакти там, където шапката граничи със стола. Но пък е само 12 KB – по-малко от една десета от оригиналния размер. Впечатляващо е колко много информация можем да отстраним и все пак да предадем толкова детайли.
Можем да зададем качество и при алгоритми за компресия със загуби, които обработват аудио и видео файлове. Из Мрежата се срещат нискокачествени, много компресирани клипове – клипове, които е най-вероятно да бъдат компресирани, тъй като те са много големи поначало.
Всеки път, когато използваме компресия със загуби, правим компромис между качество и размер и от нас зависи да намерим настройките, които са оптимални за нашия случай.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Имаш ли въпроси по темата? Ще се радваме да ти отговорим, просто задай въпросите си по-долу!

Искаш ли да се присъединиш към разговора?

Все още няма публикации.
Разбираш ли английски? Натисни тук, за да видиш още дискусии в английския сайт на Кан Академия.