Şu anda görsel özellik eşleşmesi için OpenCV tarafından sağlanan birkaç özellik dedektörü ile çalışıyorum ve performansını karşılaştırıyorum.
SIFT tanımlayıcıları kullanıyorum . MSER ve DoG (SIFT) özelliklerini tespit ederken tatmin edici eşleştirme (kötü eşleşmeleri reddettikten sonra) gerçekleştirdim .
Şu anda, bir karşılaştırma elde etmek için kodumu GFTT (Track - Harris köşelerinde iyi özellikler) ile test ediyorum ve ayrıca son uygulamada, görsel özellik izleme işleminden bir dizi GFTT özelliği sunulacak.
Ben tespit özellikleri / anahtar noktaları / ilgi alanları ile dolu cv::FeatureDetector::detect(...)
bir bana sağlayan kullanıyorum . Yapı , özelliğin konumu hakkında temel bilgilerin yanı sıra , kilit noktanın algılandığı ve içinde bulunduğu bilgiler içerir.std::vector<cv::KeyPoint>
cv::KeyPoint
size
octave
GFTT ile ilk sonuçlarım , farklı özellik türlerindeki tipik size
ve octave
parametreleri karşılaştırana kadar korkunçtu :
- MSER boyutu (10 ile 40 piksel arasında) ayarlar ve oktavı 0 olarak bırakır
- DoG (SIFT) hem boyutu hem de oktavı ayarlar ( boyut / oktav oranı 20 ile 40 arasında)
- GFTT parametreleri daima : size = 3 , octave = 0
Bunun nedeni, GFTT özelliklerinin temel amacının eşleştirme değil, yalnızca izleme için kullanılması gerektiğidir. Bu, eşleşen sonuçların düşük kalitesini açıklar, çünkü bu tür küçük özelliklerden çıkarılan tanımlayıcılar , küçük, 1 piksel kaymaları da dahil olmak üzere birçok şeye ayrımcı ve değişmez olmayı bırakır .
El ile ayarlanırsa size
ait GFTT için 10 - 12 , ben kullanırken çok benzer iyi sonuçlar almak Mser veya köpek (SIFT) .
Benim sorum şudur: Eğer işe yarıyorsa 10 ile gitmekten daha fazla size
(ve / veya octave
) artırmanın daha iyi bir yolu var mı? Mümkünse artışı kodlamaktan kaçınmak ve programlı olarak belirlemek istiyorum , ancak yeni / artış / tahmin algoritması seçimlerimi yedekleyen bazı sağlam argümanlara sahip olduğum sürece kodlama tamam .size
size
size
size