[英]Surf feature Extraction
Objective: match blobs by using Surf descriptors
and opencv 2.4.9
library. 目标:通过使用
Surf descriptors
和opencv 2.4.9
库来匹配blob。
Algorithm: based on the following link: Steps 算法:基于以下链接: 步骤
#include <stdio.h>
#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/nonfree/features2d.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/nonfree/nonfree.hpp"
using namespace cv;
void readme();
/** @function main */
int main( int argc, char** argv )
{
if( argc != 3 )
{ readme(); return -1; }
Mat img_1 = imread( argv[1], CV_LOAD_IMAGE_GRAYSCALE );
Mat img_2 = imread( argv[2], CV_LOAD_IMAGE_GRAYSCALE );
if( !img_1.data || !img_2.data )
{ std::cout<< " --(!) Error reading images " << std::endl; return -1; }
//-- Step 1: Detect the keypoints using SURF Detector
int minHessian = 400;
SurfFeatureDetector detector( minHessian );
std::vector<KeyPoint> keypoints_1, keypoints_2;
detector.detect( img_1, keypoints_1 );
detector.detect( img_2, keypoints_2 );
//-- Draw keypoints
Mat img_keypoints_1; Mat img_keypoints_2;
drawKeypoints( img_1, keypoints_1, img_keypoints_1, Scalar::all(-1), DrawMatchesFlags::DEFAULT );
drawKeypoints( img_2, keypoints_2, img_keypoints_2, Scalar::all(-1), DrawMatchesFlags::DEFAULT );
//-- Show detected (drawn) keypoints
imshow("Keypoints 1", img_keypoints_1 );
imshow("Keypoints 2", img_keypoints_2 );
waitKey(0);
return 0;
}
/** @function readme */
void readme()
{ std::cout << " Usage: ./SURF_detector <img1> <img2>" << std::endl; }
Results for keypoints detection: In the following image the number of keypoints is very high and not many are important. 关键点检测的结果:在下图中,关键点的数量非常多,但并不重要。 How can I select the best sub-set of keypoints that best describe a blob.
如何选择最能描述斑点的最佳关键点子集。 Is there a better way other than Surf?
除了冲浪,还有其他更好的方法吗? These Blobs are binary
这些Blob是二进制的
A higher minHessian
will yield fewer KeyPoints. 较高的
minHessian
将产生较少的KeyPoint。
It is hard to tell from the images what are the two input images you are trying to match and what exactly is your goal (will matching the "Vo" of "Vos.." with that of "Votre..." be a success or a failure? 很难从图像中分辨出您要匹配的两个输入图像是什么,以及您的目标到底是什么(将“ Vos ..”的“ Vo”与“ Votre ...”的“ Vo”匹配将是成功的)还是失败?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.