Ejemplo n.º 1
0
        private Int64 GetColorBucketIndex(Color color)
        {
            Single normalizedDistance = 0.0f;
            Single componentA, componentB, componentC;

            switch (ColorModel)
            {
            case ColorModel.RedGreenBlue: normalizedDistance = NormalizedDistanceRGB; break;

            case ColorModel.HueSaturationLuminance: normalizedDistance = NormalizedDistanceHSL; break;

            case ColorModel.LabColorSpace: normalizedDistance = NormalizedDistanceLab; break;
            }

            ColorModelHelper.GetColorComponents(ColorModel, color, out componentA, out componentB, out componentC);
            Single distance   = componentA * componentA + componentB * componentB + componentC * componentC;
            Single normalized = distance * normalizedDistance * MaximalDistance;
            Int64  resultHash = (Int64)normalized / bucketSize;

            return(resultHash);
        }