Сверточные фильтры в dlib с выводом в QtE

Очередной замечательный материал по dlib от LightHouse Software – продолжение серии статей по обработке изображений в dlib.

От автора:
“В этой статье мы попытаемся подружить QtE5 и dlib, сделав несложный и удобный интерфейс для накладывания фильтров на изображения, оставив при этом возможность для пользователя добавлять свои фильтры”.

http://lhs-blog.info/programming/dlang/digital-filters

Анимация в dlib

Меня внезапно осенило, как можно добавить в dlib.image поддержку анимации без существенного рефакторинга библиотеки. Классы анимированных изображений (SuperAnimatedImage) могут быть простым расширением базового класса SuperImage с возможностью хранить несколько кадров и переключаться между ними. Такие изображения полностью совместимы с любым кодом, работающим с SuperImage – чтению и записи через привычный интерфейс SuperImage подлежит срез данных, относящийся к текущему кадру.
Также естественным образом вводится класс-фабрика для создания анимированных изображений, и в результате стало возможным расширить декодер PNG до поддержки APNG:


AnimatedImageFactory imgFac = new AnimatedImageFactory;
auto res = loadPNG(openForInput("animation.apng"), imgFac);
if (res[0])
{
SuperAnimatedImage animImg = cast(SuperAnimatedImage)res[0];
}

dlib 0.9.0 beta

Вышла бета-версия коллекции библиотек dlib 0.9.0. Из основных нововведений стоит отметить новый модуль dlib.math.tensor – реализацию тензоров с поддержкой как статического, так и динамического выделения памяти (еще один шаг, приближающий dlib к NumPy и Matlab). Также значительно улучшен пакет dlib.image: появился экспорт в BMP и TGA, двумерный foreach для изображений, диапазоны для окон и произвольных прямоугольных регионов. Новый пакет dlib.network, как планируется, будет содержать независимую от Phobos поддержку сети и веб-функциональность (пока в нем есть только парсер URL).

А еще Atrium был успешно портирован под FreeBSD.

dlib.image и OpenCL

На сайте LightHouse Software вышла моя гостевая статья, посвященная обработке изображений на GPU средствами OpenCL и dlib. Рассматривается биндинг DerelictCL и реализация ядра для простейшего оконного фильтра (box blur), через который пропускается изображение dlib.image.