среда, 28 марта 2012 г.

Tilt-Shift фотографии своими руками


Tilt-Shift фотографии своими руками

Что такое Tilt-Shift объективы и что с их помощью можно сделать знают многие. Недавно на хабре была статья о Tilt-Shiftгенераторе, который создает этот эффект путем обработки обычной фотографии. Но программка эта написана только для Windows, да еще и платить за нее надо. Все плагины для графических редакторов почему-то тоже требовали денег и лицензий. Поэтому было принято решение с этим вопросом разобраться самостоятельно и сделать инструмент пусть немного проще профессионального софта, и не идеально симулирующий оптику объектива, но бесплатный, открытый и доступный всем желающим! Что из этого получилось, а что нет — можете посмотреть сами.

Начнем с того, что сделаем свою первую миниатюру.
Приступая к работе, в первую очередь необходимо выбрать фотографию. Нет смысла пытаться обрабатывать изображения, которые не подходят изначально. Преимущественно для этого используются пейзажные, городские снимки, снятые с возвышения — это в первую очередь и помагает создать иллюзию маленького мира. Так же хорошо, если в кадре есть небольшие объекты, такие как транспорт и люди.



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

Для работы я выбрал эту фотографию:



После добавления насыщенности и применения фильтров в фотошопе получается такой результат:



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

Перейдем к программированию.

Начнем с простого. Сначала нужно подготовить маску для изображения. Чтобы не загружать себя сразу лишней работой, сделаем ее в фотошопе. В темных местах величина альфа-слоя будет равна максимальному значению, в белых — нулю, то есть изображение в этих местах будет прозрачно.



В месте с черными пикселями наложения боке происходить не будет и сцена останется в фокусе. Маска была сделана методом “так примерно покатит”, это всего лишь демонстрация подхода.
Немного поковырявшись в python’е, получился такой небольшой и аккуратный скрипт:

  1. import Image
  2. import sys
  3. import numpy as np
  4. from scipy import ndimage
  5. import ImageEnhance
  6.  
  7. # INIT
  8. blur_size = 6
  9. image_base = "/Users/Mango/Desktop/tiltshift_alpha.png"
  10. image_mask = "/Users/Mango/Desktop/mask_tiltshift.png"
  11. image_output = "/Users/Mango/Desktop/tiltshift_preview.png"
  12.  
  13. # LOAD
  14. im_base = Image.open(image_base)
  15. im_mask = Image.open(image_mask)
  16. im_mask = im_mask.resize(im_base.size)
  17.  
  18. # PROCESS
  19. enh = ImageEnhance.Color(im_base)
  20. im_base = enh.enhance(1.7)
  21. enh = ImageEnhance.Contrast(im_base)
  22. im_base = enh.enhance(1.2)
  23.  
  24. im_blurred = np.array(im_base, dtype=float)
  25. im_blurred = ndimage.gaussian_filter(im_blurred, sigma=[blur_size,blur_size,0])
  26. im_blurred = Image.fromarray(np.uint8(im_blurred))
  27. im_mask = im_mask.convert("L")
  28. im_base = im_base.convert("RGBA")
  29.  
  30. # MERGE AND SAVE
  31. im_base.paste(im_blurred,mask=im_mask)
  32. im_base.save(image_output)

Вначале получаем исходное изображение и маску, затем размер маски подгоняется под размер изображения и начинается обработка. С помощью модуля ImageEnhance регулируются такие показатели как цвет, яркость и контраст. После чего в im_blurred сохраняется копия изображения в виде массива. Для создания боке я использовал старый добрый фиьтр размытия Гаусса. Его результат отличается от того же Lens Blur в профессиональных редакторах, но для начала вполне неплохой результат.
На финальной стадии размытое изображение накладывается на наш оригинал, используя альфа-маску. Так же стоит учесть, что каждый слой должен иметь правильную палитру. Маска используется в монохромном режиме L, а исходному изображению при помощи convert(«RGBA») добавляется альфа-слой, который и позволяем с помощью маски накладывать второй слой.
Вот что получилось в итоге:



Теперь немного допилим полученный код и избавимся от некрасивого внешнего дополнения в виде вручную нарисованной маски. В этом нет ничего сложного, она представляет собой так называемый reflected gradient и задается двумя коллинеарными векторами.



В еще более упрощенном виде эту модель можно представить следующим образом:



Вся система задается несколькими параметрами: направление, длина вектора А, зоны фокусировки и вектора Б. Все расстояния для простоты задаем по оси y.
Построение градиента происходит следующим образом. Сначала по заданным расстояниям строится изображение шириной в один пиксель, оно будет выступать в роли паттерна. После чего разными манипуляциями можно придать ему любую форму и повернуть на нужный угол.
Немного поэкспериментировав у меня получилась такая функция:

  1. import Image
  2. import ImageDraw
  3. import ImageOps
  4. import math
  5.  
  6. def draw_mask(angle,width,height,offset_init,offset_A,offset_focus,offset_B):
  7. offset = height*offset_init/100
  8. vectorA = offset+offset_A*height/100
  9. focus = vectorA+offset_focus*height/100
  10. vectorB = focus+offset_B*height/100
  11.  
  12. mask = Image.new('L', (width,height))
  13. mask_1px = Image.new('L', (1,height))
  14. draw_1px = ImageDraw.Draw(mask_1px)
  15. for y in range (0,offset): # draw white zone
  16. draw_1px.point((0,y),255)
  17. for y in range (offset,vectorA): # draw vectorA
  18. draw_1px.point((0,y),(vectorA-y)*(255/(vectorA-offset)))
  19. for y in range (vectorA,focus): # draw white zone
  20. draw_1px.point((0,y),0)
  21. for y in range (focus,vectorB): # draw vectorB
  22. draw_1px.point((0,y),255-(vectorB-y)*(255/(vectorB-focus)))
  23. for y in range (vectorB,height): # draw white zone
  24. draw_1px.point((0,y),255)
  25.  
  26. m_width,m_height = mask.size
  27. mask_1px = mask_1px.resize((int(m_width*3),m_height), Image.ANTIALIAS)
  28. mask_1px = ImageOps.invert(mask_1px)
  29. mask_top = mask_1px.rotate(angle,Image.NEAREST,1)
  30. mask_top = ImageOps.invert(mask_top)
  31.  
  32. mask.convert("RGBA")
  33. n_width,n_height = mask_top.size
  34. mask.paste(mask_top,(-n_width/2,-(n_height/2-height/2)))
  35. mask.convert("L")
  36. return mask



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

вторник, 6 марта 2012 г.

Как самому распечатать постер


Как самому распечатать постер

24.01
 
5 803
В интернете можно найти миллионы потрясающих изображений, начиная от просто красивых фотографий природы, афиш ваших любимых фильмов  и до немыслимых графических артов, несущих в себе целые философские концепты. Некоторые из них так и просятся стать украшением вашего дома или офиса. Тем более, что сделать это совсем не трудно — обычный принтер и веб-приложение BlockPosters помогут сделать красивый постер всего за несколько минут.

@photo
Создание постера в сервисе BlockPosters состоит всего из трех простых шагов. Сначала необходимо загрузить изображение на сервер. Разумеется при этом надо стремиться найти картинку максимального размера, чтобы качество готового плаката было приемлемым. Затем необходимо выбрать портретную или ландшафтную ориентацию листов, размер, а также их количество.

На третьем шаге мы получаем ссылку на скачивание файла в формате PDF, который содержит порезанный на стандартные листы A4 постер. Теперь остается только сохранить его, распечатать на принтере и аккуратно собрать плакат на какой-либо основе.
В галерее сервиса содержится большое количество замечательных примеров использования BlockPosters для создания постеров. Надеемся, что с помощью этого сервиса вы претворите в жизнь самые креативные идеи и сделаете свой интерьер действительно уникальным.

Как сделать видео с историей вашей жизни на основе Facebook Timeline


Как сделать видео с историей вашей жизни на основе Facebook Timeline

01.02
 
1 996
Помните рекламу Fcaebook Timeline, в которой перед нами проносится история всей жизни человека с показом ключевых моментов его жизни. Теперь такое видео можете сделать и вы. Для этого Facebook запустил отдельный промосайт Timeline Movie Maker, который сгенерирует для вас крайне трогательный фильм.
Вск, что вам нужно, это авторизироваться своим аккаунтом и немного подождать. Перед вами прелетят годы с главными фотографиями и видеороликами, изменениями статусов и посещенных мест.
После первого рендеринга фильма вы можете поменять в нем музыку и заменить ключевые кадры. Не очень приятный интерфейс, но итог — вас порадует ;) Попробуйте!

среда, 1 февраля 2012 г.

«Киев-20» — флагман украинской фототехники


«Киев-20» — флагман украинской фототехники из песочницы

image

Итак, в этой статье речь пойдет пленочном фотоаппарате Киев-20, также мы немного погрузимся в историю его создания, и конечно, куда без описания и техничских характеристик.


Немного истории


Итак, Киевский завод «Арсенал», получивший по репарациям после Второй мировой войны станки и чертежи с заводов компании Zeiss Ikon, запускает производство фотоаппаратов (в начале точных копий немецких Contax-ов, а затем и собственной разработки). К 1965 налаживается производство зеркальных аппаратов. Появляются первые, и кстати, очень смелые модели с собственным байонетом(креплением объектива к камере): Киев-10 (первая в мире зеркалка с автоматом, Pentax Electro Spotmatic вышел только через 6 лет) и Киев-15.

Затем, происходило следующее. По случаю Олимпийских игр 80го года, руководством партии было закуплено большое количество японской техники фирмы Nikon (которая в те времена считалась самой лучшей, и заботливо импортировалась для лучших советских фотографов). Затраты на покупку камер иностранного производства натолкнули руководителей на идею выпустить профессиональный зеркальный фотоаппарат собственного производства с никоновским байонетом(для совместимости объективов и камер). Для старта производства был выбран завод «Арсенал», где уже имелся опыт создания зеркальных камер. Это положило начало созданию на «Арсенале» линейки фотоаппаратов с байонетом F, стандартным никоновским байонетом, который в Союзе так и называли — байонет Н (Никон).

Было разработан сначала Киев-17 (чисто механический, без экспонометра), а затем — Киев-20. Следующая модель, получившая название Киев-19, стала упрощенной версией 20го.

Описание


Фотоаппарат оснащен встроенным сопряженным TTL-экспонометром. Это значит, что можно просто выставить на объективе необходимую апертуру диафрагмы, и вращать кольцо выдержек, пока в видоискателе не загорится средний светодиод, отвечающий за нормальную экспозицию(верхний — избыточная экспозиция, нижний, соответственно, недостаточная). Питается все это дело от четырех батареек LR44 (такие как лазерных указках используются). Однако затвор полностью механический, т.е. для него батарейки не требуются. Диафрагма здесь так называемая «прыгающая», а это значит, что закрывается она до рабочего значения только в момент съемки, а в момент наводки на резкость остается открытой, что делает процесс наводки на резкость куда более приятнее и проще (при открытой диафрагме лучше различимы резкость и нерезкость в видоискателе).

image

Камера имеет фокальный ламельный (ламели — металлические шторки) затвор с вертикальным движением ламелей. Данный затвор, в свое время, создавался с нуля для Киева-17, и к моменту выпуска Киева-20 его производство было налаженным и обкатанным. Щёлкает громко, но не с лязганьем, как на Зенитах, это заслуга скорее всего более совершенной механики зеркала. Данный затвор применялся только в 17-м и 20-м Киеве.

Главная же плюшка в том, что байонет у фотоаппарата никоновский! А это означает, что на него можно прицепить объективы от фотокамер Nikon или нацепить объективы производства завода «Арсенал» на Ваш Nikon. А это особенно хорошо, учитываю сегодняшние цены на объективы. Правда платить придется автофокусом — понятное дело, на совковых объективах он работать не будет. Зато их рисунок того стоит.

Диапазон выдержек у аппарата приличный — от 1 сек до 1/1000, что не сравнить с «классическим» набором Зенитов (1/30 — 1/500).

image

Радует поле зрения в видоискателе — 93% кадра! Это сравнимо со многими современными цифровыми зеркалками (у них этот показатель обычно 95%). И это точно не сравнить с 63% у тех же «классических» Зенитов.

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

Заправляется Киев-20 обычной пленком типа 135 (35-мм пленка)

image

Стандартный объектив — Гелиос-81Н. Отличный полтинник, или портретник, если прицепить его на Никон. Однако бывают объекивы для Киев-20 разные, как например этот зум:

image

Характеристики


Подведем небольшой итог:
  • Затвор с выдержками 1 — 1/1000с и «В»(от руки)
  • Видоискатель с полным полем визирования (поле видоискателя — 23х35мм — 93% кадра)
  • Присоединение оптики: байонет Н (геометрически совместимый с байонетом F фирмы Nikon).
  • Светочувствительности плёнки: от 8 до 1000 единиц по ГОСТ.
  • Автоспуск
  • Многократная экспозиция
  • Габаритные размеры: 90 х 96 х 145 мм
  • Масса: 1100 г
  • Годы выпуска: 1983-1986
  • Изготовитель: завод «Арсенал».

Так почему же флагман?


Конечно, на территории СССР были проекты и более продвинутых камер, таких как «Алмаз», несколько моделей Зенитов (хотя согласен, пару Зенитов близки к нему по характеристикам, но мы же говорим об украинской фотоиндустрии) да и у самого «Киева» готовился серъезный приемник — Киев-18. Но так случилось, что недостаточное финансирование фотоотрасли в 80х а потом и вовсе развал Союза не позволили этим проектам воплотиться в реальность, и они так и остались в виде опытных образцов, не пошедших в серию. А Киев-20 был выпущен и вполне реально выпускался с 1983 по 1986 год. А я так и до сих пор на него фотографирую.

Примеры снимков можете посмотреть тут.