From 4360405c8f6af2dbdb38698e1c13e467b4d59113 Mon Sep 17 00:00:00 2001 From: Thibault PERRIER Date: Fri, 14 Apr 2023 11:22:17 +0200 Subject: [PATCH] adding vignette --- .../pdl/backend/Image/ImageProcessing.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/backend/src/main/java/pdl/backend/Image/ImageProcessing.java b/backend/src/main/java/pdl/backend/Image/ImageProcessing.java index 464f572..3eb50d4 100644 --- a/backend/src/main/java/pdl/backend/Image/ImageProcessing.java +++ b/backend/src/main/java/pdl/backend/Image/ImageProcessing.java @@ -1016,4 +1016,24 @@ public final class ImageProcessing { } } } + + public static void vignette(Planar input, double power) { + int centerX = input.width / 2; + int centerY = input.height / 2; + double maxDist = Math.sqrt(centerX * centerX + centerY * centerY); + + for (int y = 0; y < input.height; y++) { + for (int x = 0; x < input.width; x++) { + double dist = Math.sqrt((x - centerX) * (x - centerX) + (y - centerY) * (y - centerY)); + double vignette = 1.0 - Math.pow(dist / maxDist, power); + for (int band = 0; band < 3; band++) { + int colorLevel = (int) (input.getBand(band).get(x, y) * vignette); + if (colorLevel > 255) + colorLevel = 255; + input.getBand(band).set(x, y, colorLevel); + } + } + } + } + }