2014-12-02 10 views
1

Цель: Соответствующие капли с использованием Surf descriptors и opencv 2.4.9 библиотека.Surf feature Extraction

Алгоритм: основан на следующую ссылке: 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; } 

Результатов для обнаружения ключевых точек: В следующем изображении количество ключевых точек очень высоко, и не многие важный. Как я могу выбрать лучший поднабор ключевых точек, которые лучше всего описывают blob. Есть ли лучший способ, кроме Surf? Эти капли являются двоичным enter image description here

ответ

1

Чем выше minHessian дадут меньшее количество ключевых точек.

С изображениями трудно определить, какие два входных изображения вы пытаетесь совместить и какова ваша цель (будет соответствовать «Vo» «Vos ..» с изображением «Votre ...» «быть успешным или неудачным?

+0

на данный момент я не обрабатываю эти изображения. Я пытаюсь посмотреть, как я могу выбрать лучший поднабор ключевых точек. Чем меньше ключевых точек, как вы думаете, могут давать одинаковые результаты ? Я думаю, что я должен проверить это. TY –

+1

Это зависит от изображений, но более слабые ключевые точки обычно менее надежны, и меньшее количество ключевых точек сделает выбор модели более надежным/надежным. Другие эвристики для снижения количества ключевых точек могут делить изображение на плитки и выбор до N ключевых точек на каждый фрагмент (и, возможно, остальные K самых сильных ключевых точек из всего изображения). Вы также можете отбросить почти идентичные ключевые точки, поскольку они обычно представляют собой текстурированные области и их трудно сопоставить. –

 Смежные вопросы

  • Нет связанных вопросов^_^