Skip to content

Камалягин Артём. Технология STL. Построение выпуклой оболочки для компонент бинарного изображения. Вариант 30.#1186

Closed
Lynxll wants to merge 4 commits into
learning-process:masterfrom
Lynxll:kamalagin_a_binary_image_convex_hull_stl
Closed

Conversation

@Lynxll
Copy link
Copy Markdown
Contributor

@Lynxll Lynxll commented May 16, 2026

Описание

  • Задача: Построение выпуклой оболочки для компонент бинарного изображения
  • Вариант: 30
  • Технология: STL

Реализация

Реализовано параллельное построение выпуклых оболочек для объектов бинарного изображения с использованием std::thread.
Поиск связных компонент выполняется последовательно: методом обхода в глубину (DFS) по 4-связности проходим по бинарному изображению и собираем для каждой компоненты множество принадлежащих ей пикселей.
Само построение выпуклой оболочки параллелится по компонентам: количество потоков определяется через ppc::util::GetNumThreads(), компоненты статически разбиваются на чанки (с учётом остатка), каждый std::thread обрабатывает свой диапазон. Для каждой компоненты применяется алгоритм Грехема (выбор опорной точки, сортировка по полярному углу относительно неё с использованием векторного произведения, удаление коллинеарных точек, проход стеком с проверкой левого поворота). За счёт независимости обработки компонент между потоками нет ни синхронизации, ни общих данных на запись - каждый поток пишет только в свой hulls[i].
В результате для каждой связной компоненты получается список вершин её выпуклой оболочки

Чек-лист

  • CI проходит успешно
  • Директория и название задачи корректны
  • clang-format проходит без ошибок
  • clang-tidy проходит без предупреждений
  • Функциональные тесты проходят (28/28 - SEQ + OMP + TBB + STL)
  • Тесты производительности проходят (8/8 - pipeline + task_run для SEQ, OMP, TBB, STL)
  • Работа выполнена в отдельной ветке
  • Содержимое PR достоверно

Important

Прошу влить этот PR (#1186), а не #993 / #996.
CI пройден. #993 и #996 тоже полностью прошли CI и закрыты - не для merge (код уже здесь).
Если влить их первыми могут, быть конфликты и повторный полный CI на этом PR

Что в закрытых PR:
#993 - SEQ + OMP, объединение в одну директорию (убрал лишнюю директорию kamalagin_a_binary_image_convex_hull_omp)
#996 - TBB

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.33577% with 21 lines in your changes missing coverage. Please review.
✅ Project coverage is 83.89%. Comparing base (29821f1) to head (f1d7fab).
⚠️ Report is 246 commits behind head on master.

Files with missing lines Patch % Lines
...gin_a_binary_image_convex_hull/stl/src/ops_stl.cpp 92.63% 0 Missing and 7 partials ⚠️
...gin_a_binary_image_convex_hull/tbb/src/ops_tbb.cpp 91.66% 0 Missing and 7 partials ⚠️
...gin_a_binary_image_convex_hull/seq/src/ops_seq.cpp 93.84% 0 Missing and 4 partials ⚠️
...gin_a_binary_image_convex_hull/omp/src/ops_omp.cpp 90.00% 0 Missing and 3 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1186      +/-   ##
==========================================
+ Coverage   83.69%   83.89%   +0.20%     
==========================================
  Files         669      763      +94     
  Lines       34251    40827    +6576     
  Branches    14301    17025    +2724     
==========================================
+ Hits        28665    34251    +5586     
- Misses       3807     4419     +612     
- Partials     1779     2157     +378     

☔ 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.

@Lynxll
Copy link
Copy Markdown
Contributor Author

Lynxll commented May 20, 2026

Закрываю: изменения включены в актуальный PR #1258 (ALL).
Merge не требуется.
#1258

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.

2 participants