Synteza tekstur - Texture synthesis
Synteza tekstur to proces algorytmicznego konstruowania dużego obrazu cyfrowego z małego cyfrowego obrazu próbnego przy wykorzystaniu jego strukturalnej zawartości. Jest przedmiotem badań w zakresie grafiki komputerowej i znajduje zastosowanie w wielu dziedzinach, m.in. w cyfrowej obróbce obrazu , trójwymiarowej grafice komputerowej i postprodukcji filmów .
Synteza tekstur może służyć do wypełniania dziur w obrazach (jak w przypadku malowania ), tworzenia dużych, niepowtarzalnych obrazów tła i powiększania małych obrazów.
Porównaj z teksturami proceduralnymi
Tekstury proceduralne to pokrewna technika, która może syntetyzować tekstury od zera bez materiału źródłowego. Z kolei synteza tekstur odnosi się do technik, w których jakiś obraz źródłowy jest dopasowywany lub rozszerzany.
Tekstury
„ Tekstura ” jest słowem dwuznacznym iw kontekście syntezy tekstur może mieć jedno z następujących znaczeń:
- W potocznym języku słowo „tekstura” jest używane jako synonim „struktury powierzchni”. Teksturę opisano za pomocą pięciu różnych właściwości w psychologii percepcji : szorstkości , kontrastu , kierunkowości , podobieństwa linii i szorstkości .
- W grafice komputerowej 3D tekstura to cyfrowy obraz nałożony na powierzchnię trójwymiarowego modelu przez odwzorowanie tekstur w celu nadania modelowi bardziej realistycznego wyglądu. Często obraz jest fotografią „prawdziwej” tekstury, na przykład słojów drewna .
- W przetwarzaniu obrazu każdy obraz cyfrowy złożony z powtarzających się elementów nazywany jest „teksturą”.
Teksturę można układać wzdłuż spektrum od regularnego do stochastycznego, połączonego płynnym przejściem:
- Regularne tekstury. Te tekstury wyglądają jak dość regularne wzory. Przykładem strukturyzowanej tekstury jest kamienny mur lub podłoga wyłożona płytkami chodnikowymi.
- Tekstury stochastyczne. Obrazy tekstur stochastycznych tekstur wyglądają jak szum : kolorowe kropki, które są losowo rozrzucone po obrazie, ledwo określone przez atrybuty minimalna i maksymalna jasność oraz średni kolor. Wiele tekstur wygląda jak stochastyczne, gdy ogląda się je z daleka. Przykładem tekstury stochastycznej jest obrzutka .
Cel
Algorytmy syntezy tekstur są przeznaczone do tworzenia obrazu wyjściowego spełniającego następujące wymagania:
- Dane wyjściowe powinny mieć rozmiar podany przez użytkownika.
- Wynik powinien być jak najbardziej podobny do próbki.
- Wydruk nie powinien zawierać widocznych artefaktów, takich jak szwy, bloki i niedopasowane krawędzie.
- Wyjście nie powinno się powtarzać, tj. Te same struktury na obrazie wyjściowym nie powinny pojawiać się w wielu miejscach.
Podobnie jak większość algorytmów, synteza tekstur powinna być wydajna pod względem czasu obliczeń i wykorzystania pamięci.
Metody
Zbadano lub opracowano następujące metody i algorytmy syntezy tekstur:
Dekarstwo
Najprostszym sposobem wygenerowania dużego obrazu z przykładowego obrazu jest ułożenie go kafelkami . Oznacza to, że wiele kopii próbki jest po prostu kopiowanych i wklejanych obok siebie. Wynik rzadko jest zadowalający. Z wyjątkiem rzadkich przypadków, między płytkami będą szwy, a obraz będzie bardzo powtarzalny.
Stochastyczna synteza tekstur
Metody stochastycznej syntezy tekstur tworzą obraz poprzez losowy dobór wartości kolorów dla każdego piksela, na który wpływają jedynie podstawowe parametry, takie jak minimalna jasność, średni kolor lub maksymalny kontrast. Algorytmy te działają dobrze tylko z teksturami stochastycznymi, w przeciwnym razie dają całkowicie niezadowalające wyniki, ponieważ ignorują wszelkiego rodzaju struktury w obrazie próbnym.
Synteza strukturalna tekstur w jednym celu
Algorytmy z tej rodziny używają ustalonej procedury tworzenia obrazu wyjściowego, tj. Są ograniczone do jednego rodzaju strukturyzowanej tekstury. Zatem te algorytmy mogą być stosowane zarówno do tekstur strukturalnych, jak i tylko do tekstur o bardzo podobnej strukturze. Na przykład jeden algorytm przeznaczony do jednego celu może generować wysokiej jakości obrazy tekstur kamiennych ścian; jest jednak bardzo mało prawdopodobne, aby algorytm wygenerował jakiekolwiek realne wyniki, jeśli otrzyma przykładowy obraz przedstawiający kamyki.
Mozaika chaosu
Ta metoda, zaproponowana przez grupę Microsoft do grafiki internetowej, jest udoskonaloną wersją kafelkowania i obejmuje następujące trzy kroki:
- Obraz wyjściowy jest całkowicie wypełniony kafelkami. Rezultatem jest powtarzający się obraz z widocznymi szwami.
- Losowo wybrane części próbki o losowym rozmiarze są kopiowane i wklejane losowo na obraz wyjściowy. Rezultatem jest raczej niepowtarzalny obraz z widocznymi szwami.
- Obraz wyjściowy jest filtrowany w celu uzyskania gładkich krawędzi.
Rezultatem jest akceptowalny obraz tekstury, który nie jest zbyt powtarzalny i nie zawiera zbyt wielu artefaktów. Mimo to metoda ta jest niezadowalająca, ponieważ wygładzanie w kroku 3 powoduje, że obraz wyjściowy wygląda na rozmyty.
Synteza tekstur oparta na pikselach
Metody te, wykorzystujące pola Markowa, próbkowanie nieparametryczne, kwantyzację wektorów o strukturze drzewiastej i analogie obrazów to jedne z najprostszych i najbardziej skutecznych algorytmów ogólnej syntezy tekstur. Zazwyczaj syntetyzują teksturę w kolejności linii skanowania, znajdując i kopiując piksele o najbardziej zbliżonym lokalnym sąsiedztwie do tekstury syntetycznej. Te metody są bardzo przydatne przy uzupełnianiu obrazu. Można je ograniczyć, jak w analogiach obrazowych , do wykonywania wielu ciekawych zadań. Zazwyczaj są one przyspieszane za pomocą metody przybliżonego najbliższego sąsiada, ponieważ wyczerpujące wyszukiwanie najlepszego piksela jest nieco powolne. Syntezę można również przeprowadzić w wielorozdzielczości, na przykład przy użyciu nieparametrycznego, wieloskalowego pola losowego Markowa.
Synteza tekstur oparta na plastrach
Synteza tekstur oparta na łatach tworzy nową teksturę poprzez kopiowanie i zszywanie tekstur z różnymi przesunięciami, podobnie jak w przypadku użycia narzędzia do klonowania do ręcznej syntezy tekstury. Pikowanie obrazu i tekstury grafitowe to najbardziej znane algorytmy syntezy tekstur oparte na łatach. Algorytmy te wydają się być bardziej efektywne i szybsze niż metody syntezy tekstur oparte na pikselach.
Podejścia Deep Learning i sieci neuronowe
Niedawno wykazano, że metody głębokiego uczenia są potężnym, szybkim i opartym na danych, parametrycznym podejściem do syntezy tekstur. Praca Leona Gatysa jest kamieniem milowym: on i jego współautorzy wykazali, że filtry z dyskryminacyjnie trenowanej głębokiej sieci neuronowej mogą być wykorzystywane jako efektywne parametryczne deskryptory obrazów, co prowadzi do nowatorskiej metody syntezy tekstur.
Innym niedawnym osiągnięciem jest wykorzystanie modeli generatywnych do syntezy tekstur. Metoda przestrzennego GAN po raz pierwszy wykazała zastosowanie w pełni nienadzorowanych GAN do syntezy tekstur. W kolejnej pracy metoda została jeszcze bardziej rozszerzona - PSGAN może uczyć się zarówno okresowych, jak i nieokresowych obrazów w sposób nienadzorowany na podstawie pojedynczych obrazów lub dużych zbiorów danych obrazów. Ponadto elastyczne próbkowanie w przestrzeni szumowej pozwala na tworzenie nowych tekstur o potencjalnie nieskończonej wielkości wyjściowej i płynne przechodzenie między nimi. To sprawia, że PSGAN jest wyjątkowy pod względem typów obrazów, jakie może stworzyć metoda syntezy tekstur.
Wdrożenia
Niektóre implementacje syntezy tekstur istnieją jako wtyczki do bezpłatnego edytora obrazów Gimp :
Implementacja syntezy tekstur oparta na pikselach:
Synteza tekstur oparta na plastrach:
Głęboka generacyjna synteza tekstur za pomocą PSGAN, zaimplementowana w Pythonie z Lasagne + Theano:
Literatura
Kilka najwcześniejszych i najczęściej cytowanych artykułów w tej dziedzinie obejmuje:
- Popata w 1993 r. - „Nowy model prawdopodobieństwa oparty na klastrach dla syntezy, klasyfikacji i kompresji tekstur”.
- Heeger-Bergen w 1995 - "Analiza / synteza tekstury oparta na piramidzie".
- Pageta-Longstaffa w 1998 r. - „Synteza tekstur za pośrednictwem nieparametrycznego, wieloskalowego pola losowego Markowa”
- Efros-Leung w 1999 r. - „Synteza tekstur przez próbkowanie nieparametryczne”.
- Wei-Levoy w 2000 r. - „Szybka synteza tekstur przy użyciu kwantyzacji wektorów o strukturze drzewiastej”
chociaż były też wcześniejsze prace na ten temat, np
- Gagalowicz i Song De Ma w 1986, "Modelowana synteza naturalnych tekstur do scen trójwymiarowych",
- Lewisa w 1984 r., „Synteza tekstur dla malarstwa cyfrowego”.
(Ten drugi algorytm ma pewne podobieństwa do podejścia Chaos Mosaic).
Nieparametryczne podejście Efros-Leung do próbkowania jest pierwszym podejściem, które może z łatwością zsyntetyzować większość typów tekstur i zainspirowało dosłownie setki kolejnych artykułów z grafiki komputerowej. Od tego czasu dziedzina syntezy tekstur szybko się rozwinęła wraz z wprowadzeniem kart akceleratorów grafiki 3D do komputerów osobistych. Okazuje się jednak, że Scott Draves po raz pierwszy opublikował wersję tej techniki opartą na łatkach wraz z kodem GPL w 1993 roku według Efrosa .
Zobacz też
- Granularna synteza , podobna technika dla dźwięku, a nie obrazów
- Malowanie
- Rzeźbienie w szwie
- Tekstura proceduralna
- Incepcjonizm
Bibliografia
Linki zewnętrzne
- synteza tekstur
- synteza tekstur
- synteza filmu teksturowego
- Texture2005
- Niemal regularna synteza tekstur
- Laboratorium tekstury
- Nieparametryczna synteza tekstur
- Przykłady tekstur reakcyjno-dyfuzyjnych
- Implementacja algorytmu Efros & Leung z przykładami
- Synteza mikrotekstur przez randomizację faz, z kodem i demonstracją online
- Wdrożenie okresowego przestrzennego GAN-u do syntezy tekstur