KNN algoritması tarafından K en yakın eşleşmeleri bulduğu bir kod yazdım. MatMatch ve matchIndices'i aldıktan sonra, iki sonuç karesi arasındaki eşleşme çiftlerini çizmeye çalıştım.KNN tarafından görüntü tarafından hesaplanan resim eşleştirmeleri ve olası hata, Features2DToolbox.DrawMatches
ben işlevi içine Features2DToolbox.DrawMatchesmatMask ve matchIndices beslemek:
Image<Bgr, byte> imResult = Features2DToolbox.DrawMatches(imModelCurr, imModel.keyPoints, imObserPrev,imObser.keyPoints, **matchIndices**, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red), **matMask**, Features2DToolbox.KeypointDrawType.NOT_DRAW_SINGLE_POINTS);
http://www.emgu.com/wiki/files/2.4.0/document/html/e92d37e6-fe4a-ad09-9304-cd2d2533bfa8.htm ama beni eşleşen çiftler arasında geriye yanlış çizim verir fark:
O zaman böyle bir fonksiyonu uygulamaya çalıştım başıma N:
for (int i = 0; i < matMask.Rows; ++i)
{
if (**matMask[i, 0]** > 0)
{
int indForCurrFrm = **matchIndices[i, 0]**;
int indForPrevFrm = i;
//for frame i-1
PointF fromFirstFrame = getImgObserved(keyPoints[indForPrevFrm]);
//for frame i
PointF NextCorrespondingMatchedFrame = getImModelXY(keyPoints[indForCurrFrm]);
imColorPrv2.Draw(new CircleF(fromFirstFrame, 5), new Bgr(mtchColor), 3);// for frame i-1
imColorShow.Draw(new CircleF(NextCorrespondingMatchedFrame, 5), new Bgr(mtchColor), 3); // for frame i
// draw line on my own matching
imResult.Draw(new LineSegment2DF(fromFirstFrame,NextCorrespondingMatchedFrame),new Bgr(System.Drawing.Color.FloralWhite),1);
}
}
ve karşılık gelen bir çift nokta koordinatları (x, y) almak ve başıma çizin [bir anlık sonuçları bakınız].
Sol altta, (beyaz çizgiyle gösterilen) eşleşmeleri ve her bir eşyi aynı renkteki bir daireyle [kendi İşlevim] ve diğer sağ altta görebiliyordunuz. DrawMatches işlevi Emgu'dan çalışır. Bu iki fonksiyonun aynı matMash ve matchIndices kullanmasına dikkat edin.
EMGU’da DrawMatches’in hata yapıp yapmadığını mı yoksa yanlış bir yerde mi çalıştığımı merak ediyordum.
10 gibi, daha az puan çizdirmek Lütfen, satırları analiz etmek mümkün değildir. BTW, kırmızı noktanın algoritma tarafından tanınmaması tuhaf. – Pedro77