public void Run(Sketch originalSketch) { // Sketch transformedSketch = Normalize(originalSketch); SketchPair input = new SketchPair(originalSketch, transformedSketch); // List <Tuple <string, double> > results = new List <Tuple <string, double> >(); foreach (SketchPair template in myTemplates) { double distance1 = SketchTools.Distance(input.Transformed, template.Transformed); double distance2 = SketchTools.Distance(input.Transformed, template.Transformed); double distance = ToScore(Math.Min(distance1, distance2)); results.Add(new Tuple <string, double>(template.Transformed.Label, distance)); } results.Sort((x, y) => y.Item2.CompareTo(x.Item2)); // myLabels = new List <string>(); myScores = new List <double>(); for (int i = 0; i < results.Count; ++i) { string label = results[i].Item1; double score = results[i].Item2; myLabels.Add(label); myScores.Add(score); } }
private Sketch Normalize(Sketch original) { Sketch sketch = SketchTools.Clone(original); sketch = SketchTransformation.Resample(sketch, N); sketch = SketchTransformation.ScaleSquare(sketch, Size); sketch = SketchTransformation.TranslateCentroid(sketch, K); return(sketch); }
private async Task <List <Sketch> > ReadXml(string relativePath) { // initialize the list of sketches and path string root = Package.Current.InstalledLocation.Path; string path = root + relativePath; // get the list of files StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(path); List <Sketch> sketches = new List <Sketch>(); foreach (StorageFile file in await folder.GetFilesAsync()) { // case: file is an XML file if (file.Name.EndsWith(".xml")) { Sketch sketch = await SketchTools.XmlToSketch(file, PEN_DRAWING_ATTRIBUTES); sketches.Add(sketch); } } return(sketches); }