Дискретное вейвлет-преобразование в dlib

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

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

Поэтому, я хотел бы рассказать сегодня о дискретном вейвлет-преобразовании, а точнее, об одной из самых известных его версий — дискретном преобразовании Хаара.

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

Подробнее

Добавляем итерируемые системы функций в dlib

Сегодня я расскажу о том, как я осуществил перенос наработок из проекта нашей библиотеки для обработки изображений Raster and Image Processor (RIP) в библиотеку «швейцарский нож для D» dlib. В статье я немного расскажу о том, как при минимуме усилий и использованной инфраструктуре проекта rip, мне удалось подарить вторую жизнь старой идее реализации Итерируемой Системы Функций (ИФС) и перенести ее со старой dgui (об этом я уже как-то писал) в новую среду.

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

Подробнее

QtE5EntryPoint

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

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

Подробнее

Проверка любого типа на принадлежность к числовым

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

То есть решение должно быть универсальным… Читать далее →

Подробнее

Математическая графика в dlib

Графическая библиотека dlib – это замечательный и интересный инструмент как для работы, так и для проведения разного рода математических экспериментов. Однако, несмотря на свое богатство, dlib достаточно скромная и минималистическая библиотека, и очень часто встроенных примитивов не хватает под некоторые задачи отрисовки, а иногда бывает и так, что хочется иметь простой и удобный интерфейс для уже привычных, ставших рутинными, действий. Читать далее →

Подробнее

Опыт применения D в химической лаборатории

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

Подробнее

Поиск уникальных элементов в массиве

Довольно часто встречается задача поиска уникальных элементов в массивах или каких-то иных последовательностях данных со схожим интерфейсом доступа и казалось бы тут не должно быть проблем, особенно, если учесть тот факт, что в Phobos в модуле std.algorithm есть такая замечательная вещь, как uniq, но… Читать далее →

Подробнее

Превращение набора данных в строку

Программисты на Python знают, что у строк в этом замечательном языке программирования есть интересный метод join, который, если мне не изменяет память, получая на вход список данных и разделитель, склеивает эти данные, объединяя их через переданный разделитель. Однако, поиски по стандартной библиотеке D не позволили найти аналог для такого метода (хотя возможно, я плохо искал) — и пришлось выкручиваться самому, ведь мне очень нужна функция, похожая по поведению на метод join. Читать далее →

Подробнее

Удобное создание свойств в классах и структурах

В этой статье покажу Вам небольшой «трюк» для вставки свойств в классы и структуры.

Работает это примерно так: формируется строка (из переданных аргументов — тип для значения свойства и имя свойства, а также из собственно, объявления приватной переменной и объявления самого свойства) с описанием методов установки/считывания свойства и помещается в константный массив символов — и все, шаблон готов к использованию. Читать далее →

Подробнее