Как создать изображение, используя части другого изображения?

Прежде чем уточнить мой вопрос, рассмотрите, пожалуйста, эти два генеративных портрета Серджио Альбиака:

Изображение 1  Изображение 2

Так как мне очень нравятся такие портреты, я захотел найти способ сделать их сам. На данный момент у меня не так много, единственное, что я могу сделать из этих примеров, это:

  • каждый портрет принимает не менее двух входных данных: одно целевое изображение (портрет) и одно или несколько исходных изображений (изображения текста), части которых используются для создания стилизованного портрета.
  • сопоставление частей исходных изображений с целевым изображением выполняется с помощью сопоставления шаблонов.

Что я хотел бы знать, так это как действовать, что изучать и искать? Какие другие концепции я должен рассмотреть, прежде чем пытаться сделать эту работу?

Ваше здоровье


person Patakk    schedule 30.11.2015    source источник
comment
ваша задача аналогична преобразованию изображений в ASCII, просто обрабатывайте части исходных изображений как символы из шрифта. Итак, создайте шрифт из ваших изображений (на основе средней интенсивности), а затем используйте его вместо шрифта ASCII...   -  person Spektre    schedule 01.12.2015
comment
Спасибо за ответ, но, к сожалению, это неверно. Художественная техника ASCII предполагает равные расстояния/размеры шаблонов, что является простой концепцией, но в данном случае это не то, что мне нужно.   -  person Patakk    schedule 02.12.2015
comment
вам нужно сегментировать ввод для областей со схожими свойствами, такими как однородная интенсивность, и обрабатывать каждую такую ​​область как один пробел для символа... растягивать и находить ближайший к нему символ из шрифта... по крайней мере, так это выглядит. .. соответствие такое же, как в той ссылке, которую я предоставил (я написал похожее, а не идентичное), тем не менее, есть с чем поэкспериментировать, но, по крайней мере, у вас есть отправная точка ...   -  person Spektre    schedule 02.12.2015
comment
Эй, это ближе к тому, что я имел в виду, спасибо! Попробую это!   -  person Patakk    schedule 03.12.2015


Ответы (1)


Плагин Cover Maker для Fiji/ImageJ делает то же самое.

введите здесь описание изображения

Сначала он создает базу данных из ваших исходных изображений, проиндексированных в соответствии с цветом/интенсивностью. Эти исходные изображения затем используются для создания вашего целевого изображения. (В отличие от ваших примеров изображений, он работает только с постоянным размером плитки по всему изображению.)

Подробнее см. исходный код Python.

EDIT: если вы хотите избежать постоянного размера плитки, вы можете использовать, например. сегментация дерева квадрантов или сегментация k-means, чтобы получить области одинаковой интенсивности/текстуры на целевом изображении, а затем выполнить сопоставление с шаблоном для сегментированных регионов.

person Jan Eglinger    schedule 01.12.2015
comment
Спасибо, но это не то, чего я на самом деле хочу. Разница, о которой вы упомянули, постоянный размер плитки, на самом деле мне не нужна. Это простая концепция для реализации, но я не нахожу результаты удовлетворительными и того же качества, что и примеры, которые я опубликовал. Как правило, часть сопоставления шаблона (соответствие цветов/яркости входного изображения и плиток) на самом деле является той частью, которую я понимаю, но чего я не понимаю, так это того, как рассчитываются размеры/позиции этих плиток (в моих примерах). .. - person Patakk; 02.12.2015
comment
Хорошо, тогда Cover Maker вам не подойдет. Я обновил свой ответ несколькими предложениями о том, как сегментировать изображение в областях переменного размера. Пожалуйста, дайте мне знать, как вы продвигаетесь, мне также было бы интересно найти хорошее решение для этого. - person Jan Eglinger; 02.12.2015
comment
Вот о чем я говорю, сегментация дерева квадрантов действительно выглядит так, как будто она может помочь, большое спасибо! Я пришлю вам результат, как только что-то получу. - person Patakk; 03.12.2015