Is there any formula or correction values for r, g, b channels, that takes into account **visual perception** of color and will allow me to adjust generated colors to be more pleasant while keeping them on approximately same level of saturation and lightness?

I'm using "vibrant.js" library to pick colors from images and use them in my app's interface. I pick two colors "darkMuted" and "vibrant" - one for the background areas and one as an accent color for controls.

After plugin returns the colors, I adjust them slightly, to ensure they work well together and have enough contrast. Basically, for the "darkMuted" color I'm setting saturation and lightness equal to 0.2. For the "vibrant" color I'm using the saturation of 0.8 and the lightness of 0.6. 

However, while giving good results on the average, this approach lacks the adjustment for the subjective perception of color. As you may know a couple of colors with different hues and same "s" and "l" values could be percieved differently: one as a pleasant color and another as an acid'ish, "my eyes are bleeding" color (especially with the green and purple hues).

Is it possible to receive colors with an equal visual perception using this kind of approach? Or, maybe, there are better ways of doing the same?

UPDATE: As far as I know Google using color picking from the image in their Android music app. How do they know that picked colors work well together and visually pleasing?

UPDATE 2: By this [link][1] you can find screenshots of the image and picked color pairs. I've added pairs of screenshots to show you the difference between "original" color pair returned by "vibrant.js" and colors with adjusted s and l values.

Thank you in advace!


  [1]: https://www.dropbox.com/sh/fhd5xuzcyerd5fc/AAAjI4DLBoa9apelMSkWcuuta?dl=0