Skip to content

Вдовин Артемий. Технология SEQ. Линейная фильтрация изображений (блочное разбиение). Ядро Гаусса 3x3. Вариант 26#57

Open
VdovinKNT wants to merge 2 commits intolearning-process:masterfrom
VdovinKNT:vdovin_a_gauss_block_seq

Conversation

@VdovinKNT
Copy link

@VdovinKNT VdovinKNT commented Feb 24, 2026

Описание

  • Задача: Линейная фильтрация изображений (блочное разбиение).
  • Вариант: 26
  • Технология: SEQ

Описание алгоритма

Алгоритм представляет собой последовательную блочную гауссову фильтрацию (Gaussian Blur) для RGB-изображения с использованием свёртки ядром 3×3. Цель – сгладить изображение, уменьшая шум и резкие перепады яркости, за счёт усреднения значений пикселей с весами, заданными гауссовым ядром.

Этапы алгоритма

  1. Валидация входных данных
    • Проверяется корректность размера изображения: входное значение (размер стороны) должно быть не меньше 3, так как фильтр использует окрестность 3×3.
  2. Предобработка (инициализация)
    • Задаются размеры изображения: width = height = in.
    • Формируются буферы входного и выходного изображения в формате RGB (3 канала на пиксель).
    • Входное изображение инициализируется тестовыми значениями (заполнение одинаковым значением), выходной буфер – нулями.
  3. Основной этап (Run) – блочная обработка
    • Изображение разбивается на прямоугольные блоки (примерно на 4 части по высоте и ширине), после чего блоки обрабатываются последовательно.
    • Для каждого пикселя внутри блока выполняется свёртка по окрестности 3×3.
  4. Свёртка для каждого пикселя
    • Для каждого из 3 каналов (R, G, B) считается взвешенная сумма значений соседних пикселей с ядром:

      [

      \begin{bmatrix}
      1 & 2 & 1 \\
      2 & 4 & 2 \\
      1 & 2 & 1
      \end{bmatrix}
      

      ]

      затем результат нормализуется делением на сумму весов (16).

    • Граничные пиксели обрабатываются корректно за счёт "прижатия" индексов к допустимому диапазону (clamp), то есть используются ближайшие допустимые координаты.

  5. Постобработка
    • После фильтрации вычисляется агрегированный результат: считается среднее значение всех байтов выходного изображения (по всем каналам и пикселям), и это значение записывается как итоговый output задачи.

Чеклист

  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию с именем vdovin_a_gauss_block_seq
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке, названной точно так же, как директория моей задачи (vdovin_a_gauss_block_seq), а не в master
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и достоверными

@VdovinKNT VdovinKNT changed the title Вдовин Артемий. Линейная фильтрация изображений (блочное разбиение). Ядро Гаусса 3x3. Вариант 26 Вдовин Артемий. Технология SEQ. Линейная фильтрация изображений (блочное разбиение). Ядро Гаусса 3x3. Вариант 26 Feb 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant