На большом, совершенно чистом листе в нижнем углу был нарисован крохотный красный петушок.
— Картина называется: «Очень одинокий петух», — объяснил Карлсон.
А. Линдгрен «Карлсон, который живет на крыше»
Подозреваю, что у каждого владельца цифрового фотоаппарата в архиве найдется несколько кадров с композицией в стиле «очень одинокий петух». Но в таком случае чаще всего можно кадрировать изображение — никаких существенных деталей при этом не потеряется. А вот если таких объектов два — в противоположных углах кадра, — то кадрирование не спасет.
Доктор Ариэль Шамир и Шай Авидан из Школы компьютерных искусств Эфи Арази представили на выставке SIGGRAPH новый алгоритм изменения размеров изображения. Он ищет в изображении вертикальные и горизонтальные «швы» пикселей с наименьшей энергией (т.е. контрастом или детализацией) и затем использует их для масштабирования без потери важной информации, такой как лица или другие детали. Эту технику можно использовать не только для уменьшения и увеличения, но и для удаления ненужных деталей.
Традиционные методы изменения размеров
Взгляните на монитор. А теперь — на экран КПК. Можно еще и на сотовый телефон посмотреть. Разнообразие современных форматов дисплеев предъявляет особые требования к цифровым изображениям. Дизайнерам приходится готовить изображения в нескольких вариантах, чтобы они всегда умещались на экране и при этом достойно выглядели при распечатке. Стандартное масштабирование (изменение линейных размеров, при котором происходит сжатие изображения по горизонтали, вертикали или в обоих измерениях одновременно) не слишком пригодно для этой цели, поскольку оно не принимает во внимание содержание изображения. Кадрирование также не всегда уместно, поскольку убирает лишние пиксели только с периферии рисунка.
Возможно ли объединить достоинства обоих методов в одном? Авторы нового метода уверяют, что возможно — при использовании простого, нелинейного, учитывающего содержание изображения алгоритма, который они назвали seam carving, что в переводе означает «вырезание по шву».
Сравнение методов изменения размера изображения | ||
Оригинал изображения | ||
Масштаби- рование |
Кадрирование | Вырезание по шву |
Революционное вырезание по шву: как это работает?
Метод «вырезания по шву» использует энергетическую функцию, определяющую важность пикселов. Шов — это связный путь пикселей с низкой энергией, который пересекает изображение сверху вниз или слева направо. Вырезая или вставляя пиксели вдоль таких швов, можно уменьшить или увеличить размер изображения в обоих измерениях. При уменьшении изображения выделение шва гарантирует сохранение структуры изображения, удаление большего количества пикселей с низкой энергией и меньшего — с высокой. При увеличении изображения порядок вставления швов обеспечивает равновесие между оригинальным содержанием и искусственно вставленными пикселями. В результате новый метод фактически учитывает содержание исходного кадра.
Вырезание по шву поддерживает несколько типов энергетических функций, таких как величина градиента, энтропия, визуальная выделенность, движение взгляда и другие. Для интерактивного контроля процесса авторы предусмотрели возможность вручную изменять энергию участков изображения. Таким образом можно, например, гарантировать неизменность лиц — или, наоборот, убрать со снимка случайного прохожего.
Разумеется, у этого метода есть свои ограничения. Две основные причины, по которым он может не сработать:
слишком подробное, не имеющее «менее важных» областей изображение;
такое расположение деталей изображения, что швы не могут обойти важные части.
Где попробовать?
Flash-реализация алгоритма
К сожалению, ни отдельного приложения, ни расширения для Adobe Photoshop или других графических пакетов на данный момент не существует. Зато есть как минимум одна сторонняя реализация алгоритма на Flash: www.swieskowski.net/carve/. Управление программой предельно просто: в наличии есть переключатели с вертикального на горизонтальное «вырезание» и обратно, поле интернет-адреса изображения, подлежащего обработке, и кнопка Load.
Загрузить в обработчик можно не любое изображение из сети, а только лежащее на одном сервере с файлом сrossdomain.xml определенного содержания (это связано со внутренними ограничениями Flash). Если вы счастливый владелец собственного хостинга, рекомендуем ознакомиться с сайтом www.crossdomainxml.org, в противном случае вас выручит, например, www.flickr.com или любой другой фотосайт, на котором сrossdomain.xml уже размещен. Также автор реализации рекомендует не увлекаться слишком большими изображениями — это чревато ошибками загрузки файла и крайне медленной его обработкой.
После загрузки можно сразу приступить к масштабированию изображения простым перетаскиванием пунктирной линии внизу или справа от картинки.
Это важно: при переключении между горизонтальным и вертикальным режимами промежуточное состояние сохраняется, и вам уже не удастся «растянуть» изображение обратно.
Кроме как уменьшать изображения, эта реализация алгоритма пока ничего не умеет — ни увеличивать изображения посредством вставления швов, ни отмечать области для удаления или сохранения. В ней используется только одна энергетическая функция — непрерывная разница между пикселами, что довольно часто приводит к неожиданным и нежелательным результатам. Сохранить полученное изображение можно только при помощи Print Screen. Однако автор обещает продолжить работу над улучшением программы.
Возможные применения нового метода
Этот метод может применяться для самых разнообразных манипуляций с изображением, в том числе изменения соотношения сторон, дублирования содержимого и убирания объектов. Все это можно увидеть в демонстрационном ролике на страницах нашего видеожурнала. Это оригинальный демонстрационный ролик от авторов метода, переведенный на русский язык силами видеолаборатории ЛКИ.