• Освобождаем свободное место на жестком диске: WIMBoot

      Сегодня стационарные компьютеры начинают медленно уходить на задний план. Их место прочно занимают ноутбуки, а затем идут и планшетные компьютеры. Сочетание мобильности, высокой производительности и высокой скорости получения информации – все это является несомненным плюсом планшетов. Однако, и своя ложка дегтя у планшетов есть: это малый размер жестких дисков. Если диск 16, 32 и даже 64 ГБ, вовсе не хочется разбрасываться ценным пространством на установочные файлы. С выходом Windows 8.1 Update появилось решение этой проблемы – WIMBoot – новый способ установки ОС, обеспечивающий большее свободное пространство для пользователя.


      Читать дальше →
    • Эксперименты с бит-реверсными паттернами в двумерных аддитивных клеточных автоматах

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

        В статье я вкратце расскажу про аддитивные клеточные автоматы. А также приведу последовательность моих наблюдений и задач, которые я ставил. Каждый этап будет сопровождаться изображениями состояния клеточного автомата. Кроме того, для лучшей наглядности, я написал веб-приложение, которое добавит интерактивности при чтении статьи. Приложение основано на React и должно работать в современных браузерах. Также я буду сопровождать некоторые действия ссылками с кусками кода на Python.

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

        Надеюсь, что статья развлечет вас, хотя я буду писать четко и по делу.
        Осторожно! Чтение может привести к квантовому реверсу сознания...
      • Видеозапись с помощью Directshow.NET

        • Tutorial
        Добрый день, уважаемые хабрапользователи. Некоторое время назад мне пришлось работать над несложным windows-приложением, в котором требовалось производить аудио- и видеозапись с различных устройств. В частности, захват аудио нужно было производить с шести каналов карты MAudio, а захват hd видео — с двух карт захвата AverMedia, сигнал на которые приходил с видеокамер по компонентному входу. Также нужно было делать скриншоты с документ-камеры, подключенной по USB-интерфейсу. Приложение было решено писать на C#, а видеозапись производить при помощи библиотеки DirectShow.NET.

        По мотивам решения данной задачи возникла идея написать статью и поделиться опытом относительно видеозахвата. Может быть, кому-нибудь данная информация будет полезна. Кому интересно — прошу под кат.

        Читать дальше →
        • +24
        • 23,7k
        • 6
      • Создание видео редактора — полезные рецепты avconv (ffmpeg)

        • Tutorial


        Недавно потребовалось написать небольшой видеоредактор с веб-интерфейсом.
        До этого изредка доводилось пользоваться командами типа
        ffmpeg -i file.avi file.mp3
        

        в основном для конвертации из одного формата в другой. Все всегда было более менее гладко и сложно было представить, сколько на самом деле существует всяких нюансов для работы с видео и аудио.
        Но начнем с начала. С некоторых пор моя ubuntu начала выдавать:
        *** THIS PROGRAM IS DEPRECATED ***
        This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
        

        В целом, пока это использовалось по-мелочам, это было не особо важно, но закладывать уже устаревающую фичу в проект как-то «не оно». Пришлось гуглить что к чему и выяснилось, что проект ffmpeg некоторое время назад раскололся и часть разработчиков занялась созданием библиотеки libav, которая и включена в настоящее время в ubuntu по-умолчанию. Разумеется, совместимость передовых фич была принесена в жертву первой. Заодно и с переименованием проекта исполняемый файл ffmpeg был переименован в avconv, о чём и было вышеупомянутое предупреждение.

        Под катом небольшая выжимка основных фич, которые пригодились.
        Читать дальше →
      • Signed Distance Field или как сделать из растра вектор

          Речь сегодня пойдёт о генерации изображений с картой расстояний (Signed Distance Field). Данный вид изображений примечателен тем, что фактически позволяет получить «векторную» графику на видеоускорителе, причём даром. Одной из первых данный метод растеризации предложила компания Valve в игре Team Fortress 2 для масштабируемых декалей в 2007 году, но до сих пор он не пользуется особой популярностью, хотя позволяет рендерить прекрасного качества шрифты, используя текстуру всего 256х256 точек. Данный метод прекрасно подходит для современных экранов высокой чёткости и позволяет серьёзно сэкономить на текстурах в играх, он не требователен к железу и прекрасно работает на смартфонах.



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

          Как же создавать такие изображения? Очень просто, ImageMagick позволяет сделать это одной командой:

          convert in.png -filter Jinc -resize 400% -threshold 30% \( +clone -negate -morphology Distance Euclidean -level 50%,-50% \) -morphology Distance Euclidean -compose Plus -composite -level 45%,55% -resize 25% out.png
          

          На этом можно было бы поставить точку, но так полноценного топика не получится. Что ж, под катом — описание быстрого алгоритма расчёта SDF, пример на C++ и немного шейдеров для OpenGL.
          Читать дальше →
        • Один крутой Gist: whiteboardCleaner

            Доброго времени суток уважаемые хабравчане. На просторах интернета мне повстречался один миниатюрный и очень интересный Bash скрипт. С помощью ImageMagick он потрясающим образом обрабатывает фотографии белой учебной доски, очищая «содержимое» от всего лишнего:

            #!/bin/bash
            convert $1 -morphology Convolve DoG:15,100,0 -negate -normalize -blur 0x1 -channel RBG -level 60%,91%,0.1 $2
            


            До:


            image

            После:


            image
            Читать дальше →
          • Основы теории цвета. Система CIE XYZ

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

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

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

            Если хоть один на вопрос у Вас не нашёлся ответ, рекомендую заглянуть под кат, где Вы сможете найти ответы на все эти вопросы.
            Читать дальше →
          • Технологии в ролевых играх. Часть 1. Технология и магия

              Технологии в ролевых играх. Часть 2. Технология и техноген
              Технологии в ролевых играх. Часть 3. Технология в антураже и мастеринге

              Предисловие


              Людям свойственно играть. С компьютерными ролевыми играми знакомы все читающие эти строки. Ролевые методики и вставки используются повсеместно — от бизнес-тренингов до всевозможных мероприятий. О ролевых играх живого действия многие как минимум слышали.

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

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

              В последнее время всё чаще можно наблюдать на ролевых играх разной степени масштабности применение современных технологий для компенсации этих ограничений, ведь как сказал 40 лет назад английский писатель Артур Кларк: «Любая достаточно развитая технология неотличима от магии».

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

              Почему Хабр? Во-первых, на Хабре довольно много представителей той социальной группы что называет себя «ролевиками». Для кого-то описанные вещи будут известны, кто-то узнает для себя что-то новое и интересное. Кто-то, быть может, откроет для себя мир ролевых игр живого действия. Во-вторых, Хабр — ресурс в первую очередь технический. А технологии — магия нашего мира.

              Погрузиться в волшебный мир технологий
            • Захват видео с камеры и передача его по сети

              Предисловие


              Не так давно, возникла необходимость захвата видео с web камеры и передавать его по сети используя .Net.
              Так как с подобной задачей я столкнулся впервые, то первым делом начал искать информацию по этому вопросу.
              Как выяснилось, что в чистом .Net нет поддержки работы с web камерами. Перебрав несколько различных библиотек, свой выбор остановил на Aforge.net.

              Aforge.net — это фреймворк для решения целого ряда задач, из которого нам понадобится библиотеки AForge.Video.

              Захват изображения


              Для захвата видео с устройства видео ввода существует класс AForge.Video.DirectShow.VideoCaptureDevice. Ему необходимо задать моникер устройства с которого будет происходить захват. Так же необходимо задать обработчик события NewFrame. Это событие возникает каждый раз, когда с устройства будет получен новый кадр, который и передается в обработчик в виде объекта Bitmap, где его уже можно обработать:
              private void VideoSourceNewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs)
              {
                  var img = (Image) eventArgs.Frame;
                  using (var ms=new MemoryStream())
                  {
                      img.Save(ms,ImageFormat.Jpeg);
                     //Сохраняем изображение в массив байт, для последующего формирования mjpeg
                      _bufImage = ms.ToArray();
                  }
              }
              

              Читать дальше →
              • +14
              • 32,6k
              • 8
            • Отключение ctrl-alt-delete, alt-tab, Пуск и прочих сочетаний

              Это вольный перевод статьи с сайта tamas.io о программном отключении и включении горячих клавиш Windows средствами C#. Совсем недавно мне самому понадобились подобные функции в моей программе и я с удивлением обнаружил, что в рунете ничего об этом нет, да и вообще в сети об этом сказано совсем немного. Так что, если интересно или также нужно, как было мне — добро пожаловать!
              Читать дальше →
              • +2
              • 39,7k
              • 7