I haven’t done any more imaging, but here’s a photo of the setup:
I also made a prototype color calibration matrix by imaging my smartphone’s R G and B pixels:
I identified what each pixel was supposed to be, got a list of pixel values for each channel in those regions and their coordinates, and then extrapolated a smooth image of each color response.
I then applied the correction to a test image:
Before:
After:
(Removed image because the results are deceptive, this did not work)
full notebook
This code is very inefficient and takes minutes to process one image, but I’m sure there are ways to speed it up.
Edit:
I actually made a mistake with my math, and the nice-looking result above was a fluke. While I can get fairly nice looking images of the color responses and can use that crosstalk data to unmix the original image of the smartphone pixels, I can’t yet use that to correct other images. I’ll keep working on it.