Как сделать лицо из еды

в 6:45, , рубрики: iOS, iphone, алгоритм, еда, инстаграмеды, лицо, смартфоны

Приложение Megabite от Аарона Рэнделла использует фотографию еды, анализирует каждую отдельную составляющую вашего блюда, затем меняет всё местами, чтобы получить забавную мордочку на тарелке. Под катом — видео и описание алгоритма.

image

Подготовка изображения

Пользователь снимает еду с помощью приложения, размер фото меняется до 1000х1000 пикселей, а затем обрезается по контуру тарелки.

image

Обнаружение контуров

На следующем шаге приложение ищет отдельные предметы, определяя их контуры. Приложение применяет ооператор обнаружения границ изображения Кэнни (2), и получает три изображения для последующей работы (3, 4, 5). Затем в ход идёт функция OpenCV findContours для обнаружения контуров каждой детали. Контуры на изображении ниже отмечены красным цветом. Затем алгоритм отфильтровывает «дочерние» контуры — например, желток в яичнице.

image

Выделение контуров из изображения

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

image

image

Размещение деталей на шаблоне

В приложении есть шаблоны, которые используются для расположения отдельных деталей. Ниже — три примера, с количеством полигонов от трёх до шести.

image

Затем приложение выбирает шаблон по количеству деталей. В этом примере — шесть деталей, поэтому мордочка получится с ушами и носом. Затем полигоны и части изображения сортируются по размеру и подбираются по парам.

image

На следующем этапе детали размещаются на шаблоне таким образом, чтобы еда занимала максимально возможную площадь каждого из полигонов.

image

Результат

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

image

Автор: ivansychev

Источник

Поделиться новостью

* - обязательные к заполнению поля