//ez internal, mert csak a Benchmark keszithet uj Resultokat internal Result(string signer, double frr, double far, double aer, ISignerModel model) { Signer = signer; Frr = frr; Far = far; Aer = aer; Model = model; }
/// <inheritdoc/> public double Test(ISignerModel signerModel, Signature signature) { // We are not doing real classification here, just reusing the previously calculated results var model = (OptimalDtwSignerModel)signerModel; var distance = model.SignatureDistanceFromTraining[signature.ID]; if (distance <= model.Threshold) { return(1); } else { return(0); } }
/// <inheridoc/> public double Test(ISignerModel model, Signature signature) { var dtwModel = (DtwSignerModel)model; var testSignature = signature.GetAggregateFeature(Features).ToArray(); var distances = new double[dtwModel.GenuineSignatures.Count]; for (int i = 0; i < dtwModel.GenuineSignatures.Count; i++) { distances[i] = DtwPy.Dtw(dtwModel.GenuineSignatures[i].Value, testSignature, DistanceFunction); dtwModel.DistanceMatrix[signature.ID, dtwModel.GenuineSignatures[i].Key] = distances[i]; } // returns value between 0 and 1, how confident is the decision about genuineness // 1 -> conident genuine, 0 -> not confident genuine = confident forged return(Math.Max(1 - (distances.Average() / dtwModel.Threshold) / 2, 0)); }