Клименко Владислав. Технология ALL + отчёт. Повышение контраста полутонового изображения посредством линейной растяжки гистограммы. Вариант 28#564
Open
limdizz wants to merge 3 commits intolearning-process:masterfrom
Conversation
…-threads into klimenko_v_lsh_contrast_incr_all
Codecov Report❌ Patch coverage is
❌ Your patch status has failed because the patch coverage (87.50%) is below the target coverage (95.00%). You can increase the patch coverage or adjust the target coverage. Additional details and impacted files@@ Coverage Diff @@
## master #564 +/- ##
=======================================
Coverage 82.27% 82.28%
=======================================
Files 497 498 +1
Lines 21191 21287 +96
Branches 8691 8739 +48
=======================================
+ Hits 17434 17515 +81
- Misses 2614 2621 +7
- Partials 1143 1151 +8 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Общее описание
Алгоритм реализует двухуровневый параллелизм для повышения контрастности полутонового изображения методом линейной растяжки гистограммы. Комбинирует MPI для межпроцессного взаимодействия (распределение данных между узлами) и STL threads для внутрипроцессного параллелизма (многоядерная обработка на каждом узле).
Подробное описание
Проверяет, инициализирован ли MPI.
На процессе 0 проверяет, что входные данные не пустые.
Остальные процессы всегда возвращают true.
Выделяет память под выходные данные на процессе 0.
Размер выходного буфера соответствует входному.
Шаг 1: Инициализация MPI и синхронизация.
Получение ранга текущего процесса.
Получение общего количества MPI процессов.
Шаг 2: Распределение данных между MPI процессами
Процесс 0 рассылает размер данных всем процессам.
Вычисляется размер блока для каждого процесса (равномерное распределение с учётом остатка).
Данные распределяются с помощью MPI_Scatterv.
Шаг 3: Локальный поиск min/max (STL потоки).
Функция FindMinMaxSTL:
Разбивает локальный блок данных на подблоки (по количеству STL потоков).
Каждый поток находит свой локальный min/max.
Результаты объединяются через std::min_element / std::max_element.
Шаг 4: Глобальная редукция.
Находит глобальный минимум среди всех MPI процессов.
Находит глобальный максимум среди всех MPI процессов.
Шаг 5: Преобразование контрастности (STL потоки).
Формула преобразования:
Параллельная обработка каждого пикселя.
Используется формула линейной растяжки гистограммы.
Шаг 6: Сбор результатов.
Все процессы отправляют свои обработанные блоки процессу 0
Процесс 0 собирает и объединяет результаты
Проверяет, что размер выходных данных соответствует размеру входных.
Особенности реализации
Работает как на одном узле, так и на кластере.
Независимая настройка MPI и STL параллелизма.
Минимизация межпроцессного взаимодействия.
Корректная обработка пустых данных и граничных случаев.
Реализация содержит ALL-версию алгоритма повышения контраста полутонового изображения посредством линейной растяжки гистограммы.
Чек-лист
klimenko_v_lsh_contrast_incrclang-formatлокально в моем форке (нет ошибок форматирования)clang-tidyлокально в моем форке (нет предупреждений/ошибок)(
klimenko_v_lsh_contrast_incr), а не вmasterдостоверными