I wrote something similar in javascript a couple years ago and have some suggestions:
Have a look at the WCAG contrast ratio and luminance functions to gauge similarities/differences between colors. If you are looking to extract a theme those formulas are gold!
What sort of hashing/tolerance are you using for grouping? Using the above you can specify a tolerance level, and use sqrt((r1-r2)^2 + (g1-g2)^2 + (b1-b2)^2) to get a diff and then compare that with the tolerance.
I helped write a library called colorific to detect a colour palette given an image. You might find it interesting. https://github.com/99designs/colorific
Have a look at the WCAG contrast ratio and luminance functions to gauge similarities/differences between colors. If you are looking to extract a theme those formulas are gold!
What sort of hashing/tolerance are you using for grouping? Using the above you can specify a tolerance level, and use sqrt((r1-r2)^2 + (g1-g2)^2 + (b1-b2)^2) to get a diff and then compare that with the tolerance.