Синтез текстур — это процесс алгоритмического построения большого цифрового изображения из небольшого цифрового образца изображения с использованием его структурного содержания. Он является объектом исследований в области компьютерной графики и используется во многих областях, в том числе в редактировании цифровых изображений , компьютерной 3D-графике и постобработке фильмов .
Синтез текстур можно использовать для заполнения дыр в изображениях (как в inpainting ), создания больших неповторяющихся фоновых изображений и расширения маленьких картинок. [1]
Процедурные текстуры — это родственная техника, которая позволяет синтезировать текстуры с нуля без исходного материала. Напротив, синтез текстур относится к методам, в которых некоторое исходное изображение сопоставляется или расширяется.
« Текстура » — слово неоднозначное и в контексте синтеза текстур может иметь одно из следующих значений:
Текстуру можно расположить по спектру от регулярного до стохастического, соединенного плавным переходом: [2]
Алгоритмы синтеза текстур предназначены для создания выходного изображения , отвечающего следующим требованиям:
Как и большинство алгоритмов, синтез текстур должен быть эффективным по времени вычислений и использованию памяти.
Для синтеза текстур были исследованы или разработаны следующие методы и алгоритмы:
Самый простой способ создать большое изображение из образца изображения — разбить его на мозаику . Это означает, что несколько копий образца просто копируются и вставляются рядом. Результат редко бывает удовлетворительным. За исключением редких случаев, между плитками будут швы, и изображение будет сильно повторяться.
Методы стохастического синтеза текстур создают изображение путем случайного выбора значений цвета для каждого пикселя, на которое влияют только основные параметры, такие как минимальная яркость, средний цвет или максимальный контраст. Эти алгоритмы хорошо работают только со стохастическими текстурами, в противном случае они дают совершенно неудовлетворительные результаты, поскольку игнорируют любые структуры в образце изображения.
Алгоритмы этого семейства используют фиксированную процедуру для создания выходного изображения, т.е. они ограничены одним видом структурированной текстуры. Таким образом, эти алгоритмы можно применять как только к структурированным текстурам, так и только к текстурам с очень похожей структурой. Например, одноцелевой алгоритм может создавать высококачественные текстурные изображения каменных стен; тем не менее, очень маловероятно, что алгоритм даст какой-либо жизнеспособный результат, если ему будет предоставлен образец изображения, на котором изображены камешки.
Этот метод, предложенный группой Microsoft для интернет-графики, представляет собой усовершенствованную версию мозаики и выполняет следующие три этапа:
В результате получается приемлемое текстурное изображение, которое не слишком повторяется и не содержит слишком много артефактов. Тем не менее, этот метод неудовлетворителен, поскольку сглаживание на этапе 3 делает выходное изображение размытым.
Эти методы, использующие поля Маркова, [3] непараметрическую выборку, [4] древовидное векторное квантование [5] и аналогии изображений [6], являются одними из самых простых и наиболее успешных общих алгоритмов синтеза текстур. Обычно они синтезируют текстуру в порядке строк сканирования, находя и копируя пиксели с наиболее близким локальным окружением, как у синтетической текстуры. Эти методы очень полезны для завершения изображения. Их можно заставить, как в аналогиях изображений , выполнять множество интересных задач. Обычно они ускоряются с помощью какого-либо метода приближенного ближайшего соседа, поскольку полный поиск лучшего пикселя происходит несколько медленно. Синтез также может быть выполнен в мультиразрешении, например, с использованием непричинного непараметрического многомасштабного марковского случайного поля. [7]
Синтез текстур на основе патчей создает новую текстуру путем копирования и сшивания текстур с различными смещениями, аналогично использованию инструмента клонирования для ручного синтеза текстуры. Квилтирование изображений [8] и текстуры графического вырезания [9] являются наиболее известными алгоритмами синтеза текстур на основе патчей. Эти алгоритмы, как правило, более эффективны и быстрее, чем методы синтеза текстур на основе пикселей.
Совсем недавно было показано, что методы глубокого обучения являются мощным, быстрым и управляемым данными параметрическим подходом к синтезу текстур. Работа Леона Гатиса [10] является важной вехой: он и его соавторы показали, что фильтры дискриминативно обученной глубокой нейронной сети могут использоваться в качестве эффективных параметрических дескрипторов изображений, что привело к созданию нового метода синтеза текстур.
Еще одна недавняя разработка — использование генеративных моделей для синтеза текстур. Метод Spatial GAN [11] впервые показал использование полностью неконтролируемых GAN для синтеза текстур. В последующей работе [12] метод был расширен дальше: PSGAN может изучать как периодические, так и непериодические изображения без присмотра на основе отдельных изображений или больших наборов данных изображений. Кроме того, гибкая выборка в шумовом пространстве позволяет создавать новые текстуры потенциально бесконечного выходного размера и плавно переходить между ними. Это делает PSGAN уникальным с точки зрения типов изображений, которые может создать метод синтеза текстур.
Некоторые реализации синтеза текстур существуют как плагины к бесплатному редактору изображений Gimp :
Реализация синтеза текстур на основе пикселей:
Синтез текстур на основе патчей:
Глубокий генеративный синтез текстур с PSGAN, реализованный на Python с помощью Lasagne + Theano:
Некоторые из самых ранних и наиболее часто упоминаемых работ в этой области включают:
хотя были и более ранние работы на эту тему, такие как
(Последний алгоритм имеет некоторое сходство с подходом Chaos Mosaic).
Подход непараметрической выборки Эфроса-Леунга — это первый подход, который позволяет легко синтезировать большинство типов текстур, и он вдохновил буквально сотни последующих статей по компьютерной графике. С тех пор область синтеза текстур быстро расширилась с появлением карт-ускорителей 3D-графики для персональных компьютеров. Однако оказывается, что Скотт Дрейвс впервые опубликовал версию этой техники на основе исправлений вместе с кодом GPL в 1993 году, по словам Эфроса.