如何匹配两幅图像的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;
}
一个解决方案是使用提供的对象检测示例,然后比较检测的区域。如果整个观察图像与模型图像对应-您的图像匹配。
其他解决方案-完全不使用描述符,只选择关键点。然后比较两张图片的关键点数组,如果相等,则认为图片是匹配的。
第一个解决方案在某种程度上更可靠,而第二个解决方案更快更容易。