Пример #1
0
        public Mat ComputeDescriptor(KeyPointModel keyPoints)
        {
            Mat result = new Mat();
            Mat image  = new Mat(keyPoints.InputFile.fileInfo.FullName);

            _brief.Compute(image, keyPoints.DetectedKeyPoints, result);
            return(result);
        }
        public Mat ComputeDescriptor(KeyPointModel keyPoints)
        {
            var cudaORB = CreateDetector();
            var mat     = new Mat(keyPoints.InputFile.fileInfo.FullName);
            Image <Gray, byte> image  = new Image <Gray, byte>(mat.Bitmap);
            GpuMat             gpumat = new GpuMat(image);

            GpuMat result = new GpuMat();

            cudaORB.Compute(gpumat, keyPoints.DetectedKeyPoints, result);
            var returnResult = result.ToMat();

            gpumat.Dispose();
            result.Dispose();
            cudaORB.Dispose();
            return(returnResult);
        }
Пример #3
0
        private void ComputeDescriptor(KeyPointModel keypoint, IFeatureDescriptor descriptor, bool AddToList = true, bool SaveOnDisk = true)
        {
            WindowsFormHelper.AddLogToConsole($"Start computing descriptor for: {keypoint.InputFile.fileInfo.Name.ToString()}\n");

            var computedDescriptor = descriptor.ComputeDescriptor(keypoint);
            var descriptorNode     = new DescriptorModel()
            {
                Descriptors = computedDescriptor,
                KeyPoint    = keypoint
            };

            WindowsFormHelper.AddLogToConsole($"FINISH computing descriptor for: {keypoint.InputFile.fileInfo.Name.ToString()}\n");


            if (AddToList)
            {
                ComputedDescriptors.Add(keypoint.ID, descriptorNode);
            }

            if (SaveOnDisk)
            {
                SaveSiftFile(descriptorNode);
            }
        }
Пример #4
0
 public static double GetTwoPointSlop(KeyPointModel start, KeyPointModel end)
 {
     return((end.y - start.y) / (end.x - start.x));
 }
Пример #5
0
 public static KeyPointModel GetTwoPointVector(KeyPointModel start, KeyPointModel end)
 {
     return(new KeyPointModel {
         x = end.x - start.x, y = end.y - start.y
     });
 }
Пример #6
0
 public static double GetTwoPointLength(KeyPointModel p1, KeyPointModel p2)
 {
     return(Math.Sqrt(Math.Pow(p1.x - p2.x, 2) + Math.Pow(p1.y - p2.y, 2)));
 }