コード例 #1
0
 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;
 }
コード例 #2
0
ファイル: LucasKanadeMethod.cs プロジェクト: HelShurova/MiSOI
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
ファイル: BriefForm.cs プロジェクト: SimonGaspar/FIIT-STU-BP
 public BriefForm(BRIEF brief)
 {
     this._brief = brief;
     InitializeComponent();
     InitializeStringForComponents();
 }