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ń:

  1. 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 .
  2. 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 .
  3. W przetwarzaniu obrazu każdy obraz cyfrowy złożony z powtarzających się elementów nazywany jest „teksturą”.
Połączenie zdjęć i wygenerowanych obrazów, ilustrujących spektrum 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:

  1. Obraz wyjściowy jest całkowicie wypełniony kafelkami. Rezultatem jest powtarzający się obraz z widocznymi szwami.
  2. 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.
  3. 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.

Pikowanie obrazu.

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ż

Bibliografia

Linki zewnętrzne