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

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

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

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

Читать далее →

Подробнее

Эксперименты с квадратными паттернами в dlib

Почитывая раздел Хабрахабра под названием «Ненормальное программирование» я наткнулся на интересную статью про узор, который как я понял, порождается определенными закономерностями во фрактале Герасимова.

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

Если интересно, что получилось, то добро пожаловать в эту статью.

Читать далее →

Подробнее

Соляризация изображения в dlib

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

Если вам любопытно, что получилось, то добро пожаловать в эту статью.

Читать далее →

Подробнее

Экспериментируем с битовыми плоскостями. Часть II

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

Читать далее →

Подробнее

Экспериментируем с битовыми плоскостями. Часть I

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

Подробнее

Бинаризация методом Оцу в dlib

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

Читать далее →

Подробнее

Создаем «термокарту» изображения

Как-то я выложил рецепт по использованию палитр, которые были вытащены из Matlab, но не объяснил как этим пользоваться, хотя выложенный пакет цветовых палитр сам по себе довольно интересная штука.

Сегодня я покажу любопытный метод, как перекрасить некоторое заданное изображение, используя известный, но ограниченный набор цветов на примере создания простой «термокарты» из картинки.

Читать далее →

Подробнее

PPM: простой формат файла изображения

Итак, очередной простой нашего блога — вся наша немногочисленная коллаборация мучалась с отчетами по научно-исследовательским работам в одной из организаций города N, но не стоит думать, что мы бездействовали и не писали код.

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

Но, как это часто бывает, задача вновь возникла на горизонте…

Читать далее →

Подробнее

Убираем «лишние» цвета

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

Это решительно меня не устраивало, да и вообще, почему описания эффекта для программистов отсутствуют в рунете ?

Сейчас я это исправлю!

Читать далее →

Подробнее

Сверточная «магия» или как я сам сделал цифровой фильтр

Шел один из зимних дней, а я сидел на работе и размышлял над математической задачей, которая мне волей-неволей досталась… Двойная сумма, двумерный массив, казалось бы, в чем тут может быть проблема?

Но как оказалось, что такая тривиальная процедура, как свертка последовательностей, даже при наличии полного комплекта математических пособий и книг по языку программирования D, мне просто не по зубам.

Даже в одномерном варианте… Читать далее →

Подробнее