Вход на сайт

Зарегистрировавшись на сайте Вы сможете добавлять свои материалы






Самодельный тилт шифт


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.

Обсуждая DIY Tilt-Shift Tutorial от Bhautik Joshi в самодельном объективе

simonsimonsimonsimon говорит:

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

Используя объектив среднего формата (это примерно F3,5-4, справа), вы можете наклонить объектив больше, не вызывая виньетирования. поэтому у вас может быть одна очень резкая сторона и одна очень размытая.
Это тот же эффект, что и при использовании объектива 35 мм с меньшим значением диафрагмы? Я только что закончил сборку объектива 50 мм f / 1,4, и теперь мне почти не нужно наклоняться, чтобы получить боке.
Подводя итог:
Объектив среднего формата - много наклона
Объектив 35 мм (низкая диафрагма) - меньше наклона
Дает тот же результат?
давным-давно (Ссылка)

johnnyoptic говорит:

Это интересный вопрос.Я отправил письмо Бхаутику, чтобы получить его ответ.

Вот мои мысли, основанные на моем опыте:
Во-первых, если это не всем понятно, есть несколько причин, по которым вы можете наклонить объектив среднего формата больше, чем объектив 35 мм, прежде чем вы увидите виньетирование. Основная причина в том, что линзы MF созданы для получения большего круга изображения. Круг изображения становится эллипсом, когда вы наклоняете объектив, и эллипс может отойти от датчика. Часто это можно компенсировать сдвигом объектива.Но это подводит нас ко второму преимуществу объективов MF: расстояние от их более длинного фланца до фокальной плоскости, вероятно, даст вам пространство для перемещения как для наклона, так и для смещения, прежде чем что-то на объективе начнет сталкиваться с чем-то в камере.

На самом деле в вашем вопросе есть три переменных: угол наклона, диафрагма и фокусное расстояние (потому что в целом объективы MF имеют большее фокусное расстояние, чем объективы 35 мм). Сначала я возьму фокусное расстояние. Предполагая, что диафрагма такая же, для объектива 80 мм потребуется больший наклон, чем для объектива 28 мм, чтобы добиться такого же наклона в фокальной плоскости.(Я определенно заметил это, когда использовал свои наклонные линзы. Мой 28 / 2.8 более чувствителен к небольшим изменениям наклона, чем мой 65 / 2.8.)
Если мы сохраним фокусное расстояние таким же и изменим диафрагму, угол фокальной плоскости не изменится, однако воспринимаемая «расфокусировка» областей, удаленных от фокальной плоскости, изменится из-за изменения глубина резкости.
И, конечно же, третья переменная, угол объектива, ведет себя так, как ожидалось. Для данного фокусного расстояния и диафрагмы больший наклон объектива означает больший наклон к фокальной плоскости.

Итак, вопрос сводится к следующему: применив больший наклон объектива (чтобы добиться большего наклона фокальной плоскости) к медленному объективу MF, можно ли получить тот же эффект, что и у светосильного объектива 35 мм с меньшим углом наклона объектива? Мой ответ - НЕТ. Это не будет точно так же, потому что и угол фокальной плоскости, и глубина резкости разные. Угол фокальной плоскости будет определять, какие элементы в вашей сцене резкие, в то время как DoF будет определять, насколько размытым будет изображение при удалении от фокальной плоскости.Вам нужно получить оба этих предмета одинаково, чтобы получить одно и то же изображение. Конечно, можно было бы добиться, чтобы определенные участки двух изображений имели аналогичную размытость, если бы эти участки были дальше от плоскости фокуса в более медленном объективе, однако вы не сможете сделать это для всего изображения одновременно. ,

Извините, у меня нет фотографий или диаграмм, чтобы продемонстрировать это. Я знаю, это было бы полезно. Может быть, я смогу заставить Бхаутика собрать их вместе при подготовке к версии 2 его учебника.;-)
Первоначально опубликовано много лет назад. (Ссылка)
johnnyoptic редактировал эту тему много лет назад.

bhautik_joshi говорит:

Привет, Саймон * 4 :)

Я соглашусь с Джоном - помимо разницы в размере круга изображения, технически объектив стандартного формата и объектив среднего формата будут наклонять фокальную плоскость одинаково.

Во-первых, угол плоскости объектов в фокусе (PoF?) Рассчитывается как (примерно):

PoFAngle = atan ((objdist / f) * sin (lensang))

где:
objdist = расстояние до объекта фокусировки (в мм)
f = фокусное расстояние (в мм)
lensang = угол наклона объектива к плоскости изображения в градусах

Кроме того, ширина объема в фокусе вокруг плоскости резкого фокуса зависит только от диафрагмы и угла наклона объектива.

У меня тут работа чуть более наполненная:
корова.mooh.org/projects/tiltshift/appendix.html

Итак, основные различия между стандартными и среднеформатными объективами - разница в фокусном расстоянии фланца и размере круга изображения - не влияют на то, где объем в фокусе - это когда объектив наклонен.

Должен заметить, что здесь я делаю несколько предположений - в частности, я предполагаю, что объектив камеры можно приблизить с помощью одного тонкого объектива. Если мы уберем приблизительные значения, я думаю, что могут быть некоторые тонкие различия, но для большинства целей съемки их, вероятно, можно игнорировать.
давным-давно (Ссылка)

Маурин Скел говорит:

Спасибо за ссылку. Это отличный сайт; Мне особенно нравится идея использовать внутреннюю трубку для корпуса объектива.

-
Первоначально опубликовано много лет назад.(Ссылка)
Маурин Скел редактировал эту тему много лет назад.

simonsimonsimonsimon говорит:

Привет, Бхаутик и Джонни.

Этот вопрос не давал мне покоя последние две недели, пока я делал прививки.
Я все время спрашиваю себя: "а как насчет ширины фокуса ОТНОСИТЕЛЬНО сенсора?" Разве это не имеет большого значения во всем этом?
давным-давно (Ссылка)

johnnyoptic говорит:

Да, размер пленки / сенсора тоже играет роль.(Хотя это иная проблема, чем ваш исходный вопрос.)

Размер сенсора имеет значение при работе с размытием, независимо от того, вызвано ли размытие глубиной резкости, дифракцией или наклоном объектива. Надеюсь, кто-то, имеющий реальный опыт работы с камерами среднего или большого формата, поделится с нами своим опытом.
давным-давно (Ссылка)

simonsimonsimonsimon говорит:

Я просто перечитал свой первый пост и должен признать, что это сбивает с толку, но спасибо за помощь, это заставило меня много задуматься о фотографии TS, и я зацепился.

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

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

По моему опыту, более широкие линзы труднее использовать таким образом, потому что небольшие движения приводят к большим изменениям из-за их малого фокусного расстояния. Чем длиннее объектив, тем он более устойчив к ошибкам, но в то же время за ним трудно держать в руках из-за более узкого поля зрения.
108 месяцев назад (Ссылка)

Хиро Морисон (Токио, ЯПОНИЯ). говорит:

Самодельная система фотосъемки с наклоном и сдвигом: o)

Камера - дешевая статья Старый EOS 80 долларов США.
Сильфон резиновый Сильфон для выхлопных труб Honda Lexus.
10 долларов США
Первоначально опубликовано 101 месяц назад. (Ссылка)
Hiro.Morison (Токио, ЯПОНИЯ) редактировал эту тему 101 месяц назад.

Скотт Стрелоу говорит:

Единственное, что сделало бы это круче, - это замена ножек капсулы подвижной рукой.
101 месяц назад (Ссылка)

loganzillmer говорит:

Я попытался собрать Bendycam с объективом CPC 28mm f2.8, который был разработан для камер Nikon. Я выбрал этот объектив, потому что читал, что у объективов Nikon фокусное расстояние фланца больше.Я построил его в точном соответствии со спецификациями, подробно описанными в руководстве, но он не работает. Даже когда я полностью затираю объектив, он не совсем в фокусе. В руководстве показано использование объектива Minolta (который, как я слышал, имеет более короткий FFD). Снимаю на Canon 60D. Я бы взял объектив среднего формата, но я хочу иметь возможность использовать дизайн Bendycam. Стоит ли брать Minolta? Есть ли список линз, которые лучше всего использовать для этой конструкции?
96 месяцев назад (Ссылка)

johnnyoptic говорит:

Minolta будет хуже именно по той причине, которую вы указали.

Вы снимали объектив с крепления И ФОКУСОР?
96 месяцев назад (Ссылка)

loganzillmer говорит:

Вот что я сделал.
[https://www.flickr.com/photos/loganzillmer/8007458973/in/photostream]
[Https: // WWW.flickr.com/photos/loganzillmer/8007462209/in/photostream]
[Https://www.flickr.com/photos/loganzillmer/8007465345/in/photostream/]
96 месяцев назад (Ссылка)

loganzillmer говорит:

Я снял остальное.Получил это до голых костей. Оно работает! Спасибо за помощь.
96 месяцев назад (Ссылка)

Марко 2k7 говорит:

всем привет, я здесь новенький. Я пришел, потому что меня все интересовало создание системы наклона, могу я задать вам вопрос, в котором я не совсем уверен?

Путеводитель по корове.mooh потрясающий, но ничего не говорит мне о расстоянии между фланцами. Я имею в виду, я должен это учитывать?

Если я сделаю камеру bendycam слишком длинной или слишком короткой, рискую ли я вообще не сфокусироваться на объективе или не дальше нескольких дюймов?

Например, как работает система HIRO.M? Я не думаю, что этот объектив должен работать на таком расстоянии от сенсора на собственном корпусе ... как он правильно фокусируется? Я не понимаю ...
95 месяцев назад (Ссылка)

johnnyoptic говорит:

Расстояние между фланцами имеет решающее значение, если вы хотите добиться бесконечной фокусировки.Глядя на фотографию объектива HIRO.M, я уверен, что он НЕ фокусируется на бесконечность.

Лучший совет, который я могу дать, - это ТЕСТИРОВАТЬ объектив перед тем, как прикрепить его к креплению. (А если вы полностью застряли, вы всегда можете найти легкий выход на сайте www.johnnyoptic.com - извините, пожалуйста, за бесстыдную рекламу).
95 месяцев назад (Ссылка)

Эрнест Ирванди говорит:

Всем привет

Читал обзоры адаптеров для камер обзора от Arca Swiss, Sinar P3 и Cambo X2.В своих брошюрах они помещают фотообъективы как опции для съемки с наклоном и сдвигом. У кого-нибудь есть опыт использования фотообъективов для съемки с наклоном и сдвигом? Может ли он достичь бесконечного фокуса? и это виньетка на 35-миллиметровых полнокадровых датчиках?
Первоначально опубликовано 86 месяцев назад. (Ссылка)
Эрнест Ирванди редактировал эту тему 86 месяцев назад.

johnnyoptic говорит:

Эрнест Ирванди :

Ответ зависит от конкретного объектива.Увеличительные линзы бывают разных фокусных расстояний (обычно для использования с разными форматами). Наиболее распространенное фокусное расстояние - 50 мм. У них обычно НЕ хватает заднего фокусного расстояния для достижения бесконечной фокусировки с большинством зеркальных или цифровых зеркальных фотоаппаратов. Однако увеличивающие линзы с большим фокусным расстоянием (около 75 мм и более), вероятно, подойдут. (Имейте в виду, что это обобщение. Точное заднее фокусное расстояние зависит от конструкции объектива.) Кроме того, в целом виньетирование не должно быть проблемой для этих объективов.
86 месяцев назад (Ссылка)

pdophoto говорит:

Это может вас заинтересовать
www.jensen-optical.us/PDF_FILES_TANK/APO%20EL%20NIKKOR/AP ...
savazzi.freehostia.com/download/manuals/El-Nikkor 1.pdf
Поищите в сети характеристики интересующих вас объективов.
Первоначально опубликовано 86 месяцев назад. (Ссылка)
pdophoto редактировал эту тему 86 месяцев назад.

FriedApe говорит:

Я использовал старую папку с рулонной пленкой, чтобы сделать объектив с наклоном / сдвигом.
Сильфон и линза в сборе крепились к корпусу с помощью нескольких небольших крепежных винтов. Я сделал заднюю пластину, чтобы запечатать конец сильфона, и приклеил ее к старой крышке корпуса. Заблокируйте затвор на Т и поехали.
Кроме того, я закрыл корпус куском фанеры и добавил точечное отверстие, так что я получил камеру 6 * 9 с «линзой» с фокусным расстоянием около 20 мм.
Наверное, неуважительно, но есть несколько нелюбимых старых папок с приличными мехами ....
80 месяцев назад (Ссылка)

Хотите прокомментировать?

Зарегистрируйтесь для получения бесплатной учетной записи или войдите в систему (если вы уже являетесь участником).

.

Самодельный объектив с наклоном и сдвигом - HomemadeTools.net



ОПИСАНИЕ:

Самодельная линза со сдвигом наклона, состоящая из линзы 50 мм, насадки для душа и резиновой перчатки.

Новейшие сообщения на форуме

  1. Испуганный лось топает косилку - GIF от Toolmaker51 on 2020-08-12 23:13:38
  2. T-Nuts от Toolmaker51 в 2020-08-12 23:06:26
  3. "УДИВИТЕЛЬНЫЙ ИНСТРУМЕНТ ДЛЯ ВАШЕГО ДОМА" от Toolmaker51, 2020-08-12 22:23:06
  4. Свинцовые вставки для молотка, заменяющие вставку из воловьей кожи от Toolmaker51 на 2020-08-12 22:11:08
  5. Роликогиб - видео от sossol, 2020-08-12 21:56:23
  6. Модификация поперечного подшипника скольжения для мини-токарного станка и расширение хода от rayh__ on 2020-08-12 21:53:02
  7. Машина для извлечения свай - видео от Altair, 2020-08-12 21:51:01
  8. Инструмент для обертывания травм пальца - GIF от rayh__ on 2020-08-12 21:35:17
  9. Сделал первый шаг к созданию своего магазина от Toolmaker51 2020-08-12 21:17:27
  10. Истребитель Supermarine Nighthawk 1917 года - фото от trigger на 2020-08-12 21:10:04

Родственные самодельные инструменты:

,

imclab / TiltShift: эффект линзы Tilt-Shift для Unity

перейти к содержанию Зарегистрироваться