【opencv练习38 - SURF描述子】
2016-09-14 22:34
232 查看
SURF特征(speed up robust feature) 加速鲁棒特征
一种尺度不变特征检测器,其是SIFT(scale invariant feature transform 尺度不变特征变换)的高效变种算法。
特点:
1)运算速度快,实时性
2)尺度不变,稳定性
3)方向无关,稳定性
具体实现:
1.对每个像素计算Hessian矩阵
2….
3….
一种尺度不变特征检测器,其是SIFT(scale invariant feature transform 尺度不变特征变换)的高效变种算法。
特点:
1)运算速度快,实时性
2)尺度不变,稳定性
3)方向无关,稳定性
具体实现:
1.对每个像素计算Hessian矩阵
2….
3….
/******************************************************************* 测试程序 SURF描述子 时间:2016年9月5日 *******************************************************************/ void readme(); int main( void ) { Mat img_1 = imread( "1.jpg" , CV_LOAD_IMAGE_GRAYSCALE ); Mat img_2 = imread( "2.jpg" , CV_LOAD_IMAGE_GRAYSCALE ); if( !img_1.data || !img_2.data ) { cout<<"Step 000 OK"<<endl; return -1; } //Step 1: 使用SURF【检测子】,检测关键点 ************************************** 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 ); cout<<"Step 1 detect OK!!!"<<endl; //-- Step 2: 计算【描述子】(特征向量)************************************** SurfDescriptorExtractor extractor; Mat descriptors_1, descriptors_2; //检测(图像 + 点向量 --> 描述子) extractor.compute( img_1, keypoints_1, descriptors_1 ); extractor.compute( img_2, keypoints_2, descriptors_2 ); cout<<"Step 2 compute OK!!!"<<endl; //-- Step 3: 匹配描述子向量 with a brute force matcher ************************************** BFMatcher matcher(NORM_L2); std::vector< DMatch > matches; //检测(描述子1 + 描述子2 --> matches) matcher.match( descriptors_1, descriptors_2, matches ); cout<<"Step 3 match OK!!!"<<endl; //绘制匹配 -- Draw matches Mat img_matches; drawMatches( img_1, keypoints_1, img_2, keypoints_2, matches, img_matches ); //-- 图像1+关键点1 + 图像2+关键点2 + matches向量 ——> 合成输出图像 imshow("Matches", img_matches ); waitKey(0); return 0; } void readme() { std::cout << " Usage: ./SURF_descriptor <img1> <img2>" << std::endl; }
相关文章推荐
- 【opencv代码练习1】直方图均衡化
- 练习38
- 在OpenCV for Android 2.4.5中使用SURF(nonfree module)
- OpenCV学习二十八:findcontours以及drawcontours练习
- opencv3.3 SURF应用
- opencv-SURF特征描述
- OpenCV SURF SIFT特征提取及RANSAC算法
- 学习OPENCV第6章的例程和部分练习
- opencv “未声明的标识符:SurfFeatureDetector”问题解决办法
- OpenCV学习笔记(28) 鼠标绘图 练习
- 在OpenCV3中SIFT,SURF等算法去哪了?
- 将OpenCV里SIFT的keypoint坐标以及描述子向量输出给MATLAB
- Opencv图像识别从零到精通(35)---SURF
- 【opencv练习16 - 形态学运算】
- 【opencv练习21 - Laplace算子 二阶导数】
- 【opencv练习26 - 仿射变换】
- 颜色特征描述子的SIFT/SURF
- 【opencv练习34 - 轮廓包围圆,矩形】
- Opencv学习笔记(六)SURF学习笔记
- 【OpenCV入门教程之十七】OpenCV重映射 & SURF特征点检测合辑