/// <summary> /// Returns the sum squared difference between this hash and the other hash. /// </summary> /// <param name="other">The <see cref="ChannelPerceptualHash"/> to get the distance of.</param> /// <returns>The sum squared difference between this hash and the other hash.</returns> public double SumSquaredDistance(IChannelPerceptualHash other) { Throw.IfNull(nameof(other), other); var ssd = 0.0; for (int i = 0; i < 7; i++) { ssd += (_srgbHuPhash[i] - other.SrgbHuPhash(i)) * (_srgbHuPhash[i] - other.SrgbHuPhash(i)); ssd += (_hclpHuPhash[i] - other.HclpHuPhash(i)) * (_hclpHuPhash[i] - other.HclpHuPhash(i)); } return(ssd); }
private void TestChannel(IChannelPerceptualHash channel, int index, double srgbHuPhashWithOpenCL, double srgbHuPhashWithoutOpenCL, double hclpHuPhashWithOpenCL, double hclpHuPhashWithoutOpenCL) { OpenCLValue.Assert(srgbHuPhashWithOpenCL, srgbHuPhashWithoutOpenCL, channel.SrgbHuPhash(index), 0.0001); OpenCLValue.Assert(hclpHuPhashWithOpenCL, hclpHuPhashWithoutOpenCL, channel.HclpHuPhash(index), 0.0001); }