如何匹配两幅图像的EMGU CV SIFT关键点

本文关键字:EMGU CV SIFT 关键点 图像 两幅 何匹配 | 更新日期: 2023-09-27 18:02:07

我想在SIFT关键点的基础上匹配两张图片。

我有以下代码的SIFT

public static Image<Bgr, Byte> siftFunction(Bitmap sourceBitmap)
    {
        Image<Gray, Byte> modelImage = new Image<Gray, byte>(sourceBitmap);
        SIFTDetector siftCPU = new SIFTDetector();
        VectorOfKeyPoint modelKeyPoints = new VectorOfKeyPoint();
        MKeyPoint[] mKeyPoints = siftCPU.DetectKeyPoints(modelImage, null);
        modelKeyPoints.Push(mKeyPoints);
        ImageFeature<float>[] reulst = siftCPU.ComputeDescriptors(modelImage, null, mKeyPoints);
        Image<Bgr, Byte> result = Features2DToolbox.DrawKeypoints(modelImage, modelKeyPoints, new Bgr(Color.Red), Features2DToolbox.KeypointDrawType.DEFAULT);
        return result;
    }

如何匹配两幅图像的EMGU CV SIFT关键点

一个解决方案是使用提供的对象检测示例,然后比较检测的区域。如果整个观察图像与模型图像对应-您的图像匹配。

其他解决方案-完全不使用描述符,只选择关键点。然后比较两张图片的关键点数组,如果相等,则认为图片是匹配的。

第一个解决方案在某种程度上更可靠,而第二个解决方案更快更容易。