public FastBitmap GetImageWithDisplacement(FastBitmap currFrame, FastBitmap nextFrame, List<Point> edgePoints) { _nBytesPerPixel = currFrame.CCount; currFrame.LockBits(); nextFrame.LockBits(); byte[] currRgbValues = currFrame.Pixels; byte[] nextRgbValues = nextFrame.Pixels; Dictionary<Point, Point> displacements = new Dictionary<Point, Point>(); foreach (Point edgePoint in edgePoints) { int edgePointPos; List<Color> pointVicinity = GetPointVicinity(edgePoint, currRgbValues, currFrame.Width, currFrame.Height, currFrame.Stride, out edgePointPos); _brief = new BRIEF((POINT_WINDOW_SIDE + 1) * (POINT_WINDOW_SIDE + 1),edgePointPos); string vicinityDescriptor = _brief.GetImageDescriptor(pointVicinity); if (pointVicinity[edgePointPos] != Color.Black) { Point nextFramePoint = FindPointDiscplacement(edgePoint, nextRgbValues, nextFrame.Width, nextFrame.Height, vicinityDescriptor, nextFrame.Stride, pointVicinity[edgePointPos]); displacements.Add(edgePoint, nextFramePoint); } else displacements.Add(edgePoint,edgePoint); } currFrame.UnlockBits(); nextFrame.UnlockBits(); DrawDisplacement(currFrame, displacements); return currFrame; }
public ReturnImage GetImageWithDisplacement(FastBitmap currFrame, FastBitmap nextFrame, List<Point> edgePoints) { _nBytesPerPixel = currFrame.CCount; currFrame.LockBits(); nextFrame.LockBits(); byte[] currRgbValues = currFrame.Pixels; byte[] nextRgbValues = nextFrame.Pixels; ConcurrentDictionary<Point, Point> displacements = new ConcurrentDictionary<Point, Point>(); Parallel.ForEach(edgePoints, (edgePoint) => { int edgePointPos; List<Color> pointVicinity = GetPointVicinity(edgePoint, currRgbValues, currFrame.Width, currFrame.Height, currFrame.Stride, out edgePointPos); _brief = new BRIEF((POINT_WINDOW_SIDE + 1) * (POINT_WINDOW_SIDE + 1), edgePointPos); string vicinityDescriptor = _brief.GetImageDescriptor(pointVicinity); if (pointVicinity[edgePointPos] != Color.Black) { Point nextFramePoint = FindPointDiscplacement(edgePoint, nextRgbValues, nextFrame.Width, nextFrame.Height, vicinityDescriptor, nextFrame.Stride, pointVicinity[edgePointPos]); displacements.TryAdd(edgePoint, nextFramePoint); } else displacements.TryAdd(edgePoint, edgePoint); }); currFrame.UnlockBits(); nextFrame.UnlockBits(); Frame frame = GetFrameByChanell(currFrame, displacements); //frames.Add(); ReturnImage image = new ReturnImage(frame, currFrame); return image; }
public void SetFeatureDescriptor(object sender, EventArgs e) { var currentItem = sender as ToolStripComboBox; var enumItem = EnumExtension.ReturnEnumValue <EFeaturesDescriptor>(currentItem.SelectedItem.ToString()); IFeatureDescriptor tempItem = null; switch (enumItem) { case EFeaturesDescriptor.ORB: tempItem = new OrientedFastAndRotatedBrief(); break; case EFeaturesDescriptor.FAST: tempItem = new FAST(); break; case EFeaturesDescriptor.FREAK: tempItem = new FREAK(); break; case EFeaturesDescriptor.BRIEF: tempItem = new BRIEF(); break; case EFeaturesDescriptor.CudaORB: tempItem = new CudaOrientedFastAndRotatedBrief(); break; } _sfmManager._descriptor = tempItem; }
public BriefForm(BRIEF brief) { this._brief = brief; InitializeComponent(); InitializeStringForComponents(); }