Больше года назад на выставке SIGGRAPH Ариэль Шамир и Шай Эвидан из Школы компьютерных наук Эфи Араци (Израиль) представили новую технологию изменения размеров изображения, которая действительно дает новые возможности в области динамической манипуляции цифровой картинкой. Они предлагают нам следующую аналогию: к примеру, в окне интернет-браузера открыта веб-страничка с текстом и каким-то изображением при изменении размеров окна контент будет автоматически подстраиваться под его ширину (строки будут удлиняться или укорачиваться, изображение сдвигаться вправо или влево), и все это, естественно, без каких-либо визуальных искажений. Именно в этом и заключена основная идея Content-Aware Image Resizing: при изменении общих пропорций изображения ключевые объекты на них не искажаются.
Понятно, что такой безоговорочный лидер в области обработки двухмерной графики, как Adobe, не мог пройти мимо этих инноваций и вот уже в перечне заявленных функций Photoshop CS4 можно увидеть пункт Content-Aware Scaling. Следует сказать, что подобный способ изменения размеров изображения уже был реализован в виде свободно распространяемого плагина для графического редактора GIMP.
С каждым днем технологии обработки изображений становятся все сложнее и изощреннее. Наличие функции Content Aware Scaling открывает перед фотографом новые пути для реализации его идей, однако это не отменяет правила, согласно которому к грамотному кадрированию нужно подходить уже на этапе замысла снимка.
Как это работает?
На сайте одного из разработчиков Content-Aware Image Resizing каждый желающий может найти документ, довольно подробно описывающий работу этой технологии. Как и ожидалось, без принципов распознавания образов на изображении тут не обошлось.
Перед тем как начать процесс изменения размеров картинки, система производит несколько операций, на основе которых и будет приниматься решение, какие области на снимке можно искажать, а пропорции каких лучше сохранить, чтобы конечный результат выглядел максимально естественно. Некоторые из них можно выполнить с помощью стандартных инструментов в Photoshop (скажем, определение границ контрастности путем применения фильтра High Pass). Другие же, судя по всему, представляют собой уникальные решения.
В перечень этих операций, кроме всего прочего, входит и уже ставший привычным для многих обладателей цифровых фотоаппаратов алгоритм распознавания лиц, что естественно, ведь изменение пропорции лиц это первое, что обычно бросается в глаза. Инструмент позволяет также самостоятельно отметить с помощью маскирования те области, которые не должны быть затронуты искажениями.
В идеале преобразование картинки должно происходить в реальном времени. Но, к сожалению, такая вычислительная нагрузка не проходит даром. Более-менее комфортно можно работать с изображениями экранного разрешения. А вот масштабирование полноразмерных фотографий скорее будет напоминать пошаговый процесс. Впрочем, главное результат. Ведь то, что раньше делал ретушер, вынужденный применять различные кисти и инструменты клонирования, теперь производится автоматически. Ну а при необходимости можно [доработать напильникомk.
1 Защита областей от искажений
Входим в режим быстрой маски SelectEdit in Quick Mask Mode. Выбираем черный цвет в качестве рабочего (горячая клавиша ) и зарисовываем кистью нужные области, после чего выходим из режима быстрой маски (горячая клавиша ).
2 Создаем защитный канал
Теперь нам нужно сохранить полученное выделение в отдельном канале. Для этого можно выбрать в панели Channel команду New Spot Channel. Новый канал мы используем только как маску для защиты областей от масштабирования, поэтому сразу отключим его видимость. В некоторых случая защита не нужна алгоритм сам успешно справляется с задачей обнаружения объектов в кадре.
3 Недеструктивное масштабирование
Дотачаем холст документа, применив команду ImageCanvas Size, чтобы не обрезалось растягиваемое изображение. Выделим масштабируемую область инструментом Rectangular Marquee и активируем режим трансформации EditContent Aware Scale. В панели параметров выберем в раскрывающемся меню Protect созданный канал с сюжетно важными областями.
4 Изменение размеров изображения
С помощью маркеров на рамках слоя изменяем его пропорции. Как видите, защищенные области остались нетронуты искажениями. Подтверждаем трансформацию (кнопка Apply), а затем обрезаем лишние участки холста. В результате мы преобразовали обычный снимок в панорамный.
Всему свое место
Область применения Content-Aware Image Scaling довольно широка, тем не менее здесь есть свои нюансы. Прежде всего данной технологией не следует злоупотреблять. Например, преобразование изображения портретной ориентации в картинку панорамного формата вряд ли кого-то удовлетворит превратить его в квадратное будет более разумно.
Следует также помнить, что уменьшение пропорции (т. е. сжатие) выглядит более правдоподобно, чем растягивание. Это и понятно: при увеличении приходится достраивать картинку, буквально создавать новые пикселы из ничего, что вряд ли даст хороший результат. При уменьшении же происходит усреднение и отсекание лишнего, что предпочтительнее.
Ссылки для любопытных
www.faculty.idc.ac.il/arik/SCWeb/imret/index.html
Презентация технологии с демонстрационным видеороликом и ссылкой на документ с математическим описанием ее реализации. К слову, сам алгоритм обработки изображения у авторов назван Seam carving, а Content-Aware Image Resizing это только одно из возможных его применений.