Skip to content

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

Closed
Lynxll wants to merge 5 commits into
learning-process:masterfrom
Lynxll:kamalagin_a_binary_image_convex_hull_all
Closed

Conversation

@Lynxll
Copy link
Copy Markdown
Contributor

@Lynxll Lynxll commented May 17, 2026

Описание

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

Реализация

Реализовано построение выпуклых оболочек для объектов бинарного изображения в варианте ALL.
Поиск связных компонент выполняется последовательно: методом обхода в глубину (DFS) по 4-связности проходим по бинарному изображению и собираем для каждой компоненты множество принадлежащих ей пикселей.
Список компонент делится на три диапазона по индексам (count/3, 2*count/3); для каждого диапазона строятся оболочки параллельно:

  • первая треть — OpenMP (#pragma omp parallel for, schedule(dynamic));
  • вторая треть — std::thread, число потоков через ppc::util::GetNumThreads(), статическое разбиение на чанки;
  • третья треть — Intel TBB (tbb::parallel_for, tbb::blocked_range<size_t>).
    Для каждой компоненты применяется алгоритм Грэхема (выбор опорной точки, сортировка по полярному углу с использованием векторного произведения, удаление коллинеарных точек, проход стеком с проверкой левого поворота). Компоненты обрабатываются независимо, синхронизация не требуется — результат пишется в hulls[i].

Чек-лист

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

Important

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

Что в закрытых и этом PR:
#993 - SEQ + OMP, объединение в одну директорию (убрал лишнюю директорию kamalagin_a_binary_image_convex_hull_omp)
#996 - TBB
#1186 - STL
#1258 - Старая реализация ALL (текущий PR)

@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.22798% with 30 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.03%. Comparing base (29821f1) to head (df52dc2).
⚠️ Report is 276 commits behind head on master.

Files with missing lines Patch % Lines
...gin_a_binary_image_convex_hull/all/src/ops_all.cpp 91.96% 1 Missing and 8 partials ⚠️
...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    #1258      +/-   ##
==========================================
+ Coverage   83.69%   84.03%   +0.34%     
==========================================
  Files         669      788     +119     
  Lines       34251    42765    +8514     
  Branches    14301    17845    +3544     
==========================================
+ Hits        28665    35939    +7274     
- Misses       3807     4567     +760     
- Partials     1779     2259     +480     

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

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