2015-07-11 3 views
2

Я хочу, чтобы код соответствовал двум картинкам на основе ключевых точек SIFT.?Как сопоставить ключевые точки EMGU CV 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; 
    } 

ответ

0

одно решение заключается в использовании при условии пример обнаружения объекта, а затем сравнить область обнаружения. В случае, если все наблюдаемое изображение соответствует образцу модели - ваши изображения совпадают.

другое решение - не используйте дескрипторы вообще, а просто выберите ключевые точки. Затем сравните массивы ключевых точек двух изображений, и в случае равенства рассмотрите изображения, которые нужно сопоставить.

Первое решение как-то более надежное, а второе - быстрее и проще.

Смежные вопросы