examples/applications/ffos.c in bones-compiler-1.3.1 vs examples/applications/ffos.c in bones-compiler-1.6.0

- old
+ new

@@ -13,11 +13,11 @@ // Web address........http://parse.ele.tue.nl/bones/ // // == File information // Filename...........applications/ffos.c // Author.............Cedric Nugteren -// Last modified on...22-May-2012 +// Last modified on...11-October-2014 // //######################################################################## //### Includes //######################################################################## @@ -102,17 +102,19 @@ //######################################################################## //### PART1: Histogramming (accelerated) //######################################################################## if (messages >= 1) { printf("### PART1: Histogramming.\n"); fflush(stdout); } - #pragma species kernel 0:height-1,0:width-1|element -> 0:255|shared + #pragma scop + #pragma species kernel image0[0:height-1,0:width-1]|element -> hist[0:255]|shared for (h=0;h<height;h++) { for (w=0;w<width;w++) { hist[image0[h][w]] = hist[image0[h][w]] + 1; } } #pragma species endkernel histogram + #pragma endscop //######################################################################## //### Between class variance (CPU) //######################################################################## if (messages == 2) { printf("### Create a between class variance table.\n"); fflush(stdout); } @@ -166,26 +168,35 @@ //######################################################################## //### PART4: Binarization (accelerated) //######################################################################## if (messages >= 1) { printf("### PART4: Binarization with treshold at %d.\n",threshold); fflush(stdout); } - #pragma species kernel 0:height-1,0:width-1|element -> 0:height-1,0:width-1|element + unsigned char val; + #pragma scop + #pragma species kernel image0[0:height-1,0:width-1]|element -> image1[0:height-1,0:width-1]|element for (h=0;h<height;h++) { for (w=0;w<width;w++) { - if (image0[h][w] > threshold) { image1[h][w] = 1; } - else { image1[h][w] = 0; } + if (image0[h][w] > threshold) { + val = 1; + } + else { + val = 0; + } + image1[h][w] = val; } } #pragma species endkernel threshold + #pragma endscop //######################################################################## //### PART5: Erosion 7x7 (accelerated) //######################################################################## if (messages >= 1) { printf("### PART5: Perform the erode kernel.\n"); fflush(stdout); } int condition; - #pragma species kernel 7:height-8,7:width-8|neighbourhood(-3:3,-3:3) -> 0:height-1,0:width-1|element + #pragma scop + #pragma species kernel image1[7:height-8,7:width-8]|neighbourhood(-3:3,-3:3) -> image2[0:height-1,0:width-1]|element for (h=0;h<height;h++) { for (w=0;w<width;w++) { if (w >= 7 && h >= 7 && w <= width-7 && h <= height-7) { condition = 1; for(a=-3;a<=3;a++) { @@ -206,10 +217,11 @@ image2[h][w] = 0; } } } #pragma species endkernel erosion + #pragma endscop //######################################################################## //### PART6: 1D erosion(7) synthetic example (accelerated) //######################################################################## if (messages >= 1) { printf("### PART6: Perform the erode kernel (1D - synthetic).\n"); fflush(stdout); } @@ -249,38 +261,42 @@ //### PART7: Y-projection (accelerated) //######################################################################## if (messages >= 1) { printf("### PART7: Starting the Y-projection algorithm.\n"); fflush(stdout); } int result_yp; - #pragma species kernel 0:height-1,0:width-1|chunk(0:height-1,0:0) -> 0:width-1|element + #pragma scop + #pragma species kernel image2[0:height-1,0:width-1]|chunk(0:height-1,0:0) -> Yvector[0:width-1]|element for (w=0;w<width;w++) { result_yp = 0; for (h=0;h<height;h++) { if (image2[h][w] == 255) { result_yp = 255; } } Yvector[w] = result_yp; } #pragma species endkernel y_projection + #pragma endscop //######################################################################## //### PART8: X-projection (accelerated) //######################################################################## if (messages >= 1) { printf("### PART8: Starting the X-projection algorithm.\n"); fflush(stdout); } int result_xp; - #pragma species kernel 0:height-1,0:width-1|chunk(0:0,0:width-1) -> 0:height-1|element + #pragma scop + #pragma species kernel image2[0:height-1,0:width-1]|chunk(0:0,0:width-1) -> Xvector[0:height-1]|element for (h=0;h<height;h++) { result_xp = 0; for (w=0;w<width;w++) { if (image2[h][w] == 255) { result_xp = 255; } } Xvector[h] = result_xp; } #pragma species endkernel x_projection + #pragma endscop //######################################################################## //### Search for the centers of the projection vectors (CPU) //######################################################################## if (messages == 2) { printf("### Search for X- and Y-projection vectors.\n"); fflush(stdout); }