目标跟踪的点跟踪技术(4)
来源:互联网 发布:日本人 二战 知乎 编辑:程序博客网 时间:2024/05/16 08:29
获取特征点后,SIFT用方向梯度直方图描述每个特征点的特征。
首先计算每个特征点的梯度幅度和方向:
然后计算特征点周围16x16范围的每个点的梯度方向,对其中上下左右每4x4的区域,统计区域内各点的方向梯度直方图。
直方图把360度角划分为36个bin,计算前先用高斯平滑削弱边缘的影响。16x16点的梯度方向在进行直方图统计前先按特征点的“主方向”旋转,以获取旋转不变性特征。
以下是OpenCV中SIFT的简单应用:
#include <opencv2\opencv.hpp>#include <opencv2\nonfree\nonfree.hpp>using namespace std;using namespace cv;int main() {Mat img = imread("d:/dataset/book.jpg");Mat gray;cvtColor(img, gray, CV_RGB2GRAY);Mat rotImg;Mat affine = getRotationMatrix2D(Point2f((float)img.cols / 2, (float)img.rows / 2), 45, 0.5);warpAffine(img, rotImg, affine, Size(img.cols, img.rows));Mat rotGray;cvtColor(rotImg, rotGray, CV_RGB2GRAY);initModule_nonfree();Ptr<FeatureDetector> detector = FeatureDetector::create("SIFT");Ptr<DescriptorExtractor> extractor = DescriptorExtractor::create("SIFT"); Ptr<DescriptorMatcher> matcher = DescriptorMatcher::create("BruteForce"); if (detector.empty() || extractor.empty() ) {cout << "create detector error" << endl;exit(-1);}vector<KeyPoint> pts1, pts2;Mat feats1, feats2;vector<DMatch> matches, goodMatches;detector->detect(gray, pts1);extractor->compute(gray, pts1, feats1);detector->detect(rotGray, pts2);extractor->compute(rotGray, pts2, feats2);matcher->match(feats1, feats2, matches);double maxDist = 0, minDist = 1000;for (int i = 0; i < matches.size(); i++) {if (minDist > matches[i].distance)minDist = matches[i].distance;if (maxDist < matches[i].distance)maxDist = matches[i].distance;}cout << minDist << " " << maxDist << endl;double thres = minDist + 0.1 * (maxDist - minDist);for (int i = 0; i < matches.size(); i++) {if (matches[i].distance <= thres)goodMatches.push_back(matches[i]);}Mat disp;drawMatches(img, pts1, rotImg, pts2, goodMatches, disp);namedWindow("disp");imshow("disp", disp);waitKey();}
0 0
- 目标跟踪的点跟踪技术(4)
- 目标跟踪的点跟踪技术(1)
- 目标跟踪的点跟踪技术(2)
- 目标跟踪的点跟踪技术(3)
- 目标跟踪的点跟踪技术(5)
- 目标跟踪的块跟踪技术(1)
- 目标跟踪的块跟踪技术(2)
- 初九-目标跟踪-点跟踪
- 目标跟踪技术
- 二维平面目标点跟踪
- 基于特征点匹配的自适应目标跟踪算法
- 目标跟踪
- 目标跟踪
- 目标跟踪
- 目标跟踪
- 目前,目标跟踪技术主要应用于以下领域: 以及各种跟踪算法的简介
- OpenCv目标跟踪_cvGoodFeaturesToTrack()寻找角点
- OpenCv目标跟踪_cvGoodFeaturesToTrack()寻找角点
- poj1815+sap+枚举+最小割点集
- 理解互斥量和信号量 .
- 七步从AngularJS菜鸟到专家(7):Routing(1)
- [python]去除列表中重复元素
- LeetCode-Max Points on a Line[AC源码]
- 目标跟踪的点跟踪技术(4)
- 隐藏office web app打印和在word中打开等功能
- java的多态
- zoj 1654 Place the Robots 二分图匹配
- linux内核之hlist哈希链表的应用---C语言代码实现(内核态)
- PAT_B_字符串-05. 字符串循环左移(20)
- 二叉树查找删除
- Map日常--遍历Map,Map转Lis
- 制作自已的Linux操作系统ISO