Интеллектуальная Обрезка Изображения - PullRequest
3 голосов
/ 29 января 2012

Я немного застрял, пытаясь объяснить клиенту моей темы, что обрезка изображения путем интеллектуального определения правильного и правильного места - задача не из легких. Я даже сомневаюсь, если это вообще возможно на 100%.

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

Вот вопрос, если вы хотите узнать более подробную информацию http://getsatisfaction.com/autochrome/topics/portrait_image_thumbnail

Ответы [ 6 ]

1 голос
/ 29 января 2012

«Правильное» место для обрезки изображения субъективно.Определение того, что важно для композиции сцены, - это искусство и наука.Если компьютерный алгоритм может понять это идеально, вы можете использовать его (и большое количество камер по всему миру), чтобы выиграть фотоконкурс National Geographic каждый год:может более точно определить представляющие интерес части изображения, такие как упомянутые вами лица, тогда проблема переходит от «почти буквально невозможного» к «очень трудному».Вы можете использовать алгоритм обнаружения лиц, а затем обрезать до наименьшего ограничивающего прямоугольника, содержащего все лица.

1 голос
/ 29 января 2012

Мне кажется, что проблема, с которой сталкивается ваш клиент, связана с соотношением сторон.

Вы очень можете определить соотношение сторон источника и оттуда обрезать / настроить. Просто используйте getImageGeometery().

http://www.php.net/manual/en/imagick.getimagegeometry.php

Или, если используется GD:

http://www.php.net/manual/en/function.getimagesize.php

0 голосов
/ 06 августа 2018

Вы можете попробовать ImageKit.io. Это обеспечивает умное обрезание из коробки. Он использует обнаружение лица и объектов внутри, чтобы сделать необходимые вычисления для умного кадрирования. ImageKit также имеет режим обрезки лица, который выбирает лицо из исходного изображения для создания эскиза.

0 голосов
/ 18 октября 2017

(Надеюсь, вы уже нашли решение, так как это очень старый вопрос.) Я нашел несколько вариантов, которые могут помочь:

  • Cloudinary API - Этоподдерживает несколько продвинутых методов обрезки, таких как автоматическая обрезка и обрезка на основе распознавания лиц.В настоящее время я изучаю это для хобби-проекта.
  • API Google Vision - я думаю, что это будет излишним, но вы можете использовать его для обрезки портретов, поскольку он хорошо распознает лица и показываетподсказкиЯ использовал это для хобби-проекта и работает очень хорошо.
  • Графика - Эта новая графическая библиотека для PHP может похвастаться умным кадрированием, где она обнаруживает важную область изображения и обеспечивает еесохраняется во время обрезки (еще не пробовал)
0 голосов
/ 29 января 2012

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

Пример кода для этого с библиотекой gd в этом списке: https://gist.github.com/1695782

0 голосов
/ 29 января 2012

Пользователь должен выбрать часть фотографии, которую он хочет обрезать. Добавьте смещение к параметрам обрезки GD. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...