//记录提取的特征点及其数量 private void SetFeature(LoweFeatureDetector featureDetector) { NumOfFeature = featureDetector.GlobalKeypoints.Count; features = new Feature[NumOfFeature]; for (int i = 0; i < NumOfFeature; i++) { Keypoint keypoint = (Keypoint)featureDetector.GlobalKeypoints[i]; features[i] = new Feature(keypoint.Image, keypoint.X, keypoint.Y, keypoint.ImgScale, keypoint.Scale, keypoint.Orientation); features[i].CreateVector(4, 4, 8); features[i].HasFeatureVector = keypoint.HasFV; features[i].FeatureVector = keypoint.FV; } }
//使用sift算法提取特征点 public void SiftFeatures() { BasicImagingInterface picture = new DisplayImage("E:/SoftwareEngineering/LibrarySeatsManager/LibrarySeatsManager/b.jpg"); int pictureWidth = picture.Width; int pictureHeight = picture.Height; double startScale = 1.0;//图片之间的原始比例 ImageMap pictureMap = picture.ConvertToImageMap(null); picture = null; //对内存垃圾回收 GC.Collect(); LoweFeatureDetector featureDetector = new LoweFeatureDetector(); featureDetector.DetectFeatures(pictureMap); //记录提取的特征点及其数量 SetFeature(featureDetector); }