captcha image

A password will be e-mailed to you.

Od lat format JPEG wydawał się nie do poprawienia. Tymczasem inżynierowie Google’a stworzyli nowy format, nazywany “maślanym”, w którym pliki graficzne są o 35 proc. mniejsze, a jednocześnie lepsze jakościowo niż JPEG.

Nowy standard został stworzony przez zespół inżynierów z Google Research Europe. Enkoder nosi nazwę Guetzli, a nowy model kodowania to Butteraugli – stąd określenie “maślany”. Co niezwykle ważne, format ten zachowuje zgodność z dostępnymi na rynku przeglądarkami WWW i aplikacjami graficznymi. Oznacza to, że nie potrzebują one żadnych aktualizacji, a my bez przeszkód możemy z miejsca korzystać z nowego formatu obrazów.

Jak to działa?

Kompresja obrazów, jak wiadomo może być bezstratna (c) albo stratna. W pierwszym wypadku tym, co może zrobić koder, jest zapisanie powtarzających się informacji w prostszej formie. W uproszczeniu np. ciąg informacji o kolorach RRRRRRRGGGGBBBBBBBBGGGRRRRRRRRR można zapisać krócej: 7xR4xG8xBGGG9xR.

Wizualizacja dwóch detali zdjęcia, po lewej znajduje się oryginał, w środku Guetzli, a po prawej libjpeg. Widać, że libjpeg daje więcej wyraźnych artefaktów niż Guetzli. (zdjęcie: Google Research Europe)

Kompresja stratna, tak jak JPEG, wykorzystuje podobne metody, ale wcześniej algorytm poddaje oryginalny obraz wielostopniowemu procesowi stratnych, nieodwracalnych przekształceń. Stoją za nimi: przekształcenie kolorów do matematycznego modelu barw, dyskretna transformacja kosinusowa i kwantyzacja.
Inżynierowie z Google Research skupili się właśnie na tym ostatnim etapie, w którym wraz ze wzrostem stopnia kompresji dochodzi do coraz bardziej zauważalnego pogarszania jakości obrazu. Guetzli stara się osiągnąć kompromis pomiędzy wielkością pliku wynikowego a jego jakością. W tym celu algorytm Google’a porównuje oryginalny obraz z rezultatem jego kwantyzacji przy użyciu autorskiego psychowizualnego modelu kodowania.

Ów psychowizualny model kodowania nosi nazwę Butteraugli i wykorzystuje właściwości naszej percepcji wzorkowej, których nie uwzględnia większość koderów JPEG. By dowieść, że jest on dokładniejszy i skuteczniejszy, naukowcy przeprowadzili eksperyment, w którym uczestnicy porównywali odpowiadające sobie jakościowo obrazy skompresowane przy użyciu Guetzli i pliki pochodzące z open source’owego kodera libjpeg. 75 proc. badanych jako ładniejsze wskazywało pliki będące wynikiem działania nowego algorytmu Google’a.

Dlaczego?

Jeszcze kilka lat temu napisalibyśmy, że będziemy mogli dzięki temu zapisać więcej zdjęć na karcie pamięci telefonu czy aparatu. Dziś jednak głównym beneficjentem redukcji wielkości plików graficznych są strony internetowe. Dysponując lżejszymi obrazkami i nie tracąc na jakości, będą ładować się szybciej i generować mniejszy ruch na serwerze, co sprowadza się do zmniejszenia, np. kosztów utrzymania pełnego zdjęć sklepu internetowego.

Wady

Są dwie. Nowy algorytm, jak opisują go sami twórcy, działa wolno. Właściwie trzeba napisać: bardzo wolno. Ma również duże zapotrzebowanie na zasoby komputera. W dołączonym do algorytmu pliku read.me możemy przeczytać, że przetworzenie każdego 1 megapiksela obrazu zajmuje około 1 minuty pracy procesora i potrzebuje 300 MB pamięci.

Wycinek o wielkości 16×16 pikseli pokazuje linię telefoniczną wiszącą na tle błękitnego nieba. To przykład gdzie w tradycyjnych algorytmach kompresji JPEG pokazują się artefakty. Nieskompresowany oryginał znajduje się po lewej stronie. W środku libjpeg, Guetzli (po prawej): ma mniej artefaktów i mniejszy rozmiar pliku. (zdjęcie: Google Research Europe)

Na dziś, mimo opisywanych zalet, nie brzmi to zachęcająco. Trzeba jednak wziąć pod uwagę, że Guetzli to jak na razie tzw. funkcjonalny prototyp. Zbudowany został, by pokazać nowe możliwości, jakie daje zastosowanie w procesie kompresji innego niż wcześniej modelu postrzegania koloru. Naukowcy przyznają też, że specjalnie nie optymalizują kodu samego algorytmu, bo na tym etapie zmniejszyłoby to jego przejrzystość i utrudniało dalszą pracę.

Na pytanie Crazy Nauki o przyspieszenie kodowania inżynierowie z Google Research Europe odpowiedzieli, że możliwe jest co najmniej 20-krotne jego przyspieszenie, ale i 100-krotny wzrost nie jest wykluczony. Jednak na razie naukowcy nie planują skupiać się na przyspieszeniu działania algorytmu.

Jakość i szybkość Guetzli JPEG można samemu sprawdzić. Narzędzie do kompresji dostępne jest na zasadach open source i każdy może z niego skorzystać. Pliki źródłowe opublikowane znajdziecie na platformie GitHub.

Maślany humor

Na koniec próba wyjaśnienia dziwnej nazwy algorytmu.
Jak to z nazwami kodowymi bywa… i ta nic konkretnego nie oznacza. Ma jednak definitywnie maślany rodowód. Guetzli w szwajcarskiej odmianie niemieckiego to nazwa dla regionalnych kruchych ciasteczek (też mogą być maślane…). Wszystko na to wskazuje, że jej geneza jest kontynuacją „maślano-ciasteczkowej” terminologii, jaka została użyta dla nazwania modelu percepcji wizualnej Butteraugli. A o tej nazwie już coś wiemy.

Fińskie ciasteczka i bułeczki “pulla”.

Jeden z twórców zarówno algorytmu kompresji, jak i modelu percepcji, Jyrki Alakuijala chciał, by nazwa miała więcej samogłosek niż trudne do wymówienia akronimy PSNRHVS-M czy MS-SSIM-YUV. Przy okazji zapragnął, by miała ona związek z ludzkim okiem i… (nie pytajcie dlaczego) małym chlebem. By nie wprowadzać szumu informacyjnego, Alakuijala sięgnął po odległą językowo fińską nazwę maślanych bułeczek z „oczkiem” Voisilmäpulla. Po przetłumaczeniu na niemiecki daje to słowo Butteraugebrötchen. Stąd do wymyślonej nazwy Butteraugli było już blisko.

Szczegółowy opis algorytmu znajduje się w dokumencie “Guetzli: Perceptually Guided JPEG Encoder”, który można znaleźć na platformie arXiv.org.

Zdjęcia: Google Research Europe
Autor jest dziennikarzem Magazynu Komputerowego CHIP

Nie ma więcej wpisów