• Вычисляемое видео в 755 мегапикселей: пленоптика вчера, сегодня и завтра



      Какое-то время назад автору довелось читать лекцию во ВГИК, и в аудитории было много людей с операторского факультета. Аудитории был задан вопрос: «С каким максимальным разрешением вы снимали?», и дальше выяснилось, что примерно треть снимала 4К или 8 мегапикселей, остальные — не более 2К или 2 мегапикселя. Это был вызов! Мне предстояло рассказать про камеру с разрешением 755 мегапикселей (raw разрешением, если быть точным, поскольку конечное у нее 4К)  и какие феерические возможности это дает для профессиональной съемки.

      Сама камера выглядит так (этакий маленький слоник):



      Причем, открою страшную тайну, чтобы сделать этот снимок искали ракурс получше и человека покрупнее. Мне доводилось щупать эту камеру вживую, скажу, что она выглядит намного крупнее. Снимок ниже с Йоном Карафином, с которым мы примерно одного роста, более точно передает масштабы бедствия:



      Кому интересны принципиально возможности вычисляемого видео о которых редко пишут — вся правда под катом! )
      Читать дальше →
    • Правдоподобная реконструкция Инстаграм-подобных фильтров

      • Translation

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


      https://github.com/homm/color-filters-reconstruction


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


      Для примера, одно из следующих изображений было получено с применением фильтра Clarendon на оригинальном изображении в самом Инстаграме, а другое с помощью наложения восстановленного фильтра. Попробуйте угадать, какое восстановлено.



      Для сравнения, это результат применения того же фильтра из коммерческого набора «Инстаграм-подобных фильтров», который вы без труда сможете нагуглить:


      Читать дальше →
    • Сделаем Windows медленнее! Часть первая: файловый доступ

      • Translation
      imageОС Windows долгое время попрекали за медлительность её файловых операций и медленное создание процессов. А почему бы не попробовать сделать их ещё более медленными? Эта статья покажет способы замедления файловых операций в Windows примерно в 10 раз от их нормальной скорости (или даже больше), причём способы эти практически не поддаются отслеживанию обычным пользователем.

      А ещё, конечно же, мы научимся подобные ситуации обнаруживать и исправлять. Весь текст написан на основе проблемы, с которой я столкнулся пару месяцев назад, так что всё, написанное ниже, полностью реально.
      Читать дальше →
      • +70
      • 40.1k
      • 9
    • Профилирование: измерение и анализ

      • Translation


      Привет, я Тони Альбрехт (Tony Albrecht), инженер в Riot. Мне нравится профилировать и оптимизировать. В этой статье я расскажу об основах профилирования, а также проанализирую пример С++-кода в ходе его профилирования на Windows-машине. Мы начнём с самого простого и будем постепенно углубляться в потроха центрального процессора. Когда нам встретятся возможности оптимизировать — мы внедрим изменения, а в следующей статье разберём реальные примеры из кодовой базы игры League of Legends. Поехали!

      Читать дальше →
      • +23
      • 9.5k
      • 6
    • Учимся быть фуллстек разработчиками. Пишем приложение на React/Redux/Webpack/ASP.NET Core 2.0/EF Core

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

      Да, под Node.js можно написать сервер, но для бэковой разработки, все же, .net бесспорный лидер. На js, на мой взгляд, очень сложно написать гибкий и легко поддерживаемый бэкенд, хотя возможно многие со мной и не согласятся.

      Давайте ударим автопробегом по бездорожью попытаемся вопреки всему этому написать SPA приложение с бэком на .net core и клиентом на js, из инструментов разработки будем использовать горячо любимую Visual Studio.

      После этого туториала, я надеюсь, веб и бэк разработчикам будет проще найти почву под ногами в вражьей области и понять в какую сторону двигаться для более углубленного изучения. Поехали!
      Читать дальше →
    • Hyperapp для беженцев с React/Redux

      • Translation

      image


      Я люблю Redux


      Именно благодаря Redux для меня началось путешествие в мир удивительного функционального программирования. И это первое из функциональщины, что я попробовал в production. Прошли те времена, когда я использовал DOM для хранения состояния и неуверенно манипулировал им с помощью jQuery.


      Redux — это инструмент для управления состоянием приложения (state), который позволяет полностью отделить его от представления (view). Представление (view) становится производным состояния (state), которое предоставляет пользователю интерфейс для его изменения. Действия пользователя (actions) не изменяют состояние (state) напрямую. Вместо этого они попадают в редюсер (reducer). Это такая чистая функция, которая на основе предыдущего состояния (state) и действия (action) генерирует следующее состояние (state). Такой подход к обновлению данных во многом был вдохновлен архитектурой языка программирования Elm и концепцией однонаправленного потока данных Flux. Это, возможно, самая популярная JavaScript-библиотека для иммутабельного изменения состояния из тех, что существуют сегодня. Авторы Redux сфокусировались на решении одной единственной проблемы — управление состоянием приложения (state), и сделали это хорошо. Redux получился достаточно модульным, чтобы работать с различными библиотеками для отображения представления (view).


      React использует аналогичный сфокусированный подход для представления (view), имеет эффективный виртуальный DOM, который можно подключить к DOM браузера, нативным мобильным приложениям, VR и прочим платформам.


      Что бы создавать надежные, функциональные и легко отлаживаемые web-приложения, можно использовать React и Redux. Правда, потребуются вспомогательные библиотеки вроде react-redux и куча boilerplate-кода. А можно попробовать Hyperapp.

      Читать дальше →
    • Бесплатное программное обеспечение для IP-камер

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

        В итоге, как нам кажется у нас получился самый полный список программного обеспечения для систем видеонаблюдения.

        Все программное обеспечение разбито на три группы:

        • Программное с открытым исходным кодом
        • Бесплатное программное обеспечение с ограниченным функционалом
        • Программное обеспечение бесплатное в течении пробного периода

        image
        Читать дальше →
      • Безопасный Android для ребёнка

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

          Конечно, дети разные, и проблемы у всех в связи с этим возникают разные. У кого-то проблем вообще не возникает, и я могу только порадоваться за этих людей. Лучше всего, если получается договориться с ребёнком о разумном использовании телефона — но этот случай мы рассматривать не будем как довольно очевидный (договорились — молодцы). Будем рассматривать тот случай, когда нужно выдавать ребёнку смартфон, но при этом технически ограничивать его применение.

          Читать дальше →
        • Почему самые сложные уравнения физики такие трудные?

          • Translation

          Уравнения Навье-Стокса описывают простые повседневные явления, вроде воды, текущей из садового шланга — однако на них основана задача, решение которой оценили в миллион долларов




          В физике есть уравнения, описывающие всё, от растяжения пространства-времени до полёта фотона. Однако же лишь один набор уравнений считается настолько математически сложным, что его выбрали в роли одной из семи "Задач тысячелетия", за решение которых Математический институт Клэя предлагает премию в миллион долларов: это уравнения Навье-Стокса, описывающие течение жидкостей.

          Недавно я писал о том, как для этих уравнений был получен новый важный результат. И эта работа свидетельствует о том, что прогресс на пути к «премии тысячелетия» будет более тяжёлым, чем ожидалось. Почему же эти уравнения, описывающие такие знакомые явления, как вода, текущая по шлангу, математически понять гораздо сложнее, чем, допустим, уравнения поля Эйнштейна, включающие в себя такие ошеломляющие объекты, как чёрные дыры?
          Читать дальше →
        • Вы неверно измеряете загрузку процессора

          • Translation
          Та метрика, которую мы называем «загрузкой процессора» на самом деле многими людьми понимается не совсем верно. Что же такое «загрузка процессора»? Это то, насколько занят наш процессор? Нет, это не так. Да-да, я говорю о той самой классической загрузке CPU, которую показывают все утилиты анализа производительности — от диспетчера задач Windows до команды top в Linux.

          Вот что может означать «процессор загружен сейчас на 90%»? Возможно, вы думаете, что это выглядит как-то так:



          А на самом деле это выглядит вот так:



          «Работа вхолостую» означает, что процессор способен выполнить некоторые инструкции, но не делает этого, поскольку ожидает чего-то — например, ввода-вывода данных из оперативной памяти. Процентное соотношение реальной и «холостой» работы на рисунке выше — это то, что я вижу изо дня в день в работе реальных приложений на реальных серверах. Есть существенная вероятность, что и ваша программа проводит своё время примерно так же, а вы об этом и не знаете.
          Читать дальше →
        • Статический анализ и property-based тестирование: вместе мы сила

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


            Я разрабатываю Java-инспекции в IntelliJ IDEA, которая большей частью написана на Java. В некотором смысле я нахожусь в привилегированном положении по сравнению с другими программистами: доработать статический анализатор IDE, чтобы находить новый класс ошибок — это моя прямая рабочая обязанность, которая при этом же позволяет найти и обезвредить баги в этой же самой IDE. Хочу поделиться одной такой историей успеха.

            Читать дальше →
            • +21
            • 5.1k
            • 6
          • Theme Hospital создавался в качестве сатиры на американскую систему здравоохранения


              Пример плохого управления больницей в Theme Hospiital

              Компания Sega анонсировала новую часть своего давнишнего хита Theme Hospital. Сюжет оригинальной игры — развитие сети больниц, которые должны приносить деньги. При этом приходится соблюдать баланс между желанием заработать как можно больше и чувствами пациентов, которые приходят для того, чтобы получить лечение. Насколько можно судить, первичный замысел игры сохраняется, юмор здесь тоже есть, и он весьма неплохой.

              Оригинал был представлен в 1997 году, игра вышла на ПК и на первой PlayStation. Разработчики добавили большое количество черного юмора, который в этой игре был весьма кстати. Как и говорилось выше, главное, что должен делать здесь делать игрок — зарабатывать деньги. Пациенты рассматриваются, как источник прибыли, неистощимый поток денег извлекается при помощи пациентов и… да, их трупов.
              Читать дальше →
            • Имитируем иридисценцию: шейдер CD-ROM

              • Translation
              Этот туториал посвящён иридисценции. В этом туториале мы исследуем саму природу света, чтобы понять и воссоздать поведение материала, создающего цветные отражения. Туториал предназначен для разработчиков игр на Unity, однако описанные в нём техники можно запросто реализовать на других языках, в том числе в Unreal и на WebGL.


              Туториал будет состоять из следующих частей:

              • Часть 1. Природа света
              • Часть 2. Усовершенствуем радугу — 1
              • Часть 3. Усовершенствуем радугу — 2
              • Часть 4. Разбираемся с дифракционной решёткой
              • Часть 5. Математика дифракционной решётки
              • Часть 6. Шейдер CD-ROM: дифракционная решётка — 1
              • Часть 7. Шейдер CD-ROM: дифракционная решётка — 2
              Читать дальше →
              • +17
              • 5.4k
              • 9
            • Использование камеры Microsoft Kinect 360 в ROS Indigo

                Добрый день, уважаемые хабрачитатели!

                Последние наблюдения и собственный опыт показали, что с подключением камеры Microsoft Kinect Xbox 360 для ее использования в ROS Indigo из под Ubuntu 14.04 часто возникают проблемы. В частности, при запуске ROS пакета openni_launch не удается определить устройство и выдается ошибка «No device connected». В этой статье я опишу свой пошаговый метод настройки окружения для использования Microsoft Kinect из ROS Indigo. Кто заинтересован, прошу под кат!
                Читать дальше →
                • +22
                • 7.2k
                • 7
              • Использование GPIO в Raspberry Pi из ROS

                  Добрый день, уважаемые читатели Хабра!

                  Недавно, изучая книги по практическому использованию ROS, я узнал об интересной возможности использования портов GPIO, доступных на Raspberry Pi из ROS. В этой статье я хочу рассказать о том, каким образом это возможно осуществить. Для доступа к портам GPIO на плате Raspberry Pi мы будем использовать библиотеку Wiring Pi. Кого заинтересовала эта тема, прошу под кат.
                  Читать дальше →
                  • +12
                  • 11.3k
                  • 7
                • Логирование в программе ROS

                    Добрый день, уважаемые читатели! Продолжаю рассказывать о различных интересных и полезных возможностях робототехнической платформы Robot Operation System (ROS). В этом небольшом руководстве я расскажу о возможностях логирования средствами ROS при программировании на языке C++. Думаю, многие согласятся с тем, что вывод сообщений при выполнении программы имеет большое значение при разработке программ, особенно при отладке. ROS предоставляет удобное API для вывода различных типов сообщений в терминал с возможностью визуализации и фильтрации сообщений в специальных инструментах ROS. Давайте начнем!
                    Читать дальше →
                  • Обзор методов визуальной одометрии в ROS: использование камер глубины

                      Добрый день, уважаемые читатели! В предыдущих статьях по робототехнической платформе ROS я коснулся темы локализации и построения карты местности, в частности мы изучили методы SLAM: gmapping в статье и hector_slam в статье. В этой статье я продолжу знакомство с алгоритмами локализации в ROS и представлю обзор нескольких алгоритмов визуальной одометрии, реализованных на платформе ROS. Визуальная одометрия имеет важное значение в робототехнике поскольку позволяет оценить перемещение робота, его текущую позицию и ускорение на основе данных видеопотока с камеры. Можно использовать как обычную RGB камеру (в этом случае говорят о монокулярной одометрии), так и стереокамеру (стерео одометрия) и даже RGBD камеру.

                      При использовании камер RGBD таких как Microsoft Kinect возможно получить более аккуратную визуальную одометрию, чем со стереокамерами, так как в этом случае мы используем 3D данные. В данной статье мы рассмотрим такие алгоритмы. Кого заинтересовала эта тема, прошу под кат.
                      Читать дальше →
                      • +14
                      • 6.5k
                      • 4
                    • Обзор алгоритмов SLAM для камер глубины в ROS

                        Добрый день уважаемые читатели! В последней статье я уже писал об алгоритме rtabmap SLAM в контексте методов визуальной одометрии. В этой статье я расскажу об этом алгоритме SLAM более подробно, а также представлю обзор другого известного алгоритма SLAM, предназначенного для камер глубины — RGBDSLAM. Кого заинтересовало, прошу под кат.
                        Читать дальше →
                        • +12
                        • 10.2k
                        • 3
                      • Локализация и навигация в ROS с использованием rtabmap

                          Добрый день уважаемые читатели. В своей последней статье я рассказывал о двух алгоритмах SLAM, предназначенных для камер глубины: rtabmap и RGBD-SLAM. Тогда мы попробовали только построение карты местности. В данной статье я расскажу о возможностях локализации и навигации робота с использованием алгоритма rtabmap. Кого заинтересовало, прошу под кат.
                          Читать дальше →
                        • Стек: анализируем значения параметров


                            Очень часто, глядя на стек падения, хочется увидеть, а с какими значениями параметров были сделаны вызовы. Под отладчиком в VisualStudio мы эти значения посмотреть можем. А как быть в случае, если программа запущена без отладчика и обрабатывает исключения самостоятельно? За ответами добро пожаловать под кат.
                            Читать дальше →
                            • +38
                            • 7.8k
                            • 4