资源简介
sift算法提取特征点进行特征点匹配,用RANSAC(随机采样一致性)方法剔除误匹配特征点,有图形显示,需配置openCV
代码片段和文件信息
/*
*@function SiftDetect.cpp
*@brief 对sift特征检测和匹配进行测试,并实现RANSAC算法进行过滤错配点
*@author ltc
*@date 11:20 Saturday,28 November,2015
*/
#include
#include
#include
using namespace std;
using namespace cv;
//RANSAC算法
vector ransac(vector matchesvector queryKeyPointvector trainKeyPoint);
int main(int argcchar* argv[])
{
//图像读取
Mat img1img2;
img1=imread(“D:\\picture\\001_L.png“CV_WINDOW_AUTOSIZE);
img2=imread(“D:\\picture\\002_R.png“CV_WINDOW_AUTOSIZE);
if(img1.empty()||img2.empty())
{
return -1;
}
//sift特征提取
SiftFeatureDetector detector;
vector keyPoint1keyPoint2;
detector.detect(img1keyPoint1);
detector.detect(img2keyPoint2);
//cout<<“Number of KeyPoint1:“< //cout<<“Number of KeyPoint2:“<
//sift特征描述子计算
SiftDescriptorExtractor desExtractor;
Mat des1des2;
desExtractor.compute(img1keyPoint1des1);
desExtractor.compute(img2keyPoint2des2);
//sift特征点(描述子)匹配
Mat res1res2;
// drawKeypoints(img1keyPoint1res1Scalar::all(-1)/*DrawMatchesFlags::DRAW_RICH_KEYPOINTS*/DrawMatchesFlags::DEFAULT);
// drawKeypoints(img2keyPoint2res2Scalar::all(-1)/*DrawMatchesFlags::DRAW_RICH_KEYPOINTS*/DrawMatchesFlags::DEFAULT);
BFMatcher matcher(NORM_L2);
FlannbasedMatcher matcher_flann;
vector matches;
vector> matches_knn;
matcher.match(des1des2matches);
matcher.knnMatch(des1des2matches_knn2);
// cout<<“matches_knn.size:“<
//sift特征最近距离与次近距离之比小于0.6视为正确匹配
vector match_knn;
for(int i=0;i {
float ratio=matches_knn[i][0].distance/matches_knn[i][1].distance;
if(ratio<0.6)
{
match_knn.push_back(matches_knn[i][0]);
}
}
// matcher_flann.match(des1des2matches_flann);
//for(int i=0;i //{
// cout<<“第“< // cout<<“queryIdx:“< // cout<<“imgIdx:“< //}
//cout<<“Number of matches:“< //cout<<“Number of matches_flann:“<
vector matches_ransac=ransac(matcheskeyPoint1keyPoint2);
Mat img_matchimg_match_flann;
drawMatches(img1keyPoint1img2keyPoint2matches_ransacimg_match);
drawMatches(img1keyPoint1img2keyPoint2match_knnimg_match_flann);
imshow(“img_match“img_match);
imshow(“img_match_flann“img_match_flann)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 156160 2018-05-04 15:59 SIFT_RANSAC\Debug\SIFT_RANSAC.exe
文件 2011344 2018-05-04 15:59 SIFT_RANSAC\Debug\SIFT_RANSAC.ilk
文件 2477056 2018-05-04 15:59 SIFT_RANSAC\Debug\SIFT_RANSAC.pdb
文件 666 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\cl.command.1.tlog
文件 18190 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\CL.read.1.tlog
文件 420 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\CL.write.1.tlog
文件 2 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 2 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 2 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 2 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 2110 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 5084 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 542 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\li
文件 700704 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\main.obj
文件 76 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.lastbuildstate
文件 2290 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\SIFT_RANSAC.log
文件 625664 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\vc110.idb
文件 1429504 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug\vc110.pdb
文件 4926 2018-05-04 16:09 SIFT_RANSAC\SIFT_RANSAC\main.cpp
文件 4115 2018-05-04 15:22 SIFT_RANSAC\SIFT_RANSAC\SIFT_RANSAC.vcxproj
文件 942 2018-05-04 15:21 SIFT_RANSAC\SIFT_RANSAC\SIFT_RANSAC.vcxproj.filters
文件 14680064 2018-05-04 16:09 SIFT_RANSAC\SIFT_RANSAC.sdf
文件 900 2018-05-04 15:21 SIFT_RANSAC\SIFT_RANSAC.sln
..A..H. 20992 2018-05-04 16:09 SIFT_RANSAC\SIFT_RANSAC.v11.suo
目录 0 2018-05-04 15:59 SIFT_RANSAC\SIFT_RANSAC\Debug
目录 0 2018-05-04 15:22 SIFT_RANSAC\Debug
目录 0 2018-05-04 15:21 SIFT_RANSAC\SIFT_RANSAC
目录 0 2018-05-04 15:21 SIFT_RANSAC
----------- --------- ---------- ----- ----
22141757 28
............此处省略1个文件信息
- 上一篇:Mapinfo在线地图工具V1.4.1
- 下一篇:FANUC 地址说明
评论
共有 条评论