How can I split in color classes, the pixels of an image that I load in Mathematica?

I would an output like this: 

    <Class1Name> 50% 
    <Class2Name> 30% 
    <Class3Name> 20%

The percentages refere to the amount of pixels of the image that are into that colour class.

The definition of the classes would be something like this: `<Class1Name>` = All pixels that are into a RGB range of colours (for example from a dark green to a light green)

I have tried a code like this:

    Image[{List@@@DominantColors[<imagefile>, n]}, ImageSize -> 300]

But I don't know how to split the output in classes. By encreasing the value of $n$ I will have a better precision right? I would love also a plot of the normal distribution of the pixels, where in the $x$ axis lie the names of the classes and on the $y$ axis a normalized scale that go from 0 to 1. So the plot should look similar to this:

![enter image description here][1]


  [1]: https://i.sstatic.net/mqN8d.png


If is possible I would execute the computation of all this on the GPU or on both the CPU and GPU togheter, I would like to chose between an OpenCL and CUDA version of the code and if is not possible I would have a code optimized to perform the computation among all cores an threads of my CPU.