RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Podobne dokumenty
Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Filtrowanie tekstur. Kinga Laurowska

Grafika Komputerowa Wykład 1. Wstęp do grafiki komputerowej Obraz rastrowy i wektorowy. mgr inż. Michał Chwesiuk 1/22

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Python: JPEG. Zadanie. 1. Wczytanie obrazka

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Klasyfikacja metod kompresji

Cyfrowe przetwarzanie i kompresja danych. dr inż.. Wojciech Zając

Plan wykładu. Akcelerator 3D Potok graficzny

Klasyfikacja metod kompresji

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Transformata Fouriera

Obraz cyfrowy. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Kompresja dźwięku w standardzie MPEG-1

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Dane obrazowe. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Joint Photographic Experts Group

Kompresja video (MPEG)

Kodowanie podpasmowe. Plan 1. Zasada 2. Filtry cyfrowe 3. Podstawowy algorytm 4. Zastosowania

Waldemar Izdebski - Wykłady z przedmiotu SIT / Mapa zasadnicza 30

Karty graficzne możemy podzielić na:

Audio i video. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Grafika komputerowa. Dla DSI II

Formaty graficzne HDR

dr inż. Piotr Odya dr inż. Piotr Suchomski

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Rozszerzenia plików graficznych do publkacji internetowych- Kasia Ząbek kl. 2dT

Wybrane metody kompresji obrazów

Kompresja sekwencji obrazów - algorytm MPEG-2

Kodowanie i kompresja Streszczenie Studia Wieczorowe Wykład 10, 2007

Podstawowe pojęcia. Teoria informacji

Synteza i obróbka obrazu HDR. Obrazy o rozszerzonym zakresie dynamiki

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Technologie Informacyjne

Wykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

Technologie cyfrowe semestr letni 2018/2019

dr inż. Piotr Odya Wprowadzenie

Zastosowanie kompresji w kryptografii Piotr Piotrowski

HDR. Obrazy o rozszerzonym zakresie dynamiki

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 2 AiR III

FORMATY PLIKÓW GRAFICZNYCH

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Generowanie sygnałów na DSP

Kompresja JPG obrazu sonarowego z uwzględnieniem założonego poziomu błędu

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Transformaty. Kodowanie transformujace

Cała prawda o plikach grafiki rastrowej

Elżbieta Wysocka Filmoteka Narodowa

Analiza obrazów - sprawozdanie nr 2

TECHNIKI MULTIMEDIALNE

Próbkowanie (ang. sampling) - kwantyzacja. Rastrowa reprezentacja obrazu 2D. Generowanie obrazu rastrowego 2D. Próbkowanie i integracja

POB Odpowiedzi na pytania

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

Kompresja sekwencji obrazów

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Obraz jako funkcja Przekształcenia geometryczne

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Kompresja Danych. Streszczenie Studia Dzienne Wykład 13, f(t) = c n e inω0t, T f(t)e inω 0t dt.

Formaty plików graficznych

Różne rodzaje efektów

Grafika na stronie www

PRACA DYPLOMOWA STUDIA PIERWSZEGO STOPNIA. Łukasz Kutyła Numer albumu: 5199

Akwizycja i przetwarzanie sygnałów cyfrowych

Analiza obrazu. wykład 1. Marek Jan Kasprowicz Uniwersytet Rolniczy Marek Jan Kasprowicz Analiza obrazu komputerowego 2009 r.

Podstawy grafiki komputerowej. Teoria obrazu.

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Podstawy grafiki komputerowej

Kwantyzacja wektorowa. Kodowanie różnicowe.

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Zygmunt Wróbel i Robert Koprowski. Praktyka przetwarzania obrazów w programie Matlab

Przetwarzanie obrazu cyfrowego

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

AKD Metody słownikowe

Konwersja dźwięku analogowego do postaci cyfrowej

Kompresja danych DKDA (7)

Formaty plików graficznych

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Język JAVA podstawy. Wykład 5, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Kompresja bezstratna

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Wprowadzenie Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

Kompresja obrazów w statycznych - algorytm JPEG

Grafika rastrowa i wektorowa

Bartosz Bazyluk GRAFIKA KOMPUTEROWA Wprowadzenie. Warunki zaliczenia. Grafika Komputerowa, Informatyka, I Rok

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 6, strona 1. Format JPEG

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Kompresja Stratna i Bezstratna Przegląd Najważniejszych Formatów Graficznych

GRAFIKA RASTROWA. WYKŁAD 2 Oprogramowanie i formaty plików. Jacek Wiślicki Katedra Informatyki Stosowanej

Plan wykładu. Wprowadzenie Program graficzny GIMP Edycja i retusz zdjęć Podsumowanie. informatyka +

Transkrypt:

RENDERING W CZASIE RZECZYWISTYM Michał Radziszewski

Plan wykładu Zaawansowane teksturowanie wprowadzenie Próbkowanie i rekonstrukcja sygnału Granica Nyquista Filtry do rekonstrukcji Antyaliasing tekstur MIP-mapping Filtrowanie anizotropowe

Plan wykładu c.d. Kompresja obrazów Kompresja bezstratna Algorytm deflate/inflate Kompresja stratna Przestrzenie kolorów RGB i YCrCb Transformacja cosinusowa Kompresja S3TC Kompresja różnych danych Wybór odpowiedniego formatu S3TC

Literatura A. R. Smith, A Pixel Is Not A Little Square (and A Voxel Is Not A Little Cube), 1995 D. Mitchell, A. Netravali, Reconstruction Filters in Computer Graphics, SIGGRAPH 1988 P. Heckbert, Fundamentals of Texture Mapping and Image Warping, 1989 J.M.P. van Waveren, Real-Time DXT Compression, ID Software 2006

Zaawansowane teksturowanie wprowadzenie Aby osiągnąć dobre rezultaty teksturowania, nie wystarczy tylko przypisać tekstury do obiektów Konieczne jest zastosowanie odpowiednio dobranych technik antyaliasingu opierających się na filtrowaniu tekstur Współczesne gry stosują wiele tekstur i bardzo dużo obiektów niezbędne okazują się specjalizowane techniki kompresji tekstur

Próbkowanie i rekonstrukcja sygnału Teksturę można traktować jako dwuwymiarowy sygnał Próbkowanie zapamiętanie wartości sygnału w punktach tworzących regularną siatkę Teksele (i piksele) to są próbki punktowe, a nie małe kwadraty! Z takich próbek punktowych można odtworzyć sygnał, stosując odpowiednio dobrane filtry rekonstrukcyjne

Filtry do rekonstrukcji Rekonstrukcja odtworzenie wartości sygnału na podstawie próbek punktowych Wykonywana za pomocą odpowiedniego dobranego filtra Próbkowanie najbliższego punktu Filtrowanie dwuliniowe Filtry wielomianowe Filtry gaussowskie Funkcja sinc

Filtry do rekonstrukcji Wybór najlepszego filtru wybór pomiędzy rozmyciem a dzwonieniem, należy tez wziąć pod uwagę wydajność Najwydajniejsze jest sprzętowe filtrowanie dwuliniowe, ale nie zawsze daje dobre rezultaty Idealny z teoretycznego punktu widzenia filtr oparty o funkcję sinc powoduje dzwonienie W praktyce bardzo dobre wyniki można uzyskać za pomocą filtrów wielomianowych

Interpolacja dwuliniowa

Granica Nyquista Sygnał odtworzony może znacznie różnić się od sygnału oryginalnego Jeżeli maksymalna częstotliwość sygnału jest co najmniej 2x mniejsza niż częstotliwość próbkowania, to wtedy oryginalny sygnał można odtworzyć dokładnie jest to granica Nyquista W praktyce dokładne odtworzenie sygnału zwykle nie jest możliwe Można jednak znacznie ograniczyć błąd

Granica Nyquista aliasing

Antyaliasing tekstur Z punktu widzenia mapowania tekstur rendering trójkąta polega na przekształceniu tekstury poprzez mapowanie uv do przestrzeni widoku, potem ekranu (rzutowanie), a na końcu ponownemu próbkowaniu i zapisaniu wyniku w buforze ramki Jeżeli częstotliwość próbkowania w przestrzeni ekranu jest mniejsza niż oryginalna częstotliwość próbkowania tekstury to powstaje aliasing Jeżeli jest większa, to jakość obrazu silnie zależy od jakości filtru rekonstrukcyjnego

Antyaliasing tekstur c.d. Teksturę trzeba przefiltrować filtrem dolnoprzepustowym tak, aby usunąć częstotliwości powyżej progu powodującego aliasing Jednocześnie nie należy usunąć innych danych spowodowałoby to niepotrzebne rozmazanie tekstury Trudności związane głównie z wydajnością, dobre filtrowanie 2D jest o wiele bardziej kosztowne niż filtrowanie 1D

MIP-mapping

MIP-mapping Technika przyspieszania filtrowania tekstur Przechowywanie kolejnych poziomów szczegółowości, każdy następny o rozdzielczości 2x mniejszej niż poprzedni W przypadku liczb nieparzystych karty graficzne zaokrąglają w dół (wydajność), mimo że zaokrąglanie w gore dałoby nieco lepsze wyniki Zejście do rozdzielczości 1x1 Algorytm dla tekstur nie-kwadratowych

MIP-mapping

MIP-mapping W czasie odczytu z tekstury wybór najlepiej pasującego poziomu szczegółowości, na którym wykonywane jest filtrowanie dwuliniowe Bez MIP-mappingu mogłoby się okazać, że trzeba odczytać jednocześnie nawet wszystkie teksele tekstury Widoczne przejścia miedzy poziomami szczegółowości Tzw. filtrowanie trójliniowe rozwiązanie problemu

Filtrowanie anizotropowe W podstawowym algorytmie MIP-mappingu problematyczny jest wybór odpowiedniego poziomu szczegółowości Algorytm ten zakłada, że filtr będzie mieć kształt koła W przypadku powierzchni nieprostopadłych do obserwatora filtr ma jednak kształt elipsy Filtrowanie anizotropowe Wybór poziomu szczegółowości na podstawie krótszej osi elipsy Uśrednienie wartości wielu tekseli na osi dłuższej

Filtrowanie anizotropowe Filtrowanie trójliniowe wymaga zawsze 8 tekseli Filtrowanie anizotropowe może wymagać odczytania nieograniczonej z góry ilości tekseli Ograniczenie mimośrodu elipsy ograniczenie ilości odczytów tekseli, kosztem pewnego rozmycia Filtrowanie anizotropowe jest kosztowne Producenci kart graficznych stosują różne uproszczenia Rażąca utrata jakości w kartach NVIDIA z serii 5xxx w latach 2002/2003

Filtrowanie anizotropowe

Kompresja obrazów Obrazy nieskompresowane na ogół zapisywane są jako tablice pikseli Format taki pozwala na bardzo szybki odczyt i zapis, jednak zużywa względnie dużo pamięci Kompresja może znacząco ograniczyć zajętość pamięci, jednak za cenę spowolnienia dostępu do obrazu i, czasami, utraty jego jakości (kompresja stratna)

Kompresja obrazów c.d. Współczynnik kompresji (rozmiar skompresowany / rozmiar oryginalny) określa jak skuteczny jest dany schemat kompresji, nie mówi jednak nic o potencjalnej utracie jakości obrazu Istnieją algorytmy dekompresji obrazu w czasie rzeczywistym (w tym wspomagane sprzętowo przez GPU) Kompresja jest na ogół znacznie trudniejsza, ale też możliwa do wykonania w czasie rzeczywistym

Kompresja obrazów c.d. Wszystkie znaczące formaty kompresji określają dokładnie jak ma wyglądać dekompresja Zostawiają one jednak pewną swobodę przy konstruowaniu algorytmu kompresji Pozwala to na uzyskanie nieco szybszej kompresji do pracy w czasie rzeczywistym (kosztem utraty jakości) Można także zastosować bardzo dokładne, ale powolne algorytmy kompresji w trybie off-line

Kompresja bezstratna Umożliwia dokładne odtworzenie oryginalnego obrazu z obrazu skompresowanego Na ogół niezbyt duży współczynnik kompresji W pewnych przypadkach rozmiar obrazu po skompresowaniu może wzrosnąć (!) Nie można wyrzucić informacji Kompresja bezstratna to jedynie przekodowanie w taki sposób, aby typowe pliki obrazów uległy zmniejszeniu Rozmiar pozostałych plików odpowiednio wzrasta

Algorytm deflate/inflate Stosowany w bibliotece zlib Biblioteka ta jest używana m.in. w formatach.png i.exr Podstawowe elementy algorytmu Usunięcie powtarzających się łańcuchów bajtów wstawienie odwołań wstecznych w miejsca powtórzeń Podział danych na symbole o jednakowej długości i przypisanie im kodów o różnej długości tak, aby najczęściej powtarzające się kody dostały najkrótsze symbole

Kompresja stratna Umożliwia osiągnięcie znaczącej kompresji, jednak kosztem utraty jakości obrazu, a zatem braku możliwości dokładnego odtworzenia oryginalnego obrazu Istnieją techniki o stałym, a także zmiennym współczynniku kompresji, w zależności od tego, co dany obraz przedstawia Te drugie pozwalają na efektywniejszą kompresję Do dekompresji w czasie rzeczywistym obecnie stosuje się jednak tylko te pierwsze, ze względu na koszt

Kompresja stratna Metody o zmiennym współczynniku kompresji umożliwiają osiągnięcie z góry założonego współczynnika kompresji, jednak wtedy jakość obrazu będzie zależna od tego, co obraz przedstawia Można też zastosować podejście odwrotne ograniczona maksymalna utrata jakości, a otrzymany współczynnik kompresji zależny od zawartości obrazu

Kompresja stratna oryginał

Kompresja stratna JPEG 1:16

Kompresja stratna 4x rozdzielczość

Przestrzenie kolorów RGB i YCrCb Przestrzeń kolorów RGB nie jest zbyt dobra do kompresji Przestrzeń YCrCb (luminance, red chrominance, blue chrominance) nadaje się lepiej do tego celu Szczegóły na kanale jasności są znacznie lepiej rozpoznawane przez ludzi niż szczegóły na kanałach chrominancji Kanały chrominancji można o wiele bardziej skompresować niż kanał jasności bez znaczącej utraty jakości obrazu

Transformacja cosinusowa Przejście z dziedziny przestrzennej do dziedziny częstotliwości Informacje o wyższych częstotliwościach można skompresować bardziej niż te o niższych ludzki wzrok jest na nie mniej czuły Operacja stratna (nawet bez kompresji) ze względu na błędy zaokrągleń

Transformacja cosinusowa

Kompresja JPEG Kolejne kroki kompresji: Przejście z przestrzeni RGB do przestrzeni YCrCb Opcjonalna redukcja rozdzielczości kanałów chrominancji Podział obrazu na bloki 8x8, dyskretna transformacja cosinusowa (DCT) na każdym z nich Kwantyzacja współczynników DCT, zapisanie ich w kolejności zygzakowej Wycinanie zer, kodowanie Huffmana albo kodowanie arytmetyczne

Kompresja JPEG

Kompresja JPEG Aby zdekodować obraz należy wykonać odwrotności powyższych kroków w odwrotnej kolejności Kompresja stratna, zmienny współczynnik kompresji Standard kompresji JPEG pozwala (z pominięciem pierwszego kroku) na zakodowanie do 255 kanałów, niestety pliki.jpg tylko 1 albo 3 (RGB) Kompresja stosowana w grze Rage jako wsparcie techniki Unique Texturing

Kompresja S3TC Tylko format RGBA Trzy warianty kompresji, różnią się kompresją kanału alfa BC1 alfa 1-bitowa, zmieszana z danymi koloru BC2 alfa 4-bitowa, nieskompresowana BC3 alfa 8-bitowa, skompresowana Niezależna kompresja bloków 4x4 Stały współczynnik kompresji 1:6 (1:8) dla BC1, 1:4 dla BC2 oraz BC3

Kompresja S3TC Opis skompresowanego bloku zawiera dwa kolory w formacie RGB 5:6:5 (2x16 bitów) Dodatkowe dwa kolory są liniowo interpolowane pomiędzy nimi W każdym bloku dostępne są 4 kolory leżące na jednej linii w przestrzeni RGB Każdy z 16 tekseli bloku jest opisany przez indeks, mówiący którego z 4 dostępnych kolorów używa (16x2 bity)

Kompresja S3TC Aby skompresować obraz należy dla każdego bloku tylko określić dwa podstawowe kolory Niestety nie jest to proste, jakość kompresji bardzo silnie zależy od algorytmu użytego do tego celu Formaty BC1, BC2 i BC3 kompresują kolory w powyższy sposób, różnią się tylko kompresją kanału alfa

Kompresja S3TC oryginał

Kompresja S3TC BC1

Kompresja S3TC alg. szybki Wybór dwóch podstawowych kolorów Algorytm szybki: Ograniczenie wszystkich 16 tekseli prostopadłościanem wyrównanym do osi w przestrzeni RGB Dwa kolory: punkty minimalny i maksymalny prostopadłościanu ograniczającego Metoda niezbyt dokładna (np. dlaczego kolory z tej konkretnej przekątnej, a nie innej?) Często błąd kompresji jest akceptowalny, mimo że mógłby być mniejszy

Kompresja S3TC alg. dokładny Algorytm dokładny: Technika PCA (Principal Component Analysis) do znalezienia linii (w przestrzeni RGB) o największej zmienności danych Rzuty kolorów 16 tekseli (punktów w RGB) na tę linię będą miały możliwie mały błąd Dwa podstawowe kolory np. najbardziej odległe od siebie rzuty na tej linii Bardzo dobre wyniki, ale PCA dla 16 punktów jest znacznie wolniejsze niż znalezienie prostopadłościanu

Kompresja S3TC

Kompresja S3TC różnych danych Obrazy bez kanału alfa albo tekstury do alfa-testu można zapisać w formacie BC1 Najlepszy współczynnik kompresji 1-bitowa alfa wystarcza Jeżeli obraz zawiera kanał alfa z ostrymi krawędziami, to najlepszy jest format BC2 Jeżeli obraz zawiera kanał alfa z gładkimi gradientami, to lepszy będzie format BC3

Kompresja S3TC różnych danych Kompresja map normalnych Zakodowane w teksturze RGB, bez kanału alfa Mimo to, nie należy używać formatu BC1 Normalne mają nieliniowe zależności pomiędzy komponentami, natomiast bloki S3TC używają 4 kolorów leżących na jednej linii duży błąd kompresji Zakodowanie tylko wartości Nx i Ny, odtworzenie Nz Format BC3, Nx na kanale G, Ny na kanale A Albo: zapisanie Nx i Ny w dwóch rożnych teksturach przemieszanie normalnych z innymi danymi

Kompresja S3TC różnych danych

Dziękuję za uwagę