Color Management with ICC Profiles on CUDA and OpenGL
It's not enough to create high quality camera for imaging application - one have to design powerfull software to be able to render images from the camera and to be able to reproduce colors in a right way. Here comes a question about color management, ICC profiles and related matters. To take these things into account we incorporate Color Management System for image processing and make it fast. We have done that on GPU with CUDA technology.
Calculations of camera gamut gives opportunity to evaluate ability to reproduce right colors by the camera. This is the problem which happens quite often: if you need to replace color camera with a new one, you can't be sure that colors on a new camera will be the same as it used to be. Right solution for that task is camera calibration with ColorChecker to create its own ICC profile. The software should be able to have color management to reproduce right colors.
Standard workflow according to ICC includes color transform from Input Device Color Space (camera) to PCS (Profile Connection Space) and then transform from PCS to Output Device Color Space (monitor). PCS is the reference colour space in which colors are encoded in order to provide an interface for connecting source and destination transforms. The PCS values constitute an encoding of a CIE colorimetric specification.
Our Color Management software supports ICC v4 profile-based color management, including support for calibrated and profiled displays. Software engine doesn't use Windows Color System (WCS) which is available on Windows Vista and later operating systems.
Color Management Workflow
Output profiles of monitor and sRGB are different and it means that we can't save on HDD and show on the screen the same data. In most cases, when we apply monitor and sRGB profiles to the same input data, we get different results. It's really easy to check whether this is true or not. You can open JPEG image with GIMP or other software with color management support and choose Edit/Parameters/Color Management menu and then apply sRGB or monitor profile. If you have done monitor color calibration and got its profile, you will clearly see the difference.