A series of histograms were created from the training data, following a per-pixel RGB to HSV conversion. First, the hue angle densities were computed, shown in Figure 5, displaying excellent segmentation possibilities. Doc's beard isn't included in these graphs as it was determined to be pure white. A histogram depicting saturation density reveals the purity of the colors in each region, displayed in Figure 6. Notably, Doc's skin colors are observed to have low saturation values. The density of value, or intensity, as shown in Figure 7, appears to be nearly uncorrelated to the training data.
A 2-dimensional plot was constructed by creating 2D feature vectors from the hue and saturation data for each pixel in the training color swatches. Figure 8 is a representation of these feature vectors, with hue angle defined along the X-axis and saturation defined along the Y-axis. It is clear from this plot that one can define regions which bound areas that belong to one section of Doc.
In Figure 9 a set of lines has been positioned to define these regions. Through a simple dot product operation, an algorithm can ascertain on which side of each line a test feature vector lies, and therefore whether or not the test feature vector lies in each region.
However, it was found that this means of segmenting colors resulted in rather poor separation of the Doc's skin from the background, shown in Figure 10. By ignoring value, or intensity, we have ignored one element which is crucial to successful classification of Doc's skin colors. Returning to Figure 7, one observes that Doc's skin has an intensity between eighty and one-hundred - even this rough constraint rejects 80% of the previously possible clutter.
A set of simple ranges over hue, saturation, and value was created for each of the four sections of Doc. Classifying each pixel in the recurring test image of Doc produces the result seen in Figure 11, in which each of Doc's parts has been successfully segmented from the clutter.