• Nie Znaleziono Wyników

Geometria obrazu

N/A
N/A
Protected

Academic year: 2021

Share "Geometria obrazu"

Copied!
36
0
0

Pełen tekst

(1)

Geometria obrazu

Wykład 8

Jak oszczędzać przestrzeń i czas ?

1. Przerzedzanie triangulacji – modelowanie terenu,

– kompresja danych.

2. Kompresja stratna i bezstratna.

3. Formaty plików graficznych.

4. Kodowanie

(2)

Przerzedzanie triangulacji.

Niech X = {x1, x2, ... , xN}  R2 będzie danym zbiorem na płaszczyźnie, a fX = (f(x1), f(x2), ... , f(xN))  RN oznacza odpowiadający X ciąg wartości nieznanej funkcji f : R2  R.

Algorytm przerzedzania triangulacji polega na rekurencyjnym usuwaniu punktów ze zbioru X zgodnie z ustalonymi wcześniej kryteriami.

Niech n oznacza liczbę usuwanych elementów. Wtedy algorytm przyjmuje następującą ogólną postać:

XN:=X;

for k:=1 to n do begin

zlokalizuj usuwalny punkt x  XN-k+1 ; XN-k := XN-k+1\ x ;

end

(3)

W wyniku działania tego algorytmu otrzymujemy ciąg zbiorów punktów wyznaczających kolejne triangulacje:

XN-n  ...  XN-1  XN = X .

Po usunięciu punktu powstały w ten sposób wielokąt ponownie triangulujemy tak, aby ponownie otrzymać triangulację Delaunay.

Ponieważ zaburzenie triangulacji Delaunay ma charakter lokalny, wystarczy tylko striangulować wielokąt wyznaczany przez sąsiadów usuwanego punktu.

(4)

Głównym problemem jest zdefiniowanie kryteriów określających usuwalność punktów.

Modelowaną powierzchnię przybliżamy funkcjami sklejanymi (spline) będącymi funkcjami liniowymi na każdym trójkącie triangulacji.

Dla każdego podzbioru zbioru Y  X możemy zdefiniować taką funkcję SY = {s: s  C(CH(Y)), że s|T jest liniowa na każdym T  DT(Y)}.

Fakt.

Dla każdego wektora fY liniowy spline L(Y,f) taki, że L(Y,f)(y) = f(y) dla każdego y  Y, jest jednoznacznie określony.

(5)

Definicja.

Dla danej normy |||| w RN błędem aproksymacji funkcji f na zbiorze X przez spline określony na zbiorze Y = Xr  X nazywamy wartość

(Y,X) = ||L(Y,f)|X – fX||.

W zależności od rozpatrywanej normy otrzymujemy np.

(Y,X) = maxxX |L(Y,f)(x) – f(x)| lub

2(Y,X) = (xX |L(Y,f)(x) – f(x)|2)1/2 .

Chcielibyśmy dla N-n < k < N znaleźć zbiór Y*  X taki, że

|Y*| = k oraz (Y*,X) = minYX, |Y| = k (Y,X).

(6)

Niestety tak sformułowany problem jest NP-trudny.

Dlatego wykorzystując metodę zachłanną będziemy poszukiwać jak najlepszego rozwiązania.

Kryterium usuwalności AT.

Dla Y  X punkt y*  Y jest usuwalny z Y wtedy i tylko wtedy, gdy

(Y \ y*,X) = minyY (Y \ y,X).

Wartość e(y) = (Y \ y,X) nazywamy przewidywanym błędem.

W zależności od zastosowania stosuje się różne kryteria usuwalności, które wpływają na postać przewidywanych błędów.

(7)

Modelowanie terenu.

Kryterium usuwalności AT.

Dla Y  X punkt y*  Y jest usuwalny z Y wtedy i tylko wtedy, gdy

(Y \ y*,X) = minyY(Y \ y,X) (określamy minimalne odchylenie).

Niech C(y) określa obszar wyznaczany przez sąsiadów punktu y oraz e1(y) = (Y \ y,X  C(y)).

Kryterium usuwalności AT1.

Dla Y  X punkt y*  Y jest usuwalny z Y wtedy i tylko wtedy, gdy e1(y*) = minyY e1(y).

Nietrudno zauważyć, że AT AT1.

(8)

Przykład.

AT  AT1.

x z

x z

y

x

Widok z góry

Widok z boku

(9)

Aby przyspieszyć obliczenia możemy nieco uprościć powyższą definicję.

Niech e’(y) = (Y \ y,Y). Wtedy możemy zdefiniować kryterium usuwalności AT2 w następujący sposób:

Dla Y  X punkt y*  Y jest usuwalny z Y wtedy i tylko wtedy, gdy e’(y*) = minyY e’(y).

Powyższe kryteria odnoszą się do algorytmów przerzedzania dopasowa-

nego, tzn. uwzględniającego wartości funkcji f. Można też upraszczać model terenu stosując metody niedopasowane, tzn. bazujące tylko na danych

dotyczących zbioru punktów X.

Jednym z tego typu kryteriów jest NAT, w którym priorytet wyboru punktów usuwalnych określany jest przez stosunek

minyX \ x d(x, y) / min d(x, ),

gdzie d( ) jest funkcją odległości a  oznacza brzeg obszaru zawiera- jącego X (im bliżej brzegu tym usuwana krawędź musi być krótsza).

(10)

Przykład.

Modele gór Hurrungane (Norwegia) w NAT i AT1 i odpowiadające im siatki.

[L. Demaret et al. „Adaptive thinning for terrain modeling and image compression”]

(11)

Jeszcze inny sposób przerzedzania.

Dzielimy przestrzeń na prostopadłościany o zadanych rozmiarach krawędzi.

Łączymy w jeden wszystkie wierzchołki znajdujące się w tym samym prostopadłościanie wyznaczając środek ciężkości danego układu.

Triangulujemy obszar pokrywany przez trójkąty o wierzchołkach w eliminowanych punktach.

Zamiast triangulować obszar od nowa możemy sklejać wierzchołki wzdłuż krawędzi je łączącej (w środku ciężkości), nadając im wagi zależne od liczby „pochłoniętych” wierzchołków.

Wybór kolejnej grupy wierzchołków zależy od jakości przybliżenia.

(12)

Przykłady optymalizacji siatki.

https://3dtotal.com/news/general/optimizing-meshes-in-cinema-4d https://www.youtube.com/watch?v=JqoIGxUrLbw

(13)

Kompresja obrazu.

Jako funkcję f możemy też rozpatrywać jasność obrazu. Wtedy możemy przerzedzać raster.

W tym przypadku będziemy starać się minimalizować błąd średnio- kwadratowy ((2(Y,X))2/N), gdzie N jest rozmiarem obrazu.

Niech e(y) = (2(Y \ y,X))2 dla y  Y.

Minimalizacja e(y) jest równoważna minimalizacji

e(y) = (2(Y \y,X  C(y)))2 – (2(Y,X  C(y)))2 dla y  Y.

Zdefiniujmy kryterium usuwalności AT2:

Dla Y  X punkt y*  Y jest usuwalny z Y wtedy i tylko wtedy, gdy e(y*) = minyY e(y).

Postępując podobnie jak poprzednio obliczamy aproksymację L*(Y,F)  SY, gdzie F = f|Y, spełniającą warunek

(i,j)X |L*(Y,F)(i,j) – f(i,j)|2 = mins(i,j)X |s(i,j) – f(i,j)|2 , gdzie s  SY.

(14)

Przykład.

Porównanie kompresji i dekompresji wykonanych z pomocą algorytmu kompresji SPIHT (b) i AT2 (d) oraz triangulacja najbardziej znaczących punktów obrazu (c).

[L. Demaret et al. „Adaptive thinning for terrain modeling and image compression”]

(15)

Przykład działania SPIHT (niestety nie znalazłem nic lepszego….) https://www.youtube.com/watch?v=y3kFcASTf6M

(16)

Kompresja obrazu.

Kompresja bezstratna –metoda kompresji informacji do postaci

zawierającej zmniejszoną liczbę bitów, pod warunkiem że metoda ta gwarantuje możliwość odtworzenia informacji z postaci

skompresowanej do identycznej postaci pierwotnej.

Kompresja stratna — metoda zmniejszania liczby bitów potrzebnych do wyrażenia danej informacji, która nie daje gwarancji, że odtworzona informacja będzie identyczna z oryginałem. Dla niektórych danych algorytm kompresji stratnej może odtworzyć informację w sposób identyczny. Algorytmy kompresji stratnej zazwyczaj posługują się modelami psychozmysłowymi.

(17)

Formaty plików graficznych

JPEG – format kompresji statycznych obrazów rastrowych, charakteryzujący się płynnymi przejściami barw oraz brakiem lub małą ilością ostrych krawędzi i drobnych detali.

Został określony na początku lat dziewięćdziesiątych.

Wielką innowacją algorytmu JPEG była możliwość kontroli stopnia kompresji w jej trakcie, co umożliwia dobranie jego stopnia do danego obrazka, tak aby uzyskać jak najmniejszy plik, ale o zadowalającej jakości.

Umożliwia uzyskanie dużej kompresji obrazu, rzędu 20:1 kosztem pewnej utraty szczegółów, na ogół niezauważalnej.

Dyskretna transformata cosinusowa (DCT) przekształca ciąg liczb rzeczywistych g(0), … , g(N-1) na

dla k = 1, … , N-1 oraz IDCT ma postać

dla m = 0, … , N-1.

1

0 1

0 2

) 1 2 cos ( ) 2 (

) ( ), 1 (

) 0

( N

m N

m N

m m k

N g k

G m N g

G

1

1 2

) 1 2 cos ( ) 2 (

) 0 1 ( )

( N

k N

m k k

N G N G

m

g

(18)

Algorytm działa następująco:

Obraz jest przetwarzany (opcjonalnie) z kanałów RGB na jasność (luminancję) i 2 kanały barwy (chrominancje) obliczane według wzorów: Y = 0,299 R + 0,587 G + 0,114 B; Cb = -0,1687 R – 0,3313 G + 0,5 B; Cr = 0,5 R – 0,4187 G – 0,0813 B.

Redukowana jest część pikseli kanałów barwy. Można nie redukować wcale, redukować 2 do 1 lub 4 do 1.

Kanały są dzielone na bloki 8 × 8 pikseli. W przypadku kanałów kolorów, jest to 8

× 8 danych po redukcji rozdzielczości, tzn. zazwyczaj16 × 16 pikseli obrazu początkowego.

Na blokach wykonywana jest dyskretna transformata cosinusowa (DCT). Zamiast wartości pikseli otrzymujemy średnią wartość wewnątrz bloku oraz częstotliwości zmian wewnątrz bloku.

Zastąpienie średnich wartości bloków przez różnice wobec wartości poprzedniej poprawia nieco współczynnik kompresji.

Kwantyzacja, czyli zastąpienie danych zmiennoprzecinkowych przez liczby całkowite powoduje straty danych. Większą dokładność stosuje się do danych dotyczących niskich częstotliwości niż wysokich.

Współczynniki DCT są uporządkowane zygzakowato, aby zera leżały obok siebie.

Tworzymy pary (ciąg zer, niezerowy element) lub ciąg 16 zer i kompresujemy algorytmem Huffmana.

(19)

Schemat kompresji JPEG.

http://www.eetimes.com/document.asp?doc_id=1225736

(20)

Oprócz sekwencyjnego trybu kompresji stratnej zawiera również rozszerzenia:

1.Tryb progresywny kompresji, oparty na DCT, przewidziany do wyświetlania obrazów w trakcie przesyłania danych. Efekt płynnie

wyostrzającego się obrazu jest szczególnie dobrze widoczny przy użyciu szybkiego dekompresora i wolnej transmisji danych. Tryb ten zyskał rozpowszechnienie wraz z rozwojem Internetu.

2.Tryb hierarchiczny, pozwalający na zapis w jednym pliku tego samego obrazu jako sekwencji kadrów o różnych rozdzielczościach. Kolejne

kadry są kodowane jako różnice względem kadrów poprzednich, o niższej rozdzielczości, a nie jako oddzielne obrazy, co zmniejsza rozmiar pliku.

Tryb ten nie definiuje, która z metod kompresji ma zostać użyta. Tryb hierarchiczny umożliwia szybki podgląd obrazów bez czasochłonnej

dekompresji obrazów o wysokiej rozdzielczości, co ma zastosowanie np.

w fotografii cyfrowej.

(21)

Przykłady.

https://www.youtube.com/watch?v=TrRg0xa4JQA https://www.youtube.com/watch?v=UU0tLHsMaOA

(22)

TIFF (Tagged Image File Format) – format plików graficznych służący do zapisywania obrazów rastrowych.

Został opracowany w 1986 przez grupę firm (m.in. Microsoft i Hewlett- Packard) do drukowania postscriptowego.

Format TIFF pozwala na zapisywanie obrazów stworzonych w trybie kreskowym, skali szarości oraz w wielu trybach koloru i wielu głębiach bitowych koloru. Przechowuje ścieżki i kanały alfa, profile koloru,

komentarze tekstowe. TIFF umożliwia stosowanie kompresji bezstratnej typu LZW oraz CCITT Group 4.

(23)

GIF (Graphics Interchange Format) – format plików graficznych z kompresją bezstratną.

Został stworzony w 1987 r. przez firmę CompuServe.

Zaletą tego formatu jest niewielki rozmiar plików.

Pomimo deklarowanej bezstratności zawęża trochę gamę barw.

Ze względu na to, iż do kompresji w formacie GIF może być używany algorytm LZW, na którym ciążą patenty w kilku krajach świata, w 1995 został opracowany konkurencyjny format PNG używający do kompresji algorytmu deflate (oparty na algorytmie LZ77 i kodowaniu Huffmana).

(24)

Format PNG (Portable Network Graphics) zapisuje tylko pojedyncze pliki graficzne (nie ma animacji).

Obsługuje kanał alfa oraz 48-bitową głębię kolorów (16 bitów na kanał).

Kompresja polega na dokonaniu jednej z transformacji każdej z linii

obrazu, po czym wynik jest kompresowany za pomocą algorytmu deflate.

W PNG stosuje się proste filtry graficzne, które mogą uprościć dane obrazu przed kompresją, zwiększając jej wydajność, np. :

•wartość piksela po lewej,

•średnia wartości pikseli po lewej i na górze,

•suma wartości pikseli po lewej i na górze minus piksel po lewej górnej przekątnej.

Format PNG zalecany jest przez konsorcjum W3C jako preferowany format grafiki dla sieci WWW.

(25)

Kodowanie.

Entropia – średnia ilość informacji przypadająca na znak, któremu przypisane jest prawdopodobieństwo wystąpienia.

Entropię definiujemy jako : H(x) = - ni=1 p(i) logr p(i), gdzie p(i) – prawdopodobieństwo wystąpienia i-tego znaku, a n – liczba wszystkich znaków. r jest podstawą logarytmu (zwykle r=2).

Niech L(x) oznacza średnią długość kodu.

Efektywność kodowania określamy licząc 100% H(x)/L(x).

(26)

Kodowanie arytmetyczne – metoda kodowania dyskretnych źródeł

sygnałów, stosowana jako jeden z systemów w bezstratnej kompresji danych.

Została wynaleziona przez Petera Eliasa w latach sześćdziesiątych.

Dany jest zbiór symboli oraz stowarzyszony z nim zbiór

prawdopodobieństw. Wyróżniamy symbol oznaczający koniec komunikatu.

Na początku dany jest przedział P = [0,1), który dzielony jest na

podprzedziały o szerokościach równych kolejnym prawdopodobieństwom pi. Kolejnym podprzedziałom (ozn. Ri) odpowiadają symbole ze zbioru S.

Algorytm kodowania:

Dla kolejnych symboli c:

1.Określ, który podprzedział bieżącego przedziału P odpowiada literze c – wynikiem jest Ri.

2.Weź nowy przedział P: = Ri .

3.Podziel ten przedział P na podprzedziały w sposób analogiczny do tego, jak to miało miejsce na początku.

Zwróć liczbę jednoznacznie wskazującą przedział P (najczęściej dolne ograniczenie, albo średnia dolnego i górnego ograniczenia).

(27)

Metoda LZ77 korzysta z bufora, który jest podzielony na dwie części:

bufor słownikowy (słownik), przechowujący k ostatnio przetwarzanych symboli;

bufor wejściowy (bufor kodowania), przechowujący n symboli do zakodowania.

Bufor słownikowy obejmuje indeksy 0...k-1, bufor wejściowy k…k+n-1.

n i k mogą być dowolne, w praktyce dobiera się je tak, aby były całkowitą potęgą dwójki,

dzięki czemu w pełni wykorzystywane są słowa bitowe przeznaczone do ich zapamiętania.

Algorytm przebiega następująco:

Do bufora wejściowego wstawiane jest n pierwszych symboli wejściowych.

Słownik zapamiętuje pierwszy symbol wejściowy i zapisuje go na wyjście.

Dopóki w buforze wejściowym są jakieś dane:

- W słowniku wyszukiwany jest najdłuższy podciąg równy prefiksowi bufora

wejściowego. Wynikiem wyszukiwania jest indeks P wyszukanego podciągu w słowniku oraz jego długość C, ograniczona z góry przez n-1. Jeśli podciągu nie uda się znaleźć, to P może mieć dowolną wartość, natomiast C=0.

- Na wyjście wyprowadzana jest trójka (P, C, symbol z bufora wejściowego następujący po dopasowanym podciągu).

- W buforze wejściowym przesuwamy się o C+1 pozycji, a na końcu bufora dopisujemy C+1 kolejnych symboli wejściowych.

(28)

Przykład (trochę nudny).

https://www.youtube.com/watch?v=l7xeA6py9zM

(29)

Kodowanie Shannona

Dany jest alfabet i stowarzyszone z nim prawdopodobieństwa .

• Prawdopodobieństwa (a wraz z nimi symbole) są sortowane w porządku nierosnącym.

• Dla tak uporządkowanych danych oblicza się niepełne

prawdopodobieństwo komulatywne Pi, tzn. sumę prawdopodobieństw elementów od 1 do i-1. P1=0.

• Kodowanie Shannona polega na wzięciu –log2 Pi (długość Shannona) pierwszych bitów binarnego rozwinięcia liczby Pi (brane są bity po

przecinku).

Średnia długość kodów mieści się w przedziale [H(S),H(S) + 1), gdzie H(S) to entropia źródła (średnia liczba bitów na symbol).

(30)

Kodowanie Shannona-Fano – metoda kompresji bezstratnej autorstwa Roberta Fano. Kodowanie to dla dyskretnego źródła danych znajduje kod prefiksowy (żadne słowo nie jest prefiksem innego), który charakteryzuje się dość dobrą efektywnością – lepszą od kodowania Shannona, nie

tworzy jednak optymalnych kodów. Kodowanie Shannona-Fano jest używane np. w kompresorze ZIP.

Algorytm kodowania jest następujący:

s – ciąg symboli ze zbioru posortowanych wg prawdopodobieństw Funkcja Shannon-Fano(s):

1.Jeśli s zawiera dwa symbole, do słowa kodu pierwszej litery dodaj 0, do słowa kodu drugiej litery – 1.

2.W przeciwnym razie (s zawiera więcej niż dwa symbole) podziel s na dwa podciągi s1 i s2 tak, żeby różnica między sumą prawdopodobieństw liter z s1 i s2 była najmniejsza. Do słów kodu symboli z s1 dodaj 0, do kodów symboli z s2 – 1. Wywołaj rekurencyjnie funkcje: Shannon- Fano(s1) oraz Shannon-Fano(s2).

(31)

Przykład.

https://www.youtube.com/watch?v=dJCck1OgsIA

(32)

Kodowanie Huffmana –metoda kompresji bezstratnej. Została opracowana w 1952 r. przez Davida Huffmana.

Z uwagi na jego prostotę i efektywność często wykorzystuje się go jako ostatni etap w różnych systemach kompresji, zarówno bezstratnej, jak i stratnej, np. MP3 lub JPEG.

Dany jest alfabet źródłowy (zbiór symboli) oraz zbiór stowarzyszonych z nim prawdopodobieństw . Prawdopodobieństwa mogą zostać z góry

określone bądź wyznaczone indywidualnie dla każdego zestawu danych.

Własności kodu Huffmana :

•Jest kodem prefiksowym.

•Średnia długość słowa kodowego jest najmniejsza spośród kodów prefiksowych;

•Jeśli prawdopodobieństwa są różne, tzn. pi > pj ,to długość kodu dla symbolu xi jest niewiększa od kodu dla symbolu xj;

•Słowa kodu dwóch najmniej prawdopodobnych symboli mają równą długość.

•Kompresja polega na zastąpieniu symboli otrzymanymi kodami.

(33)

Algorytm Huffmana:

Określ prawdopodobieństwo (lub częstość występowania) dla każdego symbolu ze zbioru S.

Utwórz listę drzew binarnych, które w węzłach przechowują pary: symbol, prawdopodobieństwo. Na początku drzewa składają się wyłącznie z korzenia.

Dopóki na liście jest więcej niż jedno drzewo, powtarzaj:

– Usuń z listy dwa drzewa o najmniejszym prawdopodobieństwie zapisanym w korzeniu.

– Wstaw nowe drzewo, w którego korzeniu jest suma prawdopodobieństw usuniętych drzew, natomiast one same stają się jego lewym i prawym poddrzewem. Korzeń drzewa nie przechowuje symbolu.

Drzewo, które pozostanie na liście, jest nazywane drzewem Huffmana – prawdopodobieństwo zapisane w korzeniu jest równe 1, natomiast w liściach drzewa zapisane są symbole.

Algorytm jest niedeterministyczny (dowolny wybór drzew o takim samym

prawdopodobieństwie i kolejności poddrzew). Jednak niezależnie od sposobu wyborów średnia długość kodu pozostaje taka sama.

Na podstawie drzewa Huffmana tworzone są słowa kodowe w następujący sposób:

Każdej lewej krawędzi drzewa przypisz 0, prawej 1.

Przejdź w głąb drzewa od korzenia do każdego liścia (symbolu). Przy skręcie w prawo, dopisz do kodu bit o wartości 1, w przeciwnym razie dopisz 0.

Długość słowa kodowego jest równa głębokości symbolu w drzewie.

(34)

Przykład.

https://www.youtube.com/watch?v=dM6us854Jk0

(35)

Przykład, że kodowanie Shannona-Fano różni się od kodowania Huffmana.

Niech dane symbole występują z odpowiednim prawdopodobieństwem:

A – 14/36, B – 7/36, C – 6/36, D – 5/36 i E – 4/36.

Wtedy kod Shannona-Fano ma postać:

A – 00, B – 01, C – 10, D – 110, E – 111, natomiast kod Huffmana jest następujący:

A – 0, B – 100, C – 101, D – 110, E – 111.

(36)

Dziękuję za uwagę.

Cytaty

Powiązane dokumenty

Ile jest liczb naturalnych czterocyfrowych takich, ˙ze w ich zapisie dziesi˛etnym wyst˛epuje jedna cyfra nieparzysta i trzy cyfry parzyste. Uwaga: przypominamy, ˙ze zero jest liczb ˛

Niemal powszechnie uważa się takie „dzie- ła” za dowód rozwoju kultury, a autorowi przyznaje się szerokie prawo do „samo- realizacji” oraz „wyrażania siebie”, mimo iż

Liczba punktów możliwych do uzyskania: 45 Do następnego etapu zakwalifikujesz się, jeżeli uzyskasz co najmniej 36 punktów... 2 Zadanie 1

1. Zestaw konkursowy zawiera 12 zadań. Przed rozpoczęciem pracy, sprawdź, czy zestaw zadań jest kompletny. Jeżeli zauważysz usterki, zgłoś je Komisji Konkursowej. Zadania

13. Wykonawca zobowiązany będzie do stosowania współczynnika korygującego zaoferowanego w ofercie przez cały okres trwania umowy. Szczegółowy zakres praw i

Metamorfoza rzeczy u Szlengla dokonuje się jednak nie tylko pod względem roli, jaką odgrywają rzeczy w życiu człowieka, ale również w sensie ontologicznym, co można zauważyć

Kontynuuj zabawę zmieniając równania, używaj znaku minus „–” układaj z dzieci równania tak, żeby był podany tylko jeden składnik dodawania i suma (2+_=5), baw się z

Ala zauważyła, że dno drugiej formy do ciasta jest podobne do dna pierwszej formy w skali 3:1 a ścianki boczne są tej samej wysokości.. Ile waży druga forma, jeśli obydwie