26 August 2007

Seam Carving — революция в масштабирование изображений

Lumber room
Масштабировать изображения можно несколькими способами.

1) nearest neighbor — убиваем или клонируем ближайшего соседа.
Cокращаем строки и колонки пикселов если нужно уменьшить, и дублируем их если нужно увеличить изображение — проще не бывает… И быстрей, наверное тоже… В общем всё хорошо, пока не вспоминаем про качество картинки.

2) bilinear — тут мы скрещиваем соседей.
Уменьшая изображение, меняем два пиксела на один, равняющийся чему-то среднему, а при увеличении точно такой-же пиксел вставляем между родителями. Не слишком сложно, но зато качество на порядок лучше!

3) bicubic — шведская семья.
Тут всё так-же как и с bilinear, только родителей больше. Т.е. на цвет «ребёнка» влияют все соседние пикселы, а иногда и соседи соседей. И это конечно ещё красивей.

4) vector/fractal based — тут алгоритмы посложней.
Если в кратце, то перед масштабированием, картинка векторизитруется, и в процессе выбора цвета для новых пикселов участвуют векторы, края которых делают чуть контрастнее. В результате изображение в основном выигрывает.

Вот, полюбуйтесь:

способы масштабирования наглядно

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

Шаи Авидан (Shai Avidan) и Ариел Шамир (Ariel Shamir)

Шаи Авидан (Shai Avidan) и Ариел Шамир (Ariel Shamir) из Исследовательской лаборатории Mitsubishi Electric, предстваили на конференции SIGGRAPH 2007 технологию непропорционального масштабирования изображения без изменения пропорций объектов на нём. Хмм… звучит парадоксально… но всё таки это так, и вот вам пример:

ОригиналРезультат

Неплохо, да?

В теории всё просто ;)
Технология позволяет определять какие элементы изображения более, а какие менее важны для восприятия, а обладая этой информацией, при непропорциональном масштабировании изображения, мы сжимаем/растягиваем что-то сильней, а что-то вовсе не меняем. Основная фишка, конечно в том, как определить, что важно, а что не очень. Тут можно положиться на разработанный алгоритм, а можно ему помочь определив вручную критичные места на изображении.

И ещё одно применение этой технологии: если, убрать кусочек изображения и растянуть, по новой технологии, соседние части на образовавшуюся дырку, то получится, что кусочка этого и не было. По-моему это интересней чем банальный Clone Stamp и его вариации ;)

А теперь смотрим всё в ролике:

Ну что, осталось только дождаться коммерческих или некоммерческих реализаций ;)

PS. Вот тут версия в Apple QuickTime с большим разрешением: Seam Carving for Content-Aware Image Resizing
Tags:image processingтехнологииyoutubeSeam CarvingSIGGRAPH
Hubs: Lumber room
+43
1k 32
Comments 30