Конвертация изображений из формата PPM в QOI

В этой небольшой статье, мы вам покажем как с помощью нашей библиотеки qoiformats, про которую мы еще не рассказывали, осуществить перевод картинок из уже знакомых вам PPM P6 файлов в относительно новый формат со сжатием QOI.

Читать далее

Одномерные клеточные автоматы в D

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

Читать далее

Алгоритм Брезенхэма для рисования окружности в ppmformats

В этом скромном рецепте я покажу один из важных алгоритмов в области математической графики – алгоритм Брезенхема для рисования окружности. Код, который будет приведен далее, является модификацией кода с Rosetta Code, но для ppmformats, хотя может быть легко переиспользован и для любой другой библиотеки.

Читать далее

Конвертация PNG в файлы Portable Any Map и Farbfeld

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

Читать далее

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

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

Читать далее

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

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

Читать далее

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

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

Если вы помните, результатом работы программы из Части I являлась папка со множеством файлов формата PPM P6, а в этой статье, мы покажем, как их подать на вход нейронной сети.

Читать далее

По следам неудачного примера из vectorflow. Часть I: конверсия датасетов в удобный формат

Порой я, в поисках идей, просматриваю рабочую папку на предмет неудавшихся или провалившихся идей программ, и иногда из отчаяния и безысходности я выбираю то, что перерастет в последствии в нечто захватывающее и интересное…Если говорить более конкретно, то мне попался на глаза наш неудачный эксперимент с нейросетями в библиотеке от Netflix, который закончился весьма плохо, а именно с ошибкой около 41%.

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

Читать далее

Библиотека ppmformats. Чему я научился создавая обработчики PortablePixmap форматов

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

Но, тут меня ждала неудача: dlib отказался работать на смартфоне (что привело к моему первому pull request в репозиторий dlib), а остальные библиотеки не так удобны и точно также отказываются работать в Termux на смартфоне. При этом срочно нужно организовать работу с изображениями и сделать это так, чтобы удобство было на уровне dlib, а весь остальной функционал мог бы работать с минимальным рабочим окружением и не требовал бы сторонних библиотек.

Исходя из этого, получаем техническую задачу на разработку новой и минимальной библиотеки для работы с изображениями…

Читать далее