Yes, its easy to identify [1, 0, 0] as a red color. But sometimes we want to find ALL colors in an image that we would identify as red. Thus, [1, 0.1, 0.1] is also easily seen as red by the eye. Its not so easy to do computationally however, since the set of colors which we might perceive as some given color name is probably not a simple set. Its probably not convex, and not all of us will even agree on the exact boundaries of that set. The fuzziness of those boundaries is why I've called this tool fuzzycolor.
Fuzzycolor uses a database that I've constructed for each color name, then applies interp3 to identify any color names in question. So fuzzycolor will be fast, and can be applied to entire images at will. See the demo.
Fuzzycolor can recognize colors as belonging to specific color name sets, or it can test all color names in its database. Again, see the demo.
Unfortunately, the database is not truly complete, including only a few select colornames, currently:
'red', 'green', 'blue', 'neutral', 'pastel', yellow', 'flesh'
I'll expand this list as I find time. I also hope to improve the existing lookup tables, as their margins are still not quite as accurate as I would like. I'll happily accept additions from others too. For those who wish to improve my database, I've included a tool that puts the user through a visual experiment to outline the set of all colors that fit a given colorname. (I will improve this tool for the next revision.)
I assumed a D65 iluminant to build the "neutral" and "pastel" lookup tables. The flesh tone lookup table was built from a small set of flesh tone patches that I dug up.
John D'Errico (2022). Color name identification: fuzzycolor (https://www.mathworks.com/matlabcentral/fileexchange/12326-color-name-identification-fuzzycolor), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!