/// <summary> /// Compute the image digest for an image given the input image /// </summary> /// <param name="image">CImg object representing an input image</param> /// <param name="sigma">double value for the deviation for a gaussian filter function</param> /// <param name="gamma">double value for gamma correction on the input image</param> /// <param name="numberOfAngles">int value for the number of angles to consider.</param> /// <returns></returns> public static Digest ComputeDigest(IByteImage image, float sigma = DEFAULT_SIGMA, float gamma = DEFAULT_GAMMA, int numberOfAngles = DEFAULT_NUMBER_OF_ANGLES) { FloatImage blurred = image.Blur(sigma); blurred.DivideInplace(blurred.Max()); blurred.ApplyGamma(gamma); Projections projs = FindRadonProjections(blurred, numberOfAngles); float[] features = ComputeFeatureVector(projs); return(ComputeDct(features)); }