Щелевая съёмка: реализация на bash (ffmpeg + imagemagick)

Не помню что и почему я искал в интернете несколько дней назад, но я наткнулся на интересную статью с необычными фотографиями. А позже на еще одну статью, где описывалась реализация алгоритма создания таких фотографий на python. После прочтения меня заинтересовала эта тема и я решил провести вечера майских праздников с пользой для себя, а именно реализовать алгоритм «конвертирования» видео в щелевое фото. Правда, не на питоне, но подручными средствами на bash’е. Но обо всем по порядку.

Что такое щелевое фото

Вид фотографии, на которой запечатлено не одно событие в один конкретный момент времени, а несколько событий. Это достигается за счет того, что щелевая камера снимает кадры шириной в один пиксель (это и есть «щель») и «склеивает» их в одно фото. Немного запутанно звучит и пока сложно представить, что это такое и как выглядит. Самым доходчивым объяснением для меня был комментарий к одной из вышеупомянутых статей от пользователя Stdit:
image
После этого все становится понятным.

Пример для наглядности
image
Смотря на это фото можно сделать вывод, что первый слева легковой автомобиль сначала стоял неподвижно, а потом начал двигаться.

Алгоритм построения щелевой фотографии

  1. Разложить видео на множество изображений.
  2. Обрезать каждое полученное изображение по ширине в один пиксель с заданным смещением (щелью).
  3. Собрать полученное множество изображений в одно.

Звучит нестрашно и просто.

Дано

  • Камера Xiaomi Yi
  • Желание разобраться и сделать несколько необычных фото
  • Пару вечеров свободного времени
Решение

Первое и самое простое, что приходит на ум, это написать bash скрипт, который будет обрабатывать видео и фото в соответствии с описанными шагами алгоритма. Для реализации задуманного мне понадобился ffmpeg и imagemagick. В упрощенном виде на псевдо bash скрипт выглядит так:

ffmpeg -i videoFile frame-%d.png  for ((i = 1; i <= framesCount; i++)); do   convert -crop 1xframeHeight+slitShift+0 frame-$i.png slit-$i.png done  montage slit-%d.png[1-framesCount] -tile framesCountx1 -geometry +0+0 outputImage 
Разберемся что здесь происходит

  • Во-первых, с помощью утилиты ffmpeg разбиваем видео на множество изображений вида frame-0.png…frame-n.png.
  • Во-вторых, с помощью утилиты convert из пакета imagemagick обрезаем каждое полученное изображение (ключ -crop) следующим образом: ширина == 1px, высота == высоте изображения. Так же указываем смещение щели по горизонтали. Сохраняем в файлы вида slit-0.png…slit-n.png.
  • В-третьих, с помощью утилиты montage из пакета imagemagick собираем полученные изображения в одно фото. Ключ -tile указывает на то, что все фото нужно собрать в одно по шаблону «framesCount по горизонтали и 1 по вертикали», то есть собрать множество изображений в один ряд.
Результат

За пару вечеров был написан скрипт, которому на вход подаем видео файл, а на выходе получаем фотографию. В теории на вход можно подавать видео в любом формате, который поддерживает ffmpeg. Выходной файл можно получить в тех форматах, которые поддерживает imagemagick.

Пользоваться скриптом очень просто:
./slitcamera.sh --input=test.avi --output=test.png --slit-shift=100

где input — видео файл для обработки, output — название результирующего файла, slit-shift — смещение щели по горизонтали.

Первым делом для быстрого тестирования я не стал снимать видео на камеру, а скачал первое попавшееся видео с youtube и «скормил» его скрипту. Вот что из этого вышло:

На следующий день с собой на прогулку я взял свою Xiaomi Yi и снял несколько видео. Вот что из этого вышло.

Родное Азовское море (фото сделано из видео разрешением в 1920×1080 пикселей и продолжительностью в 31 секунду, 60к/с)


А эти фото собраны из видео разрешением в 1280×720 пикселей и продолжительностью в 16 секунд, 120к/с. Обратите внимание на фон второго фото. Он не статичен. На фоне было движущееся колесо обозрения.

Посмотреть и скачать скрипт можно в моем репозитории на GitHub. Предложения, критика и пулреквесты только приветствуются.

ссылка на оригинал статьи https://habrahabr.ru/post/283122/

Дорога из светящегося кирпича: мексиканец придумал цемент с фотолюминесценцией

image

Доктор Хосе Карлос Рубио [José Carlos Rubio] из мексиканского университета UMSNH создал цемент, из которого можно изготавливать светящийся бетон. Бетон с фотолюминесценцией может накапливать энергию Солнца днём, а затем отдавать её ночью в течение 12 часов. Изобретатель утверждает, что прочности такого бетона хватит на 100 лет использования.

Хосе Карлос начал работу над своим цементом 9 лет назад. По его словам, он понял, что в мире не существует подобных материалов, в основном потому, что бетон непрозрачен, и не позволяет свету проникать через него.

image

При добавлении цемента в воду происходит процесс гидратации, при котором образуется гель (структурированная система, состоящая из высокомолекулярных и низкомолекулярных веществ). Но кроме этого в материале начинают образовываться хлопья кристаллов, являющиеся побочным продуктом. Изобретатель работал над тем, чтобы устранить образование хлопьев.

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

image

Рубио утверждает, что в отличие от фотолюминесцентных пластиков, которые разлагаются от ультрафиолета, его цемент солнцеустойчивый и может служить целых сто лет. Он уже получил материал двух цветов, голубого и зелёного. Кроме всего прочего, максимальную яркость материала можно контролировать при его изготовлении – чтобы, например, светящаяся дорога не слепила водителей.

Изобретатель запатентовал свой цемент в Мексике. Изобретением уже заинтересовались в фонде Ньютона, основанном Королевской инженерной академией наук Великобритании. Проект проходит стадию коммерциализации. Автор исследует возможность создания светящейся штукатурки на аналогичном принципе.

ссылка на оригинал статьи https://geektimes.ru/post/275478/

Создателю Liberty Reserve дали 20 лет тюрьмы

imageВ пятницу суд США приговорил Артура Будовского, 42 лет, создателя электронной платёжной системы Liberty Reserve, к 20 годам тюрьмы. Суд постановил, что система работала нелегально и использовалась, в частности, для отмывания доходов, полученных преступным путём.

Будовский c 2002 по 2006 года, будучи гражданином США, управлял вместе с Владимиром Кацем онлайн-обменником цифровых валют GoldAge. Сервис предоставлял услуги обмена различных цифровых валют, в том числе e-gold – цифровой валюты, привязанной к золоту.

В 2006 году GoldAge закрыли, а парочку арестовали по обвинению в мошенничестве. Им дали по 5 лет условно, после чего Будовский сбежал из США в Коста-Рику, и женился там на местной жительнице в 2010 году. Получив в 2012-м гражданство страны, от отказался от американского гражданства.

Прибыв в Коста-Рику, Будовский открыл там новую компанию по работе с цифровыми деньгами, Liberty Reserve. Сервис предоставлял услуги хранения и переводов денежных средств, а для регистрации и работы системы требовалось указать лишь e-mail, имя и дату рождения.

Такая либеральная политика по отношению к клиентам привлекла большое количество тёмных личностей, пользовавшихся сервисом для перевода не совсем чистых денег. В самой системе использовались виртуальные валюты – LR-доллары и LR-евро, а также валюта, привязанная к золоту. За переводы система взимала 1% с суммы, при этом возврата платежей предусмотрено не было.

В 2009 году системой заинтересовались власти Коста-Рики, и к 2011 году у компании отобрали лицензию. Периодически, вплоть до 2013 года, власти страны арестовывали счета компании. После того, как к расследованию подключились специалисты из США, в 2013 году систему закрыли.

На этот момент Liberty Reserve насчитывала миллион пользователей, 200000 из которых были гражданами США. В год система проводила 12 миллионов транзакций. По некоторым данным, через систему в общей сложности прошло $6 миллиардов, полученных преступным путём.

Будовскому не помогло гражданство Коста-Рики, поскольку американских правозащитников редко останавливают принципы международного права. В 2014 году его с несколькими подельниками арестовали в Испании, и экстрадировали в США.

ссылка на оригинал статьи https://geektimes.ru/post/275476/

Разработчик iOS-приложения для Nissan бездумно скопировал код со Stack Overflow прямо в продакшн

Блогер Скотт Хелм (Scott Helm) поделился с читателями своего твиттера любопытным скриншотом, содержащим экран настроек геолокации мобильного приложения NissanConnect (ссылка на оригинальный твит, который в ленте Geektimes занимает слишком много места). На первый взгляд приложение выглядит вполне обыденно, если бы не любопытная строка «The spirit of stack overflow is coders helping coders» в самом низу.

Несмотря на то, что фраза выглядит вполне доброжелательно, всё же трудно предположить, что разработчик вставил её специально. Беглый поиск по StackOverflow подтверждает эту мысль: кто-то с ником spenf10 в августе прошлого года задал вопрос, имеющий прямое отношение к теме геолокации на iOS. Ответ, который набрал 106 голосов, содержит пример XML-кода, для заполнения файла info.plist:

<key>NSLocationWhenInUseUsageDescription</key> <string>The spirit of stack overflow is coders helping coders</string>  <key>NSLocationAlwaysUsageDescription</key> <string>I have learned more on stack overflow than anything else</string> 

Судя по всему, автор NissanConnect просто скопировал код в своё приложения, не отредактировав надлежащим образом строку с описанием параметра. Это, конечно, никак не повлияло на работоспособность приложения, которое и было официально представлено пользователям.

ссылка на оригинал статьи https://geektimes.ru/post/275474/

За 29 лет связи между раком мозга и мобильными телефонами не обнаружено

image

Специалисты из Сиднейского университета проанализировали случаи возникновения рака мозга у жителей Австралии, где по закону возникновение этой болезни обязательно к регистрации, за период с 1987 по 2012 года. Выяснилось, что с течением времени наблюдалось весьма небольшое увеличение количества случаев рака у мужчин, а у женщин оно осталось постоянным. Работа опубликована в журнале Cancer Epidemiology.

В работе были использованы случаи заболевших раком мозга 19858 мужчин и 14222 женщин. За последние 20 лет количество пользователей мобильных телефонов резко возросло — в 1993 году ими пользовалось 3% людей, сегодня этот процент приблизился к 90. При этом, с поправкой на возраст, количество случаев возникновения рака мозга у людей в возрасте от 20 до 84 лет на 100000 человек практически не менялось.

Исследователи обнаружили увеличение количества случаев рака у людей старше 70 лет – но это увеличение началось ещё в 1982 году, когда мобильных телефонов ещё не было. Его, скорее всего, логичнее связать с совершенствованием диагностических методов.

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

Поскольку в Австралии закон предписывает обязательную регистрацию всех случаев заболевания раком, и имеется доступ к статистике использования мобильных телефонов, авторы могут утверждать, что мобильные телефоны не приводят к возникновению опухолей мозга. Мобильные телефоны появились в стране в 1987 году, многие люди используют их по 20 лет и более, при этом количество случаев возникновения опухолей не увеличилось по сравнению с базовым.

Так что, если сотовые телефоны и представляют какую-либо опасность для жизни – так это лишь в тех случаях, когда вы забываете отвлечься от них, переходя дорогу.

ссылка на оригинал статьи https://geektimes.ru/post/275472/