Изучаем формат изображений Farbfeld

В этой статье мы расскажем про самый простой бинарный формат изображений, который называется Farbfeld. Такой формат не очень известен широкому кругу пользователей, однако, многим наверняка известен проект в котором разработали Farbfeld – это проект suckless-tools. Этот проект славится разработкой интересных и компактных инструментов и старается создавать программы, которые следуют традициям UNIX. Команда suckless-tools пыталась разработать максимально простой формат для хранения изображений, который было бы легко обрабатывать в стиле UNIX (т.е. применять к нему стандартные утилиты UNIX в стиле поточной обработки) и который мог бы стать удобным промежуточным форматом. На наш взгляд разработчики достигли своих целей, и мы покажем как можно с минимальным усилиями реализовать компактную библиотеку для работы с Farbfeld в стиле ppmformats. Помимо этого, покажем как начать знакомство с этим форматом и подготовить минимальный набор инструментов для работы с изображениями Farbfeld.

Подробнее

Небольшая подборка полезных фрагментов кода на D

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

Подробнее

Арифметика нового поколения: реализация числового формата Posit. Часть II

В первой части статьи мы разобрали что такое Posit, зачем он нужен и определились с его структурой. В этой части мы, как и обещали, расскажем о нашей реализации Posit на D.

Подробнее

Арифметика нового поколения: реализация числового формата Posit. Часть I

Posit — это новый формат представления чисел с плавающей запятой, который обладает рядом преимуществ по сравнению с уже существующими float и double. В этой статье мы подробно разобрали этот формат.

Подробнее

Интервалы в D

Очень часто в разных задачах встречается один и тот же однотипный шаблон: в зависимости от того, в какой из нескольких, известных заранее, интервалов попало значение, следует предпринять разное действие. Обычно, таким действием является вычисление некоего числа или в общем случае, некой величины (необязательно числовой). Когда интервалов достаточно много, то начинается уже рутина с операторами if […]

Подробнее

Некоторые вспомогательные функции для работы с битами

В этом скромном рецепте мы предлагаем вам некоторые функции, которые потенциально могут облегчить вам программирование, если вы вдруг будете работать со значениями как с наборами битов. К сожалению, в рецепте практически нет ничего оригинального, и большая часть реализации взята из одной очень интересной библиотеки для Python 3, но это не значит, что в изложенном нами […]

Подробнее

Извлекаем данные из первого незаконного простого числа

Наш мир полон странностей: иногда — это странности природы, иногда — странности человеческой сущности, а порой странности ожидают нас там, где мы больше всего ожидаем увидеть практичность и порядок. Эти два качества обычно присущи двум вещам: математике, которая описывает мир чисел и иных объектов, и юриспруденции, которая описывает и вводит правила и нормы, управляющие нашим […]

Подробнее

Эквализация гистограмм

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

Подробнее

По следам неудачного примера из vectorflow. Часть II. Обучаем нейросеть на 60 000 PPM-файлах

В предыдущей части, мы показали как можно использовать D в качестве скриптового языка, который помог перевести множество изображений из базы данных MNIST в более удобный для разбора формат PPM P6. Несмотря на то, что использовалась одна внешняя библиотека (а именно, разработанная нами ppmformats), код по большей части задействует ресурсы стандартной библиотеки языка и остается простым. […]

Подробнее