From 135b40ae02bc7c2f1a2a5334d3e6ca7c7a0b4f76 Mon Sep 17 00:00:00 2001 From: Satvik-Singh192 Date: Thu, 23 Oct 2025 10:04:19 +0530 Subject: [PATCH 1/4] feat: Add glow filter Enhances bright regions to produce a soft glow effect. Closes #28 --- filter.c | 3 +++ helpers.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/filter.c b/filter.c index e3fac2c..e8c1d83 100644 --- a/filter.c +++ b/filter.c @@ -133,6 +133,9 @@ int main(int argc, char *argv[]) case 't': threshold(height, width, image); break; + case 'w': + glow(height, width, image); + break; case 'd': // Edge Detection detect_edges(height, width, image); diff --git a/helpers.c b/helpers.c index ee56bf1..6b9a9d2 100644 --- a/helpers.c +++ b/helpers.c @@ -283,4 +283,75 @@ void detect_edges(int height, int width, RGBTRIPLE image[height][width]) for (int i = 0; i < height; i++) free(copy[i]); free(copy); -} \ No newline at end of file +} +void glow(int height, int width, RGBTRIPLE image[height][width]) +{ + // Step 1: make a copy of the original + RGBTRIPLE **original = malloc(height * sizeof(RGBTRIPLE *)); + RGBTRIPLE **blurred = malloc(height * sizeof(RGBTRIPLE *)); + for (int i = 0; i < height; i++) + { + original[i] = malloc(width * sizeof(RGBTRIPLE)); + blurred[i] = malloc(width * sizeof(RGBTRIPLE)); + for (int j = 0; j < width; j++) + { + original[i][j] = image[i][j]; + } + } + + // Step 2: apply a *mild* blur to copy (smaller kernel) + int kernelSize = 11; + int offset = kernelSize / 2; + + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width; j++) + { + int sumRed = 0, sumGreen = 0, sumBlue = 0, count = 0; + + for (int ki = -offset; ki <= offset; ki++) + { + for (int kj = -offset; kj <= offset; kj++) + { + int ni = i + ki, nj = j + kj; + if (ni >= 0 && ni < height && nj >= 0 && nj < width) + { + sumRed += original[ni][nj].rgbtRed; + sumGreen += original[ni][nj].rgbtGreen; + sumBlue += original[ni][nj].rgbtBlue; + count++; + } + } + } + + blurred[i][j].rgbtRed = sumRed / count; + blurred[i][j].rgbtGreen = sumGreen / count; + blurred[i][j].rgbtBlue = sumBlue / count; + } + } + + // Step 3: blend original + blurred to produce glow + for (int i = 0; i < height; i++) + { + for (int j = 0; j < width; j++) + { + float blend = 0.4; // glow intensity + int newRed = (1 - blend) * original[i][j].rgbtRed + blend * blurred[i][j].rgbtRed; + int newGreen = (1 - blend) * original[i][j].rgbtGreen + blend * blurred[i][j].rgbtGreen; + int newBlue = (1 - blend) * original[i][j].rgbtBlue + blend * blurred[i][j].rgbtBlue; + + image[i][j].rgbtRed = min(255, newRed); + image[i][j].rgbtGreen = min(255, newGreen); + image[i][j].rgbtBlue = min(255, newBlue); + } + } + + // Step 4: cleanup + for (int i = 0; i < height; i++) + { + free(original[i]); + free(blurred[i]); + } + free(original); + free(blurred); +} From 3f74b7c07fd80015262f4db6306af608c91b0202 Mon Sep 17 00:00:00 2001 From: Satvik-Singh192 Date: Fri, 24 Oct 2025 14:59:40 +0530 Subject: [PATCH 2/4] feat: fixed glow --- filter.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/filter.c b/filter.c index e8c1d83..081624f 100644 --- a/filter.c +++ b/filter.c @@ -147,6 +147,10 @@ int main(int argc, char *argv[]) brightness(height, width, image, brightness_value); break; } + case 'w':{ + glow(height, width, image); + break; + } default: printf("Unknown filter: %c\n", filterArr[i]); free(image); From c7cdffd5c0a65a41bddd0998b7485551a93b977d Mon Sep 17 00:00:00 2001 From: Satvik-Singh192 Date: Sun, 26 Oct 2025 16:03:30 +0530 Subject: [PATCH 3/4] feat: add glow filter --- README.md | 19 +++++++++++++++++++ filter.c | 9 ++------- filter.exe | Bin 55986 -> 0 bytes helpers.c | 3 ++- helpers.h | 3 ++- 5 files changed, 25 insertions(+), 9 deletions(-) delete mode 100644 filter.exe diff --git a/README.md b/README.md index 030528e..08d2921 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,18 @@ The result is clamped between 0 and 255 and replaces the original pixel value. T --- +### 8.) The Glow Algorithm + +The “Glow” filter gives bright regions of an image a soft, luminous halo, similar to a cinematic bloom effect. This filter works by blending the original image with a blurred version of itself. + +The algorithm first creates a copy of the image and applies a mild box blur (using a smaller kernel than the main blur filter) to it. Then, for each pixel, the final color values are calculated by combining the original pixel's color with the new blurred pixel's color using a weighted average: + +- `finalRed = 0.7 * originalRed + 0.3 * blurredRed` +- `finalGreen = 0.7 * originalGreen + 0.3 * blurredGreen` +- `finalBlue = 0.7 * originalBlue + 0.3 * blurredBlue` + +The resulting values are rounded to the nearest integer and capped at 255. This process brightens the image and causes the light to "bleed" from bright areas into darker ones, creating a soft, luminous effect. + ### Usage To apply a filter via command-line: @@ -186,6 +198,13 @@ To apply a filter via command-line: - `b`: blur - `i`: invert - `v`: vignette +- `G`: glow +- `t`: threshold +- `d`: edge detection +- `B `: brightness + +Example for glow: +./filter -G input.bmp output.bmp For vignette: ``` diff --git a/filter.c b/filter.c index 081624f..f8156fa 100644 --- a/filter.c +++ b/filter.c @@ -7,7 +7,7 @@ int main(int argc, char *argv[]) { // Define allowable filters - char *filters = "bgrsivtdB:"; + char *filters = "bgrsivtdB:G"; char filterArr[argc-3]; @@ -133,10 +133,6 @@ int main(int argc, char *argv[]) case 't': threshold(height, width, image); break; - case 'w': - glow(height, width, image); - break; - case 'd': // Edge Detection detect_edges(height, width, image); break; @@ -147,10 +143,9 @@ int main(int argc, char *argv[]) brightness(height, width, image, brightness_value); break; } - case 'w':{ + case 'G': glow(height, width, image); break; - } default: printf("Unknown filter: %c\n", filterArr[i]); free(image); diff --git a/filter.exe b/filter.exe deleted file mode 100644 index 505744cf6e5e4708407b9f23de8ac88aec516333..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55986 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 diff --git a/helpers.c b/helpers.c index 6b9a9d2..5a7d2ef 100644 --- a/helpers.c +++ b/helpers.c @@ -1,6 +1,7 @@ #include "helpers.h" #include #include +#include #include "bmp.h" int min(int a,int b){ if(a Date: Sun, 26 Oct 2025 20:49:33 +0530 Subject: [PATCH 4/4] bug: fixed brightness filter tagline warning --- filter.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/filter.c b/filter.c index f8156fa..cb1c565 100644 --- a/filter.c +++ b/filter.c @@ -7,7 +7,7 @@ int main(int argc, char *argv[]) { // Define allowable filters - char *filters = "bgrsivtdB:G"; + char *filters = "bgrsivtdGB:"; char filterArr[argc-3]; @@ -181,4 +181,4 @@ int main(int argc, char *argv[]) fclose(inptr); fclose(outptr); return 0; -} \ No newline at end of file +}