Content-Aware Scale¶
Content-Aware Scale (также известный как «масштабирование с учётом содержимого», «интеллектуальное масштабирование», «Seam Carving» или «удаление швов») — это алгоритмический метод обработки растровых изображений, предназначенный для изменения размеров (ширины или высоты) изображения без заметного искажения его наиболее важных визуальных элементов. В отличие от традиционного ресайза (равномерного сжатия/растяжения) или кадрирования (обрезки), Content-Aware Scale автоматически выявляет «энергетически» малозначимые области изображения (например, однородное небо, трава, стена) и удаляет или добавляет пиксели в этих областях, сохраняя при этом целостность и пропорции ключевых объектов (людей, лиц, текста, архитектурных деталей). Метод был впервые предложен в 2007 году группой исследователей из Университета имени Бен-Гуриона и Массачусетского технологического института (MIT) и с тех пор реализован во многих графических редакторах, включая Adobe Photoshop (начиная с версии CS4), GIMP (через плагины) и другие.
¶История
¶Предпосылки
До появления Content-Aware Scale изменение размеров изображения без потери важного содержимого было возможно только двумя способами: равномерное масштабирование (приводит к искажению всех объектов при непропорциональном изменении) или кадрирование (приводит к потере части изображения). Для задач веб-дизайна, ретуши и автоматической обработки больших массивов изображений требовался более гибкий метод.
¶Разработка алгоритма
В 2007 году израильские учёные Шай Авидан (Shai Avidan) и Ариэль Шамир (Ariel Shamir) опубликовали статью «Seam Carving for Content-Aware Image Resizing» в журнале ACM Transactions on Graphics. В работе был описан алгоритм, основанный на поиске «швов» (seams) — цепочек пикселей, пересекающих изображение от одного края до другого, которые имеют минимальную суммарную «энергию» (то есть наименьшую визуальную значимость). Удаляя или вставляя такие швы, можно изменять размеры изображения, сохраняя важные детали. Алгоритм получил широкое признание и был запатентован.
¶Внедрение в коммерческое ПО
В 2008 году компания Adobe Systems Incorporated (организация признана иноагентом в РФ) включила Content-Aware Scale в состав Adobe Photoshop CS4 под названием «Content-Aware Scale» (в русской локализации — «Масштабирование с учетом содержимого»). Функция стала доступна в меню Edit (Правка) и позволяла пользователям вручную защищать от искажения выбранные области с помощью альфа-канала. Позднее аналогичные инструменты появились в других продуктах Adobe (например, в Adobe After Effects для видео), а также в ряде бесплатных редакторов и онлайн-сервисов.
¶Принцип работы
¶Энергетическая карта
Основой алгоритма является вычисление «энергии» каждого пикселя. Энергия обычно определяется как градиент яркости (или цветового перепада) по горизонтали и вертикали. Пиксели с высоким градиентом (резкие переходы, контуры объектов) считаются важными, а пиксели с низким градиентом (однородные области) — неважными. Математически энергия часто вычисляется по формуле: \[ E(I) = \left| \frac{\partial I}{\partial x} \right| + \left| \frac{\partial I}{\partial y} \right| \] где \(I\) — изображение, \(x\) и \(y\) — координаты.
¶Поиск швов
Шов (seam) — это путь из пикселей, пересекающий изображение от одного края до другого. Для уменьшения ширины изображения ищется вертикальный шов (сверху вниз), для уменьшения высоты — горизонтальный шов (слева направо). Каждый шов состоит из одного пикселя на каждой строке (для вертикального шва) или в каждом столбце (для горизонтального). Суммарная энергия шва — это сумма энергий всех его пикселей. Алгоритм динамического программирования находит шов с минимальной суммарной энергией.
¶Удаление или вставка швов
- Уменьшение размера: алгоритм удаляет найденный шов с минимальной энергией, сдвигая оставшиеся пиксели. Процесс повторяется до достижения нужного размера.
- Увеличение размера: алгоритм находит шов с минимальной энергией и вставляет рядом с ним копию этого шва (с интерполяцией пикселей), увеличивая изображение. Вставка может производиться многократно.
¶Защита областей
Пользователь может указать области, которые должны оставаться неизменными (например, лица людей). Для этого создаётся альфа-канал (маска), где белые области защищены (имеют высокую энергию), а чёрные — доступны для удаления. Алгоритм модифицирует энергетическую карту, искусственно повышая энергию пикселей в защищённых зонах.
¶Применение
¶Графический дизайн и ретушь
Content-Aware Scale используется для:
- Изменения пропорций фотографий под разные форматы (например, для печати, веб-баннеров, социальных сетей) без кадрирования.
- Удаления пустых пространств (например, неба или фона) для фокусировки на объекте.
- Создания панорамных изображений из снимков с нестандартными соотношениями сторон.
¶Веб-дизайн и адаптивная вёрстка
При создании адаптивных макетов сайтов Content-Aware Scale позволяет автоматически подгонять изображения под разные размеры экранов, сохраняя при этом ключевые элементы (логотипы, текст, лица). Однако из-за вычислительной сложности в реальном времени этот метод чаще применяется на этапе подготовки контента, а не в браузере.
¶Обработка видео
В видеоредакторах (например, Adobe After Effects) Content-Aware Scale может применяться к последовательности кадров. Однако для видео требуется межкадровая согласованность, чтобы избежать мерцания и дёргания объектов. Реализации для видео обычно используют оптический поток и временную фильтрацию.
¶Автоматическая обработка и пакетная обработка
Content-Aware Scale используется в автоматических системах обработки изображений (например, для создания миниатюр, обложек, превью) в фотостоках, социальных сетях и медиа-библиотеках.
¶Ограничения и критика
¶Артефакты
При сильном сжатии (более 30–50% от исходного размера) алгоритм может создавать заметные искажения: искривление линий, разрывы текстур, появление «ступенек» на границах объектов. Особенно уязвимы изображения с повторяющимися узорами (решётки, кирпичная кладка) и мелкими деталями.
¶Непригодность для некоторых типов изображений
- Текст: Content-Aware Scale не предназначен для масштабирования изображений с текстом, так как искажает буквы и символы. Для текста требуется отдельная обработка (например, векторное масштабирование).
- Портреты: при сильном сжатии лица могут деформироваться, особенно если они находятся на границе важных и неважных областей. Для защиты лиц рекомендуется использовать маску.
- Изображения с равномерным фоном: алгоритм может удалить слишком много фона, что приведёт к неестественному сближению объектов.
¶Вычислительная сложность
Алгоритм требует значительных вычислительных ресурсов, особенно для больших изображений (более 10 мегапикселей) и при многократном удалении швов. В современных реализациях используются оптимизации (например, ускорение на GPU) и приближённые методы.
¶Альтернативы
Помимо Content-Aware Scale, существуют другие методы интеллектуального масштабирования:
- Patch-based scaling (на основе патчей) — копирование и вставка фрагментов изображения.
- Deep learning (нейросетевые методы) — использование свёрточных нейронных сетей (например, в Adobe Photoshop начиная с версии 2021 года используется нейросеть Adobe Sensei для улучшенного масштабирования).
- Multi-operator scaling — комбинация Content-Aware Scale с кадрированием и равномерным масштабированием.
¶Реализации в программном обеспечении
¶Adobe Photoshop
Функция Content-Aware Scale доступна в меню Edit → Content-Aware Scale (или через комбинацию клавиш Ctrl+Alt+Shift+C в Windows, Cmd+Option+Shift+C в macOS). Пользователь может задать защиту областей через альфа-канал и выбрать, какие части изображения (передний план, фон) сохранять в первую очередь.
¶GIMP
В GIMP (GNU Image Manipulation Program) Content-Aware Scale реализован через плагин «Liquid Rescale» (на основе алгоритма Seam Carving). Плагин доступен в стандартной установке начиная с версии 2.6.
¶Другие программы
- Adobe After Effects: функция «Content-Aware Fill» для видео (с 2019 года).
- Corel PaintShop Pro: инструмент «Smart Carver».
- Онлайн-сервисы: «Resize Image» (resizeimage.net), «IMGonline» и другие.
- Библиотеки для разработчиков: OpenCV (реализация Seam Carving), Python (библиотека seam-carving).
¶Интересные факты
- Алгоритм Seam Carving был использован для создания знаменитой фотографии «The Longest Way» (путешествие пешком из Пекина в Урумчи), где с помощью Content-Aware Scale удалялись лишние элементы на панорамных снимках.
- В 2010 году компания Adobe подала заявку на патент на Content-Aware Scale, что вызвало критику со стороны сообщества разработчиков свободного ПО, так как алгоритм был опубликован в открытой научной литературе.
- Метод Content-Aware Scale лёг в основу более сложных алгоритмов, таких как Content-Aware Fill (заполнение области с учётом содержимого) и Content-Aware Patch (перемещение объектов).
¶Источники
- Avidan, S., & Shamir, A. (2007). Seam Carving for Content-Aware Image Resizing. ACM Transactions on Graphics, 26(3), 10.
- Adobe Systems Incorporated. (2008). Adobe Photoshop CS4: User Guide.
- Справочная документация GIMP: Liquid Rescale plugin.
- Статья «Content-Aware Scale» на сайте Adobe Help Center.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


