-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimage_binarization.c
More file actions
130 lines (106 loc) · 2.69 KB
/
Copy pathimage_binarization.c
File metadata and controls
130 lines (106 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include "my_timers.h"
#define NUM_OF_THREADS 8
/*
* image parameters
*/
#define IMG_N_SHAPE 662
#define IMG_M_SHAPE 1178
void main()
{
uint8_t* img;
int img_dim = IMG_N_SHAPE * IMG_M_SHAPE;
int img_size = img_dim * sizeof(uint8_t);
img = (uint8_t*)malloc(img_size);
// Read values of image from file
FILE* input_file;
input_file = fopen("input.txt", "r");
if (input_file == NULL)
{
printf("Error Reading File\n");
exit (0);
}
for (int i = 0; i < IMG_N_SHAPE * IMG_M_SHAPE; i++)
{
fscanf(input_file, "%d\n", &img[i]);
}
fclose(input_file);
// sanity check
// for (int i = 0; i < 16; i++)
// {
// printf("%d\n", img[i]);
// }
// Threshold definition
uint8_t binarize_threshold = 11;
long i = 0;
omp_set_num_threads(4);
// start_time();
#pragma omp parallel sections private(i)
{
#pragma omp section
for(i = 0; i < IMG_N_SHAPE * IMG_M_SHAPE; i+=4)
{
if (img[i] > binarize_threshold)
{
img[i] = 255;
}
else
{
img[i] = 0;
}
}
#pragma omp section
for( i=1; i<IMG_N_SHAPE * IMG_M_SHAPE; i+=4)
{
if (img[i] > binarize_threshold)
{
img[i] = 255;
}
else
{
img[i] = 0;
}
}
#pragma omp section
for( i=2; i<IMG_N_SHAPE * IMG_M_SHAPE; i+=4)
{
if (img[i] > binarize_threshold)
{
img[i] = 255;
}
else
{
img[i] = 0;
}
}
#pragma omp section
for( i=3; i<IMG_N_SHAPE * IMG_M_SHAPE; i+=4)
{
if (img[i] > binarize_threshold)
{
img[i] = 255;
}
else
{
img[i] = 0;
}
}
}//end parallel
// stop_time();
// print_time("Elapsed:");
// Save to txt file
FILE* output_file;
output_file = fopen("output_bin_omp.txt", "w");
if (output_file == NULL)
{
printf("Error Reading File\n");
exit (0);
}
for (int i = 0; i < IMG_N_SHAPE * IMG_M_SHAPE; i++)
{
fprintf(output_file, "%d\n", img[i]);
}
fclose(output_file);
}