Skip to content
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

Merged
merged 9 commits into from
Dec 29, 2024

Conversation

DSFKnight
Copy link
Contributor

Описание последовательной задачи
На вход подается изображение в виде матрицы, где каждая ячейка может быть пикселем).
Цель – выделить соединенные компоненты изображения и для каждой из них вычислить выпуклую оболочку.

Этапы выполнения:

  • Маркировка компонентов:
    Для каждого пикселя выполняется проход сверху вниз и слева направо для поиска соединенных областей.
    Используются два прохода: первый присваивает уникальные метки, второй уточняет их, чтобы объединить связные компоненты.
  • Построение выпуклой оболочки:
    Для каждой выделенной компоненты применяется алгоритм Джарвиса для вычисления её выпуклой оболочки.
  • Реконструкция изображения:
    Полученные выпуклые оболочки интегрируются обратно в результирующую матрицу.

Результат:

На выходе создается новое изображение, в котором выделены только выпуклые оболочки соединенных компонентов.

Описание параллельной задачи
Распределение данных:

Исходное изображение разбивается на части, которые распределяются между процессами.
Процесс с рангом 0 отвечает за управление распределением данных и координацию вычислений.
Этапы выполнения:

  • Маркировка компонентов:
    Каждый процесс выполняет маркировку своей части данных независимо.
    Синхронизация меток между процессами происходит через обмен данными на границах распределенных областей.
  • Построение выпуклой оболочки:
    Процессы вычисляют выпуклые оболочки для своих локальных компонентов.
    Полученные результаты отправляются процессу с рангом 0, который объединяет выпуклые оболочки для всех данных.
  • Реконструкция изображения:
    Процесс с рангом 0 формирует финальное изображение с выпуклыми оболочками.

Результат:

На выходе создается новое изображение, где выделены выпуклые оболочки, аналогично последовательной версии, но с использованием параллельных вычислений для ускорения обработки.

#include <cstring>
#include <iostream>
#include <random>
#include <unordered_map>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it used?

@codecov-commenter
Copy link

codecov-commenter commented Dec 26, 2024

Codecov Report

Attention: Patch coverage is 90.55794% with 22 lines in your changes missing coverage. Please review.

Project coverage is 93.68%. Comparing base (41ec66d) to head (a3b79b5).
Report is 322 commits behind head on master.

Files with missing lines Patch % Lines
tasks/mpi/gromov_a_convex_hull/src/ops_mpi.cpp 91.04% 1 Missing and 11 partials ⚠️
tasks/seq/gromov_a_convex_hull/src/ops_seq.cpp 89.69% 2 Missing and 8 partials ⚠️
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.
📢 Have feedback on the report? Share it here.

}
} // namespace gromov_a_convex_hull_mpi

TEST(gromov_a_convex_hull_mpi, Test_With_Zeroes) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add more func_tests

@DSFKnight DSFKnight requested a review from allnes December 29, 2024 07:23
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.

5 participants