Kompresja stratna
metoda zmniejszania ilości danych Z Wikipedii, wolnej encyklopedii
metoda zmniejszania ilości danych Z Wikipedii, wolnej encyklopedii
Kompresja stratna (ang. lossy compression) – nieodwracalna metoda zmniejszenia objętości danych poprzez usunięcie przez kodek informacji mniej istotnych dla zmysłów człowieka[1]. Dopuszcza przy odtwarzaniu (dekompresji) skompresowanego sygnału takie zniekształcenie sygnału w porównaniu do sygnału pierwotnego, że jego percepcja przez człowieka (słuch, wzrok) będzie identyczna lub zbliżona do oryginału, ewentualnie będzie od niego odbiegać, lecz za świadomą zgodą użytkownika[1]. Zaletą kompresji stratnej jest uzyskiwanie wysokiego stopnia kompresji, znacznie wyższego niż przy zastosowaniu kompresji bezstratnej[1].
Ten artykuł od 2024-03 wymaga zweryfikowania podanych informacji. |
Kompresja stratna jest możliwa ze względu na sposób działania ludzkich zmysłów, czyli większą ważność dla zmysłów odbiorcy pewnych zakresów danych z ich całości. Algorytmy kompresji stratnej posługują się modelami psychoakustycznymi i modelami psychowizualnymi, aby odrzucić najmniej istotne dla zmysłów odbiorcy dane akustyczne czy wizualne, pozostawiając dane o wyższej ważności dla percepcji informacji przez zmysły. Ilość odrzucanych danych jest określana przez stopień kompresji, im stopień kompresji jest większy, tym więcej danych jest usuwanych z oryginalnego materiału w procesie kompresji stratnej i wzrasta prawdopodobieństwo rozpoznania przez odbiorcę danych stratnie skompresowanych jako materiału nieoryginalnego w trakcie przeprowadzania podwójnie ślepej próby. Kompresja stratna dźwięku wykorzystuje zjawisko maskowania dźwięków, percepcji wysokości dźwięków oraz dyskryminacji bodźców dźwiękowych. Nauką zajmującą się percepcją słuchową człowieka jest psychoakustyka. Kompresja stratna obrazu wykorzystuje m.in. zjawisko znacznie niższej rozdzielczości barwowej ludzkiego oka od jego rozdzielczości jasności.
Nie istnieją algorytmy kompresji stratnej, które można stosować do dowolnego typu danych. Kompresja stratna np. plików wykonywalnych jest niemożliwa do zastosowania, ponieważ nie jest to informacja odczytywana przez ludzkie zmysły, lecz przez maszynę.
Zwykle kompresję stratną stosuje się do:
Przy danych audiowizualnych dźwięk i obraz kompresowane są osobno.
Prostym przykładem kompresji stratnej obrazu jest np. zachowanie tylko co drugiego piksela, lub odrzucenie dwóch najmniej istotnych bitów. Takie metody nie dają jednak zadowalających rezultatów w porównaniu do metod opartych na modelach psychozmysłowych badanych w psychofizyce.
Najbardziej powszechnym algorytmem kompresji obrazów jest JPEG. Wiele rozwiązań użytych w JPEG jest używanych także w innych algorytmach, więc warto je tutaj omówić. Kolejne kroki algorytmu JPEG to:
Użyta transformata powoduje efekty blokowe w przypadku mocno skompresowanych obrazków.
Inne algorytmy kompresji obrazków opierają się głównie na:
Zupełnie inną metodą jest kompresja fraktalna. Opisuje ona obraz w postaci parametrów funkcji fraktalnej, która daje w efekcie przybliżoną postać obrazu. Dotychczas kompresja fraktalna daje znacznie słabszą jakość w przypadku obrazów o niskim i średnim stopniu kompresji. Dla obrazów silnie skompresowanych może dawać lepsze rezultaty niż JPEG, przede wszystkim nie powoduje efektu bloków, jednak są one słabsze od znacznie prostszych metod opartych na MDCT czy falkach. Nic nie wskazuje na to, że kompresja fraktalna znajdzie szersze zastosowanie.
Najprostsze systemy kompresji ruchomych obrazów po prostu kompresują każdą klatkę osobno. Jest to bardzo nieefektywne, ponieważ kolejne klatki są zazwyczaj do siebie bardzo podobne.
Zwykle używa się zestawu klatek kluczowych, które kompresuje się tak samo, jak samodzielne obrazki. Pozostałe klatki kompresuje się natomiast, korzystając z danych z klatek poprzednich. Lepsze wyniki dałoby wykorzystanie danych o poprzednich klatkach przy kompresji każdej klatki, jednak utrudniałoby to znacznie przewijanie.
Prostym sposobem wykorzystania danych o poprzednich klatkach jest kodowanie różnicy wartości pikseli o tym samym położeniu, zamiast samych wartości. Tym sposobem można dobrze skompresować sceny, w których kamera jest nieruchoma, jednak nie da to znaczących efektów w scenach z kamerą ruchomą. Zwykle wykorzystuje się więc różne rodzaje kompensacji ruchu. Np. dla każdego bloku podaje się niewielki wektor przesunięcia, np. [2, –1], czyli zamiast tego samego bloku klatki poprzedniej używamy bloku o dwa piksele w prawo i jeden w górę (czy też w lewo i w dół).
Inną ważną techniką wykorzystywaną przy kompresji obrazów ruchomych jest zmienna przepływność (variable bitrate), czyli używanie różnej dokładności dla różnych klatek. Jest wiele sposobów dobierania takich różnic; algorytmy wyboru jakości zwykle są cechą bardziej enkodera, niż formatu. Często enkodery stosują metody dwuprzebiegowe. Pierwszy przebieg po danych zbiera informacje potrzebne algorytmowi zmiennej przepływności, a dopiero drugi kompresuje dane.
Ruchome obrazy są zazwyczaj mocno skompresowane, a więc dla kodeka MPEG, który używa podobnie jak JPEG transformaty kosinusowej, efekty blokowe mogą być bardzo uciążliwe.
Dwa najpopularniejsze publicznie dostępne algorytmy – MP3 i Vorbis – używają podobnych technik. Warto tu omówić algorytm Vorbis, ponieważ używa on bardziej efektywnych rozwiązań.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.