1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-Caire

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Caire — это библиотека для изменения размера изображений с учётом содержимого, основанная на статье «Seam Carving for Content-Aware Image Resizing» («Сшивание для изменения размера изображения с учётом его содержания»).

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

  • Создаётся энергетическая карта (обнаружение границ) на основе предоставленного изображения.
  • Алгоритм пытается найти наименее важные части изображения, учитывая наименьшие значения энергии.
  • Используя подход динамического программирования, алгоритм генерирует отдельные швы по всему изображению сверху вниз или слева направо (в зависимости от горизонтального или вертикального изменения размера) и присваивает каждому шву индивидуальное значение: пиксели с наименьшей энергией имеют наименьшую стоимость, а пиксели с наибольшей энергией — наибольшую.
  • Мы проходим по изображению от второй строки до последней и вычисляем совокупный минимальный уровень энергии для всех возможных связанных швов для каждой записи.
  • Минимальный уровень энергии рассчитывается путём суммирования текущего значения пикселя с текущим наименьшим значением соседних пикселей, полученных из предыдущей строки.
  • Мы проходим изображение сверху вниз и вычисляем минимальный уровень энергии. Для каждого пикселя в строке мы вычисляем энергию текущего пикселя плюс энергию одного из трёх возможных пикселей над ним.
  • Находим шов с наименьшей стоимостью из энергетической матрицы, начиная с последней строки, и удаляем его.
  • Повторяем процесс.

Процесс проиллюстрирован:

Исходное изображение Энергетическая карта Применённые швы
Исходное Собел Отладка

Особенности

Ключевые особенности, которые отличают эту библиотеку от других существующих решений с открытым исходным кодом:

  • Индикатор выполнения с графическим интерфейсом пользователя
  • Настраиваемая поддержка командной строки
  • Поддержка как уменьшения, так и увеличения изображения
  • Изменение размера изображения как по вертикали, так и по горизонтали
  • Обнаружение лиц во избежание деформации лица
  • Поддержка нескольких типов выходных изображений (jpg, jpeg, png, bmp, gif)
  • Поддержка команд stdin и stdout
  • Может обрабатывать целые каталоги рекурсивно и одновременно
  • Использование порога Собеля для точной настройки
  • Использование фильтра размытия для улучшенного обнаружения границ
  • Поддержка квадратуры изображения одной командой
  • Поддержка пропорционального масштабирования
  • Поддержка защитной маски
  • Поддержка маски удаления
  • [Поддержка режима отладки с графическим интерфейсом](#поддержка масок)

Установка

Сначала установите Go, задайте свой GOPATH и убедитесь, что $GOPATH/bin находится в вашем PATH.

$ go install github.com/esimov/caire/cmd/caire@latest 

MacOS (Brew) установка

Библиотеку также можно установить через Homebrew.

$ brew install caire

Использование

$ caire -in input.jpg -out output.jpg

Поддерживаемые команды:

$ caire --help

Поддерживаются следующие флаги:

Флаг По умолчанию Описание
in - Входной файл
out - Вывод ## Обнаружение лиц

Библиотека способна обнаруживать лица людей перед изменением размера изображений с помощью облегчённой библиотеки обнаружения лиц Pigo (https://github.com/esimov/pigo).

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

Исходное изображение С обнаружением лиц Без обнаружения лиц
Исходное С обнаружением лиц Без обнаружения лиц

Источник изображения

Индикатор прогресса в графическом интерфейсе

Предварительный просмотр графического интерфейса

В библиотеку также встроен режим предварительного просмотра графического интерфейса для визуализации процесса обработки в реальном времени. Библиотека графического интерфейса Gio (http://gioui.org/) была использована из-за её надёжности и современной архитектуры. Перед запуском убедитесь, что вы установили все необходимые зависимости, указанные в разделе установки (https://gioui.org/#installation).

Окно предварительного просмотра активировано по умолчанию, но вы можете отключить его в любое время, установив флаг -preview в значение false. Когда изображения обрабатываются одновременно из каталога, режим предварительного просмотра отключается.

Обнаружение лиц во избежание деформации лица

Чтобы обнаружить лица перед масштабированием, используйте флаг -face. Нет необходимости предоставлять файл классификации лиц, так как он уже встроен в сгенерированный двоичный файл. Приведённый ниже пример кода изменит размер предоставленного изображения на 20%, но проверит наличие человеческих лиц, чтобы избежать деформации лица.

Для получения информации о настройках, связанных с обнаружением лиц, обратитесь к документации Pigo (https://github.com/esimov/pigo/blob/master/README.md).

$ caire -in input.jpg -out output.jpg -face=1 -perc=1 -width=20

Поддержка команд stdin и stdout с конвейером

Вы также можете использовать stdin и stdout с -:

$ cat input/source.jpg | caire -in - -out - >out.jpg

in и out по умолчанию равны -, поэтому вы также можете использовать:

$ cat input/source.jpg | caire >out.jpg
$ caire -out out.jpg < input/source.jpg

Вы можете также указать URL-адрес изображения для флага -in или даже использовать curl или wget в качестве команды конвейера, в этом случае нет необходимости использовать флаг -in.

$ caire -in <image_url> -out <output-folder>
$ curl -s <image_url> | caire > out.jpg

Обработка нескольких изображений из папки одновременно

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

$ caire -in <input_folder> -out <output-folder>

Поддержка нескольких типов выходных изображений

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

Другие опции

Если вы хотите уменьшить размер изображения на определённый процент, можно использовать логический флаг -perc. В этом случае значения, указанные для width и height, выражаются в процентах, а не в пикселях. Например, чтобы уменьшить размеры изображения по горизонтали и вертикали на 20%, можно использовать следующую команду:

$ caire -in input/source.jpg -out ./out.jpg -perc=1 -width=20 -height=20 -debug=false

Также библиотека поддерживает опцию -square. При её использовании изображение будет изменено до квадратного формата на основе самого короткого края.

Когда изображение изменяется по осям X и Y, алгоритм сначала пытается изменить его масштаб, но также сохраняет соотношение сторон. Алгоритм вырезания шва применяется только к оставшимся точкам. Например: если у нас есть изображение размером 2048x1536 и мы хотим изменить его размер до 1024x500, инструмент сначала изменит размер изображения до 1024x768, а затем удалит только оставшиеся 268 пикселей.

Поддержка масок:

  • -mask: путь к защитной маске. Маска должна быть в двоичном формате и иметь тот же размер, что и входное изображение. Белые области представляют собой области, где швы вырезать не следует.
  • -rmask: путь к маске удаления. Маска должна быть в двоичном формате и иметь такой же размер, как и входное изображение. Белые области обозначают области для удаления.
Маска Маска удаления

Интеграции Caire:

snapcraft caire

Результаты

Уменьшенные изображения

Оригинал Уменьшенное
broadway_tower_edit broadway_tower_edit
waterfall waterfall
dubai dubai
boat boat

Увеличенные изображения

Оригинал Увеличенное
gasadalur gasadalur
dubai dubai

Полезные ресурсы

Автор

Лицензия

Copyright © 2018 Endre Simo

Этот проект является Под лицензией MIT. Смотрите файл LICENSE для полного текста лицензии.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/mirrors-Caire.git
git@gitlife.ru:oschina-mirror/mirrors-Caire.git
oschina-mirror
mirrors-Caire
mirrors-Caire
master