Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

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

Данный проект — это консольное приложение на 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors