Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 4.1 KB

File metadata and controls

52 lines (37 loc) · 4.1 KB

Описание проекта: Свёртка изображений

Данный проект — это консольное приложение на C#, которое реализует алгоритм математической свёртки для обработки изображений. Программа переводит цветное изображение в градации серого и применяет к нему матричные фильтры.

Как работает библиотека (Алгоритм)

Основная логика находится в классе ConvolutionProcessor. Алгоритм представляет собой скольжение матрицы (ядра) по каждому пикселю исходного изображения. Новое значение пикселя вычисляется как сумма произведений соседних пикселей на соответствующие веса из матрицы ядра.

Ключевые особенности реализации:

  1. Любые размеры ядер: Алгоритм автоматически высчитывает отступы (offset), поэтому поддерживает ядра любых нечётных размеров (3x3, 5x5, 7x7 и т.д.).
  2. Готовые фильтры: В статическом классе Kernels заранее подготовлены матрицы для:
    • Размытия (Box Blur)
    • Увеличения резкости (Sharpen)
    • Выделения контуров (Laplacian)
  3. Обработка краёв (Edge Strategies): При нахождении ядра на границе изображения применяются две стратегии на выбор:
    • Extend: дублирование крайнего пикселя (значения за границей приравниваются к ближайшему краю).
    • ZeroPadding: выход за границы считается абсолютно чёрным цветом (значение 0).

Последовательная и Параллельная версии

В проекте реализовано два метода вычислений:

  • Convolve — классический последовательный проход (4 вложенных цикла).
  • ConvolveParallel — версия с использованием Parallel.For.

Примечание к параллельной версии: Распараллелен только самый внешний цикл (по строкам изображения y). Внутренние циклы по ширине и по самому ядру оставлены обычными for.

Зависимости и пакеты

Используемые NuGet-пакеты:

  • SixLabors.ImageSharp — для работы с графикой (загрузка, конвертация в массив и сохранение).
  • xUnit и coverlet.msbuild — для модульного тестирования кода.

Инструкция по сборке и запуску

  1. Склонируйте проект и перейдите в папку с кодом:
git clone https://github.com/Vit0GG/ImageConvolution.git
cd ImageConvolution/ImageConvolution
Восстановите все необходимые NuGet-пакеты (скачаются автоматически):

dotnet restore
Запустите программу:

dotnet run

Использование: При запуске программа попросит указать путь к исходному файлу (можно просто перетащить картинку в окно терминала). Программа замерит время работы последовательной и параллельной свёртки, выведет результат в консоль и сохранит обработанное изображение в ту же папку с суффиксом _filtered.