Умная Обрезка На Основе Энтропии

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



Умная обрезка на основе энтропии

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

Старые методы вроде вырезания миниатюры 100х100 из левого верхнего угла или из центра отходят на второй план, и на арену выходит умное кадрирование.



Традиционный умный урожай

Большинство библиотек используют интеллектуальную обрезку, чтобы избежать искажений и растягивания фотографий.

Дело в том, что код сначала изменит размер изображения так, чтобы один из параметров — длина или ширина — совпадал с указанным.

Затем он проверяет, соответствует ли второй параметр заданному.

В противном случае лишние области обрезаются, начиная с центра.

Создание миниатюры, скажем 400x400, будет выглядеть так:

Умная обрезка на основе энтропии

Загвоздка в том, что не всегда (вернее, почти никогда) самое главное находится в самом центре.

Чаще всего — какая-то часть основного, но предметы чаще всего так или иначе смещены.



Умная обрезка на основе энтропии

Общая идея состоит в том, чтобы найти фрагмент изображения, содержащий больше всего информации, и сохранить его в обрезанном виде.



Как это работает

Сначала размер изображения изменяется.



Умная обрезка на основе энтропии

Затем запускается фильтр для определения границ.

Картинка становится черно-белой и на ней остаются только очертания предметов.



Умная обрезка на основе энтропии

Насыщенность максимально снижается и картинка становится несколько размытой.



Умная обрезка на основе энтропии

Определяется фрагмент с наибольшей энтропией, то есть с наибольшим количеством контуров.

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



Умная обрезка на основе энтропии

Самый сложный этап — поиск фрагмента с наибольшей энтропией.

Поиск осуществляется фрагментами — картинка «разрезается» на 25 полосок, для каждой из них вычисляется и сравнивается энтропия.

Затем определяется группа с максимальной энтропией.



Приложение

Удобно использовать Вот этот библиотека.

Требования: PHP 5.3 с расширением Imagick. Применяется в три этапа.

Инициализация:

  
  
   

$center = new CropEntropy($imagePath);

Изменение размера и обрезка:

$croppedImage = $center->resizeAndCrop($width, $height);

Сохраняем новое изображение:

$croppedImage->writeimage($newImagePath);

Вы можете попробовать обрезать на основе энтропии здесь , указав необходимый размер миниатюры.

Иногда Алгоритм точно определяет наиболее важную область.

Но иногда неправильный , особенно при нестандартных - неквадратных параметрах кропа (300х100).

Но это очень хороший результат с теми же параметрами, но другое фото.

Алгоритм не гарантирует идеальный результат, но тем не менее это один из лучших методов автообрезки.



Абстрактный

  1. Один из лучших способов автоматизации обрезки — обрезка на основе энтропии.

  2. Алгоритм определяет фрагмент с наибольшим количеством информации и сохраняет его в обрезанном виде.

  3. Достоинства и недостатки метода можно проверить.

    этот инструмент.

Теги: #crop #entropy #Обработка изображений #php #Обработка изображений
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.