Skip to content

Feat/add sequential convolution#1

Open
vlapugb wants to merge 4 commits into
mainfrom
feat/sequential_convolution
Open

Feat/add sequential convolution#1
vlapugb wants to merge 4 commits into
mainfrom
feat/sequential_convolution

Conversation

@vlapugb
Copy link
Copy Markdown
Collaborator

@vlapugb vlapugb commented Apr 30, 2026

Описание

Добавлена базовая реализация последовательной свёртки изображения. Включает восемь встроенных фильтров (blur, mean, gaussian blur, motion blur, edge detection, sharpen, emboss, median), CLI-интерфейс для применения композиции до двух фильтров, обработку границ тремя режимами (wrap, clamp, reflect) и поддержку 1-, 3- и 4-канальных изображений (Grayscale, RGB, RGBA)

Архитектура построена вокруг единой filter_t, которая описывает ядро свёртки, его параметры и метаданные. Все фильтры инициализируются через filter_init_builtin() по filter_request_t. Последовательная свёртка реализована в sequential_convolution()

Что добавлено

  • Система фильтров — абстрактный filter_t с 8 встроенными ядрами (blur 3×3, 5×5; mean 3×3, 5×5; gaussian blur 3×3, 5×5; motion blur 3×3, 5×5, 7×7; edge detection 3×3, 5×5, 7×7, 9×9 с направлениями; sharpen 3×3, 5×5; emboss 3×3, 5×5; median 3×3, 5×5)
  • Последовательная свёрткаsequential_convolution() с обработкой границ (wrap, clamp, reflect) и пропуском альфа-канала
  • CLI — парсинг аргументов: -i <input> -o <output> -f <filter> -h <height> -w <width> [-t <type>] -s, поддержка композиции двух фильтров
  • Точка входаapp.c, загрузка/сохранение через OpenCV 2.4 C API
  • Сборочная инфраструктура — CMakeLists.txt с FetchContent для OpenCV 2.4, clang-format, gitignore

Тесты

  • 6 unit-тестов (cmocka): identity kernel не меняет изображение, zero kernel обнуляет RGB и сохраняет alpha, shift-фильтры корректно обрабатывают wrap/clamp/reflect, композиция противоположных сдвигов даёт identity, паддинг ядра нулями не меняет результат, известный mean 3×3 на 3×3 изображении
  • 1 параметризованный тест (cmocka + OpenCV): сравнение sequential_convolution с cvFilter2D.

@vlapugb
Copy link
Copy Markdown
Collaborator Author

vlapugb commented Apr 30, 2026

@vkutuev @Almazis , PR готов к проверке.

@vlapugb vlapugb changed the title feat: add sequential convolution Feat/add sequential convolution Apr 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant