-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Громов Алексей. Задача 3. Вариант 32. Построение выпуклой оболочки для компонент бинарного изображения. #788
Громов Алексей. Задача 3. Вариант 32. Построение выпуклой оболочки для компонент бинарного изображения. #788
Conversation
#include <cstring> | ||
#include <iostream> | ||
#include <random> | ||
#include <unordered_map> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it used?
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #788 +/- ##
==========================================
- Coverage 94.39% 93.68% -0.72%
==========================================
Files 677 1227 +550
Lines 21237 44175 +22938
Branches 9451 20119 +10668
==========================================
+ Hits 20047 41386 +21339
- Misses 391 948 +557
- Partials 799 1841 +1042 ☔ View full report in Codecov by Sentry. |
} | ||
} // namespace gromov_a_convex_hull_mpi | ||
|
||
TEST(gromov_a_convex_hull_mpi, Test_With_Zeroes) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add more func_tests
…лочки для компонент бинарного изображения." (#842) Reverts #788 <img width="989" alt="image" src="https://github.com/user-attachments/assets/3e8494fe-6ea6-4646-b9df-35a6775679be" /> https://github.com/learning-process/ppc-2024-autumn/actions/runs/12535200392/job/34956831745
Описание последовательной задачи
На вход подается изображение в виде матрицы, где каждая ячейка может быть пикселем).
Цель – выделить соединенные компоненты изображения и для каждой из них вычислить выпуклую оболочку.
Этапы выполнения:
Для каждого пикселя выполняется проход сверху вниз и слева направо для поиска соединенных областей.
Используются два прохода: первый присваивает уникальные метки, второй уточняет их, чтобы объединить связные компоненты.
Для каждой выделенной компоненты применяется алгоритм Джарвиса для вычисления её выпуклой оболочки.
Полученные выпуклые оболочки интегрируются обратно в результирующую матрицу.
Результат:
На выходе создается новое изображение, в котором выделены только выпуклые оболочки соединенных компонентов.
Описание параллельной задачи
Распределение данных:
Исходное изображение разбивается на части, которые распределяются между процессами.
Процесс с рангом 0 отвечает за управление распределением данных и координацию вычислений.
Этапы выполнения:
Каждый процесс выполняет маркировку своей части данных независимо.
Синхронизация меток между процессами происходит через обмен данными на границах распределенных областей.
Процессы вычисляют выпуклые оболочки для своих локальных компонентов.
Полученные результаты отправляются процессу с рангом 0, который объединяет выпуклые оболочки для всех данных.
Процесс с рангом 0 формирует финальное изображение с выпуклыми оболочками.
Результат:
На выходе создается новое изображение, где выделены выпуклые оболочки, аналогично последовательной версии, но с использованием параллельных вычислений для ускорения обработки.