From e88b1f2b5c7ca93dd2e49224451f63df24dfb104 Mon Sep 17 00:00:00 2001 From: nicolas Date: Fri, 28 Feb 2025 00:05:15 +0100 Subject: [PATCH] New test obj files generated --- .../imageRec-c-aarch64-linux-gnu-gcc-12-O0.o | Bin 0 -> 15576 bytes .../imageRec-c-aarch64-linux-gnu-gcc-12-O3.o | Bin 0 -> 12576 bytes ...imageRec-c-arm-linux-gnueabihf-gcc-12-O0.o | Bin 0 -> 7908 bytes ...imageRec-c-arm-linux-gnueabihf-gcc-12-O3.o | Bin 0 -> 7232 bytes tests/obj/imageRec-c-gcc-O0.o | Bin 0 -> 11584 bytes tests/obj/imageRec-c-gcc-O3.o | Bin 0 -> 13512 bytes .../obj/imageRec-c-mips-linux-gnu-gcc-12-O0.o | Bin 0 -> 13704 bytes .../obj/imageRec-c-mips-linux-gnu-gcc-12-O3.o | Bin 0 -> 10440 bytes .../imageRec-c-riscv64-linux-gnu-gcc-12-O0.o | Bin 0 -> 26416 bytes .../imageRec-c-riscv64-linux-gnu-gcc-12-O3.o | Bin 0 -> 19456 bytes tests/src/imageRec.c | 515 ++++++++++++++++++ tests/src/imageRec.h | 43 ++ 12 files changed, 558 insertions(+) create mode 100644 tests/obj/imageRec-c-aarch64-linux-gnu-gcc-12-O0.o create mode 100644 tests/obj/imageRec-c-aarch64-linux-gnu-gcc-12-O3.o create mode 100644 tests/obj/imageRec-c-arm-linux-gnueabihf-gcc-12-O0.o create mode 100644 tests/obj/imageRec-c-arm-linux-gnueabihf-gcc-12-O3.o create mode 100644 tests/obj/imageRec-c-gcc-O0.o create mode 100644 tests/obj/imageRec-c-gcc-O3.o create mode 100644 tests/obj/imageRec-c-mips-linux-gnu-gcc-12-O0.o create mode 100644 tests/obj/imageRec-c-mips-linux-gnu-gcc-12-O3.o create mode 100644 tests/obj/imageRec-c-riscv64-linux-gnu-gcc-12-O0.o create mode 100644 tests/obj/imageRec-c-riscv64-linux-gnu-gcc-12-O3.o create mode 100644 tests/src/imageRec.c create mode 100644 tests/src/imageRec.h diff --git a/tests/obj/imageRec-c-aarch64-linux-gnu-gcc-12-O0.o b/tests/obj/imageRec-c-aarch64-linux-gnu-gcc-12-O0.o new file mode 100644 index 0000000000000000000000000000000000000000..3db530204d437237205ed080807244774f103092 GIT binary patch literal 15576 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 AVgLXD literal 0 HcmV?d00001 diff --git a/tests/obj/imageRec-c-aarch64-linux-gnu-gcc-12-O3.o b/tests/obj/imageRec-c-aarch64-linux-gnu-gcc-12-O3.o new file mode 100644 index 0000000000000000000000000000000000000000..3acb239b6e5110fb03e5087b7e64aef6fd0adbff GIT binary patch literal 12576 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 literal 0 HcmV?d00001 diff --git a/tests/obj/imageRec-c-arm-linux-gnueabihf-gcc-12-O3.o b/tests/obj/imageRec-c-arm-linux-gnueabihf-gcc-12-O3.o new file mode 100644 index 0000000000000000000000000000000000000000..04900162ca7e8d3a13e476698054b214c5070f16 GIT binary patch literal 7232 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 K9`>(u{{H}5CK3ez literal 0 HcmV?d00001 diff --git a/tests/obj/imageRec-c-gcc-O3.o b/tests/obj/imageRec-c-gcc-O3.o new file mode 100644 index 0000000000000000000000000000000000000000..e9cce97afa31ff41dab580f2c9d978161131f393 GIT binary patch literal 13512 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 WOYG_6`0~IA;2odEnDpEuc>e<~h9X)3 literal 0 HcmV?d00001 diff --git a/tests/obj/imageRec-c-mips-linux-gnu-gcc-12-O3.o b/tests/obj/imageRec-c-mips-linux-gnu-gcc-12-O3.o new file mode 100644 index 0000000000000000000000000000000000000000..b9922bfd10ebd831edf58265dce2059cdf6a52e6 GIT binary patch literal 10440 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 CKu8<_ literal 0 HcmV?d00001 diff --git a/tests/src/imageRec.c b/tests/src/imageRec.c new file mode 100644 index 0000000..9727948 --- /dev/null +++ b/tests/src/imageRec.c @@ -0,0 +1,515 @@ +#include +#include "imageRec.h" + +const short sobelFilterKernel[3][3] = { { 3, 10, 3 }, { 0, 0, 0 }, { -3, -10, -3 } }; +const imageBuffer gausFilterKernel[5] = { 25, 61, 83, 61, 25 }; + +int imageWidth = 0; +int imageHight = 0; +int imageBufferSize = 0; + +int setImageSize(int width, int hight) +{ + imageWidth = width; + imageHight = hight; + imageBufferSize = width * hight; + + return imageBufferSize; +} + +void normalizeImage(imageBuffer* srcImage, imageBuffer* dstImage) +{ + int min = 0xFFFF; + int max = 0; + unsigned int factor; + + for (int i = 0; i < imageBufferSize; i++) + { + if (srcImage[i] < min) min = srcImage[i]; + if (srcImage[i] > max) max = srcImage[i]; + } + + factor = (1 << 30) / (max - min + 1); + + for (int i = 0; i < imageBufferSize; i++) + { + dstImage[i] = (imageBuffer)((srcImage[i] - min) * factor / (1<<14)); + } +} + +void gausFilter(imageBuffer * image, imageBuffer * helperImage) +{ + int n = sizeof(gausFilterKernel) / sizeof(gausFilterKernel[0]); + int acc; + int acck = 0; + int i = 0; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + acc = 0; + acck = 0; + + for (int j = 0; j < n; j++) + { + int pos = x + j - n / 2; + + if (pos >= 0 && pos < imageWidth) + { + acc += image[i + j - n / 2] * gausFilterKernel[j]; + acck += gausFilterKernel[j]; + } + } + + helperImage[i] = (unsigned short)(acc / acck); + + i++; + } + } + + i = 0; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + acc = 0; + acck = 0; + + for (int j = 0; j < n; j++) + { + int pos = y + j - n / 2; + + if (pos >= 0 && pos < imageHight) + { + acc += helperImage[i + (j - n / 2) * imageWidth] * gausFilterKernel[j]; + acck += gausFilterKernel[j]; + } + } + + image[i] = (unsigned short)(acc / acck); + + i++; + } + } +} + +int getX(imageBuffer combinedXy) +{ + return (combinedXy & 0xFF) - 0x80; +} + +int getY(imageBuffer combinedXy) +{ + return (combinedXy / 0x100) - 0x80; +} + +void sobelFilter(imageBuffer * srcImage, imageBuffer * dstImage) +{ + int i = 0; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + int dx = 0; + int dy = 0; + + if (x > 0 && x < imageWidth - 1 && y > 0 && y < imageHight - 1) + { + for (int ix = 0; ix < 3; ix++) + { + for (int iy = 0; iy < 3; iy++) + { + int srcVal = srcImage[(x + ix - 1) + (y + iy - 1) * imageWidth]; + + dx += srcVal * sobelFilterKernel[ix][iy]; + dy += srcVal * sobelFilterKernel[iy][ix]; + } + } + + dx /= 0x800; + dy /= 0x800; + + if (dx > 127) dx = 127; + if (dx < -128) dx = -128; + if (dy > 127) dy = 127; + if (dy < -128) dy = -128; + + //dstImage[i] = combineXy(dx,dy); + dstImage[i] = (unsigned short)(dx + 0x80 + (dy + 0x80) * 0x100); + } + else + { + dstImage[i] = 0x8080; + } + + i++; + } + } +} + +int getSlope(imageBuffer value) +{ + int dy = (value / 0x100) - 0x80; + int dx = (value & 0xFF) - 0x80; + + return (dx * dx + dy * dy); +} + +//srcImage must be a result from sobelFilter +void nonMaximumSuppression(imageBuffer * srcImage, imageBuffer * dstImage, int minSlope) +{ + int i = 0; + int slope; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + + if (x > 0 && x < imageWidth - 1 && y > 0 && y < imageHight - 1) + { + slope = getSlope(srcImage[i]); + + if (slope < minSlope) + { + dstImage[i] = 0x8080; + } + else + { + int count = 0; + + if (getSlope(srcImage[i - 1 - imageWidth]) > slope) count++; + if (getSlope(srcImage[i - 0 - imageWidth]) > slope) count++; + if (getSlope(srcImage[i + 1 - imageWidth]) > slope) count++; + if (getSlope(srcImage[i - 1]) > slope) count++; + if (getSlope(srcImage[i + 1]) > slope) count++; + if (getSlope(srcImage[i - 1 + imageWidth]) > slope) count++; + if (getSlope(srcImage[i - 0 + imageWidth]) > slope) count++; + if (getSlope(srcImage[i + 1 + imageWidth]) > slope) count++; + + if (count > 2) + dstImage[i] = 0x8080; + else + dstImage[i] = srcImage[i]; + } + } + else + { + dstImage[i] = 0x8080; + } + + i++; + } + } +} + + +/*void drawLine(imageBuffer* dstImage, int x0, int y0, int x1, int y1) +{ + int x = x0; + int y = y0; + int dx = x1 - x0; + int dy = y1 - y0; + int err = dx + dy, e2; // error value e_xy + + while (true) + { + dstImage[y * IMAGE_WIDTH + x] += 1;// 64 + cr; + if (x == x1 && y == y1) break; + e2 = 2 * err; + if (e2 > dy) { err += dy; x++; } + if (e2 < dx) { err += dx; y++; } + } +}*/ + +void houghTransformCircles(imageBuffer * srcImage, imageBuffer * dstImage) +{ + int i = 0; + int xslope, yslope; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + if (srcImage[i] != 0x8080) + { + xslope = getX(srcImage[i]); + yslope = getY(srcImage[i]); + + if (xslope * xslope > yslope * yslope) + { + for (int xi = 0; xi < imageWidth; xi++) + { + int yi = (xi - x) * yslope / xslope + y; + + if (yi > 0 && yi < imageHight) + dstImage[yi * imageWidth + xi]++; + } + } + else + { + for (int yi = 0; yi < imageHight; yi++) + { + int xi = (yi - y) * xslope / yslope + x; + + if (xi > 0 && xi < imageWidth) + dstImage[yi * imageWidth + xi]++; + } + } + } + + i++; + } + } + +} + +void intenerlal_houghTransformLines(imageBuffer * srcImage, imageBuffer * dstImage, int filter) +{ + int i = 0; + const int cx = imageWidth / 2; + const int cy = imageHight / 2; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + if (srcImage[i] != 0x8080) + { + int xslope = getX(srcImage[i]); + int yslope = getY(srcImage[i]); + int xslope2 = xslope * xslope; + int yslope2 = yslope * yslope; + + if (filter == 0 || (filter == 1 && yslope2 > xslope2) || (filter == 2 && yslope2 < xslope2)) + { + + int inter = ((x - cx) * xslope + (y - cy) * yslope) * 0x100 / (xslope2 + yslope2); + int htx = cx + inter * xslope / 0x100; + int hty = cy + inter * yslope / 0x100; + + if (htx > 0 && htx < imageWidth && hty > 0 && hty < imageHight && dstImage[hty * imageWidth + htx] < 0xFFFF) + dstImage[hty * imageWidth + htx] ++; + + //std::cout << htx << " " << hty << " - " << xslope << " " << yslope << " " << ".\n"; + //printf("%i %i %i %i\n", htx, hty, xslope, yslope); + } + + } + + i++; + } + } +} + +void houghTransformLines(imageBuffer* srcImage, imageBuffer* dstImage) +{ + intenerlal_houghTransformLines(srcImage, dstImage, 0); +} + +void houghTransformVerticalLines(imageBuffer* srcImage, imageBuffer* dstImage) +{ + intenerlal_houghTransformLines(srcImage, dstImage, 2); +} + +void houghTransformHorizontalLines(imageBuffer* srcImage, imageBuffer* dstImage) +{ + intenerlal_houghTransformLines(srcImage, dstImage, 1); +} + +static int usqrt4(int val) { + int a, b; + + a = 256; // starting point is relatively unimportant + + b = val / a; a = (a + b) / 2; + b = val / a; a = (a + b) / 2; + b = val / a; a = (a + b) / 2; + b = val / a; a = (a + b) / 2; + b = val / a; a = (a + b) / 2; + + return a; +} + +void houghTransformMiniscus(imageBuffer * srcImage, imageBuffer * dstImage) +{ + int i = 0; + + for (int y = 0; y < imageHight; y++) + { + for (int x = 0; x < imageWidth; x++) + { + if (srcImage[i] != 0) + { + int xslope = getX(srcImage[i]); + int yslope = getY(srcImage[i]); + + if (xslope != 0) + { + int preCalc = 0x1000 * yslope / xslope; + + + for (int htx = 0; htx < imageWidth; htx++) + { + int dx = htx - x; + //int dy = dx * yslope / xslope; + int dy = dx * preCalc / 0x1000; + + if (dx != 0) + { + int r = usqrt4(dx * dx + dy * dy); + //int r = sqrt(dx * dx + dy * dy); + + int hty = y + dy - r; + + if (hty >= 0 && hty < imageHight) + dstImage[hty * imageWidth + htx] ++; + } + + } + + } + } + + i++; + } + } +} + +void findMaxima(imageBuffer* srcImage, imageBuffer* dstImage, int threshold, int minDistance) +{ + int ws2 = minDistance / 2; + int maxVal; + int maxInd; + + for (int i = 0; i < imageBufferSize; i++) + { + dstImage[i] = srcImage[i]; + } + + for (int y = ws2; y < imageHight; y += ws2) + { + for (int x = ws2; x < imageWidth; x += ws2) + { + maxVal = threshold; + maxInd = -1; + + for (int ix = -ws2; ix < ws2; ix++) + { + for (int iy = -ws2; iy < ws2; iy++) + { + int i = (x + ix) + (y + iy) * imageWidth; + + if (srcImage[i] > maxVal) + { + maxInd = i; + maxVal = srcImage[i]; + } + } + } + + for (int ix = -ws2; ix < ws2; ix++) + { + for (int iy = -ws2; iy < ws2; iy++) + { + int i = (x + ix) + (y + iy) * imageWidth; + if (i != maxInd) + dstImage[i] = 0; + } + } + + + } + } +} + +void bubbleSort(struct pixel_list* array, int length) +{ + int i, j; + struct pixel_list tmp; + + for (i = 1; i < length; i++) + { + for (j = 0; j < length - i; j++) + { + if (array[j].value[4] < array[j + 1].value[4]) + { + tmp = array[j]; + array[j] = array[j + 1]; + array[j + 1] = tmp; + } + } + } +} + +int getPixelList(imageBuffer* primImage, imageBuffer* secImage, struct pixel_list* list, int listLenght) +{ + int i = 0; + int j = 0; + + for (int y = 1; y < imageHight - 1; y++) + { + for (int x = 1; x < imageWidth - 1; x++) + { + i = x + y * imageWidth; + + if (primImage[i] != 0 && j < listLenght) + { + list[j].value[0] = secImage[x + (y - 1) * imageWidth - 1]; + list[j].value[1] = secImage[x + (y - 1) * imageWidth]; + list[j].value[2] = secImage[x + (y - 1) * imageWidth + 1]; + + list[j].value[3] = secImage[i - 1]; + list[j].value[4] = secImage[i]; + list[j].value[5] = secImage[i + 1]; + + list[j].value[6] = secImage[x + (y + 1) * imageWidth - 1]; + list[j].value[7] = secImage[x + (y + 1) * imageWidth]; + list[j].value[8] = secImage[x + (y + 1) * imageWidth + 1]; + + list[j].x = x; + list[j].y = y; + j++; + } + + i++; + } + } + + bubbleSort(list, listLenght); + + return j; +} + +void convertToSlope(imageBuffer* srcImage, imageBuffer* dstImage) +{ + for (int i = 0; i < imageBufferSize; i++) + { + dstImage[i] = (unsigned short)getSlope(srcImage[i]); + } +} + +void binarize(imageBuffer * srcImage, imageBuffer * dstImage, int threshold) +{ + for (int i = 0; i < imageBufferSize; i++) + { + dstImage[i] = (srcImage[i] > threshold) ? 0xFFFF : 0; + } +} + +void clearBufferArea(imageBuffer * dstImage, int startLine, int endLine) +{ + for (int i = 0; i < imageBufferSize; i++) + { + if (i / imageWidth >= startLine && i / imageWidth < endLine) + dstImage[i] = 0; + } +} + +void clearBuffer(imageBuffer* dstImage) +{ + clearBufferArea(dstImage, 0, imageHight); +} diff --git a/tests/src/imageRec.h b/tests/src/imageRec.h new file mode 100644 index 0000000..3159a1a --- /dev/null +++ b/tests/src/imageRec.h @@ -0,0 +1,43 @@ + +#define RADIUS_VAL 500 + +typedef unsigned short imageBuffer; +typedef int bool; + +struct pixel_list { + imageBuffer value[9]; + int x; + int y; +}; + +int setImageSize(int width, int hight); + +void normalizeImage(imageBuffer* srcImage, imageBuffer* dstImage); + +void gausFilter(imageBuffer* image, imageBuffer* helperImage); + +void sobelFilter(imageBuffer* srcImage, imageBuffer* dstImage); + +void nonMaximumSuppression(imageBuffer* srcImage, imageBuffer* dstImage, int minSlope); + +void houghTransformCircles(imageBuffer* srcImage, imageBuffer* dstImage); + +void houghTransformLines(imageBuffer* srcImage, imageBuffer* dstImage); + +void houghTransformVerticalLines(imageBuffer* srcImage, imageBuffer* dstImage); + +void houghTransformHorizontalLines(imageBuffer* srcImage, imageBuffer* dstImage); + +void houghTransformMiniscus(imageBuffer* srcImage, imageBuffer* dstImage); + +void findMaxima(imageBuffer* srcImage, imageBuffer* dstImage, int threshold, int minDistance); + +int getPixelList(imageBuffer* primImage, imageBuffer* secImage, struct pixel_list* list, int listLenght); + +void convertToSlope(imageBuffer* srcImage, imageBuffer* dstImage); + +void binarize(imageBuffer* srcImage, imageBuffer* dstImage, int threshold); + +void clearBufferArea(imageBuffer* dstImage, int startLine, int endLine); + +void clearBuffer(imageBuffer* dstImage); \ No newline at end of file