Kompresja Statycznego Obrazu 138
Total Page:16
File Type:pdf, Size:1020Kb
Damian Karwowski Zrozumieć Kompresję Obrazu Podstawy Technik Kodowania Stratnego oraz Bezstratnego Obrazów Wydanie Pierwsze, wersja 1.2 Poznań 2019r. ISBN 978-83-953420-0-4 9 788395 342004 © Damian Karwowski – „Zrozumieć Kompresję Obrazu” © Copyright by DAMIAN KARWOWSKI. All rights reserved. Książka jest chroniona prawem autorskim i prawami pokrewnymi. Egzemplarz książki został zdeponowany w Kancelarii Notarialnej. Książka jest dostępna pod adresem: www.zrozumieckompresje.pl ISBN 978-83-953420-0-4 Projekt okładki książki oraz strona internetowa zostały wykonane przez Marka Piskulskiego. Serdecznie dziękuję za profesjonalną pracę Obraz „Miś Panda”, który jest częścią okładki, namalowała na płótnie Natalka Karwowska. Natalko, dziękuję Ci za Twój wysiłek Autor książki dołożył ogromnych starań, żeby zamieszczone w niej informacje były prawdziwe i rzetelnie przedstawione. Korzystając z książki Czytelnik robi to jednak wyłącznie na własną odpowiedzialność. Tym samym autor nie odpowiada za jakiekolwiek szkody, będące następstwem wykorzystania zawartej w książce wiedzy. Autor książki Dr inż. Damian Karwowski. Absolwent Politechniki Poznańskiej. Uzyskał tytuł zawodowy magistra inżyniera oraz stopień doktora nauk technicznych na Politechnice Poznańskiej, odpowiednio w latach 2003 i 2008. Obecnie pracownik naukowo-dydaktyczny na wyżej wymienionej uczelni. Od roku 2003 zawodowo zajmuje się kompresją obrazu. Autor ponad 50 publikacji naukowych o tematyce kompresji i przetwarzania obrazów. Brał udział w licznych projektach naukowych dotyczących wydajnej reprezentacji multimedialnych danych. Dodatkowo członek wielu zespołów badawczych, które w tematyce kompresji obrazu i dźwięku realizowały prace badawczo-wdrożeniowe dla przemysłu. Jego zainteresowania obejmują kompresję danych, techniki kodowania entropijnego danych oraz realizację kodeków obrazu i dźwięku na procesorach x86 oraz DSP. 4 | S t r o n a © Damian Karwowski – „Zrozumieć Kompresję Obrazu” Spis treści Spis treści 5 “Słowo” wstępu 11 Rozdział 1 15 Obraz i jego reprezentacja przestrzenna 15 1.1. Wprowadzenie 15 1.2. Próbkowanie obrazu – podstawy podstaw 17 1.3. Kwantyzacja obrazu 20 1.3.1. Kwantyzacja danych – podstawowe informacje 20 1.3.2. Kwantowanie próbek obrazu monochromatycznego 22 1.4. Reprezentacje cyfrowego obrazu kolorowego 24 1.4.1. Krótkie wprowadzenie 24 1.4.2. Obraz kolorowy w przestrzeni RGB 25 1.4.3. Obraz kolorowy w przestrzeni RGB – ograniczenia reprezentacji barw 27 1.4.4. Przestrzeń RGB – odmiany i zastosowanie 29 1.4.5. Obraz kolorowy w przestrzeni YCBCR 31 1.4.6. Kompresja kolorowego obrazu – dlaczego właśnie w przestrzeni YCBCR? 33 1.4.7. Przestrzeń YCBCR i schematy próbkowania chrominancji 33 1.4.8. Schematy próbkowania chrominancji – jaki jest sens przyjętych oznaczeń liczbowych? 36 1.4.9. Powrót z reprezentacji YCBCR do przestrzeni RGB 37 1.5. Obraz ruchomy, czyli cyfrowa sekwencja wizyjna 37 1.6. Podsumowanie 39 Rozdział 2 41 Częstotliwościowa reprezentacja obrazu 41 2.1. Wprowadzenie 41 2.2. Obraz i jego reprezentacja częstotliwościowa – podstawy 42 2.2.1. Zmiany treści w kierunku poziomym, czyli „częstotliwość przestrzenna pozioma” 43 2.2.2. Zmiany treści w kierunku pionowym, czyli „częstotliwość przestrzenna pionowa” 45 2.2.3. Bardziej rzeczywisty przypadek, czyli zmiany w obu kierunkach naraz 46 2.3. Częstotliwościowa „zawartość” (reprezentacja) obrazu naturalnego 47 2.3.1. Obraz i jego widmo amplitudowe 47 2.3.2. Widmo fazowe obrazu 50 2.4. Reprezentacja „częstotliwościowa” obrazu w ujęciu matematycznym 51 2.5. Dyskretne przekształcenie Fouriera – dalszy komentarz 54 2.6. Praktyczne użycie dyskretnego przekształcenia Fouriera – istotny problem 56 2.7. Eliminacja problemu „skokowej” zmiany wartości sygnału na granicach cykli 57 2.8. DFT „nowego sygnału okresowego” – czyli w efekcie dyskretne przekształcenie kosinusowe (DCT) 59 2.8.1. DCT sygnału jednowymiarowego, czyli 1D-DCT 59 2.8.1.1. Wyprowadzenie matematyczne 59 2.8.1.2. „Wygląd” kosinusoid przekształcenia 1D-DCT 63 2.8.1.3. Ilustracja związku DCT z DFT 65 2.8.2. DCT sygnału dwuwymiarowego, czyli 2D-DCT 65 5 | S t r o n a © Damian Karwowski – „Zrozumieć Kompresję Obrazu” 2.8.3. Dalsza interpretacja oraz znaczenie 2D-DCT w praktyce kompresji obrazów 67 2.8.3.1. „Wygląd” kosinusoid przekształcenia 2D-DCT 67 2.8.3.2. Interpretacja rezultatu 2D-DCT raz jeszcze 68 2.8.3.3. Na czym polega „siła” 2D-DCT? 70 2.8.4. Inny sposób matematycznego opisu przekształcenia DCT 72 2.8.5. Dlaczego nie przekształcenie sinusowe zamiast kosinusowego? 75 2.8.6. Sposób użycia 2D-DCT w koderach obrazu 79 2.9. Inne stosowane przekształcenie – transformacja Walsha-Hadamarda 82 2.10. Przekształcenie „najlepsze z najlepszych”, czyli transformacja Karhunena-Loévego 84 2.11. Reprezentacja obrazu w dziedzinie częstotliwości – dlaczego warto? 85 2.12. Podsumowanie 89 Rozdział 3 91 Kodowanie entropijne 91 3.1. Wprowadzenie 91 3.2. Kodowanie o zmiennej długości słowa – VLC 93 3.2.1. Kodowanie Huffmana 93 3.2.1.1. Kodowanie Huffmana – szczegóły algorytmu podstawowego 93 3.2.1.2. Efektywność podstawowej wersji kodowania Huffmana 95 3.2.2. Blokowe kodowanie Huffmana 95 3.2.3. Efektywność przedstawionych technik kodowania Huffmana w praktyce kompresji danych multimedialnych – krótki komentarz 96 3.2.4. Dynamiczne kodowanie Huffmana 97 3.2.4.1. Opis ogólny 97 3.2.4.2. Opis szczegółowy – drzewo kodów Huffmana 98 3.2.4.3. Opis szczegółowy – uaktualnienie drzewa kodów Huffmana 98 3.2.5. „Uniwersalne” kodowanie o zmiennej długości słowa kodowego 104 3.2.5.1. Kodowanie unarne 105 3.2.5.2. Kodowanie Golomba 106 3.2.5.3. Kodowanie Rice’a (Golomba-Rice’a) 112 3.2.5.4. Kodowanie Exp-Golomba k-tego rzędu 112 3.3. Kodowanie arytmetyczne 116 3.3.1. Wprowadzenie 116 3.3.2. Kodowanie arytmetyczne – algorytm podstawowy 117 3.3.3. Kodowanie arytmetyczne – algorytm podstawowy w ujęciu matematycznym 118 3.3.4. Dekodowanie arytmetyczne danych – krótka dyskusja 120 3.3.5. Efektywność techniki kodowania arytmetycznego 120 3.3.6. Algorytm podstawowy kodowania arytmetycznego – dwa istotne problemy 121 3.3.7. „Prawie” praktyczna realizacja kodowania arytmetycznego 122 3.3.8. Problem przekroczenia precyzji rejestrów w kodeku 124 3.3.9. „Całkowitoliczbowa” realizacja kodowania arytmetycznego – końcowy algorytm 126 3.3.10. „Całkowitoliczbowa” realizacja dekodowania arytmetycznego 126 3.3.11. Algorytm kodowania arytmetycznego w zapisie dwójkowym 128 3.3.12. Szybkie realizacje kodowania arytmetycznego 128 3.3.13. Modelowanie statystyczne danych w kodowaniu arytmetycznym – krótka dygresja 129 3.4. Efektywność kompresji oraz złożoność współczesnych technik kodowania entropijnego 131 3.4.1. Efektywność kompresji algorytmów CABAC i UVLC 131 6 | S t r o n a © Damian Karwowski – „Zrozumieć Kompresję Obrazu” 3.4.2. Złożoność obliczeniowa technik CABAC i UVLC 133 3.5. Podsumowanie 134 Rozdział 4 135 Wybrane techniki kompresji obrazu 135 4.1. Wprowadzenie 135 Część I – Kompresja statycznego obrazu 138 4.2. Obraz kolorowy w przestrzeni YCBCR – czyli wstęp do kompresji 138 4.3. Statystyczna nadmiarowość próbek obrazu – prosty sposób jej redukcji 140 4.4. Przewidywanie danych obrazu jako sposób na poprawę wyników kompresji 142 4.5. Przewidywanie wartości próbek obrazu – jak to się robi w praktyce? 145 4.6. Nadmiarowość przestrzenna w obrazie – inny sposób jej redukcji 152 4.7. Jeszcze lepsze rozwiązanie, czyli łączne użycie metody przewidywania wartości próbek z opisem wyniku funkcjami kosinusoidalnymi 154 4.8. Usunięcie części informacji o obrazie jako sposób na istotne zwiększenie stopnia kompresji danych 157 4.9. Kompresja obrazu w dziedzinie częstotliwości – furtka do wydajnej realizacji idei kodowania stratnego 159 4.10. Praktyczna realizacja techniki kodowania transformatowego 163 4.10.1. Kodowanie transformatowe w bardzo prostym wydaniu 163 4.10.1.1. Podział obrazu na małe fragmenty (bloki) 164 4.10.1.2. Reprezentacja treści bloków w dziedzinie częstotliwości 165 4.10.1.3. Kwantyzacja składowych kosinusoidalnych 167 4.10.1.4. Szeregowanie skwantowanych kosinusów 171 4.10.1.5. Kodowanie skwantowanych amplitud kosinusów 172 4.10.1.6. Kodowanie entropijne danych 174 4.10.1.7. Wydajność prostych metod kompresji transformatowej 174 4.10.1.7.1. Efektywność kompresji 174 4.10.1.7.2. Złożoność obliczeniowa 178 4.10.2. Kodowanie transformatowe w wydaniu zaawansowanym 179 4.10.2.1. Przewidywanie treści obrazu 181 4.10.2.2. Kodowanie transformatowe błędu przewidywania treści bloków 186 4.10.2.3. Kodowanie skwantowanych próbek widma 187 4.10.2.4. Filtracja obrazu poprawiająca jakość 188 4.10.2.4.1. Efekt blokowy i sposób jego redukcji 189 4.10.2.4.2. Efekt dzwonienia i sposób jego redukcji 193 4.10.2.5. Wydajność zaawansowanych technik kompresji transformatowej 195 4.10.2.5.1. Efektywność kompresji 195 4.10.2.5.2. Złożoność obliczeniowa 199 Część II – Kompresja ruchomego obrazu 200 4.11. Kodowanie ruchomego obrazu – najprostsze podejście 200 4.12. Nadmiarowość czasowa sekwencji – cenna wskazówka dla jeszcze wydajniejszej kompresji 200 4.13. Jak wydajnie przewidywać obrazy sceny, która zmienia się w czasie? 202 4.14. Estymacja ruchu w ujęciu matematycznym 204 4.15. Jaka jest skuteczność międzyobrazowej, jednokierunkowej predykcji treści? 204 4.16. Międzyobrazowa predykcja treści – przewidywanie nie tylko z przeszłości, ale i przyszłości 207 4.17. Predykcja międzyobrazowa jedno- i dwukierunkowa. Która jest lepsza? 209 7 | S t r o n a © Damian Karwowski – „Zrozumieć Kompresję Obrazu” 4.18. Sposób na dodatkowe zwiększenie dokładności metody – estymacja ruchu z ułamkową dokładnością