GCC Code Coverage Report


Directory: ./
File: tasks/romanova_v_linear_histogram_stretch/omp/src/ops_omp.cpp
Date: 2026-05-11 08:26:31
Exec Total Coverage
Lines: 20 20 100.0%
Functions: 5 5 100.0%
Branches: 6 8 75.0%

Line Branch Exec Source
1 #include "romanova_v_linear_histogram_stretch/omp/include/ops_omp.hpp"
2
3 #include <algorithm>
4 #include <cstddef>
5 #include <cstdint>
6 #include <vector>
7
8 #include "romanova_v_linear_histogram_stretch/common/include/common.hpp"
9
10 namespace romanova_v_linear_histogram_stretch_threads {
11
12
1/2
✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
24 RomanovaVLinHistogramStretchOMP::RomanovaVLinHistogramStretchOMP(const InType &in) {
13 SetTypeOfTask(GetStaticTypeOfTask());
14
1/2
✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
24 GetInput() = in;
15 GetOutput().clear();
16 24 }
17
18 24 bool RomanovaVLinHistogramStretchOMP::ValidationImpl() {
19 24 return !GetInput().empty();
20 }
21
22 24 bool RomanovaVLinHistogramStretchOMP::PreProcessingImpl() {
23 24 GetOutput().resize(GetInput().size());
24 24 return !GetOutput().empty();
25 }
26
27
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 16 times.
24 bool RomanovaVLinHistogramStretchOMP::RunImpl() {
28 const InType &in = GetInput();
29 OutType &out = GetOutput();
30 size_t size = in.size();
31
32 24 uint8_t min_v = 255;
33 uint8_t max_v = 0;
34
35 24 #pragma omp parallel for default(none) shared(in, size) reduction(min : min_v) reduction(max : max_v)
36 for (size_t i = 0; i < size; i++) {
37 min_v = std::min(min_v, in[i]);
38 max_v = std::max(max_v, in[i]);
39 }
40
41
2/2
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 16 times.
24 if (min_v == max_v) {
42 8 #pragma omp parallel for default(none) shared(out, in, size)
43 for (size_t i = 0; i < size; i++) {
44 out[i] = in[i];
45 }
46 8 return true;
47 }
48
49 16 const uint8_t diff = max_v - min_v;
50 16 const double ratio = 255.0 / diff;
51
52 16 #pragma omp parallel for default(none) shared(in, out, min_v, ratio, size)
53 for (size_t i = 0; i < size; i++) {
54 uint8_t pix = in[i];
55 out[i] = (std::clamp(static_cast<int>((pix - min_v) * ratio), 0, 255));
56 }
57
58 16 return true;
59 }
60
61 24 bool RomanovaVLinHistogramStretchOMP::PostProcessingImpl() {
62 24 return true;
63 }
64
65 } // namespace romanova_v_linear_histogram_stretch_threads
66