Can you imagine what the world would look like if you could not see all it's colors ?
How about seeing more color than currently possible ?
You will be using your skills in MatLab, and applying your understanding of Image Processing, Optics, Color-space, and Displays.
The goal is to create MatLab program to
- Read JPG, PNG, TIFF Formats
- Recognize an images' Input Color-Space (e.g. from header information) or select a user-defined.
(supported color-spaces shall include : sRGB, BT709, DCI-P3, AdobeRGB, NTSC, Rec.2020)
- Both R,G,B and Y,u,v pixel formats shall be supported (the term RGB below will be used to refer to both)
- Convert the image pixels from R,G,B into CIE1931 color space x, y, z
- Analyze the image pixels, illustrate the color distributions visually e.g. as a 'splatter diagram' on-top of CIE color space
- Accept as input, a selection of one of a number of Output Color Gamuts options (RGB, RGC, RGCB, RGYC, RGYCB), defined using color Primaries stored in a .CSV file in either format a) x, y, Intensity , or b) spectroradiometric data (radiance vs wavelength) one for each primary (e.g. columns for R, G, C primaries)
- Render the image based on the selected color primary set (RGB, RGC, RGCB, RGYC, RGYCB)
- Save the converted image back in PNG or TIFF file formats (for example saving RGC as RGB format by replacing C in the B channel)
- Accept as input, the selection of the color conversion policy to be applied for pixels outside the target gamut e.g. rescale or clamp
- Produce image statistics, and metrics for the conversion, including number of input pixels outside the target output color gamut, and number of pixels outside by input primary color, to answer the questions :
a) the number of pixels in RGB image containing Blue, that could not be converted to an RGC primary system, relative to number of pixels in the image
b) the number of pixels whose color-shift exceeded threshold e.g. histogram of the color shift accumulated thru the conversion of blue sky into cyan sky. Present as raw data, histogram and a bell curve visual.
- Produce a script mode (possible a separate matlab wrapper to call the main one and supply params) wherein the program can run unattended, processing a batch of images, without presenting visual data (no splatter diagram), and store the name of the image and the statistics in CSV output file
- Keep running track of the totals i.e. report how many images processed, % color corruption
Bonus : writing a short script to search images from the web (google image), based on search criteria, download the images, and run through the above analysis.
Successful applicant will need to sign an NDA covering the exchange of details, before beginning the project
About the recuiterMember since Nov 11, 2022 Mikki
from Minnesota, United States