internal TicoFeatures(IReadOnlyList <Minutia> minutiae, OrientationImage dImg) { Minutiae = new List <MinutiaDescriptor>(minutiae.Count); for (short i = 0; i < minutiae.Count; i++) { var mtiaDescriptor = new MinutiaDescriptor(minutiae[i], dImg); Minutiae.Add(mtiaDescriptor); } }
internal double Compare(MinutiaDescriptor mtiaDesc) { double sum = 0; for (var i = 0; i < 72; i++) { var or1 = Orientations[i]; var or2 = mtiaDesc.Orientations[i]; if (!double.IsNaN(or1) && !double.IsNaN(or2)) { var diffOr = Math.Abs(or1 - or2); var difAng = 2 / Math.PI * diffOr; sum += Math.Exp(-16 * difAng); } } return(sum / 72); }