Отслеживание особенностей

Я пытаюсь отслеживать набор характерных точек в последовательности изображений в градациях серого, используя OpenCV 2.4.0.

Я уже знаю, как реализовать SIFT или SURF для обнаружения характерных точек и первоначального вычисления дескрипторов. Однако мне нужна помощь в вычислении SIFT-дескриптора характерной точки, местоположение которой (u, v) известно только мне. Рабочий пример кода для SIFT показан ниже.

Например, если я использую детектор углов Haris для обнаружения функций на dv_scenePoints_t лайк:

cvGoodFeaturesToTrack (source2, eig_img, temp_img, dv_scenePoints_t, &corner_count, 0.3, 3.0, mask, 7, 1);

Тогда в таком случае, как бы я вычислить SIFT дескриптор точек в dv_scenePoints_t,

Кроме того, если мне нужно отслеживать характерные точки с помощью фильтра частиц. Затем, как бы я использовал дескриптор SIFT для вычисления веса каждой частицы (гипотеза характерной точки).
Благодарю.

#include "stdafx.h"#include <stdio.h>
#include "opencv2/core/core.hpp"#include "opencv2/features2d/features2d.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/nonfree/nonfree.hpp"#include <opencv2/nonfree/features2d.hpp>
#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/legacy/legacy.hpp"#include "opencv2/legacy/compat.hpp"#include <opencv/cv.h>
#include <opencv/highgui.h>
#include <string.h>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char *argv[])
{
Mat source1 = imread("KITTI_train.png",CV_LOAD_IMAGE_GRAYSCALE);
Mat source2 = imread("KITTI_trainRotate90.png",CV_LOAD_IMAGE_GRAYSCALE);

vector<KeyPoint> dv_sceneKeypoints_t, dv_objectKeypoints_t;
vector< DMatch > matches;

SiftFeatureDetector detector(400,5,0.03);

detector.detect(source1, dv_objectKeypoints_t);
detector.detect(source2, dv_sceneKeypoints_t);
SiftDescriptorExtractor extractor;

Mat descriptors1,descriptors2;
extractor.compute(source1,dv_objectKeypoints_t,descriptors1);
extractor.compute(source2,dv_sceneKeypoints_t,descriptors2);

FlannBasedMatcher matcher;
matcher.match(descriptors1,descriptors2, matches);
Mat target;
drawMatches(source1,dv_objectKeypoints_t,source2,dv_sceneKeypoints_t,matches,target);
imshow("Matches", target);
waitKey(0);
return 0;

}

0

Решение

Keypoint Структура содержит несколько членов, таких как размер и ответ:
http://docs.opencv.org/modules/features2d/doc/common_interfaces_of_feature_detectors.html?#KeyPoint

Вы можете использовать эти функции для определения относительного веса частиц.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]