public void CreateCurrent() { // arrange PointF center = new PointF(3, 2); SizeF size = new SizeF(4, 5); Size gridSize = new Size(4, 2); SizeF gridPadding = new SizeF(1, 1); IMedianFlowTrackerBoundingBox bb = new MedianFlowTrackerBoundingBox( center, size, gridSize, gridPadding ); // define expected PointF expectedCenter = new PointF(5.5f, 3.5f); SizeF expectedSize = new SizeF(6, 7.5f); Size expectedGridSize = gridSize; SizeF expectedGridPadding = gridPadding; // get actual IMedianFlowTrackerBoundingBox IactualBB = bb.CreateCurrent(2.5f, 1.5f, 1.5f); MedianFlowTrackerBoundingBox actualBB = IactualBB as MedianFlowTrackerBoundingBox; // assert Assert.AreEqual(expectedCenter, actualBB.Center); Assert.AreEqual(expectedSize, actualBB.Size); Assert.AreEqual(expectedGridSize, actualBB.GridSize); Assert.AreEqual(expectedGridPadding, actualBB.GridPadding); }
private static MedianFlowTracker LoadTracker() { MedianFlowTrackerBoundingBox bb = LoadBoundingBox(); LucasKanadeTracker lkTracker = LoadLucasKanade(); // fb error calculator MedianFlowTracker.FBError_Calculator fbErrorCalc = Service.FBError; // ncc calculator MedianFlowTracker.NCC_Calculator nccCalc = Service.NCC; // patch size Size patchSize = new Size(8, 8); // mad treshold float madTreshold = 10; return(new MedianFlowTracker ( bb, lkTracker, fbErrorCalc, nccCalc, patchSize, madTreshold )); }
/// <summary> /// Instatiates a ready-to-go median flow tracker. /// All of its initial configuration is done here. /// </summary> private void InstantiateTracker() { // grid bounding box _gridBb = new MedianFlowTrackerBoundingBox ( new Size(10, 10), new SizeF(5, 5) ); // lucas kanade tracker _lkTracker = new LucasKanadeTracker( new Size(11, 11), 2, new MCvTermCriteria(20, 0.03), LKFLOW_TYPE.DEFAULT, LKFLOW_TYPE.CV_LKFLOW_PYR_A_READY | LKFLOW_TYPE.CV_LKFLOW_PYR_B_READY ); // fb error and ncc calculators _fbErrorCalc = Service.FBError; _nccCalc = Service.NCC; // patch size for calculating NCC _patchSize = new Size(11, 11); // MAD treshold _madTrashold = 10; // ** instantiate the median flow tracker ** _tracker = new MedianFlowTracker( _gridBb, _lkTracker, _fbErrorCalc, _nccCalc, _patchSize, _madTrashold ); // initial frame _initialFrame = new Image <Gray, byte>(Path.Combine(_resourceDir, "violeta_5.jpg")); // initial bounding box _initialBB = new BoundingBox( new PointF(90, 81), new SizeF(70, 40) ); // ** initialize the median flow tracker ** _tracker.Initialize(_initialFrame, _initialBB); }
public void GetGrid_NonUniformSpacing() { // arrange MedianFlowTrackerBoundingBox box = new MedianFlowTrackerBoundingBox(new SizeF(4, 2)); // define expected PointF[,] expected = new PointF[, ] { { new PointF(0.0f, 0.0f), new PointF(3.0f, 0.0f) }, { new PointF(0.0f, 1.0f), new PointF(3.0f, 1.0f) } }; // get actual PointF[,] actual = box.GetGrid(new Size(2, 2), new SizeF(0.0f, 0.0f)); // assert Assert.IsTrue(CompareGrids(expected, actual)); }
public void GetVisibleGridPoints_Padding() { // arrange IMedianFlowTrackerBoundingBox bb = new MedianFlowTrackerBoundingBox ( new PointF(2.5f, 3), new SizeF(3, 2), // bb is not square new Size(2, 2), // there are 4 grid points new SizeF(1, 0.5f) // padding, different for horizontal and vertical ); // define expected PointF[] expectedPoints = { new PointF(2, 2.5f), new PointF(3, 2.5f), new PointF(2, 3.5f), new PointF(3, 3.5f) }; // get actual PointF[] actualPoints = bb.GetGridPoints(); // assert CollectionAssert.AreEqual(expectedPoints, actualPoints); }
public void GetVisibleGridPoints_Simple() { // arrange IMedianFlowTrackerBoundingBox bb = new MedianFlowTrackerBoundingBox ( new PointF(2.5f, 3), new SizeF(3, 2), // bb is not square new Size(2, 2), // there are 4 grid points new SizeF(0, 0) ); // define expected PointF[] expectedPoints = { new PointF(1, 2), new PointF(4, 2), new PointF(1, 4), new PointF(4, 4) }; // get actual PointF[] actualPoints = bb.GetGridPoints(); // assert CollectionAssert.AreEqual(expectedPoints, actualPoints); }