美文网首页
C#:SIFT特征匹配

C#:SIFT特征匹配

作者: 大龙10 | 来源:发表于2024-02-24 12:17 被阅读0次

    一、SIFT算法

    • SURF算法是SIFT算法的加速版, 而SIFT(尺度不变特征转换, ScaleInvariant Feature Transform) 是另一种著名的尺度不变特征检测法。
      我们知道,SURF相对于SIFT而言,特征点检测的速度有着极大的提升,所以在一些实时视频流物体匹配上有着很强的应用。
      而SIFT因为其巨大的特征计算量而使得特征点提取的过程异常花费时间,所以在一些注重速度的场合难有应用场景。
    • 但是SIFT相对于SURF的优点就是,由于SIFT基于浮点内核计算特征点,因此通常认为, SIFT算法检测的特征在空间和尺度上定位更加精确,所以在要求匹配极度精准且不考虑匹配速度的场合可以考虑使用SIFT算法。

    二、程序

           private void button4_Click(object sender, EventArgs e)
            {
                // 创建检测器
                int minHessian = 400;
                var MySift = OpenCvSharp.XFeatures2D.SIFT.Create(minHessian);
    
                Mat descriptors1 = new Mat();
                Mat descriptors2 = new Mat();
    
    
                // 计算描述符(特征向量)
                KeyPoint[] keyPoint1, keyPoint2;
                MySift.DetectAndCompute(srcImage1, null, out keyPoint1, descriptors1);
                MySift.DetectAndCompute(srcImage2, null, out keyPoint2, descriptors2);
    
                // 使用BruteForce进行匹配
                // 创建特征点匹配器
                BFMatcher matcher = new BFMatcher();
                // 匹配两幅图中的描述子(descriptors)
                DMatch[] matches = matcher.Match(descriptors1, descriptors2);
    
                //【6】绘制从两个图像中匹配出的关键点
                Mat imgMatches = new Mat();
                Cv2.DrawMatches(srcImage1, keyPoint1, srcImage2, keyPoint2, matches, imgMatches);//进行绘制
                // 显示最终的匹配图像
                Cv2.ImShow("SIFT匹配", imgMatches);
            }
    

    三、结果

    四、资料

    亦陈不染的博客:
    https://blog.csdn.net/m0_55074196/article/details/134181416
    

    相关文章

      网友评论

          本文标题:C#:SIFT特征匹配

          本文链接:https://www.haomeiwen.com/subject/azqnadtx.html