Multimodel color blindness simulation plugins for GIMP using Python-Fu.
Put multimodel_cvd_parallel.py or multimodel_cvd_single_thread.py in your /user home/.gimp-2.x/plug-ins directory. Only 8 bit per channel rgb images are supported. If GIMP ever supports 16 bit per channel, this plugin will likely crash due to low-level ops that assume the bpp to be fixed.
This gimp plugin simulates color blindness using the well-known Brettel et. al. model and a more recently developed physiological model by Gustavo M. Machado, Manuel M. Oliveira, and Leandro A. F. Fernandes (link).
Since math calculations are rather slow in Python, and pixel-level operations are required, a parallel version (using multiprocessor library) has been developed for use on multi-core systems. The single thread version is only recommended for single-core systems.
#####Quick usage tips For dichromacy simulation I would recommend using the Brettel model with the default simulated primaries transformation. You may also use the CRT primaries if you want results that were actually used in research with dichromatic test subjects but not in sRGB/aRGB-calibrated environments. To simulate protanomaly, the physiological model with simulated primaries seems to produce results that are closest to those obtained by using the Brettel model with proper calibration. For deuteranomaly simulation in sRGB-like color space, the original research primaries are probably the best (but they won't work in Adobe RGB). Tritanomaly simulation is not very accurate with either set, so, it's more of a matter of choice: the original research matrices produce more saturated results while the simulated primaries go all the way to virtual dichromacy (while the original matrices stop a little short).
#####More detailed description 5 different transformation types and anchor point value combinations are available for the Brettel model: simulated primaries (each coefficient is obtained by integrating a product of corresponding primary spectrum and cone responsivity function), measured CRT primaries and anchor points used by Vischeck and GIMP (using those should reproduce the GIMP display filters when the gamma correction but is fixed and be close to Vischeck although not quite the same since they use the gamma value of 2.0), von Kries transformation (details), CVRL-proposed LMS-XYZ transformation (details) and "spectrally sharpened" CIECAM02 transformation used for color adaptation models (details) which could be used to exaggerate reduced response range for protanopes and tritanopes for images that are known to contain a lot of out of gamut colors.
The default physiological model matrices are pre-calculated by the researchers, and the primaries they used were not provided in the paper. Judging by the appearance, they used the same calibration as Vischeck (CRT primaries). Naturally, the color space selection is meaningless for this set. Alternatively, matrices obtained by using gauss-shaped simulated primaries is also available for both color spaces (the resulting protanomaly simulation seems to be pretty good but deuteranomaly results seem shifted towards green and purple hues). Those primaries were generated to match the chromaticities and the white point provided in the sRGB and Adobe RGB color space specifications and the standard CIE color matching functions and their specs are available in gauss_primaries.py. The "alternative red" set was used both for this model and for the Brettel transformation (it seems to be closer to the real monitor spectra) but the results produced are virtually identical (as they should be since they have nearly identical chromaticities).
Both sRGB and Adobe RGB color spaces can be used from non-crt transformations (for both models). The CRT primaries, of course, represent their own color space (presumably close to sRGB), so, the color space selection option doesn't work for those. Further details are available in the code comments.