Skip to content

Пылаева Светлана. Технология TBB. Повышение контраста полутонового изображения посредством линейной растяжки гистограммы. Вариант 28#678

Open
Svetlana-plv wants to merge 3 commits intolearning-process:masterfrom
Svetlana-plv:pylaeva_s_inc_contrast_img_by_lsh_tbb

Conversation

@Svetlana-plv
Copy link
Copy Markdown
Contributor

@Svetlana-plv Svetlana-plv commented Apr 17, 2026

Описание

  • Задача: Повышение контраста полутонового изображения посредством линейной растяжки гистограммы.
  • Вариант: 28
  • Технология: TBB
  • Описание реализации:
    Реализован алгоритм повышения контрастности изображения методом линейного растяжения гистограммы.
    на весь доступный диапазон [0, 255].
    Для каждого пикселя выполняется преобразование:

$$output[i] = round\left(\frac{input[i] - min\underline{\hspace{0.2cm}}pixel}{max\underline{\hspace{0.2cm}}pixel - min\underline{\hspace{0.2cm}}pixel} \times 255\right)$$

где:

  • $min\underline{\hspace{0.2cm}}pixel$ и $max\underline{\hspace{0.2cm}}pixel$ — минимальное и максимальное значения яркости во входном изображении
  • $round$ — округление до ближайшего целого

Поиск минимума и максимума:
Для нахождения минимального и максимального значений используется параллельная редукция tbb::parallel_reduce. Диапазон обрабатывается блоками, каждый поток вычисляет локальные минимум и максимум, которые затем объединяются с помощью операции объединения (join). Инициализация выполняется первым элементом массива input[0], обработка начинается с индекса 1.

Обработка вырожденного случая:
Если min_pixel == max_pixel (изображение с постоянной яркостью), выполняется параллельное копирование входных данных в выходной массив с использованием tbb::parallel_for и std::copy. Для копирования применяется tbb::simple_partitioner().

Основное преобразование:
Для нормализации изображения используется tbb::parallel_for с разбиением диапазона на блоки. Для каждого пикселя вычисляется значение по формуле с использованием арифметики с плавающей точкой и округлением std::round. Применен статический разделитель tbb::static_partitioner() для минимизации накладных расходов на планирование задач.

Тип входных данных: std::vector<uint8_t>
Тип выходных данных: std::vector<uint8_t>
Формат: одноканальное изображение (grayscale), где каждый элемент вектора соответствует яркости пикселя в диапазоне от 0 до 255


Чек-лист

  • Статус CI: Все CI-задачи (сборка, тесты, генерация отчёта) успешно проходят на моей ветке в моем форке
  • Директория и именование задачи: Я создал директорию с именем <фамилия>_<первая_буква_имени>_<короткое_название_задачи>
  • Полное описание задачи: Я предоставил полное описание задачи в теле pull request
  • clang-format: Мои изменения успешно проходят clang-format локально в моем форке (нет ошибок форматирования)
  • clang-tidy: Мои изменения успешно проходят clang-tidy локально в моем форке (нет предупреждений/ошибок)
  • Функциональные тесты: Все функциональные тесты успешно проходят локально на моей машине
  • Тесты производительности: Все тесты производительности успешно проходят локально на моей машине
  • Ветка: Я работаю в ветке, названной точно так же, как директория моей задачи
    (например, nesterov_a_vector_sum), а не в master
  • Правдивое содержание: Я подтверждаю, что все сведения, указанные в этом pull request, являются точными и
    достоверными

@Svetlana-plv Svetlana-plv requested a review from allnes as a code owner April 17, 2026 15:04
@Svetlana-plv Svetlana-plv changed the title Pylaeva s inc contrast img by lsh tbb Пылаева Светлана. Технология TBB. Повышение контраста полутонового изображения посредством линейной растяжки гистограммы. Вариант 28 Apr 17, 2026
@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.66667% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 82.27%. Comparing base (f7f3d46) to head (080dadc).

Files with missing lines Patch % Lines
...aeva_s_inc_contrast_img_by_lsh/tbb/src/ops_tbb.cpp 96.66% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           master     #678   +/-   ##
=======================================
  Coverage   82.27%   82.27%           
=======================================
  Files         497      498    +1     
  Lines       21191    21221   +30     
  Branches     8691     8701   +10     
=======================================
+ Hits        17434    17460   +26     
- Misses       2614     2615    +1     
- Partials     1143     1146    +3     

☔ 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