public override int ProcessImages(List <ImageData> images, out double[][] inputs, out int[] outputs) { outputs = new int[images.Count]; inputs = new double[images.Count][]; var imageData = new List <Bitmap>(); foreach (var image in images) { using (var stream = new MemoryStream(image.Image)) { imageData.Add(new Bitmap(stream)); } } var converter = new CornerFeaturesDetector(_detector); _bagOfVisualWords = new BagOfVisualWords <CornerFeaturePoint>(converter, NumberOfWords); _bagOfVisualWords.Compute(imageData.ToArray()); for (var i = 0; i < images.Count; i++) { inputs[i] = _bagOfVisualWords.GetFeatureVector(imageData[i]); outputs[i] = Utilities.GetIntFromClass(images[i].Type); } return(images.Count); }
public void BagOfVisualWordsConstructorTest3() { Accord.Math.Random.Generator.Seed = 0; var images = GetImages(); MoravecCornersDetector moravec = new MoravecCornersDetector(); CornerFeaturesDetector detector = new CornerFeaturesDetector(moravec); var bow = new BagOfVisualWords <CornerFeaturePoint>(detector, numberOfWords: 10); bow.ParallelOptions.MaxDegreeOfParallelism = 1; #pragma warning disable 612, 618 var points = bow.Compute(images, 1e-3); #pragma warning restore 612, 618 double[] vector = bow.GetFeatureVector(images[0]); Assert.AreEqual(10, bow.NumberOfWords); Assert.AreEqual(6, points.Length); Assert.AreEqual(10, vector.Length); Assert.AreEqual(2800, points[0].Count); Assert.AreEqual(4532, points[1].Count); Assert.AreEqual(2282, points[2].Count); Assert.AreEqual(1173, points[3].Count); Assert.AreEqual(4860, points[4].Count); Assert.AreEqual(5730, points[5].Count); Assert.AreEqual(596, points[0][0].Descriptor[0]); Assert.AreEqual(51, points[0][0].Descriptor[1]); Assert.AreEqual(points[0][0].Descriptor[0], points[0][0].X); Assert.AreEqual(points[0][0].Descriptor[1], points[0][0].Y); Assert.AreEqual(461, points[3][7].Descriptor[0]); Assert.AreEqual(8, points[2][3].Descriptor[1]); Assert.AreEqual(991, points[2][52].Descriptor[0]); Assert.AreEqual(82, points[1][11].Descriptor[1]); Assert.AreEqual(430, points[0][42].Descriptor[0]); Assert.AreEqual(135, points[4][125].Descriptor[1]); }
public void BagOfVisualWordsConstructorTest3() { MoravecCornersDetector moravec = new MoravecCornersDetector(); CornerFeaturesDetector detector = new CornerFeaturesDetector(moravec); var bow = new BagOfVisualWords <CornerFeaturePoint>(detector, numberOfWords: 10); var points = bow.Compute(images, 1e-3); double[] vector = bow.GetFeatureVector(images[0]); Assert.AreEqual(10, bow.NumberOfWords); Assert.AreEqual(6, points.Length); Assert.AreEqual(10, vector.Length); Assert.AreEqual(2800, points[0].Count); Assert.AreEqual(4532, points[1].Count); Assert.AreEqual(2282, points[2].Count); Assert.AreEqual(1173, points[3].Count); Assert.AreEqual(4860, points[4].Count); Assert.AreEqual(5730, points[5].Count); Assert.AreEqual(596, points[0][0].Descriptor[0]); Assert.AreEqual(51, points[0][0].Descriptor[1]); Assert.AreEqual(points[0][0].Descriptor[0], points[0][0].X); Assert.AreEqual(points[0][0].Descriptor[1], points[0][0].Y); Assert.AreEqual(461, points[3][7].Descriptor[0]); Assert.AreEqual(8, points[2][3].Descriptor[1]); Assert.AreEqual(991, points[2][52].Descriptor[0]); Assert.AreEqual(82, points[1][11].Descriptor[1]); Assert.AreEqual(430, points[0][42].Descriptor[0]); Assert.AreEqual(135, points[4][125].Descriptor[1]); }
public void BagOfVisualWordsConstructorTest3() { MoravecCornersDetector moravec = new MoravecCornersDetector(); CornerFeaturesDetector detector = new CornerFeaturesDetector(moravec); var bow = new BagOfVisualWords<CornerFeaturePoint>(detector, numberOfWords: 10); var points = bow.Compute(images, 1e-3); double[] vector = bow.GetFeatureVector(images[0]); Assert.AreEqual(10, bow.NumberOfWords); Assert.AreEqual(6, points.Length); Assert.AreEqual(10, vector.Length); Assert.AreEqual(2800, points[0].Count); Assert.AreEqual(4532, points[1].Count); Assert.AreEqual(2282, points[2].Count); Assert.AreEqual(1173, points[3].Count); Assert.AreEqual(4860, points[4].Count); Assert.AreEqual(5730, points[5].Count); Assert.AreEqual(596, points[0][0].Descriptor[0]); Assert.AreEqual(51, points[0][0].Descriptor[1]); Assert.AreEqual(points[0][0].Descriptor[0], points[0][0].X); Assert.AreEqual(points[0][0].Descriptor[1], points[0][0].Y); Assert.AreEqual(461, points[3][7].Descriptor[0]); Assert.AreEqual(8, points[2][3].Descriptor[1]); Assert.AreEqual(991, points[2][52].Descriptor[0]); Assert.AreEqual(82, points[1][11].Descriptor[1]); Assert.AreEqual(430, points[0][42].Descriptor[0]); Assert.AreEqual(135, points[4][125].Descriptor[1]); }