increase luminance of a matrix
I'm trying to create a jitter effect (using jit.op or some other object through which I can pass an existing matrix) where each pixel has its luminance increased, as if the H portion of the HSL notation had been increased.
So for example, if luminance runs from 0.0 to 1.0, and we fed in a parameter of 0.3, then the luminance value of each pixel increases by 0.3. Thus, pure red would become pink, muddy yellow would become a brighter yellow, etc. Luminance would be capped at 0.1, so any pixel that was already close to full luminance would just look white.
I've attached a screenshot to make my intentions clear.
I tried jit.brcosa (using the @brightness attribute), but this does not raise a pixel above it's original luminance - it can only reduce it.
I have a hunch that I will need to convert each pixel value to HSL, increase the L portion, then convert back to RGB. I have the required formulas from http://easyrgb.com/index.php?X=MATH - but I'm not sure how I would use them in Max. Is this a job for Gen perhaps?
jit.rgb2hsl and it's @lscale attribute
So simple! Thanks!
Here's a demo. I used jit.rgb2hsl as advised, and then jit.hsl2rgb to convert it back.
unfortunately 2hsl and 2hsv are the only ones which i did not got right from looking at the quasi codes found on the web, when i tried to do them all recently.
the picture below shows how it would look like (if the last bug in it would be corrected finally - i somehow lost interest in it)
btw, not sure how important it is for your project, but the L in HSL stands for lightness, and not for luminance. ;)
for luminance, which you were asking for, you would need ALL of the three abstractions i posted in this thread https://cycling74.com/forums/rgb2xyz/
quite a bunch of code for something so simple.
-110
no, wait, thats luma, not luminance, my bad.
it is always a bit hard to keep the difference between lightness, brightness, luminance, and luma in mind if you´re not native english. ;)
luminance or lightness can be found in L*a*b.
-110