--use of ClusterItem as the template argument for KMeansClustering
--use mean normalization to normalize the data items marshalled from ContourRepresentativePoint
--during clustering, if there is an empty cluster, then re-initalize that cluster centroid with the data item that has currently the largest error, which is the suggested practice
--weighted distance calculation of centroids, more weight given to the hue component