Skip to content

Шакирова Есения. Технология TBB. Выделение ребер на изображении с использованием оператора Собеля. Вариант 27#1285

Merged
allnes merged 7 commits into
learning-process:masterfrom
Eseniya1134:shakirova_e_sobel_edge_detection_tbb
May 28, 2026

Conversation

@Eseniya1134
Copy link
Copy Markdown
Contributor

@Eseniya1134 Eseniya1134 commented May 18, 2026

Описание

  • Задача: Выделение ребер на изображении с использованием оператора Собеля
  • Вариант: 27
  • Технология: TBB
  • Описание:
    • Постановка задачи: Дано полутоновое изображение размером width * height. Требуется применить оператор Собеля для выделения ребер на изображении.
    • Входные данные: Изображение в виде контейнера using InType = ImgContainer, где ImgContainer содержит ширину, высоту и вектор пикселей в диапазоне [0, 255]. Входное изображение может быть как полутоновым (grayscale), так и цветным — цветные изображения форматов .png автоматически преобразуются в полутоновые по формуле 0.299*R + 0.587*G + 0.114*B. Также поддерживается задание изображения в виде текстовой матрицы .txt, где первая строка содержит размеры, а далее следуют значения пикселей.
    • Выходные данные: Границы: using OutType = std::vector<int>, где каждый элемент — магнитуда градиента в диапазоне [0, 255].
    • Реализация: Реализована параллельная версия Intel TBB оператора Собеля для обнаружения ребер на изображении. Для каждого внутреннего пикселя изображения вычисляется свёртка с двумя развёрнутыми ядрами Собеля размером 3×3: горизонтальным Gx и вертикальным Gy. На основе полученных значений вычисляется магнитуда градиента по быстрому целочисленному приближению (max(|Gx|, |Gy|) * 123 + min(|Gx|, |Gy|) * 51) >> 7, которая ограничивается диапазоном [0, 255] и записывается в выходной вектор. Внешний цикл по строкам изображения распараллелен с помощью tbb::parallel_for с tbb::blocked_range<int> и размером зерна 8 строк, что обеспечивает эффективную балансировку нагрузки через механизм work-stealing планировщика TBB. Внутри лямбды используются сырые указатели на строки изображения (prev, curr, next), вычисляемые один раз за строку, что улучшает локальность кэша и позволяет компилятору выполнить автовекторизацию. Граничные пиксели изображения остаются нулевыми, так как для них невозможно применить полное ядро 3×3. Поддерживается загрузка изображений форматов .png, .jpg, .bmp через библиотеку stb_image, а также текстового формата .txt.

Чек-лист

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

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented May 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.84%. Comparing base (09a996c) to head (bde0977).
⚠️ Report is 174 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1285      +/-   ##
==========================================
- Coverage   83.04%   82.84%   -0.20%     
==========================================
  Files         901      934      +33     
  Lines       53044    55738    +2694     
  Branches    22119    23164    +1045     
==========================================
+ Hits        44050    46178    +2128     
- Misses       6237     6733     +496     
- Partials     2757     2827      +70     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

…ользованием оператора Собеля. Вариант 27 (learning-process#103)

* laba is ready

* laba is ready

* laba is ready

* laba is ready

* laba is ready

* laba is ready
@Eseniya1134 Eseniya1134 force-pushed the shakirova_e_sobel_edge_detection_tbb branch from 2ea73a7 to 54cba6f Compare May 26, 2026 03:04
@allnes allnes merged commit f989fac into learning-process:master May 28, 2026
35 checks passed
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.

3 participants