I'm trying to figure out what's the best way to accomplish an idea for

I’m trying to figure out what’s the best way to accomplish an idea for my POV system … as crazy as it may seem. Think of an image mask for this idea. Let’s say I have two images, one that’s full color, and another that’s an 8-bit grayscale. What I’d like to try is use that grayscale as a mask on the full color image and then change some of the areas of the color image with different values, based on that mask. So if parts of the mask are white, take those areas in the full color image and maybe change them to a different color, WHILE retaining the same saturation and value (or brightness, whatever you want to work with), OR applying whatever the mask says.

For example, if the mask has a full white pixel HSV(0,0,255) and the color image has a full red HSV(0, 255, 255), the replacement color will retain that saturation and value. If the mask has a full white but the color image has lesser value or saturation, the replacement color will retain those values. Same if the bitmap has a shade of gray, it needs to apply that to the color image, taking into consideration that it only has to do that if the color image’s pixel is at a higher saturation/value, if it’s lower it stays that way. I’m sure I’m missing other scenarios, possibly problematic ones at that as well.

I can think of some fun things to do with this, but implementing it could cause me to kill off all the remaining braincells I have left.

I did an experiment like this a while ago, same stuff applies.

Basically I needed a translation table to do this at any speed, so my color image had a mask (photoshop terminology) like you’re saying. What I did was to have two color images:
1.) Color Image in RGB color space (normal .bmp)
2.) Color image in HSV color space .still technically in BMP format, but RGB values replaced with their corresponding HSV values, with 0-360 scaled down to 0-255 in the case of Hue, and 0-255 for saturation and value.

write loop would look something like this:
for each pixel in normal bmp
– if pixel.mask != 0 && pixel.isRemixColor
---- leds[x] = CHSV(pixel.H,pixel.S + shiftvalue1, pixel.V+ shiftvalue2)
– else
---- leds[x] = CRGB(pixel.R,pixel.G, pixel.B)

Hope this helps - lemme know what you think. I don’t have the experiment right in front of me right now, but I think cheating with this “translation table” might be the right way to go.

The ‘remixColor’ flag was because i was selectively recoloring parts of the original image, instead of all the colors.