Я читаю изображения из набора и извлекаю их особенности. Тем не менее, для некоторых изображений (очень мало, около 4 на тысячу), SiftFeatureDetector::detect( image, keypoints)
не может обнаружить ключевые точки и возвращает мне пустой набор ключевых точек. Когда я пытался с SurfFeatureDetector::detect( image, keypoints)
, он обнаруживает ключевые моменты.
Вот код:
query = imread( it->path().string());
/* Here, I resize the image in proportion so that its longest side will be 400*/
cvtColor( query, query_gray, CV_RGB2GRAY);
SiftFeatureDetector feature_detector;
vector<KeyPoint> query_kp;
feature_detector.detect( query_gray, query_kp);
// check whether KeyPoints are detected
if( !query_kp.size())
{
cerr << "KeyPoints couldn't be detected. Image " << it->path() << " is skipped." << endl;
++cantDetecteds;
waitKey(0);
continue;
}
В чем причина этого? Может кто-нибудь объяснить, пожалуйста?
Благодарю.
РЕДАКТИРОВАТЬ: Surf также не может обнаружить некоторые ключевые точки, около 2 промилле.
Задача ещё не решена.
Других решений пока нет …