Резьба по шву

редактировать
Исходное изображение должно быть сужено Масштабирование нежелательно, потому что замок искажен. Обрезка нежелательна, потому что часть замок удален. Резьба по шву

Резьба по шву (или жидкое изменение масштаба ) - это алгоритм изменения размера изображения с учетом содержимого, разработанный компанией Mitsubishi Electric Research Laboratories (MERL), а также Междисциплинарный центр и MERL. Он работает, устанавливая ряд швов (наименее важных путей) в изображении и автоматически удаляет швы для уменьшения размера изображения или вставляет швы для его удлинения. Вырезание швов также позволяет вручную определять области, в которых нельзя изменять пиксели, и позволяет удалять целые объекты с фотографий.

Целью алгоритма является перенацеливание изображения, то есть проблема отображения изображений без искажения на носителях различного размера (сотовые телефоны, проекционные экраны) с использованием стандартов документов, таких как HTML, которые уже поддерживают динамические изменения на странице. макет и текст, но не изображения.

Ретаргетинг изображений был изобретен Видьей Сетлур, Саеко Такаге, Рамешем Раскаром, Майклом Глейхером и Брюсом Гучем в 2005 году. Работа Сетлура и др. получил награду за 10-летний эффект в 2015 году.

Содержание
  • 1 Швы
  • 2 Процесс
    • 2.1 Вычислительные швы
      • 2.1.1 Динамическое программирование
  • 3 Проблемы
  • 4 Реализации
  • 5 Усовершенствования и расширения
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Швы

Швы могут быть вертикальными или горизонтальными. Вертикальный шов - это путь пикселей, соединенных сверху вниз на изображении с одним пикселем в каждой строке. Горизонтальный шов аналогичен за исключением того, что соединение выполняется слева направо. Функция важности / энергии оценивает пиксель, измеряя его контраст с соседними пикселями.

Процесс

В примере ниже описывается процесс вырезания шва:

ШагИзображение
1) Начните с изображения.Начальное изображение
2) Рассчитайте вес / плотность / энергию каждого пикселя. Это можно сделать с помощью различных алгоритмов: величины градиента, энтропии, визуальной значимости, движения взгляда. Здесь мы используем величину градиента.энергия градиента
3) Из энергии составьте список швов. Швы ранжируются по энергии, при этом швы с низким энергопотреблением имеют наименьшее значение для содержания изображения. Швы можно рассчитать с помощью метода динамического программирования, описанного ниже.стыки с энергией
4) При необходимости удалите низкоэнергетические швы.уменьшенная энергия изображение
5) Окончательное изображение.конечное изображение

Удаление швов зависит только от размера (высоты или ширины), который нужно уменьшить. Также можно инвертировать шаг 4, чтобы алгоритм увеличивался в одном измерении, копируя низкоэнергетический шов и усредняя его пиксели с его соседями.

Вычисление швов

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

Динамическое программирование

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

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

Расчет энергии тривиально распараллеливается для простых функций. Вычисление массива DP также может быть распараллелено с некоторым межпроцессным взаимодействием. Однако проблема создания нескольких швов одновременно сложнее по двум причинам: энергия должна регенерироваться для каждого удаления для правильности, а простое прослеживание нескольких швов может привести к перекрытию. Avidan 2007 вычисляет все швы, итеративно удаляя каждый шов и сохраняя «индексную карту» для записи всех сгенерированных швов. Карта содержит номер «n-го шва» для каждого пикселя изображения и может использоваться позже для корректировки размера.

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

Проблемы
  1. Для уменьшения ошибок алгоритму может потребоваться информация, предоставленная пользователем. Это может заключаться в закрашивании областей, которые необходимо сохранить. Для человеческих лиц можно использовать обнаружение лиц.
  2. Иногда алгоритм, удаляя шов с низкой энергией, может в конечном итоге непреднамеренно создать шов с большей энергией. Решение этой проблемы - смоделировать удаление шва, а затем проверить дельту энергии, чтобы увидеть, увеличивается ли энергия. Если это так, предпочтите вместо этого другие швы.
Реализации
Интерактивный SVG, демонстрирующий вырезание швов с помощью функции масштабирования жидкости ImageMagick. В файле SVG наведите указатель мыши на процентные значения, чтобы сравнить исходное изображение (вверху), его ширину, масштаб которой был изменен на процентное значение с помощью вырезания швов (в центре), и масштабирования до того же размера с использованием интерполяции (внизу). Интерактивный SVG-файл, демонстрирующий вырезание швов с помощью функции масштабирования жидкости ImageMagick. В файле SVG наведите указатель мыши на проценты, как указано выше. Обратите внимание, что лица страдают меньше, чем их окружение.

Adobe Systems приобрела неисключительную лицензию на технологию резьбы по швам от MERL и реализовала ее как функцию в Photoshop CS4, где она называется масштабированием с учетом содержимого. Поскольку лицензия не является эксклюзивной, другие популярные приложения для компьютерной графики, среди которых GIMP, digiKam, ImageMagick, а также некоторые автономные программы, Среди них iResizer, также есть реализации этого метода, некоторые из которых выпущены как бесплатное программное обеспечение с открытым исходным кодом.

Улучшения и расширения
  • Улучшенная функция энергопотребления и приложение к видео путем введения 2D (время + 1D) швов.
    • Более быстрая реализация на графическом процессоре.
  • Мультиоператор: сочетание с обрезкой и масштабированием.
  • Намного более быстрое удаление нескольких швов

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

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-07 07:25:32
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте